Gestion des paquets Ubuntu

De EjnTricks

Les installations de produits sur des machines Ubuntu, Debian et ses dérivés, s'effectuent essentiellement à partir de paquets élaborés et maintenus par la communauté. La grande majorité des personnes se contenteront des interfaces graphiques pour gérer les mises à jour disponibles. Mais dans le cadre de cette intallation, l'interface graphique est supprimée et tout s'effectue via le shell.

Cet article se propose donc de présenter quelques commandes et manipulations nécessaires à la gestion des paquets.


Hand-icon.png Votre avis

Current user rating: 90/100 (1 votes)

 You need to enable JavaScript to vote


System-Install-icon.png Installation

L'installation des paquets s'effectue à l'aide de l'outil apt-get.

L'argument upgrade permet de lister les mises à jour disponibles. L'utilisateur doit ensuite confirmer la mise à jour. En annulant cette confirmation, cela permet d'avoir un listing complet.

# apt-get upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Calcul de la mise à jour... Fait
Le paquet suivant a été installé automatiquement et n'est plus nécessaire :
  libgucharmap-2-90-7
Veuillez utiliser « apt-get autoremove » pour le supprimer.
Les paquets suivants ont été conservés :
  apparmor-utils base-passwd bind9 bind9-host bind9utils checkbox cpp-4.8 cups cups-bsd cups-client cups-daemon cups-filters dnsutils duplicity g++-4.8
  gcc-4.8 gcc-4.8-base gcc-4.8-base:i386 gdb libapache2-mod-svn libasan0 libatomic1 libbind9-90 libcups2 libcupscgi1 libcupsimage2 libcupsmime1 libcupsppdc1
  libgcc-4.8-dev libgcc1 libgcc1:i386 libgl1-mesa-glx libglapi-mesa libgnutls-openssl27 libgnutls26 libgomp1 libimobiledevice4 libisc95 libisccc90 libisccfg90
  libitm1 liblwres90 libnss3 libnss3-1d libpam-systemd libpython3-stdlib libqt4-dbus libqt4-dbus:i386 libqt4-declarative libqt4-help libqt4-network libqt4-opengl
  libqt4-script libqt4-scripttools libqt4-sql libqt4-sql-mysql libqt4-test libqt4-xml libqt4-xml:i386 libqt4-xmlpatterns libqtcore4 libqtcore4:i386 libqtgui4
  libquadmath0 libreoffice-base-core libreoffice-calc libreoffice-common libreoffice-core libreoffice-draw libreoffice-help-en-gb libreoffice-help-en-us
  libreoffice-impress libreoffice-l10n-en-gb libreoffice-math libreoffice-pdfimport libreoffice-style-human libreoffice-writer libsmbclient libstdc++-4.8-dev
  libstdc++6 libstdc++6:i386 libsvn1 libsystemd-daemon0 libsystemd-login0 libtsan0 libudev1 linux-generic linux-headers-generic linux-image-generic lp-solve
  modemmanager network-manager openssh-client openssh-server p11-kit poppler-utils procps protobuf-compiler python-pil python-samba python-subversion python3
  python3-apt python3-dbus python3-gdbm python3-gi python3-lxml python3-minimal python3-pkg-resources python3-pycurl python3-uno qdbus:i386 qtchooser samba-common
  samba-common-bin samba-libs smbclient subversion systemd-services tcl tcl8.4 tcl8.5 ttf-wqy-microhei udev udisks2
