Table des matières

Dernière mise-à-jour : 2020/01/30 03:27

102.4 - Gérer les paquets sous Debian (3/60)

La Commande dpkg

A faire - Placez-vous dans le répertoire personnel de root grâce à la commande cd ~.

Afin de faciliter l'installation, la désinstallation et la gestion des logiciels (appelés paquets) sous Linux, Debian et ses dérivés utilisent un format de fichier de logiciels installables spécifique. Celui-ci s'appelle DEB. La commande utilisée pour manipuler ses paquetages s'appelle dpkg.

Les options de la commande dpkg sont :

root@debian8:~# dpkg --help
Usage: dpkg [<option> ...] <command>

Commands:
  -i|--install       <.deb file name> ... | -R|--recursive <directory> ...
  --unpack           <.deb file name> ... | -R|--recursive <directory> ...
  -A|--record-avail  <.deb file name> ... | -R|--recursive <directory> ...
  --configure        <package> ... | -a|--pending
  --triggers-only    <package> ... | -a|--pending
  -r|--remove        <package> ... | -a|--pending
  -P|--purge         <package> ... | -a|--pending
  -V|--verify <package> ...        Verify the integrity of package(s).
  --get-selections [<pattern> ...] Get list of selections to stdout.
  --set-selections                 Set package selections from stdin.
  --clear-selections               Deselect every non-essential package.
  --update-avail [<Packages-file>] Replace available packages info.
  --merge-avail [<Packages-file>]  Merge with info from file.
  --clear-avail                    Erase existing available info.
  --forget-old-unavail             Forget uninstalled unavailable pkgs.
  -s|--status <package> ...        Display package status details.
  -p|--print-avail <package> ...   Display available version details.
  -L|--listfiles <package> ...     List files `owned' by package(s).
  -l|--list [<pattern> ...]        List packages concisely.
  -S|--search <pattern> ...        Find package(s) owning file(s).
  -C|--audit [<package> ...]       Check for broken package(s).
  --add-architecture <arch>        Add <arch> to the list of architectures.
  --remove-architecture <arch>     Remove <arch> from the list of architectures.
  --print-architecture             Print dpkg architecture.
  --print-foreign-architectures    Print allowed foreign architectures.
  --compare-versions <a> <op> <b>  Compare version numbers - see below.
  --force-help                     Show help on forcing.
  -Dh|--debug=help                 Show help on debugging.

  -?, --help                       Show this help message.
      --version                    Show the version.

Use dpkg -b|--build|-c|--contents|-e|--control|-I|--info|-f|--field|
 -x|--extract|-X|--vextract|--fsys-tarfile  on archives (type dpkg-deb --help).

For internal use: dpkg --assert-support-predepends | --predep-package |
  --assert-working-epoch | --assert-long-filenames | --assert-multi-conrep |
  --assert-multi-arch | --assert-versioned-provides.

Options:
  --admindir=<directory>     Use <directory> instead of /var/lib/dpkg.
  --root=<directory>         Install on a different root directory.
  --instdir=<directory>      Change installation dir without changing admin dir.
  --path-exclude=<pattern>   Do not install paths which match a shell pattern.
  --path-include=<pattern>   Re-include a pattern after a previous exclusion.
  -O|--selected-only         Skip packages not selected for install/upgrade.
  -E|--skip-same-version     Skip packages whose same version is installed.
  -G|--refuse-downgrade      Skip packages with earlier version than installed.
  -B|--auto-deconfigure      Install even if it would break some other package.
  --[no-]triggers            Skip or force consequential trigger processing.
  --verify-format=<format>   Verify output format (supported: 'rpm').
  --no-debsig                Do not try to verify package signatures.
  --no-act|--dry-run|--simulate
                             Just say what we would do - don't do it.
  -D|--debug=<octal>         Enable debugging (see -Dhelp or --debug=help).
  --status-fd <n>            Send status change updates to file descriptor <n>.
  --status-logger=<command>  Send status change updates to <command>'s stdin.
  --log=<filename>           Log status changes and actions to <filename>.
  --ignore-depends=<package>,...
                             Ignore dependencies involving <package>.
  --force-...                Override problems (see --force-help).
  --no-force-...|--refuse-...
                             Stop when problems encountered.
  --abort-after <n>          Abort after encountering <n> errors.

Comparison operators for --compare-versions are:
  lt le eq ne ge gt       (treat empty version as earlier than any version);
  lt-nl le-nl ge-nl gt-nl (treat empty version as later than any version);
  < << <= = >= >> >       (only for compatibility with control file syntax).

Use 'apt' or 'aptitude' for user-friendly package management.

Configuration

Le fichier de configuration proncipal de la commande dpkg est /etc/dpkg/dpkg.cfg :

/etc/dpkg/dpkg.cfg
root@debian8:~# cat /etc/dpkg/dpkg.cfg
# dpkg configuration file
#
# This file can contain default options for dpkg.  All command-line
# options are allowed.  Values can be specified by putting them after
# the option, separated by whitespace and/or an `=' sign.
#
 
# Do not enable debsig-verify by default; since the distribution is not using
# embedded signatures, debsig-verify would reject all packages.
no-debsig
 
# Log status changes and actions to a file.
log /var/log/dpkg.log

Les directives dans ce fichier sont les option de la commande dpkg sans les charactères .

Il est important à noter que la base de données de la commande dpkg se trouve dans le répertoire /var/lib/dpkg :

