Book: LPI Linux Certification in a Nutshell Section: Chapter 14. Linux Installation and Package Management (Topic 2.2)
### 14.5 Objective 5: Use Debian Package Management The Debian package management system is a versatile and automated suite of tools used to acquire and manage software packages for Debian Linux. The system automatically handles many of the management details associated with interdependent software running on your system. #### 14.5.1 Debian Package Management Overview Each Debian package contains program and configuration files, documentation, and noted dependencies on other packages. The names of Debian packages have three common elements, including: Package name A Debian package name is short and descriptive. When multiple words are used in the name, they are separated by hyphens. Typical names include binutils, kernel-source, and telnet. Version number Each package has a version number. Most package versions are the same as that of the software they contain, thus the format of package versions varies from package to package. Most are numeric, with major, patch, and release numbers, but other information may appear as well. Typical versions are 0.6.7-7, 0.96a-14, 6.05, 80b2-8, and 2.0.7.19981211. The version is separated from the package name with an underscore. A file extension By default, all Debian packages end with .deb file extension. Figure 14-1 illustrates a Debian package name. ##### Figure 14-1. The structure of a Debian GNU/Linux package name #### 14.5.2 Managing Debian Packages The original Debian package management tool is dpkg, which operates directly on .deb package files and can be used to automate the installation and maintenance of software packages. The alternative apt-get tool operates using package names, obtaining them from a predefined source (such as CD-ROMs, FTP sites, etc.). Both tools work from the command line. The dselect command offers an interactive menu that allows the administrator to select from a list of available packages and mark them for subsequent installation. The alien command allows the use of non-Debian packages, such as the Red Hat RPM format. For complete information on Debian package management commands, see details in their respective manpages.
dpkg |
#### Syntax
    dpkg [options] action
#### Description The Debian package manager command, dpkg, consists of an action that specifies a major mode of operation as well as zero or more options, which modify the action's behavior. The dpkg command maintains package information in /var/lib/dpkg. Two files located there of particular interest are: available The list of all available packages. status Contains package attributes, such as whether it is installed or marked for removal. These files are modified by dpkg, dselect, and apt-get, and it is unlikely that they will ever need to be edited. #### Frequently used options -E Using this option, dpkg will not overwrite a previously installed package of the same version. -G Using this option, dpkg will not overwrite a previously installed package with an older version of that same package. -R (also -- recursive) Recursively process package files in specified subdirectories. Works with -i, -- install, -- unpack, and so on. #### Frequently used actions -- configure package Configure an unpacked package. This involves setup of configuration files. -i package_ file (also -- install package_ file) Install the package contained in package_ file. This involves backup of old files, unpacking and installation of new files, and configuration. -l [pattern] (also -- list [pattern]) Display information for installed package names that match pattern. -L package (also -- listfiles package) List files installed from package. -- print-avail package Display details found in /var/lib/dpkg/available about package. -- -purge package Remove everything for package. -r package (also -- remove package) Remove everything except configuration files for package. -s package (also -- status package) Report the status of package. -S search_pattern (also -- search search_ pattern) Search for a filename matching search_ pattern from installed packages. -- unpack package_ file Unpack package_ file, but don't install the package it contains. ##### 14.5.2.1 Example 1 Install a package using dpkg -i with the name of an available package file:
    # dpkg -i ./hdparm_3.3-3.deb
    (Reading database ... 54816 files and directories
      currently installed.)
    Preparing to replace hdparm 3.3-3 (using hdparm_3.3-3.deb)
    Unpacking replacement hdparm ...
    Setting up hdparm (3.3-3) ...
Alternatively, use apt-get install with the name of the package. In this case, the package comes from the location or locations configured in /etc/apt/sources.list. For this example, the location is http://http.us.debian.org/:
    # apt-get install elvis
    Reading Package Lists... Done
    Building Dependency Tree... Done
    The following extra packages will be installed:
      libncurses4 xlib6g
    The following NEW packages will be installed:
      elvis
    2 packages upgraded, 1 newly installed, 0 to remove
      and 376 not upgraded.
    Need to get 1678kB of archives. After unpacking 2544kB
      will be used.
    Do you want to continue? [Y/n] y
    Get:1 http://http.us.debian.org stable/main
      libncurses4 4.2-9 [180kB]
    Get:2 http://http.us.debian.org stable/main
      xlib6g 3.3.6-11 [993kB]
    Get:3 http://http.us.debian.org stable/main
      elvis 2.1.4-1 [505kB]
    Fetched 1678kB in 4m11s (6663B/s)
    (Reading database ... 54730 files and directories
      currently installed.)
    Preparing to replace libncurses4 4.2-3 (using
      .../libncurses4_4.2-9_i386.deb) ...
    Unpacking replacement libncurses4 ...
    (installation continues...)
