Package Management

From miki
Revision as of 13:24, 1 September 2010 by Mip (talk | contribs) (→‎Ubuntu / Debian)
Jump to navigation Jump to search

Ubuntu / Debian

Installing a package from REPOSITORIES, using aptitude:

# ----- Installing from the REPOSITORIES - APTITUDE
aptitude update                     # (OPTIONAL) update the local repository cache
aptitude install <package(s)>       # Install given package
aptitude remove <package(s)>        # Remove package (or install it if package name prefixed with - )

Note: Advantage of aptitude over apt-get is that it maintains /var/log/aptitude, and remove dependencies by default.

Installing a package from REPOSITORIES, using apt-get:

# ----- Installing from the REPOSITORIES - APT-GET
apt-get update                      # (OPTIONAL) update the local repository cache
apt-get install <package(s)>        # Install given package
apt-get upgrade                     # Install new version of all installed package (without installing new package)
apt-get remove <package(s)>         # Remove package (or install it if package name prefixed with - )
apt-get autoremove <package(s)>     # Remove package and all its unused dependencies
apt-get purge <package(s)>          # Remove package and related configuration files
apt-get autoremove                  # Remove package installed to satisfy dependencies for some package and that are no more needed

Installing a package from a .deb PACKAGE file:

# ----- Installing from a .deb PACKAGE file
dpkg --install <debfile>            # (or -i) Install a package from given .deb file

Querying the cache or installed packages:

# ----- Querying INSTALLED PACKAGE
dpkg --get-selections                 # Show the list of packages installed through apt-get
dpkg --get-selections | grep php      # ... filtering for some specific package keyword
dpkg -L <package>                     # List files delivered by a given <package>
dlocate -L <package>                  # ... same as above but much faster (require package dlocate)
dpkg -S <file>                        # List packages providing given file
dlocate -S <file>                     # ... same as above but much faster (require package dlocate)
dlocate <file>                        # ... same as dpkg -L -S combined but much faster (require package dlocate)
# ----- Querying the CACHE
apt-cache search <regex>              # Search package cache (package name and description) for given <regex>
apt-cache search --name-only <regex>  # ... same but only search in package name
apt-cache showpkg <package(s)>        # Show version and dependencies information about given package(s)
apt-cache show <package(s)>           # Show information (description...) about given package(s)
# ----- Querying a .deb PACKAGE file
dpkg --info <debfile>               # (or -I) Show information of given .deb file
dpkg --content <debfile>            # (or -c) Show content of given .deb file

Querying packages that are not installed yet (requires package apt-file):

apt-file update                     # (optional - needed 1st time use)
apt-file list <package>             # Search package in repositories, and show the content
apt-file search <file>              # Display the name of all packages within repository that contain this file
apt-file search -x "/<file>$"       # ... more accurate query using regex
Note: An alternative is to use the script [{{#file: dweblocate}} dweblocate], but apt-file is more powerful actually
#!/bin/bash

# Very handy script to query online debian/ubuntu package database.
# It more or less imitates the behaviour of dlocate, but is not limited to package installed on the current system.
#
# Usage:
#
#   dweblocate -L <package>   List all files in package <package>
#   dweblocate -S <filename>  List all packages that contains <filename>
#
# Based on script at http://mydebian.blogdns.org/?p=742
# Modified by Fuujuhi, 2009.

DIST=ubuntu                      # debian | ubuntu
SUITENAME=jaunty                 # Not necessary for debian

if [ "$DIST" = "ubuntu" ] ; then
        LISTURL="http://packages.ubuntu.com/$DISTNAME/all/$2/filelist"
        SEARCHURL="http://packages.ubuntu.com/search?suite=${SUITENAME}&searchon=contents&keywords=$2"
elif [ "$DIST" = "debian" ] ; then
        LISTURL="http://packages.ubuntu.com/$DISTNAME/all/$2/filelist"
        SEARCHURL="http://packages.debian.org/search?suite=stable&searchon=contents&keywords=$2"
else
        echo -e "Unknown distribution $DIST... Aborting!"
        exit 1
fi

if [ $# -lt 2 ]; then
        echo -e "Usage:\t$0 -S file \n\t$0 -L package"
        exit 1
fi

if [ "$1" = "-L" ]; then
        wget -q "$LISTURL" -O- | sed -n '/<pre>/,/<\/pre>/ {s/^[^/]*//;/\/pre>/!p}'
elif [ "$1" = "-S" ]; then
        wget -q "$SEARCHURL" -O- | sed -n '/<table>/,/<\/table>/ { s/[[:space:]]*<a href="[^>]*>\([^<]*\)<\/a>/\1/p}'
else
        echo "Error: invalid argument \"$1\"";
    exit 2
fi

View package installation history:

grep install /var/log/dpkg.log      # Also check dpkg.log.1, etc.
sudo cat /var/log/apt/terl.log      # Also check 
sudo cat /var/log/apt/history.log

To add a repository:

vi /etc/apt/sources.list            # or edit files in /etc/apt/sources.list.d/
apt-get update

To add a package authentication key:

gpg --keyserver keyserver.ubuntu.com --recv 247D1CFF  # (optional) Get the key from some keyserver
gpg --export --armor 247D1CFF | sudo apt-key add -    # Add the key

To subscribe / unsubscribe to the package usage survey:

dpkg-reconfigure popularity-contest

RPM's

rpm -ivh package                    # Installing a package - verbose and progress bars
rpm -iv -nodeps package             # Installing a package (verbose), ignore dependencies
  • Query commands
rpm -ql package                     # List files provided by a package
  • To query a package that has not been installed, add -p option to the command:
rpm -qpl package                    # List files provided by a package