root@debian8:~# ls -l /var/lib/dpkg
total 3888
drwxr-xr-x 2 root root    4096 Oct 16 11:26 alternatives
-rw-r--r-- 1 root root  133478 Oct 15 12:52 available
-rw-r--r-- 1 root root       8 Oct 15 12:52 cmethopt
-rw-r--r-- 1 root root     981 Oct 15 13:27 diversions
-rw-r--r-- 1 root root    1036 Oct 15 13:27 diversions-old
drwxr-xr-x 2 root root  339968 Oct 16 11:55 info
-rw-r----- 1 root root       0 Oct 16 11:55 lock
drwxr-xr-x 2 root root    4096 Apr 10  2015 parts
-rw-r--r-- 1 root root     378 Oct 15 13:20 statoverride
-rw-r--r-- 1 root root     350 Oct 15 13:20 statoverride-old
-rw-r--r-- 1 root root 1729325 Oct 16 11:55 status
-rw-r--r-- 1 root root 1729325 Oct 16 11:55 status-old
drwxr-xr-x 2 root root    4096 Oct 16 11:26 triggers
drwxr-xr-x 2 root root    4096 Oct 16 11:55 updates

Il est recommendé d'inclure ce répertoire et son contenu dans les sauvegardes régulières.

Utilisation

Afin de connaître la liste des paquets disponibles sur la machine, il convient de saisir la commande suivante dans une fenêtre de console en tant que root :

root@debian8:~# dpkg -l | more
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                  Version                              Architecture Description
+++-=====================================-====================================-============-==========================================================
=====================
ii  accountsservice                       0.6.37-3+b1                          i386         query and manipulate user account information
ii  acl                                   2.2.52-2                             i386         Access control list utilities
ii  acpi                                  1.7-1                                i386         displays information on ACPI devices
ii  acpi-support-base                     0.142-6                              all          scripts for handling base ACPI events such as the power bu
tton
ii  acpid                                 1:2.0.23-2                           i386         Advanced Configuration and Power Interface event daemon
ii  adduser                               3.113+nmu3                           all          add and remove users and groups
ii  adwaita-icon-theme                    3.14.0-2                             all          default icon theme of GNOME
ii  aisleriot                             1:3.14.1-1                           i386         GNOME solitaire card game collection
ii  alacarte                              3.11.91-2                            all          easy GNOME menu editing tool
ii  alsa-base                             1.0.27+1                             all          dummy package to ease purging of obsolete conffiles
ii  alsa-utils                            1.0.28-1                             i386         Utilities for configuring and using ALSA
ii  anacron                               2.3-23                               i386         cron-like program that doesn't go by time
ii  apache2-bin                           2.4.10-10+deb8u3                     i386         Apache HTTP Server (modules and other binary files)
ii  apg                                   2.2.3.dfsg.1-2                       i386         Automated Password Generator - Standalone version
ii  apt                                   1.0.9.8.1                            i386         commandline package manager
ii  apt-listchanges                       2.85.13+nmu1                         all          package change history notification tool
ii  apt-utils                             1.0.9.8.1                            i386         package management related utility programs
ii  aptitude                              0.6.11-1+b1                          i386         terminal-based package manager
ii  aptitude-common                       0.6.11-1                             all          architecture independent files for the aptitude package ma
nager
ii  aptitude-doc-en                       0.6.11-1                             all          English manual for aptitude, a terminal-based package mana
ger
--More--

L'option -l liste les paquets disponibles spécifiés par le fichier /var/lib/dpkg/available.

root@debian8:~# more /var/lib/dpkg/available
Package: gcc-4.9-base
Source: gcc-4.9
Version: 4.9.2-10
Installed-Size: 178
Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
Architecture: i386
Breaks: dehydra (<= 0.9.hg20110609-2), gcc-4.4-base (<< 4.4.7), gcc-4.7-base (<< 4.7.3), gcj-4.4-base (<< 4.4.6-9~), gcj-4.6-base (<< 4.6.1-4~), gnat-
4.4-base (<< 4.4.6-3~), gnat-4.6 (<< 4.6.1-5~)
Description: GCC, the GNU Compiler Collection (base package)
Description-md5: b6e93638a6d08ea7a18929d7cf078e5d
Multi-Arch: same
Homepage: http://gcc.gnu.org/
Section: libs
Priority: required
Filename: pool/main/g/gcc-4.9/gcc-4.9-base_4.9.2-10_i386.deb
Size: 159668
MD5sum: a6f0e12ef68bb0fb1280d7c2a15611af
SHA1: 385550776165a1fb91e222ad36294088e0a4ea1f
SHA256: 7d0d3c8f7ce7d708211c400a45c93600777ff2dca9c1e204b745cb73380f7dbc

Package: multiarch-support
Source: glibc
Version: 2.19-18+deb8u1
Installed-Size: 192
Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
Architecture: i386
Depends: libc6 (>= 2.13-5)
Description: Transitional package to ensure multiarch compatibility
Description-md5: f70fd4ad370040691119c10d77aec677
--More--(0%)

Le statut de chaque paquet est inclus dans le fichier /var/lib/dpkg/status :