Les paquets suivants seront mis à jour :
  bluez bluez-alsa bluez-gstreamer byobu dbus dbus-x11 dconf-cli dconf-gsettings-backend dconf-service dh-python fancontrol file fontconfig fontconfig-config
  fonts-freefont-ttf fonts-opensymbol foomatic-db-compressed-ppds foomatic-db-engine gconf-service gconf-service-backend gconf2 gconf2-common ghostscript
  ghostscript-x gir1.2-atk-1.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gir1.2-gtk-3.0
  gir1.2-gudev-1.0 gir1.2-ibus-1.0 gir1.2-packagekitglib-1.0 gir1.2-pango-1.0 gir1.2-udisks-2.0 glib-networking glib-networking-common glib-networking-services
  gnome-icon-theme gsettings-desktop-schemas gstreamer0.10-gconf gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-pulseaudio gstreamer1.0-x
  guile-1.8-libs humanity-icon-theme ibus ibus-gtk ibus-gtk3 im-config initramfs-tools initramfs-tools-bin isc-dhcp-client isc-dhcp-common
  language-selector-common libakonadi-kabc4 libakonadiprotocolinternals1 libapt-inst1.5 libapt-pkg4.12 libasound2 libasound2-data libatk-bridge2.0-0
  libatk1.0-0 libatk1.0-data libatspi2.0-0 libblkid1 libbluetooth3 libboost-date-time1.54.0 libbrlapi0.6 libbsd0 libcairo-gobject2 libcairo2 libcap2 libcap2-bin
  libcdr-0.0-0 libcdt5 libcloog-isl4 libcomerr2 libcomerr2:i386 libcurl3-gnutls libdb5.3 libdbus-1-3 libdbus-1-3:i386 libdbusmenu-qt2 libdconf1 libdecoration0
  libdjvulibre-text libdjvulibre21 libdmtx0a libelf1 libelf1:i386 libexttextcat-2.0-0 libexttextcat-data libffi6 libffi6:i386 libfftw3-double3 libfontconfig1
  libfontembed1 libfreetype6 libfribidi0 libgadu3 libgail-common libgail18 libgconf-2-4 libgconf2-4 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgeoclue0
  libgirepository-1.0-1 libglib2.0-0 libglib2.0-0:i386 libglib2.0-bin libglib2.0-data libglibmm-2.4-1c2a libgmp10 libgs9 libgs9-common
  libgstreamer-plugins-base1.0-0 libgstreamer-plugins-good1.0-0 libgstreamer1.0-0 libgtk-3-0 libgtk-3-bin libgtk-3-common libgtk2-perl libgtk2.0-0 libgtk2.0-bin
  libgtk2.0-common libgtksourceview2.0-0 libgtksourceview2.0-common libgudev-1.0-0 libgusb2 libgutenprint2 libharfbuzz-icu0 libharfbuzz0b libhdb9-heimdal
  libheimntlm0-heimdal libhx509-5-heimdal libibus-1.0-5 libido-0.1-0 libisl10 libisofs6 libjavascriptcoregtk-1.0-0 libjavascriptcoregtk-3.0-0 libjte1
  libkdc2-heimdal liblcms1 liblcms2-2 liblircclient0 libllvm3.4 libltdl7 liblzma5 libmagic1 libmp3lame0 libmspub-0.0-0 libncurses5 libncursesw5
  libnet-ssleay-perl libnih-dbus1 libnih1 libnm-glib-vpn1 libnm-glib4 libnm-util2 libnotify-bin libnotify4 libnspr4 libnspr4-0d libnss-mdns libnuma1
  libopencc1 libopenvg1-mesa liborcus-0.6-0 libp11-kit0 libpackagekit-glib2-16 libpango-1.0-0 libpango1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0
  libpangoxft-1.0-0 libparted0debian1 libpathplan4 libpcap0.8 libpcsclite1 libpipeline1 libplymouth2 libpng12-0 libpolkit-agent-1-0 libpolkit-backend-1-0
  libpolkit-gobject-1-0 libportaudio2 libpulse-mainloop-glib0 libpulse0 libpurple-bin libqpdf13 libraptor1 libraptor2-0 librasqal3 librdf0 librsvg2-2
  librsvg2-common libsamplerate0 libsane libsane-common libsdl1.2debian libsensors4 libsnmp-base libsnmp30 libsoup2.4-1 libspeechd2 libspeex1 libspeexdsp1
  libss2 libt1-5 libthai-data libthai0 libtheora0 libtinfo5 libtxc-dxtn-s2tc0 libv4l-0 libv4lconvert0 libvisio-0.0-0 libvpx1 libwayland-client0
  libwayland-cursor0 libwayland-server0 libwbclient0 libwebkitgtk-3.0-0 libwebkitgtk-3.0-common libwind0-heimdal libwrap0 libxaw7 libxcb-dri2-0 libxcb-glx0
  libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-xfixes0 libxcb1 libxfont1 libxft2 libxklavier16 libxrandr2 libxslt1.1 libxv1 libyelp0 lm-sensors
  mobile-broadband-provider-info notify-osd os-prober plymouth plymouth-label plymouth-theme-ubuntu-logo plymouth-theme-ubuntu-text sane-utils
  speech-dispatcher-audio-plugins ttf-dejavu-core ttf-freefont ttf-indic-fonts-core ttf-kacst-one ttf-punjabi-fonts ttf-unfonts-core unattended-upgrades
  w3m x11-common x11-xkb-utils xkb-data yelp
