102.4. Use Debian package management
Candidates should be able to perform package management using the Debian package tools.
- Install, upgrade and uninstall Debian binary packages.
- Find packages containing specific files or libraries which may or may not be installed.
Obtain package information like version, content, dependencies, package integrity and installation status (whether or not the package is installed).
Concept of the package management system
Linux used to be based on compiling source code but then Distributions arrived. Most distributions have their own Package Manager for installing pre-build programs from defined repositories. Debian based distros use .deb files with apt, dpkg, aptitude and Fedora, RedHat, RHEL, SUSE, .. use RPM and Yum package managers.
We do not have "bzr" installed.
[email protected]:~/w/lpic/101$ bzr The program 'bzr' is currently not installed. You can install it by typing: sudo apt-get install bzr [email protected]:~/w/lpic/101$ which bzr [email protected]:~/w/lpic/101$ type bzr bash: type: bzr: not found
so lets install it. If we have the .deb file:
apt-get install bzr
- apt-get install asked for confirmation (Y)
- apt-get resolved dependencies, it know what is needed to install this package and installs them
debian packages are something.deb
if you only want a dry-run / simulation:
apt-get install -s bzr
and this will only download the files without installing them:
apt-get install --download-only bzr
which only ownloaded files are stored them at /var/cache/apt/archive/ (or use the -d switch instead)
where these packages come from? from a Repository of different Repositories which are defined at /etc/apt/sources.list file and files located at /etc/apt/sources.list.d/ in the form of:
$ cat /etc/apt/sources.list deb http://ir.archive.ubuntu.com/ubuntu/ utopic-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://ir.archive.ubuntu.com/ubuntu/ utopic-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu utopic-security main restricted deb http://security.ubuntu.com/ubuntu utopic-security universe deb http://security.ubuntu.com/ubuntu utopic-security multiverse
Updating sources information:
Removing debian packages
apt-get remove bzr
and if you want to remove automatically installed dependencies:
$ apt-get autoremove bzr
$ apt-get autoremove Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: linux-image-3.16.0-25-generic linux-image-extra-3.16.0-25-generic 0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. After this operation, 203 MB disk space will be freed. Do you want to continue? [Y/n] y
- removing a package will not remove its dependencies
- if removing a dependency, you'll get a warning about what will be removed alongside this package
searching for packages
$ apt-cache search "tiny window" $ aptitude search grub2
for updating a single package
apt-get install tzdata
and for upgrading whatever installed:
or going to a new distribution:
Note: as most other tools, you can configure the default configs at /etc/apt/apt.conf and there is a program apt-config for this purpose.
A program called debconf configures packages after they are installed. you can reconfigure a package (say tzdata) using
package information with dpkg
dpkg is a very powerful tool for working with .deb package files. If you want to see what is inside a .deb file:
$ dpkg --contents bzr_2.6.0+bzr6595-1ubuntu1_all.deb drwxr-xr-x root/root 0 2014-05-02 18:16 ./ drwxr-xr-x root/root 0 2014-05-02 18:15 ./etc/ drwxr-xr-x root/root 0 2014-05-02 18:15 ./etc/bash_completion.d/ -rw-r--r-- root/root 1467 2010-04-22 11:31 ./etc/bash_completion.d/bzr ... ...
another apt tool is dpkg. dpkg can install, remove, configure and query packages and as always the config is at /etc/dpkg/dpkg.cfg and uses /var/lib/dpkg tree . the most important switch is -s for status.
$ dpkg -s bzr Package: bzr Status: deinstall ok config-files Priority: optional Section: vcs Installed-Size: 102 Maintainer: Ubuntu Developers <[email protected]> Architecture: all Version: 2.6.0+bzr6595-1ubuntu1 Config-Version: 2.6.0+bzr6595-1ubuntu1 Depends: python-bzrlib (<= 2.6.0+bzr6595-1ubuntu1.1~), python-bzrlib (>= 2.6.0+bzr6595-1ubuntu1), python:any Recommends: python-gpgme Suggests: bzr-doc, bzrtools, python-bzrlib.tests Breaks: bzr-pqm (<< 1.4.0~bzr80), bzr-xmloutput (<< 0.8.8+bzr160), python-bzrlib (<< 2.4.0~beta3~) Conffiles: /etc/bash_completion.d/bzr b8d9ca95521a7c5f14860e205a854da2 Description: easy to use distributed version control system Bazaar is a distributed version control system designed to be easy to use and intuitive, able to adapt to many workflows, reliable, and easily extendable. . Publishing of branches can be done over plain HTTP, that is, no special software is needed on the server to host Bazaar branches. Branches can be pushed to the server via sftp (which most SSH installations come with), FTP, or over a custom and faster protocol if bzr is installed in the remote end. . Merging in Bazaar is easy, as the implementation is able to avoid many spurious conflicts, deals well with repeated merges between branches, and is able to handle modifications to renamed files correctly. . Bazaar is written in Python, and has a flexible plugin interface which can be used to extend its functionality. Many plugins exist, providing useful commands (bzrtools), graphical interfaces (qbzr), or native interaction with Subversion branches (bzr-svn). . Install python-paramiko if you are going to push branches to remote hosts with sftp, and python-pycurl if you'd like for SSL certificates always to be verified. Homepage: http://bazaar-vcs.org Original-Maintainer: Debian Bazaar Maintainers <[email protected]>
another command is purge which will remove the package and all of its configurations.. the switch is -P or --purge.
There is also -L to check the files and directories a package installed:
$ dpkg -L jcal /. /usr /usr/bin /usr/bin/jcal /usr/share /usr/share/doc /usr/share/doc/jcal /usr/share/doc/jcal/README /usr/share/doc/jcal/copyright /usr/share/man /usr/share/man/man1 /usr/share/man/man1/jcal.1.gz /usr/share/doc/jcal/changelog.Debian.gz
and -S will show which package installed the given file:
$ dpkg -S /var/lib/mplayer/prefs/mirrors mplayer: /var/lib/mplayer/prefs/mirrors
Note: you can also use
which for finding out what file will be used on any given command:
[email protected]:~/w/lpic/101$ which java /usr/bin/java
is a newer tool for managing files. It can be used like this:
$ aptitude install jcal $ aptitude remove jcal $ aptitude search cal $ aptitude show bzr
or it can also be used as a standalone program:
there is gui tools like "synaptic" and "update manager". These will Search, Update, Upgrade, Install, Remove via a graphical user interface and are present in many distributions. This is ubuntu software center:
and this is a software updater GUI for gnome:
. . .