Pacman: Difference between revisions

From wikinotes
No edit summary
Line 1: Line 1:
Archlinux's package manager.<br>
You may also be insterested in [[arch ABS]].
= Documentation =
= Documentation =
<blockquote>
<blockquote>
Line 78: Line 81:
<blockquote>
<blockquote>
<source lang="bash">
<source lang="bash">
pacman-key --init  
pacman-key --init
pacman-key --populate archlinux
pacman-key --populate archlinux
pacman-key --refresh-keys
pacman-key --refresh-keys

Revision as of 18:26, 25 December 2021

Archlinux's package manager.
You may also be insterested in arch ABS.

Documentation

archwiki pacman https://wiki.archlinux.org/index.php/Pacman
archwiki mirrors https://wiki.archlinux.org/index.php/Mirrors
latest mirrorlist https://archlinux.org/mirrorlist/?ip_version=4

Locations

/etc/pacman.conf configure which repos to pull from (core, extra, communnity, multilib)
/etc/pacman.d/mirrorlist configure which sources to pull from (waterloo, queensu etc)
/var/cache/pacman/pkg currently installed programs. Can use these archives to rollback to older versions of program.
/var/log/pacman.log history of pacman operations
/var/lib/pacman/db.lck pacman lockfile

Usage

Pacman is arch's primary binary package manager. This is typically what you would use for installing/removing software. Pacman comes installed.

installing packages

pacman -Ss <pkg>            # search
pacman -Qo /bin/netstat     # search package containing this file

pacman -S  <pkg>            # install
pacman -Rs <pkg>            # uninstall with dependencies
pacman -Rsc <pkg>           # uninstall with dependencies, and packages that require this package
pacman -Rsd --nodeps <pkg>  # uninstall, allowing broken deps (useful for removing video driver)

updates

pacman -Syy          # refresh package index
pacman -Syu          # update all

maintenance

pacman -Si <pkg>             # info
pacman -Q                    # list of all installed packages
pacman -Rns $(pacman -Qtdq)  # remove unneeded packages
pacman -Sc                   # remove old packages from pkg-cache  (MAKE SURE CLEANMETHOD=KEEPCURRENT IN /ETC/PACMAN.CONF)

Mirrorlist

You can automatically determine the fastest servers and sort them by quickest.
I wrote a bashscript pacman-mirrorlist to do this for me.

sudo pacman -S pacman-contrib

# generate mirrorlist for all CA/US mirrors
awk '/^## Canada$/{f=1; next}f==0{next}/^$/{exit}{print substr($0, 1);}' /etc/pacman.d/mirrorlist.pacnew | sed 's/^#//' | sudo tee /etc/pacman.d/mirrorlist.tmp
awk '/^## United States$/{f=1; next}f==0{next}/^$/{exit}{print substr($0, 1);}' /etc/pacman.d/mirrorlist.pacnew | sed 's/^#//' | sudo tee -a /etc/pacman.d/mirrorlist.tmp

rankmirrors -n 10 /etc/pacman.d/mirrorlist.tmp | sudo tee /etc/pacman.d/mirrorlist

Key Management

pacman-key --init
pacman-key --populate archlinux
pacman-key --refresh-keys

Tips/Tricks

Holding/Pinning/Locking Packages

Packages can be set to be ignored in /etc/pacman.conf.

IgnorePkg = salt zfs-linux spl-linux

Downloading old Packages

Archlinux

Find the package you'd like to downgrade to here https://archive.archlinux.org/packages/.

Ex:

firefox https://archive.archlinux.org/packages   ## find url to package

pacman -U \
    https://archive.archlinux.org/packages/l/linux/linux-4.15.3-2-x86_64.pkg.tar.xz \
    https://archive.archlinux.org/packages/l/linux-headers-4.15.3-2-x86_64.pkg.tar.xz


WARNING:

Occasionally, you might need to install something to satisfy a current AUR package. But installing the core package will break the existing AUR package dependencies.

You have 2x options:

pacaur -S zfs-linux spl-linux -U https://...  https://..

Archlinux-Arm

# find cpu arch
uname -a

# download package for your arch
http://tardis.tiny-vps.com/aarm/packages/f/firefox/firefox-79.0.1-aarch64.tar.xz

# install
pacman -U firefox-79.0.1-aarch64.tar.xz

Troubleshooting

Load metadata for package error

The pacman database is corrupt. Simply delete the package's file, and re-install using force.

sudo rm -rf /var/lib/pacman/local/man-pages-*
sudo pacman -S --force man-pages