Wie kann ich herausfinden, ob ein bestimmtes Paket bereits in Arch Linux installiert ist?

8

Ich möchte ein bash-Skript schreiben, das mir erlaubt zu überprüfen, ob ein bestimmtes Paket bereits in arch linux installiert ist.

Wie kann ich das tun?

    
Random Citizen 09.10.2014, 09:03
quelle

4 Antworten

15

Sie sollten Pacman, den Paketmanager von Arch Linux, verwenden.

Sie möchten die Operation -Q verwenden, um die installierte lokale Paketdatenbank abzufragen, und die Option -i , um Informationen über das Paket abzurufen.

Das gibt Ihnen

%Vor%

Sie können dann den Exit-Code verwenden, um festzustellen, ob die Pakete auf dem System existieren oder nicht (0 das Paket existiert, 1 nicht).

Die Verwendung von -i anstelle von -s stellt sicher, dass Sie genau nach diesem Paket suchen und nicht nach dem Vorhandensein eines Pakets, das den Paketnamen in seinem Namen enthält.

Wenn ich beispielsweise nach chromium (dem Webbrowser) auf einem System suche, auf dem nur chromium-bsu (das Spiel) installiert ist,

%Vor%

Wie Random Citizen darauf hingewiesen hat, möchten Sie sicherlich jede Ausgabe an /dev/null umleiten, wenn Sie ein Skript schreiben und wollen nicht, dass Pacman deine Ausgabe verschmutzt:

%Vor%     
Fredszaq 09.10.2014, 12:19
quelle
2

Sie können das Arch-Paketverwaltungstool pacman verwenden.
Wie Sie im Arch-Wiki sehen können, können Sie mit der Option -Qs innerhalb der installierte Pakete.

Wenn das Paket existiert, wird pacman -Qs mit dem Exit-Code 0 beendet, andernfalls mit dem Exit-Code 1

Ihr Skript könnte folgendermaßen aussehen:

%Vor%

Die > /dev/null pipe wird verwendet, um die gedruckte Ausgabe zu unterdrücken.

    
Random Citizen 09.10.2014 09:03
quelle
1

Normalerweise mache ich nur ls /bin | grep $package (Ersetzen von $ package durch das Paket, das ich suche). Es ist auch schnell für den Computer.

Es hängt jedoch vom Namen des Pakets ab, da dies alle installierten ausführbaren Dateien auflistet, die in ihrem Namen $ package enthalten. Wenn Sie jedoch ausführbare Dateien mit $ package in ihrem Namen installiert haben, besteht eine große Chance, dass das Paket, nach dem Sie suchen, bereits installiert ist.

Aktualisieren

Hier ist eine genauere:

%Vor%

Noch besser, wie wäre es damit, es zu einer Funktion zu machen?

Es gibt 2 Beispiele im folgenden Code. Sie können _install verwenden, um nur ein Paket zu installieren. Sie können _installMany verwenden, um so viele Pakete wie Sie möchten zu installieren. Ich habe beide Funktionen hinzugefügt, weil _installMany ziemlich komplex ist, und die etwas einfachere _install -Funktion zu betrachten könnte jemandem helfen, es zu verstehen.

%Vor%     
GreenRaccoon23 21.12.2014 06:12
quelle
1

Versuchen Sie Folgendes:

%Vor%

Die Verwendung in einem Skript ist so einfach wie

%Vor%     
nathanchere 30.05.2017 12:42
quelle

Tags und Links