Pacman: Difference between revisions

From wikinotes
Line 47: Line 47:
|}
|}
</blockquote><!-- Notes -->
</blockquote><!-- Notes -->
= Usage =
<blockquote>
Pacman is arch's primary binary package manager. This is typically what you
would use for installing/removing software. Pacman comes installed.
installing packages
<source lang="bash">
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)
</source>
updates
<source lang="bash">
pacman -Syy          # refresh package index
pacman -Syu          # update all
</source>
maintenance
<source lang="bash">
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)
</source>
</blockquote><!-- usage -->


= Mirrorlist =
= Mirrorlist =

Revision as of 18:33, 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 PKGBUILD https://wiki.archlinux.org/title/PKGBUILD
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

Notes

pacman usage
pacman configuration
pacman packages
pacman troubleshooting

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