268 mis à jour, 0 nouvellement installés, 0 à enlever et 125 non mis à jour.
Il est nécessaire de prendre 67,7 Mo dans les archives.
Après cette opération, 289 ko d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n] n
Annulation.

Dans l'exemple précédent, la mise à jour est annulé. L'argument install permet de mettre à jour, ou d'installer, un ou plusieurs paquets sécifiques. Lorsqu'un paquet contient des dépendances, un message de confirmation est présenté afin de valider l'installation de tous les paquets.

#sudo apt-get install plymouth
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Le paquet suivant a été installé automatiquement et n'est plus nécessaire :
  libgucharmap-2-90-7
Veuillez utiliser « apt-get autoremove » pour le supprimer.
Les paquets supplémentaires suivants seront installés :
  libplymouth2 plymouth-label
Les paquets suivants seront mis à jour :
  libplymouth2 plymouth plymouth-label
3 mis à jour, 0 nouvellement installés, 0 à enlever et 390 non mis à jour.
Il est nécessaire de prendre 181 ko dans les archives.
Après cette opération, 1 024 o d'espace disque seront libérés.
Souhaitez-vous continuer ? [O/n]

Si aucune dépendance n'est impactée, l'installation s'effectue sans confirmation de l'utilisateur.


Delete-file-icon.png Suppression

La suppression de paquet peut s'effectuer de plusieurs manières.

Une suppression simple s'effectue avec l'argument remove. Cependant cela ne supprime pas les fichiers de configuration.

#sudo apt-get remove paquet

L'argument purge effectue le même traitement qu'avec l'argument remove. Mais les fichiers de configuration sont également supprimés.

#sudo apt-get purge paquet

Lors des installations, un message peut apparaître indiquant que des paquets peuvent être supprimés avec l'argument autoremove. Ceci va permettre de supprimer tout ce qui est obsolète sans avoir à spécifier les noms de paquet.

#sudo apt-get autoremove


File-find-icon.png Recherche

Liste des paquets

Une fois installés, il peut être nécessaire de rechercher les paquets installés sur la machine à l'aide de la commande dpkg et de l'argument --get-selections ou -l.

#sudo dpkg --get-selections
#sudo dpkg -l

Contenu d'un paquet

Pour lister le contenu d'un paquet, la commande dpkg doit être lancée avec l'argument -L et en indiquant le paquet à lister. Dans cet exemple, le contenu de libreoffice-base-core est affiché:

#sudo dpkg -L libreoffice-base-core

/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/uno-libs3
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libreoffice-base-core
/usr/share/bug
/usr/share/bug/libreoffice-base-core
/usr/share/bug/libreoffice-base-core/presubj
/usr/lib
/usr/lib/libreoffice
/usr/lib/libreoffice/basis3.3
/usr/lib/libreoffice/basis3.3/program
/usr/lib/libreoffice/basis3.3/program/libdbalx.so
/usr/share/doc/libreoffice-base-core


Paquet parent

Lors de l'analyse de l'anomalie du module ldap sous Apache, il a été nécessaire de retrouver le paquet contenant un fichier. Cette recherche est possible à l'aide de l'outil apt-file. Cet utilitaire n'est pas forcément installé sur la machine et nécessite l'installation du paquet apt-file.

Si celui-ci n'est pas disponible, un message d'erreur est affiché :

#sudo apt-file search libgssapi.so.3
Le programme 'apt-file' n'est pas encore installé. Vous pouvez l'installer en tapant :
apt-get install apt-file

Une fois installé, la première utilisation indique que le cache doit être construit :

#sudo apt-file search libgssapi.so.3
E: The cache is empty. You need to run 'apt-file update' first.

Le message indique la commande, apt-file update, à exécuter :

