Warum brauche ich dieses Paket?

  Ralf Hersel   Lesezeit: 2 Minuten  🗪 4 Kommentare

Herausfinden, welche Pakete von einem anderen abhängen.

warum brauche ich dieses paket?

Gestern betrachtete ich während eines Updates, wie die Liste der zu aktualisierenden Pakete über mein Display lief, darunter auch Haskell und Python2. Da kam mir die Frage in den Sinn, warum braucht das System Haskell und Python2?

Das ist die Frage nach der Reverse Dependency von Paketen, also welche Pakete hängen von Paket x ab. Die Paketmanager der Distributionen beantworten diese Frage. Das möchte ich am Beispiel von Haskell unter Manjaro zeigen.

Wer es grafisch mag, findet die Antwort im Paketmanager Pamac. Man sucht nach "haskell", wählt das erstbeste installierte Paket und schaut bei den Detailinformationen im Reiter "Abhängigkeiten" in die Liste "Benötigt von".

Wer lieber im Terminal arbeitet, hat zwei Möglichkeiten. Zuerst muss man wissen, wie ein bestimmtes installiertes Haskell-Paket heisst: pacman -Q | grep haskell zeigt eine entsprechende Liste. Dann kann man mit diesem Befehl die Pakete ermitteln, die von einem bestimmten Haskell-Paket abhängen:

pacman -Qi haskell-aeson | grep 'Benötigt von'
Benötigt von :
haskell-aeson-pretty  haskell-citeproc  haskell-doctemplates
haskell-hslua-aeson  haskell-ipynb  haskell-pandoc-types
haskell-servant  haskell-servant-server  haskell-skylighting-core
haskell-wai-extra  haskell-yaml  pandoc  shellcheck

Die zweite Methode verwendet den Befehl pactree und sieht so aus:

pactree -r haskell-aeson

haskell-aeson
├─haskell-aeson-pretty
│ ├─haskell-citeproc
│ │ └─pandoc
│ └─pandoc
├─haskell-citeproc
├─haskell-doctemplates
│ └─pandoc
...

Wie ihr in den Beispielen gesehen habt, lautet des Rätsels Lösung Pandoc. Wer wissen möchte, wie man diese Information bei anderen Distributionen, bzw. Paketmanagern erhält, findet in der Quelle eine Übersicht.

Quelle: https://wiki.archlinux.org/title/Pacman/Rosetta#Querying_package_dependencies

Tags

Pakete, Abhängigkeit, Paketmanager

Chris
Geschrieben von Chris am 11. Oktober 2022 um 11:33

Ein inoffizielles Arch user repository hat pandoc-bin ohne die haskell Abhängigkeiten, wer nicht jeden 2. Tag 800mb haskell aktualisieren möchte....

https://wiki.archlinux.org/title/Unofficial_user_repositories

https://gitlab.com/aur1/rstudio

Jens T.
Geschrieben von Jens T. am 11. Oktober 2022 um 11:45

Unter Debian gibt es ein vergleichbar einfaches Werkzeug auf der Kommandozeile. Hat man aptitude installiert, dann zeigt z.B. aptitude why x11-common an, wegen welchen anderen installierten Paketen x11-common automatisch installiert wurde.

kamome
Geschrieben von kamome am 30. Oktober 2022 um 20:39

Die Ausgabe zwar etwas weniger schön (bzw. gewöhnungsbedürftig), aber dafür ausführlicher (und mit nur apt, wobei ich aptitude immer installiere): apt rdepends x11-common

Wolfram
Geschrieben von Wolfram am 11. Oktober 2022 um 13:46

Das finde ich doch wirklich verblüffend, daß pandoc haskell benötigt:

Bei den RedHat-Derivaten wird es nicht bnötigt. Hier ist die dependency-Abfrage unter Fedora 36:

dnf repoquery --requires pandoc Letzte Prüfung auf abgelaufene Metadaten: vor 0:24:49 am Di 11 Okt 2022 13:11:28 CEST. /bin/sh libc.so.6(GLIBC_2.34)(64bit) libffi.so.8()(64bit) libffi.so.8(LIBFFI_BASE_8.0)(64bit) libffi.so.8(LIBFFI_CLOSURE_8.0)(64bit) libgmp.so.10()(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) libm.so.6(GLIBC_2.27)(64bit) libm.so.6(GLIBC_2.29)(64bit) libz.so.1()(64bit) pandoc-common = 2.14.0.3-16.fc36 rtld(GNU_HASH)

Aber das war mir schon öfter aufgefallen, daß die unterschiedlichen Maintainer auch andere Vorstellungen von den dependencies haben Vielleicht sieht der Maintainer bei arclinux eine Softdependency, da pandoc in der Tat in Hasekell geschrieben wird. (s. https://de.wikipedia.org/wiki/Pandoc). Aber zum Gebrauch ist Haskell nicht notwendig, da pandoc eine binäre Anwendung ist:

file /usr/bin/pandoc /usr/bin/pandoc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=1f3dd1bdf9bb7c96d389a9d976f7efeca5c2ecd7, stripped