Listen Sie Abhängigkeiten eines Pakets rekursiv in arch linux auf

759
Vince

Ich versuche, den Treiber der AUR herunterzuladen, um ihn auf einem neu installierten System (ohne Internetverbindung) zu installieren, jedoch wenn ich tippe

makepkg -s 

Es müssen andere Pakete installiert werden. Da dieses System über kein Internet verfügt, möchte ich diese Pakete (und alle ihre Abhängigkeiten) von einem anderen PC mit Internetverbindung herunterladen und später auf dem neuen System installieren. Ich habe auf der archlinux-Website ein Tutorial zur Offline-Installation von Paketen gefunden. Verwenden

pacman -Sp <package_name> > /myPackages.list 

Erstellt eine Liste aller Pakete, in denen ich angegeben habe package_name. Ich brauche aber auch alle ihre Abhängigkeiten. Also möchte ich wissen:

  1. Gibt es eine einfache Möglichkeit, dies zu tun?
  2. Muss ich für jedes erforderliche Abhängigkeitspaket manuell Befehle eingeben?
  3. Kann dazu ein Shell-Skript geschrieben werden? Wenn ja, wie mache ich das?
2

1 Antwort auf die Frage

1
Iskustvo

Antworten

Es gibt ein Programm namens pactree, das zusammen mit dem pacman- Paket installiert wird .
Es wird verwendet, um die Abhängigkeitsbaumstruktur für das angegebene Paket anzuzeigen.

Sie können es so verwenden:

pactree -u <package_name> 

Doch im Gegensatz zu dem pacman -Sp <package_name>, pactree akzeptiert nur einen Paketnamen.

Eine Lösung

Es gibt verschiedene Wege, um dieses Problem zu umgehen, aber nach Ihrer Frage zu urteilen, habe ich nicht das Gefühl, dass Sie mit Shell-Skripts vertraut sind (sorry, wenn ich mich irre), deshalb werde ich eine Lösung im Detail erläutern:

echo "package_name1 package_name2 ..." | xargs -n 1 pactree -u | sort -u | xargs -n 1 pacman -Sp > /myPackages.list 

echo- Integrierter Shell-Befehl: Druckt das Argument in die stdout(mit angehängter neuer Zeile).

|- Pipe: Leitet den stdoutBefehl von links nach stdinrechts um.

xargs- Externer Befehl: stdinÜbernimmt und fügt ihn der Argumentliste des angegebenen Befehls hinzu.
-n 1- xargsOption: Führt den angegebenen Befehl einmal für jedes Argument von aus aus stdin.

pactree- Externer Befehl: Abhängigkeitsbaum für das angegebene Paket anzeigen.
-u- pactreeOption: Statt eines Diagramms drucken Sie jedes Abhängigkeitspaket in einer separaten Zeile.

sort- Externer Befehl: Sortiert den Text von stdinund schreibt ihn in stdout.
-u- sortOption: Entfernt Duplikate aus sortiert stdin.
(Dies ist erforderlich, da einige Pakete möglicherweise dieselben Abhängigkeiten haben.)

Sie kennen den Rest der Leitung.

Hinweis

pacman -Sp wird einen Fehler melden, wenn Sie das Paket von der AUR erhalten.

EDIT 17.09.2018

Wie von JdeBP hervorgehoben, pactreeist es jetzt im pacman-contrib- Paket.

Diese Antwort ist veraltet. https://unix.stackexchange.com/questions/469545/ JdeBP vor 6 Jahren 1