#sudo apt-file update
Downloading complete file http://fr.archive.ubuntu.com/ubuntu/dists/trusty/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 28.1M  100 28.1M    0     0   709k      0  0:00:40  0:00:40 --:--:--  722k
Downloading complete file http://fr.archive.ubuntu.com/ubuntu/dists/trusty-updates/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   674  100   674    0     0   8029      0 --:--:-- --:--:-- --:--:--  8023
Downloading Index http://fr.archive.ubuntu.com/ubuntu/dists/trusty/Contents-amd64.diff/Index:
No Index available.
Downloading complete file http://fr.archive.ubuntu.com/ubuntu/dists/trusty/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0 28.1M    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
File is up-to-date.
Downloading Index http://fr.archive.ubuntu.com/ubuntu/dists/trusty-updates/Contents-amd64.diff/Index:
No Index available.
Downloading complete file http://fr.archive.ubuntu.com/ubuntu/dists/trusty-updates/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   674    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
File is up-to-date.
Downloading Index http://fr.archive.ubuntu.com/ubuntu/dists/trusty/Contents-amd64.diff/Index:
No Index available.
Downloading complete file http://fr.archive.ubuntu.com/ubuntu/dists/trusty/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0 28.1M    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
File is up-to-date.
Downloading Index http://fr.archive.ubuntu.com/ubuntu/dists/trusty-updates/Contents-amd64.diff/Index:
No Index available.
Downloading complete file http://fr.archive.ubuntu.com/ubuntu/dists/trusty-updates/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   674    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
File is up-to-date.
Ignoring source without Contents File:
  http://extras.ubuntu.com/ubuntu/dists/trusty/Contents-amd64.gz
Downloading complete file http://security.ubuntu.com/ubuntu/dists/trusty-security/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   674  100   674    0     0   2248      0 --:--:-- --:--:-- --:--:--  2246
Downloading Index http://security.ubuntu.com/ubuntu/dists/trusty-security/Contents-amd64.diff/Index:
No Index available.
Downloading complete file http://security.ubuntu.com/ubuntu/dists/trusty-security/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   674    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
File is up-to-date.
Downloading Index http://security.ubuntu.com/ubuntu/dists/trusty-security/Contents-amd64.diff/Index:
No Index available.
Downloading complete file http://security.ubuntu.com/ubuntu/dists/trusty-security/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   674    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
File is up-to-date.
Ignoring source without Contents File:
  http://ppa.launchpad.net/webupd8team/java/ubuntu/dists/trusty/Contents-amd64.gz

Une fois le cache construit, la recherche du fichier va retourner le paquet le contenant :

#sudo apt-file search libgssapi.so.3
heimdal-dbg: /usr/lib/debug/usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0
libgssapi3-heimdal: /usr/lib/x86_64-linux-gnu/libgssapi.so.3
libgssapi3-heimdal: /usr/lib/x86_64-linux-gnu/libgssapi.so.3.0.0


Process-icon.png Gestion des dépôts

La liste des dépôts est disponible dans le fichier /etc/apt/sources.list. La mise à jour du cache des paquets s'effectue à l'aide de la commande apt-get et de l'argument update. La page man indique qu'il est préférable d'exécuter cette commande avant les installations / mises à jour. Cependant le système Ubuntu gère tout cela correctement automatiquement et cela n'est généralement pas nécessaire.

#sudo apt-get update


Examples-icon.png Exemple avancé

Suppression multiple

La combinaison d'utilitaires permet de lancer la suppression de paquet qui aurait été désinstallés mais non purgés par exemple. La commande dpkg --get-selections va permettre de lister les paquets installés. Le résultat sera filtré pour ne lister que ceux désinstallés, à l'aide de la commande grep.

#sudo dpkg --get-selections | grep deinstall
brasero-common                                  deinstall
capplets-data                                   deinstall
gnome-panel                                     deinstall
gnome-panel-bonobo                              deinstall
hyphen-en-us                                    deinstall
hyphen-fr                                       deinstall
ia32-libs                                       deinstall
indicator-applet                                deinstall

Afin de purger ces paquets, l'option remove associée à --purge va permettre de les purger.

#dpkg --get-selections | grep deinstall | awk '{print $1}' | xargs sudo apt-get -y remove --purge

Cette ligne de commande utilise plusieurs utilitaire:

  • dpkg --get-selections permet d'obtenir l'ensemble des paquets.
  • grep deinstall permet de filtrer uniquement ceux qui sont désinstallé.
  • awk '{print $1}' permet d'extraire le premier mot, soit le nom des paquets.
  • xargs sudo apt-get -y remove --purge va permettre de construire la ligne de commande pour supprimer les paquets listés.