Die verschiedenen Optionen beim Installieren eines Debianpaketes

Von mir aufgesetzte debianartigen Systeme sind immer so konfiguriert das der Paketmanager APT nur das angegebene Programm und seine direkten Abhängigkeiten installiert. Das lässt durch das Anlegen einer Datei im Verzeichnis /etc/apt/apt.conf.d erreichen

In meinem Beispiel hier 80myapt

APT::Install-Recommends “0”;
APT::Install-Suggests “0”;

Das heißt das auf diesem System weder die empfohlenen (recommends) noch die vorgeschlagenen (suggests) Pakete installiert werden. So bleibt das System schlank und wird nicht mit unnötigen Paketen belastet. Es gibt durchaus Situationen wo man genau dieses Verhalten eben nicht will und die empfohlenen oder vorgeschlagenen doch installieren will.

Hier könnte man die angelegte Datei 80myapt temporär verschieben, so das sie für den Paketmanagement nicht mehr sichtbar ist. Dies ist reichlich umständlich und auch fehlerträchtig wenn man das zurückschieben der Config nach der Paketinstallation versehentlich vergisst.

Hierzu gibt es allerdings eine elegantere Lösung die man im Bedarfsfall auf der Komandozeile von Fall zu Fall flexibel anwenden kann. APT stellt hierzu Optionen bereit die man genau für diesen Fall nutzen kann.

Am Beispiel des Paketes openjdk-9-jre will das Verhalten APT mit den verschiedenen Optionen zeigen.

Nachfolgend werden auch die empfohlenen Pakete (recommends) installiert (Ausgabe gekürzt).

 # apt-get –install-recommends install openjdk-9-jre
[…]
Die folgenden zusätzlichen Pakete werden Installiert
  gconf2 libatk-wrapper-java libatk-wrapper-java-jni libbonobo2-0 libbonobo2-common libgnome-2-0 libgnome2-common libgnomevfs2-0 libgnomevfs2-common liborbit-2-0 openjdk-9-jre-headless
Vorgeschlagene Pakete:
  gconf-defaults-service libbonobo2-bin desktop-base libgnomevfs2-bin libgnomevfs2-extra gamin | fam gnome-mime-data icedtea-8-plugin
  fonts-ipafont-gothic fonts-ipafont-mincho ttf-wqy-microhei | ttf-wqy-zenhei fonts-indic
Die folgenden NEUEN Pakete werden installiert:
  gconf2 libatk-wrapper-java libatk-wrapper-java-jni libbonobo2-0 libbonobo2-common libgnome-2-0 libgnome2-common libgnomevfs2-0 libgnomevfs2-common liborbit-2-0 openjdk-9-jre openjdk-9-jre-headless
0 aktualisiert, 12 neu installiert, 0 zu entfernen und 16 nicht aktualisiert.
Inst libbonobo2-common (2.32.1-3 Ubuntu:16.04/xenial [all])
[…]

Zum Vergleich de gleiche Paketinstallation mit den vorgeschlagenen (suggests) Paketen (Ausgabe gekürzt).

 # apt-get –install-suggests install openjdk-9-jre
[…]
Die folgenden zusätzlichen Pakete werden Installiert
  fonts-beng fonts-beng-extra fonts-gubbi fonts-gujr fonts-gujr-extra fonts-guru fonts-guru-extra fonts-indic fonts-ipafont-gothic fonts-ipafont-mincho fonts-kalapi fonts-knda fonts-lohit-beng-assamese fonts-lohit-beng-bengali fonts-lohit-gujr fonts-lohit-guru fonts-lohit-knda fonts-lohit-mlym fonts-lohit-taml fonts-lohit-taml-classical fonts-lohit-telu fonts-mlym fonts-pagul fonts-samyak-gujr fonts-samyak-mlym fonts-samyak-taml fonts-smc fonts-taml fonts-telu fonts-telu-extra fonts-wqy-microhei icedtea-8-plugin icedtea-netx icedtea-netx-common libatk-wrapper-java libatk-wrapper-java-jni openjdk-9-jre-headless ttf-wqy-microhei
Empfohlene Pakete:
  libgnome-2-0 libgnomevfs2-0
Die folgenden NEUEN Pakete werden installiert:
  fonts-beng fonts-beng-extra fonts-gubbi fonts-gujr fonts-gujr-extra fonts-guru fonts-guru-extra fonts-indic fonts-ipafont-gothic fonts-ipafont-mincho fonts-kalapi fonts-knda fonts-lohit-beng-assamese fonts-lohit-beng-bengali fonts-lohit-gujr fonts-lohit-guru fonts-lohit-knda fonts-lohit-mlym fonts-lohit-taml fonts-lohit-taml-classical fonts-lohit-telu fonts-mlym fonts-pagul fonts-samyak-gujr fonts-samyak-mlym fonts-samyak-taml fonts-smc fonts-taml fonts-telu fonts-telu-extra fonts-wqy-microhei icedtea-8-plugin icedtea-netx icedtea-netx-common libatk-wrapper-java libatk-wrapper-java-jni openjdk-9-jre openjdk-9-jre-headless ttf-wqy-microhei
0 aktualisiert, 39 neu installiert, 0 zu entfernen und 16 nicht aktualisiert.
Inst fonts-ipafont-gothic (00303-13ubuntu1 Ubuntu:16.04/xenial [all])
[…]

Ohne Optionen würde die Installation folgendes ergeben (Ausgabe gekürzt).

 # apt-get install openjdk-9-jre
[…]
Die folgenden zusätzlichen Pakete werden Installiert
  libatk-wrapper-java libatk-wrapper-java-jni openjdk-9-jre-headless
Vorgeschlagene Pakete:
  icedtea-8-plugin fonts-ipafont-gothic fonts-ipafont-mincho ttf-wqy-microhei | ttf-wqy-zenhei fonts-indic
Empfohlene Pakete:
  libgnome-2-0 libgnomevfs2-0
Die folgenden NEUEN Pakete werden installiert:
  libatk-wrapper-java libatk-wrapper-java-jni openjdk-9-jre openjdk-9-jre-headless
0 aktualisiert, 4 neu installiert, 0 zu entfernen und 16 nicht aktualisiert.
Inst openjdk-9-jre-headless (9~b114-0ubuntu1 Ubuntu:16.04/xenial [amd64])
[…]

Bei der Variante mit vorgeschlagenen Paketen kommt man auf eine Anzahl von 39, bei den empfohlenen auf 14 und ohne Optionen auf eine Anzahl von 4 installierten Paketen. Zusammenfassend kann man feststellen das doch ein erheblicher Unterschied besteht auf welche Weise man ein Paket installiert.

Übrigens gibt es auch die passenden gegenteiligen Optionen die man nutzen kann, wenn man man sein System nicht so konfiguriert hat wie in meinem Fall. Das wäre der Fall wenn die empfohlenen Pakete (recommends) als Standard-Installationswert, was die bei vielen debianbasierten Distributionen der Fall ist, man anderweitig Pakete installieren will.

–no-install-suggests installiert keine vorgeschlagenen Pakete. –no-install-recommends installiert keine empfohlenen Pakete.