root@debian8:~# more /var/lib/dpkg/status
Package: libatk-adaptor
Status: install ok installed
Priority: optional
Section: misc
Installed-Size: 71
Maintainer: Debian Accessibility Team <debian-accessibility@lists.debian.org>
Architecture: i386
Multi-Arch: same
Source: at-spi2-atk
Version: 2.14.0-2
Replaces: at-spi
Provides: at-spi
Depends: libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 2.9.4), libatspi2.0-0 (>= 2.9.90), libc6 (>= 2.3.6-6~), libdbus-1-3 (>= 1.0.2), libglib2.0-0 (
>= 2.12.0)
Conflicts: at-spi
Description: AT-SPI 2 toolkit bridge
 This package includes a gtk-module that bridges ATK to the new
 D-Bus based AT-SPI.
Homepage: https://wiki.gnome.org/Accessibility

Package: libasan0
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 211
Maintainer: Debian GCC Maintainers <debian-gcc@lists.debian.org>
Architecture: i386
Multi-Arch: same
Source: gcc-4.8
--More--(0%)

Afin de connaître le nombre total de paquets installés, utilisez la commande suivante :

root@debian8:~# dpkg --get-selections | wc -l
1769

Imaginons maintenant que vous souhaitez vérifier si un paquet contenant la chaîne de caractères zip soit déjà installé sur la machine. Dans ce cas, il convient d'abord d'utiliser la commande suivante :

root@debian8:~# dpkg --get-selections | grep zip
bzip2						install
gzip						install
p7zip-full					install
unzip						install

Afin de connaître le statut de du paquet gzip, il convient de saisir la commande suivante :

root@debian8:~# dpkg -s gzip
Package: gzip
Essential: yes
Status: install ok installed
Priority: required
Section: utils
Installed-Size: 238
Maintainer: Bdale Garbee <bdale@gag.com>
Architecture: i386
Version: 1.6-4
Depends: dpkg (>= 1.15.4) | install-info
Pre-Depends: libc6 (>= 2.17)
Suggests: less
Description: GNU compression utilities
 This package provides the standard GNU file compression utilities, which
 are also the default compression tools for Debian.  They typically operate
 on files with names ending in '.gz', but can also decompress files ending
 in '.Z' created with 'compress'.

Afin de lister tous les fichiers installés par le paquet gzip, utilisez la commande suivante :

root@debian8:~# dpkg -L gzip
/.
/bin
/bin/uncompress
/bin/znew
/bin/zdiff
/bin/zforce
/bin/zmore
/bin/gzip
/bin/zegrep
/bin/zcat
/bin/zfgrep
/bin/zless
/bin/zgrep
/bin/gzexe
/bin/gunzip
/bin/zcmp
/usr
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/zless.1.gz
/usr/share/man/man1/zgrep.1.gz
/usr/share/man/man1/zforce.1.gz
/usr/share/man/man1/znew.1.gz
/usr/share/man/man1/gzip.1.gz
/usr/share/man/man1/zmore.1.gz
/usr/share/man/man1/zdiff.1.gz
/usr/share/man/man1/gzexe.1.gz
/usr/share/doc
/usr/share/doc/gzip
/usr/share/doc/gzip/changelog.Debian.gz
/usr/share/doc/gzip/README.gz
/usr/share/doc/gzip/changelog.gz
/usr/share/doc/gzip/README-release
/usr/share/doc/gzip/copyright
/usr/share/doc/gzip/TODO
/usr/share/info
/usr/share/info/gzip.info.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/man/man1/zfgrep.1.gz
/usr/share/man/man1/gunzip.1.gz
/usr/share/man/man1/uncompress.1.gz
/usr/share/man/man1/zcmp.1.gz
/usr/share/man/man1/zcat.1.gz
/usr/share/man/man1/zegrep.1.gz

A l'inverse, si vous connaissez le nom d'un fichier et vous souhaitez savoir quel paquet l'a installé, utilisez la commande suivante :

root@debian8:~# dpkg -S /bin/zfgrep
gzip: /bin/zfgrep

La Commande dselect

La commande dselect est un outil interactif utilisé pour gérer, installer et désinstaller des paquets. C'est un Front End à la commande dpkg et est lancé sans options.

La commande dselect n'est pas installé par défaut. Il convient donc d'utiliser la commande apt-get pour l'installer :

root@debian8:~# apt-get install dselect
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  dselect
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,139 kB of archives.
After this operation, 2,296 kB of additional disk space will be used.
Get:1 http://httpredir.debian.org/debian/ jessie/main dselect i386 1.17.25 [1,139 kB]
Fetched 1,139 kB in 2s (551 kB/s)    
Selecting previously unselected package dselect.
(Reading database ... 158938 files and directories currently installed.)
Preparing to unpack .../dselect_1.17.25_i386.deb ...
Unpacking dselect (1.17.25) ...
Processing triggers for man-db (2.7.0.2-5) ...
Setting up dselect (1.17.25) ...

Lancez maintenant dselect :