##### 14.5.2.2 Example 2 Upgrading a package is no different from installing one. However, you should use the -G option when upgrading with dpkg to ensure that the installation won't proceed if a newer version of the same package is already installed. ##### 14.5.2.3 Example 3 Use dpkg -r or dpkg -- purge to remove a package:
    # dpkg --purge elvis
    (Reading database ... 54816 files and directories
      currently installed.)
    Removing elvis ...
    (purge continues...)
##### 14.5.2.4 Example 4 Use the dpkg -S command to find a package containing specific files. In this example, apt-get is contained in the apt package:
    # dpkg -S apt-get
    apt: /usr/share/man/man8/apt-get.8.gz
    apt: /usr/bin/apt-get
##### 14.5.2.5 Example 5 Obtain package status information, such as version, content, dependencies, integrity, and installation status, using dpkg -s:
    # dpkg -s apt
    Package: apt
    Status: install ok installed
    Priority: optional
    Section: admin
    Installed-Size: 1388
    (listing continues...)
##### 14.5.2.6 Example 6 List the files in a package using dpkg -L and process the output using grep or less:
    # dpkg -L apt | grep '^/usr/bin'
    /usr/bin
    /usr/bin/apt-cache
    /usr/bin/apt-cdrom
    /usr/bin/apt-config
    /usr/bin/apt-get
##### 14.5.2.7 Example 7 List the installed packages using dpkg -l; if you don't specify a pattern, all packages will be listed:
    # dpkg -l xdm
    ii  xdm             3.3.2.3a-11    X display manager
##### 14.5.2.8 Example 8 Use dpkg -S to determine the package from which a particular file was installed with the filename:
    # dpkg -S /usr/bin/nl
    textutils: /usr/bin/nl
apt-get |
#### Syntax
    apt-get [options] [command] [package_name ...]
#### Description The apt-get command is part of the Advanced Package Tool (APT) management system. It does not work directly with .deb files like dpkg, but uses package names instead. apt-get maintains a database of package information that enables the tool to automatically upgrade packages and their dependencies as new package releases become available. #### Frequently used options -d Download files, but do not install. This is useful when you wish to get a large number of package files but delay their installation to prevent installation errors from stopping the download process. -s Simulate the steps in a package change, but do not actually change the system. -y Automatically respond "yes" to all prompts, instead of prompting you for a response during package installation/removal. #### Frequently used commands dist-upgrade This command is used to automatically upgrade to new versions of Debian Linux. install The install command is used to install or upgrade one or more packages by name. remove This command is used to remove the specified packages. update Running apt-get update fetches a list of currently available packages. This is typically done before any changes are made to existing packages. upgrade The upgrade command is used to safely upgrade a system's complete set of packages to current versions. It is conservative and will not process upgrades that could cause a conflict or break an existing configuration; it also will not remove packages. Additional commands and options are available. See the apt-get manpage for more information. apt-get uses /etc/apt/sources.list to determine where packages should be obtained. This file is not in the Objectives for Exam 102. #### Example Remove the elvis package using apt-get.
    # apt-get remove elvis
    Reading Package Lists... Done
    Building Dependency Tree... Done
    The following packages will be REMOVED:
      elvis
    0 packages upgraded, 0 newly installed, 1 to remove
      and 376 not upgraded.
    Need to get 0B of archives. After unpacking 1363kB
      will be freed.
    Do you want to continue? [Y/n] y
    (Reading database ... 54816 files and directories
      currently installed.)
    Removing elvis ...
    (removal continues...)
In this example, the user is required to respond with `y` when promted to continue. Using the -y option to apt-get would eliminate this interaction.
dselect |
#### Syntax
    dselect
#### Description dselect is an interactive, menu-driven, frontend tool for dpkg and is usually invoked without parameters. The dselect command lets you interactively manage packages by selecting them for installation, removal, configuration, and so forth. Selections are made from a locally stored list of available packages, which may be updated while running dselect. Package actions initiated by dselect are carried out using dpkg.
alien |
#### Syntax
    alien [--to-deb] [--patch=patchfile] [options] file
#### Description Convert to or install a non-Debian (or "alien") package. Supported package types include Red Hat .rpm, Stampede .slp, Slackware .tgz, and generic .tar.gz files. rpm must also be installed on the system in order to convert an RPM package into a .deb package. The alien command produces an output package in Debian format by default after conversion. #### Frequently used option -i Automatically install the output package and remove the converted package file. #### Example Install a non-Debian package on Debian system using alien with the -i option:
    alien -i package.rpm
## On the Exam dselect, apt-get, and alien are important parts of Debian package management, but detailed knowledge of dpkg is of primary importance for Exam 102.