Package Management: Difference between revisions

From miki
Jump to navigation Jump to search
Line 1: Line 1:
== Ubuntu / Debian ==
== Ubuntu / Debian ==


Installing a package '''from REPOSITORIES''', using '''aptitude''':
{{blue|'''Installing'''}} a package '''from REPOSITORIES''', using '''aptitude''':
<source lang="bash">
<source lang="bash">
# ----- Installing from the REPOSITORIES - APTITUDE
# ----- Installing from the REPOSITORIES - APTITUDE
Line 10: Line 10:
''Note: Advantage of <code>aptitude</code> over <code>apt-get</code> is that it maintains <tt>/var/log/aptitude</tt>, and remove dependencies by default.''
''Note: Advantage of <code>aptitude</code> over <code>apt-get</code> is that it maintains <tt>/var/log/aptitude</tt>, and remove dependencies by default.''


Installing a package '''from REPOSITORIES''', using '''apt-get''':
{{blue|'''Installing'''}} a package '''from REPOSITORIES''', using '''apt-get''':
<source lang="bash">
<source lang="bash">
# ----- Installing from the REPOSITORIES - APT-GET
# ----- Installing from the REPOSITORIES - APT-GET
Line 22: Line 22:
</source>
</source>


Installing a package '''from a .deb PACKAGE file''':
{{blue|'''Installing'''}} a package '''from a .deb PACKAGE file''':
<source lang="bash">
<source lang="bash">
# ----- Installing from a .deb PACKAGE file
# ----- Installing from a .deb PACKAGE file
Line 28: Line 28:
</source>
</source>


Querying the '''cache''' or '''installed''' packages:
{{blue|'''Querying'''}} the '''cache''' or '''installed''' packages:
<source lang=bash>
<source lang=bash>
# ----- Querying INSTALLED PACKAGE
# ----- Querying INSTALLED PACKAGE
Line 48: Line 48:
</source>
</source>


Querying packages that are '''not installed yet''' (requires package '''apt-file'''):<br>
{{blue|'''Querying'''}} packages that are '''not installed yet''' (requires package '''apt-file'''):<br>
<source lang=bash>
<source lang=bash>
apt-file update # (optional - needed 1st time use)
apt-file update # (optional - needed 1st time use)
Line 99: Line 99:
</source></div>
</source></div>


View package installation history:
{{blue|'''View'''}} package source repository:
<source lang="bash">
apt-cache madison <package> # Display available version of a package in each repository
</source>

{{blue|'''View'''}} package installation history:
<source lang="bash">
<source lang="bash">
grep install /var/log/dpkg.log # Also check dpkg.log.1, etc.
grep install /var/log/dpkg.log # Also check dpkg.log.1, etc.
Line 106: Line 111:
</source>
</source>


To add a repository:
{{blue|'''Add'''}} a repository:
<source lang="bash">
<source lang="bash">
vi /etc/apt/sources.list # or edit files in /etc/apt/sources.list.d/
vi /etc/apt/sources.list # or edit files in /etc/apt/sources.list.d/
Line 112: Line 117:
</source>
</source>


To add a package authentication key:
{{blue|'''Add'''}} a package authentication key:
<source lang="bash">
<source lang="bash">
gpg --keyserver keyserver.ubuntu.com --recv 247D1CFF # (optional) Get the key from some keyserver
gpg --keyserver keyserver.ubuntu.com --recv 247D1CFF # (optional) Get the key from some keyserver
Line 118: Line 123:
</source>
</source>


Miscellaneous:
To subscribe / unsubscribe to the package usage survey:
<source lang="bash">
<source lang="bash">
dpkg-reconfigure popularity-contest
dpkg-reconfigure popularity-contest # subscribe / unsubscribe to the package usage survey
</source>
</source>



Revision as of 15:30, 4 October 2010

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 source repository:

apt-cache madison <package>         # Display available version of a package in each repository

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

Add a repository:

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

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

Miscellaneous:

dpkg-reconfigure popularity-contest                   # subscribe / unsubscribe to the package usage survey

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

Source package

Installing from source package is usually done with

./configure
make
sudo make install

! Power Tip ! A more powerful way to install from source is to use checkinstall. checkinstall will actually create a temporary package that can then later be uninstalled with Synaptic or via the terminal:

./configure
make
sudo checkinstall                  # Creates a package and install it as if 'sudo make install' was run

#... to uninstall:
sudo dpkg -r <packagename>

Note that checkinstall can actually run any arbitrary command and monitor change on the file system.