23 nützliche PKG-Befehlsbeispiele für die Verwaltung von Paketen in FreeBSD
In diesem Tutorial erklären wir, wie Sie vorkompilierte Binärpaketanwendungen in FreeBSD mit Hilfe des Paketverwaltungstools PKG über das Ports software collection repository verwalten können.
Das Ports-Repository bietet die notwendigen Werkzeuge zum Kompilieren von Anwendungen aus dem Quellcode und deren Abhängigkeiten, unterhält aber auch eine riesige Sammlung von vorkompilierten Paketen, derzeit mehr als 24.000 Pakete, die mit dem Befehl pkg auf einem FreeBSD-System installiert werden können.
Anforderungen:
- FreeBSD 11.x Installation
Suchen und Finden von Anwendungen im Ports-Baum in FreeBSD
1. Ports-Repositories sind in FreeBSD in Kategorien unterteilt, wobei jede Kategorie durch ein Verzeichnis im Dateisystempfad /usr/ports/ repräsentiert wird.
Eine einfache Auflistung des Verzeichnisses /usr/ports/ zeigt alle verfügbaren Kategorien an, wie im folgenden Screenshot gezeigt.
# ls /usr/ports/
2. Um alle verfügbaren Anwendungen anzuzeigen, die zu einer Kategorie gehören, geben Sie den Befehl ls für das Kategorieverzeichnis ein.
Angenommen, Sie möchten alle verfügbaren Softwarepakete anzeigen, die die Datenbankkategorie zu bieten hat, führen Sie den folgenden Befehl in der Konsole aus. Leiten Sie das Ergebnis über den Befehl less, um einfacher durch die Ausgabe zu navigieren.
# ls /usr/ports/databases/ | less
3. Um anzuzeigen, wie viele Pakete in einer Kategorie verfügbar sind, listen Sie das Kategorieverzeichnis auf und leiten Sie das Ergebnis über den Befehl wc, wie im folgenden Beispiel gezeigt.
# ls /usr/ports/databases/ | wc -l
Wie Sie im obigen Screenshot sehen können, enthält die FreeBSD-Datenbank mehr als 1000 vorkompilierte Pakete.
4. Um zu sehen, ob eine bestimmte Anwendung in einer Kategorie verfügbar ist, verwenden Sie erneut den Befehl ls und filtern Sie das Ergebnis mit dem Dienstprogramm grep, um nach einer benutzerdefinierten Anwendung zu suchen.
In den folgenden Beispielen wird nach verfügbaren Mongodb-Datenbankpaketen und Clam-Antivirus-Sicherheitspaketen gesucht.
# ls /usr/ports/databases/ | grep mongodb
ls /usr/ports/security/ | grep clam
Wie Sie sehen können, können mehrere Versionen einer Anwendung in FreeBSD Ports verfügbar sein.
5. Falls Sie nicht wissen, zu welcher Kategorie eine Software gehört, können Sie einen anderen Ansatz verwenden, um die Softwarekategorie zu finden. Verwenden Sie das Shell-Globbing-Platzhalterzeichen *, um im gesamten Ports-Verzeichnisbaum nach einem Muster zu suchen.
Angenommen, Sie möchten sehen, in welcher Kategorie Sie die Softwarepakete für das Mailx-Dienstprogramm finden können, können Sie den folgenden Befehl ausführen.
# ls /usr/ports/*/*mailx
6. Eine andere Methode zum Durchsuchen eines Softwarepakets und der Kategorie, zu der das Paket gehört, besteht darin, den Befehl locate für ein Zeichenfolgenmuster zu verwenden.
Bevor Sie die Suchzeichenfolge ausführen, sollten Sie die locate-Datenbank mit dem folgenden Befehl aktualisieren.
# /usr/libexec/locate.updatedb
7. Nachdem Sie die locate database aktualisiert haben, suchen Sie nach einem bestimmten Softwarepaket, indem Sie ein Schlüsselwortmuster aus dem Paketnamen verwenden. Wenn Sie beispielsweise nach dem Dienstprogramm mailx suchen möchten, können Sie den folgenden Befehl ausführen.
# locate mailx
Wie Sie sehen können, gibt es zwei Pakete für das Dienstprogramm mailx, die sich beide in der Kategorie /usr/ports/mail/ befinden.
8. Ähnlich wie bei der Suche nach einem Paket mit dem Befehl locate können Sie auch den Befehl whereis verwenden, um die Anwendungskategorie anzuzeigen.
# whereis mailx
Suchen Sie nach Software über den PKG-Befehl in FreeBSD
9. Die einfachste Methode, eine Anwendung in FreeBSD zu suchen und zu finden, ist die Befehlszeile der PKG-Paketverwaltung. Um die Binärpakete nach einer Anwendung zu durchsuchen, z.B. nach Postfix-Software, geben Sie den folgenden Befehl ein.
# pkg search package_name
10. Falls Sie sehen möchten, zu welcher Kategorie das Paket gehört, führen Sie den gleichen Befehl wie oben mit dem Flag -o aus, wie in den folgenden Beispielen dargestellt.
# pkg search -o package_name
Verwalten von Software in FreeBSD
11. Um ein vorkompiliertes Paket aus den Ports-Repositories in FreeBSD zu installieren, geben Sie den Befehl pkg ein, wie im folgenden Beispiel dargestellt.
# pkg install package_name
12. Um Informationen über ein bestimmtes installiertes Paket im System abzufragen, geben Sie den folgenden Befehl ein.
# pkg info package_name
13. Der Befehlsschalter pkg info zeigt die Meldung "No packages(s) matching package_name" an, wenn das Softwarepaket nicht bereits auf Ihrem System installiert ist, wie im folgenden Screenshot gezeigt.
# pkg info tcpdump
14. Um alle installierten Softwarepakete unter FreeBSD aufzulisten, führen Sie den Befehl pkg info ohne Optionen oder Schalter aus.
Der Befehl grep filter against pkg info kann Ihnen zeigen, ob bestimmte Pakete oder Anwendungen bereits im System vorhanden sind, wie im folgenden Beispiel dargestellt.
# pkg info | grep ftp
15. Um ein Paket aus dem System zu entfernen, geben Sie die folgenden Befehle ein.
# pkg remove package_name
or
pkg delete package_name
16. Falls Sie das Entfernen oder Ändern eines installierten Pakets verhindern möchten, können Sie den Sperrschalter für den Befehl pkg verwenden, wie in der folgenden Abbildung gezeigt.
# pkg lock package_name
Mit dem Befehlsschalter unlock pkg können Sie die Paketeinschränkung entfernen und das Paket ändern oder deinstallieren.
# pkg unlock package_name
17. Um herauszufinden, zu welchem installierten Paket ein Befehl oder eine ausführbare Datei gehört, geben Sie den folgenden Befehl ein, wie in den folgenden Screenshot-Beispielen dargestellt.
# pkg which /path/to/executable
18. Um ein Paket lokal aus dem Ports-Repository herunterzuladen, ohne das Paket auf dem System zu installieren, führen Sie den Befehl pkg mit dem fetch-Schalter aus.
Die heruntergeladene Paketbinärdatei, bei der es sich um eine komprimierte .txz-Datei handelt, befindet sich im Systempfad /var/cache/pkg/.
# pkg fetch package_name
ls /var/cache/pkg/ | grep package_name
19. Um zu überprüfen, ob die installierten Pakete häufigen Schwachstellen oder Fehlern ausgesetzt sind, geben Sie den folgenden Befehl ein.
# pkg audit -F
Um eine Liste alter Schwachstellen anzuzeigen, die ein Softwarepaket in früheren Versionen beeinträchtigten, geben Sie den folgenden Befehl ein.
# pkg audit package_name
Nachfolgend finden Sie einen Auszug aller bekannten Schwachstellen, die im Nginx-Webserver gefunden wurden, der für FreeBSD kompiliert wurde.
# pkg audit nginx
nginx is vulnerable:
Affected versions:
<= 0.8.41 : > 1.4.4,1
nginx -- Request line parsing vulnerability
CVE: CVE-2013-4547
WWW: https://vuxml.FreeBSD.org/freebsd/94b6264a-5140-11e3-8b22-f0def16c5c1b.html
nginx is vulnerable:
Affected versions:
< 1.0.15
nginx -- Buffer overflow in the ngx_http_mp4_module
CVE: CVE-2012-2089
WWW: https://vuxml.FreeBSD.org/freebsd/0c14dfa7-879e-11e1-a2a0-00500802d8f7.html
nginx is vulnerable:
Affected versions:
< 1.4.7
nginx -- SPDY heap buffer overflow
CVE: CVE-2014-0133
WWW: https://vuxml.FreeBSD.org/freebsd/fc28df92-b233-11e3-99ca-f0def16c5c1b.html
...
Pflegen des Paketverwaltungsprogramms in FreeBSD
20. Um sicherzustellen, dass die Software-Repositories und alle Ihre installierten Pakete mit den neuesten Versionen oder Sicherheitspatches auf dem neuesten Stand sind, geben Sie die folgenden Befehle ein.
# pkg update
pkg upgrade
21. Um Statistiken zu Remote-Repositories und lokalen Paketen anzuzeigen, z. B. wie viele Pakete auf Ihrem System installiert sind und wie viel Speicherplatz von installierter Software belegt wird, führen Sie den folgenden Befehl aus.
# pkg stats
22. Um alle Abhängigkeiten zu löschen, die von installierten Paketen im System hinterlassen wurden, geben Sie den folgenden Befehl ein.
# pkg autoremove
23. Um das lokale Cache-Verzeichnis der Paketverwaltung für remote heruntergeladene Pakete automatisch zu löschen, führen Sie den folgenden Befehl aus. Sie sollten zuerst die Liste der lokal heruntergeladenen Binärpakete überprüfen.
# pkg clean -a -n
pkg clean -a -y
Das ist alles! Wie Sie sehen können, verfügt FreeBSD über ein beeindruckendes Paketsammlungssystem, ähnlich wie Paketverwaltungstools in Linux-Distributionen wie Yum, RPM und APT, mit einer großen Anzahl vorkompilierter Software-Binärdateien und einer einfachen und effektiven Befehlszeile, pkg, mit der die Software auf anständige Weise verwaltet werden kann.






















