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?
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,
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:
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.
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.
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.
Versuchen Sie Folgendes:
%Vor%Die Verwendung in einem Skript ist so einfach wie
%Vor%