Debian `dselect' package handling frontend version 1.17.25 (i386).

 * 0. [A]ccess    Choose the access method to use.                                                 
   1. [U]pdate    Update list of available packages, if possible.
   2. [S]elect    Request which packages you want on your system.
   3. [I]nstall   Install and upgrade wanted packages.
   4. [C]onfig    Configure any packages that are unconfigured.
   5. [R]emove    Remove unwanted software.
   6. [Q]uit      Quit dselect.

Move around with ^P and ^N, cursor keys, initial letters, or digits;
Press <enter> to confirm selection.   ^L redraws screen.

Copyright (C) 1994-1996 Ian Jackson.
Copyright (C) 2000,2001 Wichert Akkerman.
This is free software; see the GNU General Public License version 2 or
later for copying conditions. There is NO warranty.

A faire - Notez les instructions en bas de l'écran et expérimentez avec l'interface.

La Commande apt-get

APT ou en anglais Advanced Package Tool est un gestionnaire de paquets de haut niveau capable de résoudre automatiquement les problèmes de dépendances entre les paquets.

La commande apt-get prend la forme suivante :

# apt-get <options> <commande> <paquet(s)> [Entrée]

Les options et commandes de la commande apt-get sont :

root@debian8:~# apt-get --help
apt 1.0.9.8.1 for i386 compiled on Jun 11 2015 10:24:11
Usage: apt-get [options] command
       apt-get [options] install|remove pkg1 [pkg2 ...]
       apt-get [options] source pkg1 [pkg2 ...]

apt-get is a simple command line interface for downloading and
installing packages. The most frequently used commands are update
and install.

Commands:
   update - Retrieve new lists of packages
   upgrade - Perform an upgrade
   install - Install new packages (pkg is libc6 not libc6.deb)
   remove - Remove packages
   autoremove - Remove automatically all unused packages
   purge - Remove packages and config files
   source - Download source archives
   build-dep - Configure build-dependencies for source packages
   dist-upgrade - Distribution upgrade, see apt-get(8)
   dselect-upgrade - Follow dselect selections
   clean - Erase downloaded archive files
   autoclean - Erase old downloaded archive files
   check - Verify that there are no broken dependencies
   changelog - Download and display the changelog for the given package
   download - Download the binary package into the current directory

Options:
  -h  This help text.
  -q  Loggable output - no progress indicator
  -qq No output except for errors
  -d  Download only - do NOT install or unpack archives
  -s  No-act. Perform ordering simulation
  -y  Assume Yes to all queries and do not prompt
  -f  Attempt to correct a system with broken dependencies in place
  -m  Attempt to continue if archives are unlocatable
  -u  Show a list of upgraded packages as well
  -b  Build the source package after fetching it
  -V  Show verbose version numbers
  -c=? Read this configuration file
  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp
See the apt-get(8), sources.list(5) and apt.conf(5) manual
pages for more information and options.
                       This APT has Super Cow Powers.

Configuration

APT peut être configuré par un fichier centralisé /etc/apt/apt.conf. Un exemple est fourni :

root@debian8:~# cat /usr/share/doc/apt/examples/apt.conf
// $Id: apt.conf,v 1.43 1999/12/06 02:19:38 jgg Exp $
/* This file is a sample configuration file with a few harmless sample 
   options.   
*/

APT 
{
  // Options for apt-get
  Get 
  {
     Download-Only "false";
  };
  
};

// Options for the downloading routines
Acquire
{
  Retries "0";
};

// Things that effect the APT dselect method
DSelect 
{
  Clean "auto";   // always|auto|prompt|never
};

DPkg 
{
  // Probably don't want to use force-downgrade..
  Options {"--force-overwrite";}
}

D'autres fichiers de configuration se trouvent dans le répertoire /etc/apt/apt.conf.d/ :

root@debian8:~# ls /etc/apt/apt.conf.d/
00CDMountPoint	00trustcdrom  01autoremove  01autoremove-kernels  20listchanges  20packagekit  70debconf

Le contenu de ces fichiers sont :

root@debian8:~# cat /etc/apt/apt.conf.d/00CDMountPoint 
Acquire::cdrom {
  mount "/media/cdrom";
};
Dir::Media::MountPath "/media/cdrom";
root@debian8:~#
root@debian8:~# cat /etc/apt/apt.conf.d/00trustcdrom 
APT::Authentication::TrustCDROM "true";
root@debian8:~#
root@debian8:~# cat /etc/apt/apt.conf.d/01autoremove
APT
{
  NeverAutoRemove
  {
	"^firmware-linux.*";
	"^linux-firmware$";
  };

  VersionedKernelPackages
  {
	# linux kernels
	"linux-image";
	"linux-headers";
	"linux-image-extra";
	"linux-signed-image";
	# kfreebsd kernels
	"kfreebsd-image";
	"kfreebsd-headers";
	# hurd kernels
	"gnumach-image";
	# (out-of-tree) modules
	".*-modules";
	".*-kernel";
	"linux-backports-modules-.*";
        # tools
        "linux-tools";
  };

  Never-MarkAuto-Sections
  {
	"metapackages";
	"restricted/metapackages";
	"universe/metapackages";
	"multiverse/metapackages";
	"oldlibs";
	"restricted/oldlibs";
	"universe/oldlibs";
	"multiverse/oldlibs";
  };
};
root@debian8:~#
root@debian8:~# cat /etc/apt/apt.conf.d/01autoremove-kernels 
// DO NOT EDIT! File autogenerated by /etc/kernel/postinst.d/apt-auto-removal
APT::NeverAutoRemove
{
   "^linux-image-3\.16\.0-4-586$";
   "^linux-headers-3\.16\.0-4-586$";
   "^linux-image-extra-3\.16\.0-4-586$";
   "^linux-signed-image-3\.16\.0-4-586$";
   "^kfreebsd-image-3\.16\.0-4-586$";
   "^kfreebsd-headers-3\.16\.0-4-586$";
   "^gnumach-image-3\.16\.0-4-586$";
   "^.*-modules-3\.16\.0-4-586$";
   "^.*-kernel-3\.16\.0-4-586$";
   "^linux-backports-modules-.*-3\.16\.0-4-586$";
   "^linux-tools-3\.16\.0-4-586$";
};
root@debian8:~#
root@debian8:~# cat /etc/apt/apt.conf.d/20listchanges 
DPkg::Pre-Install-Pkgs { "/usr/bin/apt-listchanges --apt || test $? -ne 10"; };
DPkg::Tools::Options::/usr/bin/apt-listchanges::Version "2";
root@debian8:~# cat /etc/apt/apt.conf.d/20packagekit 
// THIS FILE IS USED TO INFORM PACKAGEKIT
// THAT THE UPDATE-INFO MIGHT HAVE CHANGED

// Whenever dpkg is called we might have different updates
// i.e. if an user removes a package that had an update
DPkg::Post-Invoke {
"/usr/bin/test -e /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service && /usr/bin/test -S /var/run/dbus/system_bus_socket && /usr/bin/gdbus call --system --dest org.freedesktop.PackageKit --object-path /org/freedesktop/PackageKit --timeout 4 --method org.freedesktop.PackageKit.StateHasChanged cache-update > /dev/null; /bin/echo > /dev/null";
};

// When Apt's cache is updated (i.e. apt-cache update)
APT::Update::Post-Invoke-Success {
"/usr/bin/test -e /usr/share/dbus-1/system-services/org.freedesktop.PackageKit.service && /usr/bin/test -S /var/run/dbus/system_bus_socket && /usr/bin/gdbus call --system --dest org.freedesktop.PackageKit --object-path /org/freedesktop/PackageKit --timeout 4 --method org.freedesktop.PackageKit.StateHasChanged cache-update > /dev/null; /bin/echo > /dev/null";
};
root@debian8:~#
root@debian8:~# cat /etc/apt/apt.conf.d/70debconf 
// Pre-configure all packages with debconf before they are installed.
// If you don't like it, comment it out.
DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt || true";};

Dépôts

Un dépôt est un lieu de stockage de paquets binaires prêts à installer. Un dépôt peut être le DVD d'installation de la distribution, un dossier sur disque dur ou bien des serveurs distants accessibles par Internet.

Les dépôts de paquets sont spécifiés soit dans le fichier /etc/apt/sources.list, soit dans un fichier par dépôt stocké dans le répertoire /etc/apt/sources.list.d :

root@debian8:~# cat /etc/apt/sources.list
# 

#deb cdrom:[Debian GNU/Linux 8.2.0 _Jessie_ - Official i386 DVD Binary-1 20150906-10:02]/ jessie contrib main

#deb cdrom:[Debian GNU/Linux 8.2.0 _Jessie_ - Official i386 DVD Binary-1 20150906-10:02]/ jessie contrib main

deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib

# jessie-updates, previously known as 'volatile'
# A network mirror was not selected during install.  The following entries
# are provided as examples, but you should amend them as appropriate
# for your mirror of choice.
#
deb http://ftp.debian.org/debian/ jessie-updates main contrib
deb-src http://ftp.debian.org/debian/ jessie-updates main contrib

deb http://httpredir.debian.org/debian jessie main
deb-src http://httpredir.debian.org/debian jessie main

Consultez maintenant le contenu du répertoire /etc/apt/sources.list.d :

root@debian8:~# ls /etc/apt/sources.list.d
google-chrome.list  google.list

Visualisez le contenu du fichier /etc/apt/sources.list.d/google-chrome.list :

root@debian8:~# cat /etc/apt/sources.list.d/google-chrome.list
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb http://dl.google.com/linux/chrome/deb/ stable main

Ces fichiers comportent quatre champs :

Il est possible d'ajouter une source directement en éditant le fichier /etc/apt/sources.list, en créant un fichier spécifique dans le répertoire /etc/apt/sources.list.d ou en utilisant la commande apt-setup.

La mise à jour de la base de références de la description des paquets est effectuée un utilisant la commande suivante :

root@debian8:~# apt-get update
Hit http://security.debian.org jessie/updates InRelease                                                                                              
Ign http://dl.google.com stable InRelease                                                 
Hit http://ftp.debian.org jessie-updates InRelease                  
Hit http://dl.google.com stable Release.gpg                                                              
Hit http://security.debian.org jessie/updates/main Sources                                       
Hit http://ftp.debian.org jessie-updates/main Sources                                            
Hit http://dl.google.com stable Release                                                                                               
Hit http://security.debian.org jessie/updates/contrib Sources                                                           
Hit http://ftp.debian.org jessie-updates/contrib Sources                                                  
Ign http://httpredir.debian.org jessie InRelease                                                          
Hit http://dl.google.com stable/main i386 Packages                                          
Hit http://security.debian.org jessie/updates/main i386 Packages                            
Hit http://ftp.debian.org jessie-updates/main i386 Packages                                 
Hit http://security.debian.org jessie/updates/contrib i386 Packages                                           
Hit http://ftp.debian.org jessie-updates/contrib i386 Packages                                                
Hit http://security.debian.org jessie/updates/contrib Translation-en                                          
Hit http://ftp.debian.org jessie-updates/contrib Translation-en                                                             
Hit http://security.debian.org jessie/updates/main Translation-en                                                           
Hit http://ftp.debian.org jessie-updates/main Translation-en                                                                
Hit http://httpredir.debian.org jessie Release.gpg                      
Hit http://httpredir.debian.org jessie Release  
Ign http://dl.google.com stable/main Translation-en_US                                                  
Ign http://dl.google.com stable/main Translation-en                                                                     
Hit http://httpredir.debian.org jessie/main Sources                                                                
Hit http://httpredir.debian.org jessie/main i386 Packages                                                          
Hit http://httpredir.debian.org jessie/main Translation-en                                                 
Reading package lists... Done                                                                                                                        
W: Duplicate sources.list entry http://dl.google.com/linux/chrome/deb/ stable/main i386 Packages (/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_main_binary-i386_Packages)
W: You may want to run apt-get update to correct these problems

Utilisation

Les commandes les plus utilisées d'apt-get sont :

Commande Description
install Installer un ou plusieurs paquets.
upgrade Mettre à jour les paquets installés.
remove Supprimer un paquet.
purge Supprimer un paquet et ses fichiers de configuration.

LAB #1 - Utiliser la commande apt-get

Commencez par installer le paquet mc :

root@debian8:~# apt-get install mc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  mc-data
Suggested packages:
  arj catdvi texlive-binaries dbview djvulibre-bin gv odt2txt python-boto python-tz zip
The following NEW packages will be installed:
  mc mc-data
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,766 kB of archives.
After this operation, 7,079 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://httpredir.debian.org/debian/ jessie/main mc-data all 3:4.8.13-3 [1,212 kB]
Get:2 http://httpredir.debian.org/debian/ jessie/main mc i386 3:4.8.13-3 [554 kB]
Fetched 1,766 kB in 5s (317 kB/s)                            
Selecting previously unselected package mc-data.
(Reading database ... 159185 files and directories currently installed.)
Preparing to unpack .../mc-data_3%3a4.8.13-3_all.deb ...
Unpacking mc-data (3:4.8.13-3) ...
Selecting previously unselected package mc.
Preparing to unpack .../mc_3%3a4.8.13-3_i386.deb ...
Unpacking mc (3:4.8.13-3) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for man-db (2.7.0.2-5) ...
Processing triggers for menu (2.1.47) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for gnome-menus (3.13.3-6) ...
Processing triggers for mime-support (3.58) ...
Setting up mc-data (3:4.8.13-3) ...
Setting up mc (3:4.8.13-3) ...
update-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode
Processing triggers for menu (2.1.47) ...

La ré-installation d'un paquet est effectuée un utilisant la commande suivante :

root@debian8:~# apt-get --reinstall install mc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 0 B/554 kB of archives.
After this operation, 0 B of additional disk space will be used.
(Reading database ... 159546 files and directories currently installed.)
Preparing to unpack .../mc_3%3a4.8.13-3_i386.deb ...
Unpacking mc (3:4.8.13-3) over (3:4.8.13-3) ...
Processing triggers for menu (2.1.47) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for gnome-menus (3.13.3-6) ...
Processing triggers for mime-support (3.58) ...
Setting up mc (3:4.8.13-3) ...
Processing triggers for menu (2.1.47) ...

La suppression complète d'un paquet, y compris les fichiers de configuration éventuellement modifiés est effectuée un utilisant la commande suivante :

root@debian8:~# apt-get --purge remove mc
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  mc-data
Use 'apt-get autoremove' to remove it.
The following packages will be REMOVED:
  mc*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,529 kB disk space will be freed.
Do you want to continue? [Y/n] Y
(Reading database ... 159545 files and directories currently installed.)
Removing mc (3:4.8.13-3) ...
update-alternatives: using /usr/bin/vim.tiny to provide /usr/bin/view (view) in auto mode
Purging configuration files for mc (3:4.8.13-3) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for gnome-menus (3.13.3-6) ...
Processing triggers for mime-support (3.58) ...
Processing triggers for menu (2.1.47) ...

Les paquets téléchargés d'une source distante ou via une source copy:// sont stockés dans le répertoire /var/cache/apt/archives. Les paquets partiellement téléchargés ou copiés sont stockés dans le répertoire /var/cache/apt/archives/partial.

root@debian8:~# ls /var/cache/apt/archives/
binutils_2.25-5_i386.deb		      libgcc-4.8-dev_4.8.4-1_i386.deb
cpp-4.8_4.8.4-1_i386.deb		      libgcc-4.9-dev_4.9.2-10_i386.deb
dkms_2.2.0.3-2_all.deb			      libindicator7_0.5.0-2_i386.deb
dselect_1.17.25_i386.deb		      libitm1_4.9.2-10_i386.deb
fakeroot_1.20.2-1_i386.deb		      libubsan0_4.9.2-10_i386.deb
gcc_4%3a4.9.2-2_i386.deb		      linux-compiler-gcc-4.8-x86_3.16.7-ckt11-1+deb8u5_i386.deb
gcc-4.8_4.8.4-1_i386.deb		      linux-headers-3.16.0-4-586_3.16.7-ckt11-1+deb8u5_i386.deb
gcc-4.9_4.9.2-10_i386.deb		      linux-headers-3.16.0-4-686-pae_3.16.7-ckt11-1+deb8u5_i386.deb
google-chrome-stable_46.0.2490.71-1_i386.deb  linux-headers-3.16.0-4-common_3.16.7-ckt11-1+deb8u5_i386.deb
libappindicator1_0.4.92-3.1_i386.deb	      linux-headers-686-pae_3.16+63_i386.deb
libasan0_4.8.4-1_i386.deb		      linux-kbuild-3.16_3.16-3_i386.deb
libasan1_4.9.2-10_i386.deb		      linux-libc-dev_3.16.7-ckt11-1+deb8u5_i386.deb
libatomic1_4.9.2-10_i386.deb		      lock
libc6-dev_2.19-18+deb8u1_i386.deb	      make_4.0-8.1_i386.deb
libc-dev-bin_2.19-18+deb8u1_i386.deb	      manpages-dev_3.74-1_all.deb
libcilkrts5_4.9.2-10_i386.deb		      mc_3%3a4.8.13-3_i386.deb
libcurl3_7.38.0-4+deb8u2_i386.deb	      mc-data_3%3a4.8.13-3_all.deb
libdbusmenu-glib4_12.10.2-1_i386.deb	      menu_2.1.47_i386.deb
libdbusmenu-gtk4_12.10.2-1_i386.deb	      partial
libfakeroot_1.20.2-1_i386.deb		      sudo_1.8.10p3-1+deb8u2_i386.deb

Pour nettoyer le cache il convient d'utiliser la commande suivante :

root@debian8:~# apt-get clean
root@debian8:~# ls /var/cache/apt/archives/
lock  partial

Pour mettre à jour les paquets déjà installés, il convient d'utiliser une de deux commandes apt-get :

La deuxième commande met à jour une distribution complète, c'est-à-dire d'installer les mises à jour des paquets déjà installés et installer des nouveaux paquets ainsi que leur dépendances.

A faire - Consultez l'APT HOWTO pour vous renseigner sur les autres commandes et options.

LAB #2 - Utiliser la commande apt-cache

La commande apt-cache permet de se renseigner sur les paquetages connus à APT.

La commande apt-cache prend la forme suivante :

# apt-cache <options> <commande> <paquet(s)> [Entrée]

Les options et les commandes de la commande apt-cache sont :

root@debian8:~# apt-cache --help
apt 1.0.9.8.1 for i386 compiled on Jun 11 2015 10:24:11
Usage: apt-cache [options] command
       apt-cache [options] showpkg pkg1 [pkg2 ...]
       apt-cache [options] showsrc pkg1 [pkg2 ...]

apt-cache is a low-level tool used to query information
from APT's binary cache files

Commands:
   gencaches - Build both the package and source cache
   showpkg - Show some general information for a single package
   showsrc - Show source records
   stats - Show some basic statistics
   dump - Show the entire file in a terse form
   dumpavail - Print an available file to stdout
   unmet - Show unmet dependencies
   search - Search the package list for a regex pattern
   show - Show a readable record for the package
   depends - Show raw dependency information for a package
   rdepends - Show reverse dependency information for a package
   pkgnames - List the names of all packages in the system
   dotty - Generate package graphs for GraphViz
   xvcg - Generate package graphs for xvcg
   policy - Show policy settings

Options:
  -h   This help text.
  -p=? The package cache.
  -s=? The source cache.
  -q   Disable progress indicator.
  -i   Show only important deps for the unmet command.
  -c=? Read this configuration file
  -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp
See the apt-cache(8) and apt.conf(5) manual pages for more information.

Les commandes les plus utilisées d'apt-cache sont :

Commande Description
stats Affiche quelques statistiques de base.
search Cherche une expression rationnelle dans la liste des paquets.
show Affiche la description du paquet.
depends Affiche toutes les dépendances d'un paquet.

Utilisez la commande stats de la commande apt-cache pour obtenir des statistiques sur les paquets :

root@debian8:~# apt-cache stats
Total package names: 54190 (1,084 k)
Total package structures: 54191 (2,601 k)
  Normal packages: 41948
  Pure virtual packages: 368
  Single virtual packages: 4746
  Mixed virtual packages: 360
  Missing: 6769
Total distinct versions: 42663 (2,730 k)
Total distinct descriptions: 84613 (2,031 k)
Total dependencies: 263895 (7,389 k)
Total ver/file relations: 45004 (720 k)
Total Desc/File relations: 84613 (1,354 k)
Total Provides mappings: 7206 (144 k)
Total globbed strings: 84 (698 )
Total dependency version space: 1,065 k
Total slack space: 82.9 k
Total space accounted for: 13.7 M

A faire - Utilisez le manuel d'apt-cache pour trouver les définitions des termes Normal packages, Pure virtual packages, Single virtual packages et Mixed virtual packages.

Recherchez maintenant la chaîne mc dans la liste des paquets :

root@debian8:~# apt-cache search mc | more
fusionforge-plugin-scmcvs - collaborative development tool - CVS plugin
libapache-mod-jk-doc - Documentation of libapache2-mod-jk package
libapache2-mod-jk - Apache 2 connector for the Tomcat Java servlet engine
php5-mcrypt - MCrypt module for php5
redis-server - Persistent key-value database with network interface
redis-tools - Persistent key-value database with network interface (client)
php-symfony-dom-crawler - ease DOM navigation for HTML and XML documents
libace-rmcast-6.2.8 - ACE reliable multicast library
libace-rmcast-dev - ACE reliable multicast library - development files
libace-tmcast-6.2.8 - ACE transactional multicast library
libace-tmcast-dev - ACE transactional multicast library - development files
alsa-oss - ALSA wrapper for OSS applications
amule-emc - lists ed2k links inside emulecollection files
ap-utils - Access Point SNMP Utils for Linux
apel - portable library for emacsen
apmd - Utilities for Advanced Power Management (APM)
archipel-agent-vmcasting - Virtual Machine Orchestration (Agent Vmcasting)
ardour - digital audio workstation (graphical gtk2 interface)
ardour3 - digital audio workstation (graphical gtk2 interface)
auto-07p - software for continuation and bifurcation problems in ODE
auto-multiple-choice - Auto Multiple Choice - multiple choice papers management
auto-multiple-choice-common - Auto Multiple Choice - architecture independent files
auto-multiple-choice-doc - Auto Multiple Choice - HTML documentation
auto-multiple-choice-doc-pdf - Auto Multiple Choice - PDF documentation
libbambamc-dev - Development files for reading and writing BAM (genome alignment) files
libbambamc0 - Runtime library for reading and writing BAM (genome alignment) files
python-beaker - cache and session library
python3-beaker - cache and session library for Python 3
libcbf-dev - development files for CBFlib
--More--

Pour être plus précis dans la recherche, il est nécessaire de rechercher une phrase clef :

root@debian8:~# apt-cache search "midnight commander"
pilot - Simple file browser from Alpine, a text-based email client
avfs - virtual filesystem to access archives, disk images, remote locations
junior-system - Debian Jr. System tools
gnome-commander - nice and fast file manager for the GNOME desktop
gnome-commander-data - Data files for GNOME Commander
gnome-commander-dbg - Debugging symbols for gnome-commander
krusader - twin-panel (commander-style) file manager
mc - Midnight Commander - a powerful file manager
mc-data - Midnight Commander - a powerful file manager -- data files
mc-dbg - Midnight Commander - a powerful file manager - debug package
moc - ncurses based console audio player
ranger - File manager with an ncurses frontend written in Python

Afficher maintenant les informations concernant le paquet mc :

root@debian8:~# apt-cache show mc
Package: mc
Version: 3:4.8.13-3
Installed-Size: 1493
Maintainer: Debian MC Packaging Group <pkg-mc-devel@lists.alioth.debian.org>
Architecture: i386
Provides: mcedit
Depends: e2fslibs (>= 1.37), libc6 (>= 2.15), libglib2.0-0 (>= 2.35.9), libgpm2 (>= 1.20.4), libslang2 (>= 2.2.4), libssh2-1 (>= 1.2.5), mc-data (= 3:4.8.13-3)
Recommends: mime-support, perl, unzip
Suggests: arj, bzip2, catdvi | texlive-binaries, dbview, djvulibre-bin, file, genisoimage, gv, imagemagick, links | w3m | lynx, odt2txt, poppler-utils, python, python-boto, python-tz, xpdf | pdf-viewer, zip
Description-en: Midnight Commander - a powerful file manager
 GNU Midnight Commander is a text-mode full-screen file manager. It
 uses a two panel interface and a subshell for command execution. It
 includes an internal editor with syntax highlighting and an internal
 viewer with support for binary files. Also included is Virtual
 Filesystem (VFS), that allows files on remote systems (e.g. FTP, SSH
 servers) and files inside archives to be manipulated like real files.
Description-md5: 252a5c5aeeb7425db45357d4ab8aa55f
Homepage: http://www.midnight-commander.org
Tag: admin::filesystem, implemented-in::c, implemented-in::perl,
 interface::commandline, interface::text-mode, role::program,
 scope::application, suite::gnu, uitoolkit::ncurses, use::browsing,
 use::editing, use::organizing, works-with::archive, works-with::file
Section: utils
Priority: optional
Filename: pool/main/m/mc/mc_4.8.13-3_i386.deb
Size: 554122
MD5sum: ad571565e58a4cbbd0bc7688ec8660a3
SHA1: 727e746c4567c8d03f491499b8acfa42f78e28b8
SHA256: 493ec9d930888c2a033c742dc90a65847429df63029d54251e8c7492f6255ff3

Dernièrement, visualisez les dépendances du paquet mc :

root@debian8:~# apt-cache depends mc
mc
  Depends: e2fslibs
  Depends: libc6
  Depends: libglib2.0-0
  Depends: libgpm2
  Depends: libslang2
  Depends: libssh2-1
  Depends: mc-data
  Suggests: arj
  Suggests: bzip2
 |Suggests: catdvi
  Suggests: texlive-binaries
  Suggests: dbview
  Suggests: djvulibre-bin
  Suggests: file
  Suggests: genisoimage
  Suggests: gv
  Suggests: imagemagick
    graphicsmagick-imagemagick-compat
 |Suggests: links
 |Suggests: w3m
  Suggests: lynx
  Suggests: odt2txt
  Suggests: poppler-utils
  Suggests: python
  Suggests: python-boto
  Suggests: python-tz
 |Suggests: xpdf
  Suggests: <pdf-viewer>
    atril
    evince
    evince-gtk
    gv
    mupdf
    okular
    xpdf
    zathura
  Suggests: zip
  Recommends: mime-support
  Recommends: perl
  Recommends: unzip

Les deux lignes suivantes :

 |Suggère: xpdf
  Suggère: <pdf-viewer>

indiquent soit xpdf soit <pdf-viewer>


<html>

Copyright © 2004-2016 Hugh Norris.<br><br> <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”><img alt=“Licence Creative Commons” style=“border-width:0” src=“http://i.creativecommons.org/l/by-nc-nd/3.0/fr/88x31.png” /></a><br />Ce(tte) oeuvre est mise à disposition selon les termes de la <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”>Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France</a>.

</html>