Packages
General
See also Apple#Package management
- https://en.wikipedia.org/wiki/Package_manager - a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer's operating system in a consistent manner.
A package manager deals with packages, distributions of software and data in archive files. Packages contain metadata, such as the software's name, description of its purpose, version number, vendor, checksum, and a list of dependencies necessary for the software to run properly. Upon installation, metadata is stored in a local package database. Package managers typically maintain a database of software dependencies and version information to prevent software mismatches and missing prerequisites. They work closely with software repositories, binary repository managers, and app stores.
Package managers are designed to eliminate the need for manual installs and updates. This can be particularly useful for large enterprises whose operating systems are based on Linux and other Unix-like systems, typically consisting of hundreds or even tens of thousands of distinct software packages.
- pkg-config - a helper tool used when compiling applications and libraries. It helps you insert the correct compiler options on the command line so an application can use gcc -o test test.c `pkg-config --libs --cflags glib-2.0` for instance, rather than hard-coding values on where to find glib (or other libraries). It is language-agnostic, so it can be used for defining the location of documentation tools, for instance. The program is free software and licensed under the GPL version 2 or any later version (at your option). pkg-config works on multiple platforms: Linux and other UNIX-like operating systems, Mac OS X and Windows. It does not require anything but a reasonably well working C compiler and a C library, but can use an installed glib if that is present. (A copy of recent glib2 is shipped together with pkg-config versions since 0.27, and this is sufficient for pkg-config to compile and work properly.)
- checkinstall - Installs a compiled program from the program's source directory using "make install" or any other command supplied on checkinstall's command line. checkinstall will create a Slackware, RPM or Debian compatible package and install it using your distribution's standard package administration utilities.
- pkgs.org - Linux Software Catalog and Packages Search. RPM, DEB, TGZ, TXZ packages from well-known repositories of the Archlinux, Fedora, CentOS, RHEL, Scientific Linux, Debian, Ubuntu, openSUSE, Mandriva, Mageia and Slackware distributions; packages search by name, filename, summary, description, requires, provides, files and directories; pPowerful packages browser (summary, description, files, requires, provides, changelog, etc.)
to sort
Arch
pacman
pacman -Ss packagename # search repos for packagename pacman -S packagename # install packagename pacman -Syu # update repo lists and upgrade system
pacman -Qo [file] # check what package owns a file pacman -Qi # info on all installed programmes pacman -Qi packagename # info in packagename pacman -Ql packagename # list all files owned by packagename
pacman -Qqtd # check whether there are any orphaned packages
- https://wiki.archlinux.org/index.php/Pkgfile - search repos and AUR for package containing filename
pacman -R packagename # remove packagename pacman -Rsn packagename # remove orphaned packages pacman -Rc packagename # remove package and deps ('cascade')
pacman -Rdd qt pacman -Syuuu # when qt4 replaced qt, but qt had deps.
- cacheclean - Cleans up pacman packages. Users selects how many old versions to keep.
cacheclean {-p} {-v} <# of copies to keep> # of copies to keep - (required) how many generations of each package. -p - (optional) preview what would be deleted. -v - (optional) show deleted packages.
for i in `pacman -Qdt | awk '{print $1}'`; do pacman -R $i ; done
- https://wiki.archlinux.org/index.php/Reflector - script which can retrieve the latest mirror list from the MirrorStatus page, filter the most up-to-date mirrors, sort them by speed and overwrite the file /etc/pacman.d/mirrorlist
AUR helpers
- https://github.com/rmarquis/pacaur - an AUR helper that minimizes user interaction. extends pacman commands to aur.
pacaur -Syuk # update db, install new packages, check aur packages
- https://github.com/XenGi/pac - yaourt like search for pacaur
- yaourt - very good search feature, coloured and paged results w/ number selection. you can pass a flag to makepkg, -c, to remove the build files, but there's no way to automatically remove source git repos(?)
yaourt packagename # search with interactive install yaourt --noconfirm # no edit package build and no confirm prompt to install yaourt -Syu --noconfirm # update all yaourt -Syu --aur --noconfirm # update including AUR packages
yaourt -Syua --noconfirm --devel # update including AUR packages and check -git packages for newer latest commits to build
- aurget - slow, aur only
- packer - all repos
- https://github.com/oshazard/apacman - forked from packer
- http://almin-soft.ru/index.php?sluzhebnye/pacmanxg - a GUI for pacman, the package management system for ArchLinux.
Packages
/usr/share/pacman/PKGBUILD.proto # template
makepkg -g >> PKGBUILD && makepkg
"ERROR: PKGBUILD contains CRLF characters and cannot be sourced." Solution:
sed -i 's/^M//' PKGBUILD
[ctrl+v][ctrl+m] for the ^M symbol.
pacman -Qdt list all orphans pacman -Rsn $(pacman -Qdtq) remove them all
Repos
Other
- https://github.com/gs93/pakbak - Back up the local pacman database when it changes
- https://github.com/protist/paclog - List recent commits for Arch Linux packages
- http://www.nongnu.org/archup/ - on screen notifications
- http://kmkeen.com/pacmatic/ - e-mail notifications
- gist: unused.sh - finds unused package on your Arch Linux box
Junest
- https://github.com/fsquillace/junest - Jailed User NEST is a lightweight Arch Linux based distribution that allows to have an isolated GNU/Linux environment inside any generic host GNU/Linux OS and without the need to have root privileges for installing packages.
Debian
including ubuntu, linux mint and others
- http://www.debian.org/doc/manuals/debian-reference/ch02.en.html
- http://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.en.html
- http://en.wikipedia.org/wiki/Deb_(file_format)
dpkg --get-selections > installed-software create list of installed software dpkg --set-selections < installed-software dselect reinstall from list
dpkg --list to check
Apt
- http://wiki.debian.org/Apt - front-end for dpkg to work with Debian's .deb packages, but it has since been modified to also work with the RPM
apt-get install package etc. apt-cache search 'web server' etc.
apt-find show python show files installed by package
- https://github.com/icy/pacapt - pacman syntax for apt
GUI
Other
Red Hat
RPM
7z also extracts rpm to cpio, and cpio to files.
Yum
- Yum is an automatic updater and package installer/remover for rpm systems. It automatically computes dependencies and figures out what things should occur to install packages. It makes it easier to maintain groups of machines without having to manually update each one using rpm. Yum has a plugin interface for adding simple features. Yum can also be used from other python programs via its module inteface.
dnf
- https://github.com/rpm-software-management/dnf
- http://dnf.baseurl.org/2015/05/11/yum-is-dead-long-live-dnf/ [5]
Gentoo Portage
Guix
Ports Collection
Other
Linuxbrew
- Linuxbrew - a fork of Homebrew, the Mac OS package manager, for Linux. It can be installed in your home directory and does not require root access. The same package manager can be used on both your Linux server and your Mac laptop. Installing a modern version of glibc and gcc in your home directory on an old distribution of Linux takes five minutes.
PackageKit
- PackageKit is a system designed to make installing and updating software on your computer easier. The primary design goal is to unify all the software graphical tools used in different distributions, and use some of the latest technology like PolicyKit. The actual nuts-and-bolts distro tool (dnf, apt, etc) is used by PackageKit using compiled and scripted helpers. PackageKit isn't meant to replace these tools, instead providing a common set of abstractions that can be used by standard GUI and text mode package managers. PackageKit itself is a system activated daemon called packagekitd. Being system activated means that it's only being run when the user is using a text mode or graphical tool, and quits when it's no longer being used. This means we don't delay the boot sequence or session startup and don't consume memory when not being used.
- http://en.wikipedia.org/wiki/PackageKit - multisystem GUI
0install
- Zero Install - 0install, is a decentralised cross-platform software installation system available under the LGPL. It allows software developers to publish programs directly from their own web-sites, while supporting features familiar from centralised distribution repositories such as shared libraries, automatic updates and digital signatures. It is intended to complement, rather than replace, the operating system's package management. 0install packages never interfere with those provided by the distribution.
Distributed
- https://github.com/whyrusleeping/gx - a packaging tool built around the distributed, content addressed filesystem IPFS. It aims to be flexible, powerful and simple. gx is Alpha Quality. It's not perfect yet, but it's proven dependable enough for managing dependencies in go-ipfs and ready for pioneering developers early users to try out and explore. [6]