Wie installiert man Pakete mit pkg auf FreeBSD?
FreeBSD ist eine beliebte Server-Plattform und ein freies, Open-Source Unix-ähnliches Betriebssystem, das sich aus der Berkeley Software Distribution (BSD) entwickelt hat. FreeBSD ist ein Betriebssystem, das für den Betrieb moderner Server, PCs und eingebetteter Geräte entwickelt wurde.
Der Begriff BSD steht für "Berkeley Software Distribution". Es bezieht sich auf Quellcode-Veröffentlichungen von der University of California, Berkeley, die ursprünglich Ergänzungen zum Research UNIX-Betriebssystem von AT&T waren. Mehrere Open-Source-Betriebssystemprojekte basieren auf der 4.4BSD-Lite-Version dieses Quellcodes. Darüber hinaus integrieren sie mehrere Pakete aus anderen Open-Source-Projekten, insbesondere dem GNU-Projekt.
FreeBSD verfügt über eine umfangreiche Sammlung von Systemwerkzeugen als Teil seines Basissystems. FreeBSD bietet zwei ergänzende Mechanismen zur Installation von Drittanbieter-Software an:
-
Ports: Die FreeBSD Ports Collection wird verwendet, um Anwendungen aus dem Quellcode zu installieren.
-
Pakete: Pakete werden verwendet, um Anwendungen aus vorgefertigten Binärdateien zu installieren.
Die Installation von Software von lokalen Medien oder dem Netzwerk ist mit beiden Techniken möglich.
In diesem Artikel werden wir die folgenden Themen behandeln:
-
Der Unterschied zwischen Paketen und Ports auf FreeBSD.
-
Wie findet man Drittanbieter-Anwendungen, die auf FreeBSD portiert wurden?
-
Wie geht man mit Binärpaketen in pkg um?
Was sind die Unterschiede zwischen Ports und Paketen auf FreeBSD?
Pakete und Ports Collection sind die beiden Hauptmechanismen zum Erhalten von Programmen und Systemdienstprogrammen in FreeBSD. Bei der Installation dieser Dienstprogramme müssen die Benutzer zwischen den beiden Paketen wählen.
Ports ist eine FreeBSD-Methode zur Entwicklung zusätzlicher Software. Mit Ports beginnen Sie mit dem Rohquellcode des Softwareanbieters und stellen das Produkt nach Ihren Spezifikationen zusammen, indem Sie Funktionen nach Bedarf hinzufügen oder entfernen. Die Dateien, aus denen ein Port besteht, enthalten alle Informationen, die erforderlich sind, um ein Programm automatisch herunterzuladen, zu entpacken, zu patchen, zu kompilieren und zu installieren. Der Quellcode muss möglicherweise für eine angemessene Installation und den Betrieb modifiziert werden, wenn die Software zuvor nicht auf FreeBSD konvertiert und getestet wurde. Mehr als 36.000 Drittanbieter-Apps wurden nach FreeBSD portiert. Wann immer möglich, werden diese Apps als vorkompilierte Pakete zum Download bereitgestellt.
Pakete sind vorkompilierte Binärpakete, die oft kleiner sind als vollständige Port-Installationen und keine Kompilierungszeit benötigen. Pakete ermöglichen es Ihnen, Add-On-Anwendungen schnell zu installieren, zu entfernen und zu aktualisieren. Der Verpackungsmechanismus von FreeBSD ist als Paket oder pkg bekannt. Paketinformationen werden in einer SQLite-Datenbank gespeichert, die für Paketdetails abgefragt werden kann.
Ports sind jedoch eine viel flexiblere Alternative, die es den Nutzern ermöglicht, direkt am Bauprozess teilzunehmen und die Anwendung nach ihren Wünschen anzupassen.
Darüber hinaus hilft die Installation eines Programms aus einem Port dem Benutzer, zu verstehen, wie die Anwendung aufgebaut, konfiguriert und letztendlich als Binärdatei erstellt wird.
Pakete und Ports verstehen beide Abhängigkeiten. Wenn ein Paket oder Port verwendet wird, um ein Programm zu installieren und eine erforderliche Bibliothek noch nicht installiert ist, wird die Bibliothek automatisch vor der Anwendung installiert.
Ein FreeBSD-Paket enthält alle vorkompilierten Befehle einer Anwendung sowie alle Konfigurationsdateien und die Dokumentation. Mit pkg(8)-Befehlen wie pkg install ist es möglich, Pakete zu ändern.
Obwohl die beiden Technologien vergleichbar sind, besitzen Pakete und Ports unterschiedliche Vorteile. Wählen Sie die Technologie, die Ihren Installationsanforderungen für eine bestimmte Anwendung entspricht.
Was sind die Vorteile von FreeBSD-Paketen?
Die Hauptvorteile von FreeBSD-Paketen sind wie folgt:
-
FreeBSD-Pakete erfordern kein Verständnis des Software-Kompilierungsprozesses.
-
Pakete benötigen keine Kompilierzeit. Auf einer langsamen Maschine könnte dies für große Programme wie Mozilla, KDE und GNOME unerlässlich sein.
-
Typischerweise ist ein komprimiertes Paket-Tarball kleiner als das komprimierte Tarball, das den Quellcode der Anwendung enthält.
Was sind die Vorteile von FreeBSD Ports?
Die Hauptvorteile von FreeBSD-Ports sind wie folgt:
-
Einige Software-Lizenzbedingungen verbieten die binäre Verteilung. Solche Software muss als Quellcode geliefert werden, den der Endbenutzer selbst kompilieren muss.
-
Pakete werden oft mit konservativen Einstellungen erstellt, da sie auf so vielen Plattformen wie möglich laufen müssen. Durch das Kompilieren aus dem Port heraus können die Kompilierungsparameter geändert werden.
-
Einige Personen vertrauen binären Verteilungen nicht und möchten lieber den Quellcode auf mögliche Fehler überprüfen.
-
Einige Apps bieten Compile-Zeit-Optionen, um zu steuern, welche Funktionen installiert werden. Apache kann zum Beispiel mit einer Vielzahl von integrierten Optionen angepasst werden. In bestimmten Fällen existieren zahlreiche Pakete für dasselbe Programm, um verschiedene Parameter anzugeben. Je nachdem, ob Xorg installiert ist oder nicht, wird Ghostscript als
ghostscript
-Paket und alsghostscript-nox11
-Paket bereitgestellt. Wenn eine Anwendung mehr als ein oder zwei verschiedene Compile-Zeit-Optionen hat, wird es schnell unpraktisch, mehrere Pakete zu erstellen. -
Um benutzerdefinierte Patches anzuwenden, ist der Quellcode erforderlich.
Bevor Sie eine Software installieren, überprüfen Sie https://vuxml.freebsd.org/
auf sicherheitsrelevante Bedenken im Zusammenhang mit der Anwendung, oder führen Sie das folgende Kommando aus, um alle installierten Apps auf bekannte Schwachstellen zu scannen.
pkg audit -F
Hat FreeBSD einen Paketmanager?
Ja. pkg ist der Nachfolger der bestehenden FreeBSD-Paketverwaltungstools der nächsten Generation, mit mehreren Funktionen, die die Arbeit mit Binärpaketen schneller und einfacher machen.
pkg ersetzt keine Port-Management-Utilities wie ports-mgmt/portmaster
und ports-mgmt/portupgrade
. Diese Dienstprogramme können Drittanbieter-Software sowohl aus Binärpaketen als auch aus der Ports Collection installieren, während pkg ausschließlich Binärpakete installiert.
Was ist die Geschichte des FreeBSD-Paketmanagements?
Frühe Versionen von BSD hatten kein Paketmanagement. In seinem Artikel "Third-party software management under BSD" erklärt Andrew Pantyukhin, dass BSD ursprünglich "mit umfangreichen Benutzerumgebungen gebaut wurde, damit die Benutzer nie etwas Dritthersteller-Software in Betracht ziehen müssten." Dies ist eine elegante Art zu sagen, dass BSD (und andere Systeme) so konzipiert waren, dass alle notwendigen Software vorinstalliert war.
Diejenigen, die Software installieren wollten, standen oft vor einem steinigen Weg. Pantyukhin sagte: "Bevor es Paketmanagement, wie wir es kennen, gab, entschieden sich die Entwickler, ihre Zeit mit der Behebung von Installationsschwierigkeiten zu verbringen, anstatt sich mit der Deinstallation zu befassen." Ein Benutzer musste ein Dateiarchiv besorgen, es entpacken, möglicherweise modifizieren und kompilieren und schließlich installieren."
Jordan K. Hubbard, einer der Gründer des FreeBSD-Projekts und Entwickler des aktuellen FreeBSD-Port-Systems, trat in die Bresche. Laut Michel Talons Artikel über das FreeBSD-Ports-System ist es "ein kompliziertes Set von Werkzeugen und Datendateien, das das Abrufen, Kompilieren und Installieren von Softwarepaketen auf einer Maschine ermöglicht."
Zum zehnten Jahrestag ihres Paketmanagers pkgsrc
, der auf dem FreeBSD-Port-System basiert, interviewte das NetBSD-Team Hubbard. Auf die Frage, warum er das Ports-System entworfen habe, sagte Hubbard: "So sehr ich auch behaupten möchte, dass es mir eines Tages in einem Geistesblitz eingefallen ist, die Realität ist wesentlich alltäglicher." Jedes neue FreeBSD-System, das ich gebaut und installiert habe (und ich baute damals ziemlich viele PCs), erforderte eine Anpassung mit denselben "extra bits" (bash, emacs, MH usw.), und jedes Mal war es das gleiche alte Spiel - sich daran erinnern, wo man die bits findet, die bits holen und entpacken, die bits nach Bedarf konfigurieren/patchen, bauen und installieren.
Hubbard traf die Entscheidung, das Problem zu automatisieren. Wie er im Interview sagte, nutzte er sein Fachwissen von make "um bsd.port.mk
und eine Handvoll Ports zu konstruieren, um die Idee zu testen und zu verbessern." Innerhalb weniger Wochen hatte ich alle meine Lieblingsanwendungen auf der neuen Maschine installiert. Im August 1994 stellte er fest, dass der Code vollständig war, und machte ihn der Öffentlichkeit zugänglich. Hubbard reichte bsd.port.mk
mit folgendem Hinweis im FreeBSD CVS-Repository ein:
"Verpflichte meine neuen Ports, Makros zu erstellen." Noch keineswegs zu 100 % fertig, aber in diesem Stadium ziemlich benutzbar.
Er lud dann Ports für einige seiner Lieblingsanwendungen hoch, darunter emacs, jove und bash. In kurzer Zeit wuchs die Sammlung der Ports auf über 200. Als Hubbard sah, dass die Ports an Beliebtheit gewannen, wollte er sie vereinfachen. Wie er den NetBSD-Interviewern erklärte:
Es wurde mir auch klar, dass wir eine Art Paketverwaltungssystem benötigen würden, das es Endbenutzern ermöglicht, alle Vorteile von "make install" in der Ports-Sammlung zu nutzen, ohne tatsächlich alle dazwischenliegenden Schritte durchlaufen zu müssen. Also zwang ich Satoshi Asami in die Rolle des Ports-Meisters und machte mich daran, pkg_install(1) als logisches Gegenstück zu Ports zu schreiben.
So wurde das Ports-System geschaffen, das den FreeBSD-Nutzern vertraut ist.
Das Ports-System hat FreeBSD im Laufe der Jahre gut gedient, obwohl es eher eine vorübergehende Lösung als eine dauerhafte war. Das Ports-System funktionierte gut für erfahrene Benutzer und Server-Administratoren, aber es war schwieriger für Neulinge. Das Ports-System hat weitere Mängel. Tatsächlich bemerkte der Autor des Portalsystems im Code, dass es unattraktiv und schlecht geschrieben war:
Das ist ernsthaft hässlicher Code. Sehr schnell geschrieben! [Und anschließend noch schlimmer gemacht.. Seufz!] Seufz! Dieser Code wurde wohl einfach zum Hacken geboren, schätze ich mal.. -jkh
"Die Modernisierung des FreeBSD-Paketmanagements" war das Thema von Baptiste Daroussins Vortrag auf der BSDCan 2012. Er hob viele Probleme mit dem Ports-System hervor.
Um ein Paket zu aktualisieren, müssen Sie es zuerst entfernen und dann den Port neu installieren. Zweitens fehlen Ports wichtige Informationen, wie die Lizenz und die URL des Pakets. Drittens, das Ports-System überwacht Abhängigkeiten schlecht und kann Installationen leicht beschädigen, indem es Abhängigkeiten entfernt, die von anderen Programmen benötigt werden. Schließlich ist das Ports-System mit externen Repositories inkompatibel.
Daroussin und seine Kollegen entwickelten einen neuen Ansatz, um diese Herausforderungen zu bewältigen und FreeBSD mit einem modernen Paketmanagement auszustatten. Am 30. August 2012 veröffentlichten sie die erste Version der pkgng-Anwendung, deren Entwicklung sie 2010 begonnen hatten. Laut den Versionshinweisen ist pkgng "ein Programm, das darauf abzielt, pkg install zu ersetzen und eine umfassende Paketverwaltung für FreeBSD mit zeitgemäßer Funktionalität anzubieten".
pkgng
verwendet eine SQLite-Datenbank, was es extrem einfach macht, nach Metadaten und anderen notwendigen Informationen zu suchen. In seinem Aufsatz über pkgng schreibt Joe Maloney: "Das Speichern von Paketinformationen in einer Datenbank macht die Suche nach Informationen über installierte Pakete schnell." Zusätzlich beschleunigt es die Installation und Deinstallation und erleichtert Updates.
pkgng
vereinfachte die Dinge, indem es einen einzigen Befehl (pkg) anstelle der früher verwendeten verschiedenen Befehle wie pkg add
, pkg create
, pkg delete
, pkg info
, pkg updating
und pkg version
verwendete. pkgng
hat den Ports-Baum nicht eliminiert, sondern ist mit ihm kompatibel. Laut Daroussin wurde pkgng
entwickelt, um bestehende Ports zu nutzen, ohne dass deren Maintainer ihre Pakete ändern müssen.
pkgng
wurde mit FreeBSD 10 im Jahr 2014 zum offiziellen Paketmanager von FreeBSD. Laut den Versionshinweisen wurden die folgenden Dienstprogramme entfernt: pkg_add, pkg_create, pkg_delete, pkg_info, pkg_updating und pkg_version. Um Binärpakete zu installieren, muss jetzt pkg(7) verwendet werden. pkg(7) ist der Paketmanager der nächsten Generation für FreeBSD, manchmal auch als "pkgng" bekannt. Beim Upgrade von einer früheren Version von FreeBSD müssen Sie pkg2ng
ausführen, um die alte Paketdatenbank in das neue Format zu konvertieren.
So hatte eine neue Ära im FreeBSD-Paketmanagement begonnen.
Wo werden Pakete auf FreeBSD installiert?
Pakete installieren Binärdateien im Verzeichnis /usr/local
. Die Mehrheit der Konfigurationsdateien befindet sich unter /usr/local/etc
anstelle von /etc
. Wenn Sie aus der Linux-Community kommen, könnte Ihnen dies ungewöhnlich erscheinen.Wichtige Dateien und Verzeichnisse für das pkg-Paketverwaltungssystem auf FreeBSD sind unten aufgeführt:
-
Standort der offiziellen FreeBSD-Repositories:
/etc/pkg
-
Die pkg-Konfigurationsdatei:
/usr/local/etc/pkg.conf
-
Paket-Cache-Verzeichnis:
/var/cache/pkg
-
FreeBSD-Repository-Datei:
/etc/pkg/FreeBSD.conf
-
Verzeichnis für benutzerdefinierte Repositories:
/usr/local/etc/pkg/repos
-
SQLite-Datenbankdatei: /var/db/pkg/local.sqlite
Wie man nach verfügbaren Anwendungen auf FreeBSD sucht?
Die Anzahl der verfügbaren Apps für FreeBSD wächst ständig. Es gibt mehrere Methoden, um Anwendungen zu entdecken, die installiert werden können. Sie können die folgenden Methoden verwenden, um die auf FreeBSD verfügbaren Anwendungen zu finden:
-
Suche auf
FreeBSD.org
: Aufhttps://www.FreeBSD.org/ports/
führt die FreeBSD-Website eine aktuelle, durchsuchbare Liste aller verfügbaren Programme. Sie können nach Ports anhand des Programmnamen oder der Softwarekategorie suchen.Abbildung 1. Suche nach Ports auf
FreeBSD.org
-
Suche auf
FreshPorts.org
:FreshPorts.org
, das von Dan Langille gepflegt wird, bietet eine umfassende Suchfunktion und protokolliert Änderungen an den Programmen in der Ports Collection. Registrierte Benutzer können eine benutzerdefinierte Überwachungsliste erstellen, um eine automatische E-Mail zu erhalten, wenn die von ihnen überwachten Ports geändert werden.Abbildung 2. Suche nach Ports auf
FreshPorts.org
-
Verwendung von
SourceForge.net
oderGitHub.com
: Wenn es schwierig wird, ein bestimmtes Programm zu finden, versuchen Sie, Seiten wieSourceForge.net
oderGitHub.com
zu überprüfen, und kehren Sie dann zur FreeBSD-Website zurück, um zu sehen, ob die Anwendung portiert wurde. -
Durchsuchen des Binärpaket-Repositorys nach Software: Sie können den Befehl
pkg search
verwenden, um eine Anwendung auf FreeBSD zu finden. Zum Beispiel, um das Snort-Paket zu suchen, führen Sie den folgenden Befehl aus:pkg search snort
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
p5-Net-Snort-Parser-1.41_1 Perl modules for parsing Snort configuration files
p5-Parse-Snort-0.9 Parse and create Snort rules
p5-Snort-Rule-1.07_1 Perl5 extension for dynamically building snort rules
snort-2.9.20 Lightweight network intrusion detection system
snort-rep-1.10_1 Snort reporting tool that can produce text or HTML from logs
snort2pfcd-3.2 Snort alert to pf blocker
snort3-3.1.42.0,1 Lightweight network intrusion detection system
snortsam-2.70_1 Output plugin for Snort
snortsnarf-1.0_1,1 Generate HTML report summaries from snort incident alertsPaketnamen enthalten die Versionsnummer und, im Fall von Python-basierten Ports, die Version von Python, die zum Erstellen des Pakets verwendet wurde. Einige Ports haben auch zahlreiche Versionen verfügbar.
Es kann eine Vielzahl von Paketversionen und Kompilierungseinstellungen geben. Bei der Bestimmung, welches Paket installiert werden soll, ist es vorzuziehen, das Programm durch seinen Port-Ursprung anzugeben, der der Pfad im Ports-Baum ist. Sie können die -o
-Option verwenden, um die Quelle jedes Pakets aufzulisten.
pkg search -o snort
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
textproc/p5-Net-Snort-Parser Perl modules for parsing Snort configuration files
security/p5-Parse-Snort Parse and create Snort rules
security/p5-Snort-Rule Perl5 extension for dynamically building snort rules
security/snort Lightweight network intrusion detection system
security/snort-rep Snort reporting tool that can produce text or HTML from logs
security/snort2pfcd Snort alert to pf blocker
security/snort3 Lightweight network intrusion detection system
security/snortsam Output plugin for Snort
security/snortsnarf Generate HTML report summaries from snort incident alerts
Sie können weniger Informationen über eine Anwendung mit der -q
-Option anzeigen, und Sie können die gesamten Informationen mit der -f
-Option anzeigen.
pkg search -f snort
snort3-3.1.42.0,1
Name : snort3
Version : 3.1.42.0,1
Origin : security/snort3
Architecture : FreeBSD:13:amd64
Prefix : /usr/local
Repository : FreeBSD [pkg+http://pkg.FreeBSD.org/FreeBSD:13:amd64/quarterly]
Categories : security
Licenses : GPLv2
Maintainer : bofh@FreeBSD.org
WWW : https://www.snort.org/
Comment : Lightweight network intrusion detection system
Options :
ADDRESSSANITIZER: off
DEBUG : off
DOCS : on
FLATBUFFERS : off
HYPERSCAN : on
LARGEPCAP : off
PIE : off
STATICDAQ : on
THREADSANITIZER: off
TSC : off
Shared Libs required:
libuuid.so.1
libpcre.so.1
libluajit-5.1.so.2
libhwloc.so.15
libhs.so.5
libdnet.so.1
libdaq.so.3
Annotations :
FreeBSD_version: 1301000
cpe : cpe:2.3:a:snort:snort:3.1.42.0:::::freebsd13:x64
Flat size : 8.76MiB
Pkg size : 1.84MiB
Description :
Snort 3 is the next major release of the Snort utility:
Here are some key features of Snort 3:
Support multiple packet processing threads
Use a shared configuration and attribute table
Use a simple, scriptable configuration
Make key components pluggable
Autodetect services for portless configuration
Support sticky buffers in rules
Autogenerate reference documentation
Provide better cross platform support
Facilitate component testing
Additional features on the roadmap include:
Use a shared network map
Support pipelining of packet processing
Support hardware offload and data plane integration
Support proxy mode
Windows support
WWW: https://www.snort.org/
Andere Felder, die eine Anwendung charakterisieren, sind ebenfalls durchsuchbar. Um ein Programm nach seiner Beschreibung zu suchen, verwenden Sie die -D
-Option.
pkg search -Dq intrusion
fragroute-1.2_16
aide-0.17.4
fcheck-2.07.59_1
ftimes-3.11.0_2
fragrouter-1.6
kismet-2016.07.r1_2,1
libnids-1.24_5
ossec-hids-server-config-3.7.0
ossec-hids-local-config-3.7.0
ossec-hids-agent-config-3.7.0
ossec-hids-3.7.0
ossec-hids-server-3.7.0
ossec-hids-agent-3.7.0
ossec-hids-local-3.7.0
packit-1.8_1
samhain-client-4.4.3
samhain-server-4.4.3
samhain-4.4.3
sancp-1.6.1_6
snort-2.9.20
snortsam-2.70_1
tcpreplay-4.4.2
suricata-6.0.8
snortsnarf-1.0_1,1
zeek-5.0.4
bsdhwmon-20151206
bsmtrace-1.4_1
bsmtrace3-3.1
pkg search
supports searching by shell globs, regular expressions, exact match, or any other field in the repository database. To view the pkg search
options run the following command:
pkg help search
oder
pkg search
Usage: pkg search [-eU] [-r repo] [-S search] [-L label] [-Q mod]... [-Cgix] <pkg-name>
pkg search [-cDdefopqRU] [-r repo] [-Cgix] <pattern>
Search and Label options: comment description name origin pkg-name
Output Modifiers: annotations arch categories comment depends-on
description full licenses maintainer name options pkg-size
prefix repository required-by shared-libs-required shared-libs-provided size url version www
For more information see 'pkg help search'.
-
Verwendung der
whereis
- undecho
-Utilities: Es gibt mehrere Möglichkeiten, den lokalen Portbaum abzufragen, wenn die Ports Collection bereits installiert ist. Um die Kategorie eines Ports zu bestimmen, geben Siewhereis file
ein, wobeifile
der Name der zu installierenden Anwendung ist. Um die Snort-Anwendung auf Ihrem FreeBSD zu finden, führen Sie den folgenden Befehl aus:whereis snort
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
snort: /usr/ports/security/snort
Alternativ können Sie den
echo
-Befehl wie unten angegeben verwenden:echo /usr/ports/*/*snort*
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
/usr/ports/security/snort /usr/ports/security/snort-rep /usr/ports/security/snort2pfcd /usr/ports/security/snort3 /usr/ports/security/snortsam /usr/ports/security/snortsnarf
- Verwendung der integrierten
search
der Ports Collection: Um die Suchfunktion auf FreeBSD zu nutzen, können Sie die folgenden Schritte befolgen:
- Navigieren Sie zum Verzeichnis /usr/ports, indem Sie den folgenden Befehl ausführen:
cd /usr/ports
- Führen Sie
make search name=program-name
aus, wobei program-name der Name der Software ist. Zum Beispiel, um nach snort zu suchen:
make search name=snort
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Port: p5-Snort-Rule-1.07_1
Path: /usr/ports/security/p5-Snort-Rule
Info: Perl5 extension for dynamically building snort rules
Maint: bofh@FreeBSD.org
B-deps: perl5-5.32.1_1
R-deps: perl5-5.32.1_1
WWW: https://metacpan.org/release/Snort-Rule
Port: snort-rep-1.10_1
Path: /usr/ports/security/snort-rep
Info: Snort reporting tool that can produce text or HTML from logs
Maint: ports@FreeBSD.org
B-deps: perl5-5.32.1_1
R-deps: perl5-5.32.1_1
WWW: http://david.schweikert.ch/software/snort-rep/
Port: snort2pfcd-3.2
Path: /usr/ports/security/snort2pfcd
Info: Snort alert to pf blocker
Maint: onestsam@gmail.com
B-deps: libcidr-1.2.3
R-deps: barnyard2-1.13_4 ca_root_nss-3.58 daq-2.2.2 libcidr-1.2.3 libdnet-1.13_3 libpcap-1.9.1_1 openssl-1.1.1j,1 p5-Authen-NTLM-1.09_1 p5-Clone-0.45 p5-Crypt-SSLeay-0.72_3 p5-Digest-HMAC-1.03_1 p5-Encode-Locale-1.05 p5-File-Listing-6.14 p5-HTML-Parser-3.75 p5-HTML-Tagset-3.20_1 p5-HTTP-Cookies-6.09 p5-HTTP-Daemon-6.12 p5-HTTP-Date-6.05 p5-HTTP-Message-6.26 p5-HTTP-Negotiate-6.01_1 p5-IO-HTML-1.001_1 p5-IO-Socket-INET6-2.72_1 p5-IO-Socket-SSL-2.068 p5-LWP-MediaTypes-6.04 p5-LWP-Protocol-https-6.10 p5-Mozilla-CA-20200520 p5-Net-HTTP-6.19 p5-Net-SSLeay-1.88 p5-Socket6-0.29 p5-TimeDate-2.33,1 p5-Try-Tiny-0.30 p5-URI-5.05 p5-WWW-RobotRules-6.02_1 p5-libwww-6.50 pcre-8.44 perl5-5.32.1_1 pulledpork-0.7.4 snort-2.9.17
WWW: https://github.com/onestsam/snort2pfcd
Port: snort3-3.0.3.4,1
Path: /usr/ports/security/snort3
Info: Lightweight network intrusion detection system
Maint: bofh@FreeBSD.org
B-deps: ca_root_nss-3.58 cmake-3.19.2 curl-7.74.0 e2fsprogs-libuuid-1.45.7 expat-2.2.10 gettext-runtime-0.21 hwloc-1.11.13 hyperscan-5.2.1 indexinfo-0.3.1 jsoncpp-1.9.4 libarchive-3.4.3,1 libdaq-3.0.0.b2 libdnet-1.13_3 libffi-3.3_1 libiconv-1.16 liblz4-1.9.3,1 libnghttp2-1.42.0 libpcap-1.9.1_1 libpciaccess-0.16 libuv-1.41.0 libxml2-2.9.10_2 luajit-2.0.5_5 lzo2-2.10_1 ninja-1.10.2,2 openssl-1.1.1j,1 pciids-20201127 pcre-8.44 pkgconf-1.7.3,1 python37-3.7.9_1 readline-8.0.4 rhash-1.4.0
R-deps: e2fsprogs-libuuid-1.45.7 hwloc-1.11.13 hyperscan-5.2.1 libdaq-3.0.0.b2 libdnet-1.13_3 libpcap-1.9.1_1 libpciaccess-0.16 libxml2-2.9.10_2 luajit-2.0.5_5 openssl-1.1.1j,1 pciids-20201127 pcre-8.44
WWW: http://www.snort.org/
Port: snort-2.9.17
Path: /usr/ports/security/snort
Info: Lightweight network intrusion detection system
Maint: dvl@FreeBSD.org
B-deps: bison-3.6.4,1 daq-2.2.2 gettext-runtime-0.21 indexinfo-0.3.1 libdnet-1.13_3 libpcap-1.9.1_1 libtextstyle-0.21 m4-1.4.18_1,1 openssl-1.1.1j,1 pcre-8.44
R-deps: barnyard2-1.13_4 ca_root_nss-3.58 daq-2.2.2 libdnet-1.13_3 libpcap-1.9.1_1 openssl-1.1.1j,1 p5-Authen-NTLM-1.09_1 p5-Clone-0.45 p5-Crypt-SSLeay-0.72_3 p5-Digest-HMAC-1.03_1 p5-Encode-Locale-1.05 p5-File-Listing-6.14 p5-HTML-Parser-3.75 p5-HTML-Tagset-3.20_1 p5-HTTP-Cookies-6.09 p5-HTTP-Daemon-6.12 p5-HTTP-Date-6.05 p5-HTTP-Message-6.26 p5-HTTP-Negotiate-6.01_1 p5-IO-HTML-1.001_1 p5-IO-Socket-INET6-2.72_1 p5-IO-Socket-SSL-2.068 p5-LWP-MediaTypes-6.04 p5-LWP-Protocol-https-6.10 p5-Mozilla-CA-20200520 p5-Net-HTTP-6.19 p5-Net-SSLeay-1.88 p5-Socket6-0.29 p5-TimeDate-2.33,1 p5-Try-Tiny-0.30 p5-URI-5.05 p5-WWW-RobotRules-6.02_1 p5-libwww-6.50 pcre-8.44 perl5-5.32.1_1 pulledpork-0.7.4
WWW: https://www.snort.org/ - Verwendung der integrierten
Die Zeile "Path:" gibt den Standort des Ports an.
Die integrierte search
-Methode verwendet eine Indexdatei. Wenn eine Nachricht anzeigt, dass der INDEX erforderlich ist, führen Sie make fetchindex
oder make index
aus, um die aktuelle Indexdatei zu erhalten. make search
kann die angegebene Suche ausführen, wenn der INDEX verfügbar ist.
Um weniger Ergebnisse zu erhalten, verwenden Sie die quicksearch
-Funktion, indem Sie den nächsten Befehl ausführen:
make quicksearch name=snort
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Port: p5-Parse-Snort-0.9
Path: /usr/ports/security/p5-Parse-Snort
Info: Parse and create Snort rules
Port: p5-Snort-Rule-1.07_1
Path: /usr/ports/security/p5-Snort-Rule
Info: Perl5 extension for dynamically building snort rules
Port: snort-rep-1.10_1
Path: /usr/ports/security/snort-rep
Info: Snort reporting tool that can produce text or HTML from logs
Port: snort2pfcd-3.2
Path: /usr/ports/security/snort2pfcd
Info: Snort alert to pf blocker
Port: snort3-3.0.3.4,1
Path: /usr/ports/security/snort3
Info: Lightweight network intrusion detection system
Port: snortsam-2.70_1
Path: /usr/ports/security/snortsam
Info: Output plugin for Snort
Port: snortsnarf-1.0_1,1
Path: /usr/ports/security/snortsnarf
Info: Generate HTML report summaries from snort incident alerts
Port: snort-2.9.17
Path: /usr/ports/security/snort
Info: Lightweight network intrusion detection system
....
Für eine umfassendere Suche verwenden Sie make search key=string
oder make quicksearch key=string
, wobei string der zu suchende Text ist. Wenn der Name der Anwendung unbekannt ist, kann der Inhalt in Kommentaren, Beschreibungen oder Abhängigkeiten gefunden werden, um Ports zu einem bestimmten Thema zu finden.
Beim Verwenden von search
oder quicksearch
ist die Groß- und Kleinschreibung für die Suchzeichenfolge relevant. Für eine umfassendere Suche verwenden Sie make search key=string oder make quicksearch key=string, wobei string der zu suchende Text ist. Wenn der Name der Anwendung unbekannt ist, kann der Inhalt in Kommentaren, Beschreibungen oder Abhängigkeiten gefunden werden, um Ports zu einem bestimmten Thema zu finden.
Bei der Verwendung von Suche oder Schnellsuche ist die Groß- und Kleinschreibung des Suchbegriffs relevant. Die Suchergebnisse für "SNORT" sind identisch mit den Ergebnissen für "snort."
Wie man pkg für die Verwaltung von Binärpaketen verwendet?
In diesem Abschnitt werden wir die Verwendung des pkg-Tools für die Verwaltung von Binärpaketen auf FreeBSD behandeln. Sie werden lernen, wie man das pkg
-Tool installiert, Port-Zweige ändert, Pakete installiert und entfernt, installierte Anwendungen anzeigt, Pakete sperrt und entsperrt, Anwendungen überprüft und die Paketdatenbank wiederherstellt. Zuletzt werden wir skizzieren, wie man Paket-Repositories definiert und konfiguriert.
Wie installiert man pkg auf FreeBSD?
Das pkg
-Dienstprogramm ist standardmäßig nicht in FreeBSD vorinstalliert, jedoch können Sie pkg
schnell installieren, indem Sie den folgenden Befehl ausführen:
pkg bootstrap
Außerdem, wenn Sie versuchen, ein Paket zum ersten Mal zu installieren, fordert pkg
Sie auf, das Paketverwaltungstool zu installieren. Zum Beispiel, wenn das erste Paket, das Sie auf einem frischen FreeBSD installieren möchten, wget
ist, werden Sie die folgende Frage im Terminal sehen:
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]:
Nach Drücken von Y
und Enter beginnt die Installation des Paketverwaltungssystems. Das erste Softwarepaket, das Sie installieren möchten, wird installiert, sobald die Voraussetzung erfüllt ist.
Wie man die vierteljährlichen Port-Zweige auf die neuesten ändert?
Der Quarterly-Zweig bietet Kunden ein zuverlässigeres Installations- und Upgrade-Erlebnis für Ports und Pakete. Im Wesentlichen wird dies erreicht, indem nur Updates ohne neue Funktionen erlaubt werden. Vierteljährliche Branches sind dazu gedacht, Sicherheitsupdates (die Versionsaktualisierungen oder Backports von Commits sein können), Fehlerbehebungen, Port-Compliance-Updates und Framework-Modifikationen zu erhalten. Der Quarterly-Zweig wird jeden Januar, April, Juli und Oktober zu Beginn jedes (jährlichen) Quartals aus dem HEAD erstellt. Nach dem Jahr (JJJJ) und dem Quartal (Q1-4) ihrer Erstellung erhalten die Zweige ihre Namen. Zum Beispiel ist 2022Q1 der Name des vierteljährlichen Branches, der im Januar 2022 gegründet wurde. Und der Latest-Zweig versorgt die Kunden mit den neuesten Paketversionen.
Um von vierteljährlich auf die aktuellste Version zu wechseln, folgen Sie den unten angegebenen Schritten:
-
Erstellen Sie ein neues Repo-Verzeichnis und eine Konfigurationsdatei mit den folgenden Befehlen:
mkdir -p /usr/local/etc/pkg/repos
cp /etc/pkg/FreeBSD.conf /usr/local/etc/pkg/repos/FreeBSD.conf -
Bearbeiten Sie die Datei /usr/local/etc/pkg/repos/FreeBSD.conf mit
vi
. -
Ersetzen Sie in der Zeile url: der Datei den String quarterly durch latest.
FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
} -
Führen Sie den nächsten Befehl aus, um die Repository-Informationen auf die neueste Version zu aktualisieren:
pkg update -f
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Updating FreeBSD repository catalogue...
Fetching meta.conf: 100% 163 B 0.2kB/s 00:01
Fetching packagesite.pkg: 100% 6 MiB 2.3MB/s 00:03
Processing entries: 0%
Processing entries: 100%
FreeBSD repository update completed. 32628 packages processed.
Fetching meta.conf: 100% 163 B 0.2kB/s 00:01
Fetching packagesite.pkg: 100% 2 KiB 2.1kB/s 00:01
Processing entries: 100%
All repositories are up to date.
pkg update -f 4.56s user 0.60s system 16% cpu 30.676 total
Wie konfiguriert man das pkg-Tool?
Das pkg-Tool soll sehr vielseitig sein, mit mehreren Möglichkeiten für jeden Unterbefehl. Die systemweite Konfigurationsdatei für pkg, die unter /usr/local/etc/pkg.conf
gespeichert ist, ermöglicht es Ihnen, ein angepasstes, aber konsistentes Verhalten für die meisten Anwendungen festzulegen. Diese Datei enthält pkg
-Voreinstellungen, die auskommentiert wurden. Allein durch das Lesen dieser Datei können Sie viel über das Verhalten von pkg
erfahren.
Es gibt mehrere auskommentierte Konfigurationsoptionen und ziemlich viele Aliase, und die Konfiguration ist in universeller Konfigurationssprache (UCL) geschrieben. Variablen können Ganzzahlen-, Zeichenfolgen- oder Boolesche Werte zugewiesen werden.
In pkg.conf
können Sie Aliase für pkg-Unterbefehle festlegen. Am Ende von pkg.conf
gibt es einen Abschnitt mit dem Titel ALIAS
. Wenn Sie routinemäßig komplizierte Befehle ausführen, sollten Sie Aliase erstellen.
Der Inhalt der Datei /usr/local/etc/pkg.conf
ist unten angegeben:
# System-wide configuration file for pkg(8)
# For more information on the file format and
# options please refer to the pkg.conf(5) man page
# Note: you don't need to have a pkg.conf file. Many installations
# will work well with no pkg.conf at all or with an empty pkg.conf
# (other than comment lines). You can also override any of these
# settings from the environment.
# Configuration options -- default values.
#PKG_DBDIR = "/var/db/pkg";
#PKG_CACHEDIR = "/var/cache/pkg";
#PORTSDIR = "/usr/ports";
#INDEXDIR = "";
#INDEXFILE = "INDEX-10"; # Autogenerated
#HANDLE_RC_SCRIPTS = false;
#DEFAULT_ALWAYS_YES = false;
#ASSUME_ALWAYS_YES = false;
#REPOS_DIR [
# "/etc/pkg/",
# "/usr/local/etc/pkg/repos/",
#]
#PLIST_KEYWORDS_DIR = "";
#SYSLOG = true;
#ABI = "freebsd:10:x86:64"; # Autogenerated
#DEVELOPER_MODE = false;
#VULNXML_SITE = "http://vuxml.freebsd.org/freebsd/vuln.xml.xz";
#FETCH_RETRY = 3;
#PKG_PLUGINS_DIR = "/usr/local/lib/pkg/";
#PKG_ENABLE_PLUGINS = true;
#PLUGINS [
#]
#DEBUG_SCRIPTS = false;
#PLUGINS_CONF_DIR = "/usr/local/etc/pkg/";
#PERMISSIVE = false;
#REPO_AUTOUPDATE = true;
#NAMESERVER = "";
#HTTP_USER_AGENT = "Custom_User_Manager";
#EVENT_PIPE = "";
#FETCH_TIMEOUT = 30;
#UNSET_TIMESTAMP = false;
#SSH_RESTRICT_DIR = "";
#PKG_ENV {
#}
#PKG_SSH_ARGS = "";
#DEBUG_LEVEL = 0;
#ALIAS {
#}
#CUDF_SOLVER = "";
#SAT_SOLVER = "";
#RUN_SCRIPTS = true;
#CASE_SENSITIVE_MATCH = false;
#IP_VERSION = 0
# Sample alias settings
ALIAS : {
all-depends: query %dn-%dv,
annotations: info -A,
build-depends: info -qd,
cinfo: info -Cx,
comment: query -i "%c",
csearch: search -Cx,
desc: query -i "%e",
download: fetch,
iinfo: info -ix,
isearch: search -ix,
prime-list: "query -e '%a = 0' '%n'",
prime-origins: "query -e '%a = 0' '%o'",
leaf: "query -e '%#r == 0' '%n-%v'",
list: info -ql,
noauto = "query -e '%a == 0' '%n-%v'",
options: query -i "%n - %Ok: %Ov",
origin: info -qo,
orphans: version -vRl\?,
provided-depends: info -qb,
rall-depends: rquery %dn-%dv,
raw: info -R,
rcomment: rquery -i "%c",
rdesc: rquery -i "%e",
required-depends: info -qr,
roptions: rquery -i "%n - %Ok: %Ov",
shared-depends: info -qB,
show: info -f -k,
size: info -sq,
unmaintained = "query -e '%m = \"[email protected]\"' '%o (%w)'",
runmaintained = "rquery -e '%m = \"[email protected]\"' '%o (%w)'",
}
Wie man installierte Pakete anzeigt?
pkg info
kann verwendet werden, um Informationen über die auf einem System installierten Pakete anzuzeigen. Beim Ausführen ohne Schalter zeigt pkg info
die Paketversion entweder für alle installierten Pakete oder für das angegebene Paket an.
pkg info
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
autoconf-2.69_3 Automatically configure source code on many Un*x platforms
autoconf-wrapper-20131203 Wrapper script for GNU autoconf
automake-1.16.5 GNU Standards-compliant Makefile generator
bash-5.1.16 GNU Project's Bourne Again SHell
boost-libs-1.72.0_6 Free portable C++ libraries (without Boost.Python)
ca_root_nss-3.76 Root certificate bundle from the Mozilla Project
cmake-3.22.2 Cross-platform Makefile generator
curl-7.82.0 Command line tool and library for transferring data with URLs
dtrace-toolkit-1.0_6 Collection of useful scripts for DTrace
easy-rsa-3.0.8_1 Small RSA key management package based on openssl
expat-2.4.8 XML 1.0 parser written in C
fasd-1.0.1 Shell helper program to autocomplete paths faster
fusefs-libs3-3.10.5 FUSE library version 3 for filesystems implemented in userspace
fusefs-sshfs-3.7.2 Mount remote directories over ssh
gdb-11.2 GNU Project Debugger
gettext-0.21 GNU gettext meta package
gettext-runtime-0.21 GNU gettext runtime libraries and programs
gettext-tools-0.21 GNU gettext development and translation tools
git-2.35.2 Distributed source code management tool
glib-2.70.4_3,2 Some useful routines of C programming (current stable version)
gmake-4.3_2 GNU version of 'make' utility
gmp-6.2.1 Free library for arbitrary precision arithmetic
go-1.18.1,1 Go programming language
icu-70.1_1,1 International Components for Unicode (from IBM)
indexinfo-0.3.1 Utility to regenerate the GNU info page index
jansson-2.14 C library for encoding, decoding, and manipulating JSON data
jsoncpp-1.9.5 JSON reader and writer library for C++
libarchive-3.6.0,1 Library to create and read several streaming archive formats
libedit-3.1.20210910,1 Command line editor library
libevent-2.1.12 API for executing callback functions on events or timeouts
libffi-3.3_1 Foreign Function Interface
libiconv-1.16 Character set conversion library
liblz4-1.9.3,1 LZ4 compression library, lossless and very fast
libmaxminddb-1.6.0 Library for the MaxMind DB file format used for GeoIP2
libnghttp2-1.46.0 HTTP/2.0 C Library
libqrencode-4.1.1 C library for encoding data in a QR Code symbol
libssh2-1.10.0,3 Library implementing the SSH2 protocol
libtermkey-0.22 Easy processing of keyboard entry from terminal-based programs
libtextstyle-0.21 Text styling library
libtool-2.4.6_1 Generic shared library support script
libunwind-20211201_1 Generic stack unwinding library
libuv-1.42.0 Multi-platform support library with a focus on asynchronous I/O
libvterm-0.1.1 Implementation of a VT220/xterm/ECMA-48 terminal emulator
libxml2-2.9.13_1 XML parser library for GNOME
libyaml-0.2.5 YAML 1.1 parser and emitter written in C
luajit-openresty-2.1.20220310 Just-In-Time Compiler for Lua (OpenResty branch)
luv-1.41.0.0_3 libuv bindings for lua
lzo2-2.10_1 Portable speedy, lossless data compression library
m4-1.4.19,1 GNU M4
mosh-1.3.2_18 Mobile terminal that supports intermittent connectivity
mpdecimal-2.5.1 C/C++ arbitrary precision decimal floating point libraries
mpfr-4.1.0_1 Library for multiple-precision floating-point computations
msgpack-3.3.0 Efficient binary serialization, like JSON but smaller and faster
nano-6.0 Nano's ANOther editor, an enhanced free Pico clone
nmap-7.91_2 Port scanning utility for large networks
openssl-1.1.1o,1 TLSv1.3 capable SSL and crypto library
openvpn-2.5.6 Secure IP/Ethernet tunnel daemon
p5-Authen-SASL-2.16_1 Perl5 module for SASL authentication
p5-CGI-4.54 Handle Common Gateway Interface requests and responses
p5-Clone-0.45 Recursively copy Perl datatypes
p5-Digest-HMAC-1.04 Perl5 interface to HMAC Message-Digest Algorithms
p5-Encode-Locale-1.05 Determine the locale encoding
p5-Error-0.17029 Error/exception handling in object-oriented programming style
p5-GSSAPI-0.28_2 Perl extension providing access to the GSSAPIv2 library
p5-HTML-Parser-3.77 Perl5 module for parsing HTML documents
p5-HTML-Tagset-3.20_1 Some useful data table in parsing HTML
p5-HTTP-Date-6.05 Conversion routines for the HTTP protocol date formats
p5-HTTP-Message-6.36 Representation of HTTP style messages
p5-IO-HTML-1.004 Open an HTML file with automatic charset detection
p5-IO-Socket-INET6-2.72_1 Perl module with object interface to AF_INET6 domain sockets
p5-IO-Socket-SSL-2.074 Perl5 interface to SSL sockets
p5-LWP-MediaTypes-6.04 Guess media type for a file or a URL
p5-Mozilla-CA-20211001 Perl extension for Mozilla CA cert bundle in PEM format
p5-Net-SSLeay-1.90 Perl5 interface to SSL
p5-Socket6-0.29 IPv6 related part of the C socket.h defines and structure manipulators
p5-TimeDate-2.33,1 Perl5 module containing a better/faster date parser for absolute dates
p5-URI-5.10 Perl5 interface to Uniform Resource Identifier (URI) references
pcre-8.45_1 Perl Compatible Regular Expressions library
pcre2-10.39_1 Perl Compatible Regular Expressions library, version 2
perl5-5.32.1_1 Practical Extraction and Report Language
pkcs11-helper-1.28.0 Helper library for multiple PKCS#11 providers
pkg-1.18.4 Package manager
png-1.6.37_1 Library for manipulating PNG images
protobuf-3.19.4,1 Data interchange format library
python3-3_3 Meta-port for the Python interpreter 3.x
python38-3.8.13 Interpreted object-oriented programming language
readline-8.1.2 Library for editing command lines as they are typed
rhash-1.4.2 Utility and library for computing and checking of file hashes
ripgrep-13.0.0_8 Command line search tool
rsync-3.2.3_1 Network file distribution/synchronization utility
ruby-2.7.6,1 Object-oriented interpreted scripting language
source-highlight-3.1.9_1 C/C++ and Java sources to HTML converter
sqlite3-3.37.2,1 SQL database engine in a C library
sudo-1.9.10 Allow others to run commands as root
the_silver_searcher-2.2.0 Code-searching tool similar to ack but faster
tinycdb-0.78_2 Analogous to cdb, but faster
tmux-3.2a Terminal Multiplexer
tree-sitter-0.20.6 Incremental parser generator
unibilium-2.1.0 Very basic terminfo library
universal-ctags-p5.9.20220306.0_2 Fork of Exuberant Ctags to generate index/tag files
valgrind-3.18.1,1 Memory debugging and profiling tool
vim-8.2.4669 Improved version of the vi editor (console flavor)
wireguard-go-0.0.20220316_1,1 WireGuard implementation in Go
wireguard-tools-1.0.20210914_1 Fast, modern and secure VPN Tunnel
xxhash-0.8.1 Extremely fast non-cryptographic hash algorithm
zenarmor-1.11.4 Next Generation Firewall Extensions for FreeBSD
zenarmor-agent-1.12.1 ZENARMOR Cloud Agent
zsh-5.8.1 The Z shell
zstd-1.5.2 Fast real-time compression algorithm
Um zusätzliche Informationen über ein installiertes Paket zu erhalten, geben Sie pkg info
gefolgt vom Namen des Pakets ein. Dies zeigt die Installationsdetails des Pakets in einem für Menschen lesbaren Bericht an. Sie können eine Fülle nützlicher Informationen einsehen, einschließlich der Version der Software, der Installationszeit, der Lizenz, der Kompilierungsflags und mehr.
Zum Beispiel, um die Details des Zenarmor-Pakets auf FreeBSD anzuzeigen, führen Sie den folgenden Befehl aus:
pkg info zenarmor
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
zenarmor-1.11.4
Name : zenarmor
Version : 1.11.4
Installed on : Sat Sep 3 22:54:55 2022 +03
Origin : security/zenarmor
Architecture : FreeBSD:13:amd64
Prefix : /usr/local
Categories : security
Licenses :
Maintainer : opensource@sunnyvalley.io
WWW : https://www.zenarmor.com/
Comment : Next Generation Firewall Extensions for FreeBSD
Annotations :
FreeBSD_version: 1300139
repo_type : binary
repository : SunnyValley
Flat size : 79.1MiB
Description :
Sensei is a plugin for network platforms empowering them with
state of the art next generation network security features, such as
* Application Control
* Cloud Application Control
* Advanced Network Analytics
* All-ports Full TLS Inspection
* Cloud Threat Intelligence
* Web Security & Web Filtering
* Active Directory Integration
Note: Zenarmor is a commercial project. The source code for the
core product is closed source.
WWW: https://www.zenarmor.com/sensei
Wie installiert man Pakete?
Verwenden Sie den folgenden Befehl, um ein Binärpaket zu installieren, wobei packagename
der Name des zu installierenden Pakets ist:
pkg install packagename
Dieser Befehl nutzt Repository-Daten, um zu bestimmen, welche Softwareversion installiert werden soll und ob sie nicht installierte Abhängigkeiten hat.
Zum Beispiel, um curl
zu installieren, führen Sie den folgenden Befehl aus:
pkg install curl
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 4 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
libidn2: 2.3.3_1 [FreeBSD]
libpsl: 0.21.1_6 [FreeBSD]
libunistring: 1.1 [FreeBSD]
Installed packages to be UPGRADED:
curl: 7.82.0 -> 7.85.0 [FreeBSD]
Number of packages to be installed: 3
Number of packages to be upgraded: 1
The process will require 4 MiB more space.
2 MiB to be downloaded.
Proceed with this action? [y/N]: y
[1/4] Fetching libidn2-2.3.3_1.pkg: 100% 133 KiB 136.4kB/s 00:01
[2/4] Fetching libunistring-1.1.pkg: 100% 554 KiB 567.5kB/s 00:01
[3/4] Fetching curl-7.85.0.pkg: 100% 1 MiB 1.5MB/s 00:01
[4/4] Fetching libpsl-0.21.1_6.pkg: 100% 63 KiB 64.1kB/s 00:01
Checking integrity... done (0 conflicting)
[1/4] Installing libunistring-1.1...
[1/4] Extracting libunistring-1.1: 100%
[2/4] Installing libidn2-2.3.3_1...
[2/4] Extracting libidn2-2.3.3_1: 100%
[3/4] Installing libpsl-0.21.1_6...
[3/4] Extracting libpsl-0.21.1_6: 100%
[4/4] Upgrading curl from 7.82.0 to 7.85.0...
[4/4] Extracting curl-7.85.0: 100%
Beim Installieren von Paketen mit pkg install durchsucht pkg zuerst das lokale Paketverzeichnis, bevor es das benötigte Paket aus dem pkg.FreeBSD.org
-Repository herunterlädt. Sobald das Paket installiert ist, wird es in der SQLite-Datenbank /var/db/pkg/local.sqlite
registriert. Vermeiden Sie es, diese Datei zu löschen, da dies dazu führen kann, dass Ihr System den Überblick darüber verliert, welche Pakete installiert wurden. Wenn das Programm Abhängigkeiten hat, wird pkg
diese ermitteln und zusätzlich zum Hauptpaket installieren. Automatische Pakete sind Abhängigkeiten, die als abhängige Pakete bereitgestellt werden.
Wie führt man den Befehl "pkg install" aus?
Der Befehl pkg install
wird verwendet, um Pakete aus entfernten oder lokalen Archiven zu installieren. Mehrere Paketnamen können in der Befehlszeile angegeben werden, entweder explizit oder durch Übereinstimmung mit Paketnamen (oder Ursprüngen) in Repository-Katalogen unter Verwendung von Shell-Globbing oder regulären Ausdrücken.
Die Syntax des Befehls pkg install
ist unten angegeben:
pkg install [-AfIMnFqRUy] [-r reponame] [-Cgix]
_pkg-origin|pkg-name|pkg-name-version_ ...
pkg install [--{automatic,force,no-scripts,ignore-missing}]
[--{dry-run,fetch-only,quiet,recursive,no-repo-update,yes}]
[--repository reponame]
[--{case-sensitive,glob,case-insensitive,regex}]
_pkg-origin|pkg-name|pkg-name-version_ ...
pkg install aktualisiert zuerst alle veralteten Repository-Kataloge, es sei denn, die pkg.conf-Variable REPO_AUTOUPDATE ist auf NO gesetzt. Es erstellt dann eine Inventarliste aller Produktinstallationen, die abgeschlossen werden müssen.
Alle bereits installierten und aktuellen Anwendungen werden von der Liste entfernt, es sei denn, die Option -f
(force) wird angegeben, in diesem Fall werden sie neu installiert.
Überprüfung der Abhängigkeiten der Pakete auf der Liste und Hinzufügen fehlender Pakete zur Installationsliste. Diese implizit eingeführten Programme werden als Kandidaten für die automatische Entfernung markiert.
Autoremoval-Markierungen sind persistent und überstehen die Neuinstallation oder das Upgrade der betreffenden Pakete, selbst wenn die Pakete anschließend explizit in der Befehlszeile genannt werden.
Alle bereits installierten, aber veralteten Programme, sei es auf der Befehlszeile angegeben oder basierend auf der Summe ihrer Abhängigkeiten, werden als Upgrade-Aufgaben zur Arbeitsliste hinzugefügt. Die Arbeitsliste wird in Abhängigkeitsreihenfolge sortiert, und pkg install wird sie dem Benutzer zur Genehmigung vorlegen, bevor fortgefahren wird, es sei denn, die -y
-Option oder die ASSUME_ALWAYS_YES-Einstellung in pkg.conf
werden verwendet, um dieses Verhalten zu überschreiben.
Pakete werden aus den Repositories in den lokalen Paket-Cache heruntergeladen, wenn sie noch nicht vorhanden sind oder wenn die Prüfziffer des zwischengespeicherten Paketdatei von der Prüfziffer der Paketdatei im Repository abweicht. Pakete können aus jedem der in pkg.conf(5) oder in den /usr/local/etc/pkg/repo-Dateien angegebenen Repositories heruntergeladen werden.
Paket-Repository-Kataloge werden automatisch aktualisiert, wenn pkg install von einer Benutzer-ID mit Schreibzugriff auf die Paketdatenbank ausgeführt wird, es sei denn, dies wird durch das -U-Flag oder REPO_AUTOUPDATE = NO in pkg.conf(5) deaktiviert.
pkg install unterstützt die folgenden Parameter:
-
-A
,--automatic
: Markiere die installierten Pakete als automatisch. Werden automatisch entfernt, wenn keine anderen Pakete von ihnen abhängen. -
-C
,--case-sensitive
: Machen Sie das Standard- oder reguläre Ausdruck (-x) beim Abgleich mit dem Paketnamen groß-/kleinschreibungssensitiv. -
-f
,--force
: Erzwinge die Neuinstallation des Pakets, wenn es bereits installiert ist. -
-g,
--glob
: Behandeln Sie die Paketnamen als Shell-Glob-Muster. -
-I,
--no-scripts
: Wenn für ein bestimmtes Paket Installationsskripte (pre-install oder post-install) vorhanden sind, führen Sie diese nicht aus. Wenn ein Paket aktualisiert wird, werden auch Deinstallationsskripte (pre-deinstall oder post-deinstall) nicht ausgeführt. -
-i,
--case-insensitive
: Machen Sie den Standard oder den regulären Ausdruck (-x) für die Übereinstimmung mit dem Paketnamen nicht groß-/kleinschreibungsempfindlich. Dies ist die Standardeinstellung, es sei denn, sie wird durch Setzen von CASE_SENSITIVE_MATCH auf true in pkg.conf geändert. -
-M
,--ignore-missing
: Erzwingen Sie die Installation des Pakets mit fehlenden Abhängigkeiten. -
-n
,--dry-run
: Trockenlaufmodus. Die Liste der Änderungen an Paketen wird immer angezeigt, aber es werden keine Änderungen tatsächlich vorgenommen. -
-F
,--fetch-only
: Führen Sie keine tatsächliche Installation von Paketen durch, sondern laden Sie lediglich Pakete herunter, die aktualisiert werden sollten, und erkennen Sie mögliche Konflikte. -
-q
,--quiet
: Erzwinge ruhige Ausgabe, außer wenn -n verwendet wird, wo pkg install immer die zu installierenden, zu aktualisierenden oder zu löschenden Pakete anzeigen wird. -
-R
,--recursive
: Wenn zusammen mit -f verwendet, installiert es alle Pakete neu, die das angegebene Paket benötigen. -
-r reponame
,--repository reponame
: Installieren Sie Pakete nur aus dem angegebenen Repository, unabhängig vom konfigurierten "aktiven" Status in repo.conf. -
-U
,--no-repo-update
: Unterdrückt das automatische Aktualisieren der lokalen Kopie des Repository-Katalogs von remote. Automatische Aktualisierungen des Repository-Katalogs werden nur versucht, wenn die effektive UID des Prozesses Schreibzugriff auf die Paketdatenbank hat. Andernfalls werden sie stillschweigend ignoriert. -
-x
,--regex
: Behandeln Sie die Paketnamen als reguläre Ausdrücke gemäß der "modernen" oder "erweiterten" Syntax von re_format(7). -
-y
,--yes
: Gehe davon aus, dass die Antwort ja ist, wenn nach einer Bestätigung vor der Paketinstallation gefragt wird.
Wie man Pakete mit pkg herunterlädt?
Der Paketmanager kann einfach Pakete aus dem Internet herunterladen und an einem einzigen Ort auf der Festplatte speichern. Dies ermöglicht die Installation zu einem späteren Zeitpunkt. Der Befehl pkg fetch
kann verwendet werden, um ein Paket herunterzuladen, ohne es zu installieren. Sie können die -d
-Option verwenden, um alle Abhängigkeiten zusätzlich zum angegebenen Paket abzurufen. Die heruntergeladenen Pakete werden im Verzeichnis /var/cache/pkg
zwischengespeichert. Sobald die Pakete heruntergeladen wurden, wird pkg
sie in dieses Verzeichnis hinzufügen.
Um das nginx
-Paket mit Abhängigkeiten herunterzuladen, führen Sie den folgenden Befehl aus:
pkg fetch -d nginx
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following packages will be fetched:
New packages to be FETCHED:
nginx: 1.22.1_2,3 (462 KiB: 27.82% of the 2 MiB to download)
pcre: 8.45_3 (1 MiB: 72.18% of the 2 MiB to download)
Number of packages to be fetched: 2
The process will require 2 MiB more space.
2 MiB to be downloaded.
Proceed with fetching packages? [y/N]: y
Fetching nginx-1.22.1_2,3.pkg: 100% 462 KiB 473.2kB/s 00:01
Fetching pcre-8.45_3.pkg: 100% 1 MiB 1.2MB/s 00:01
Nach einem Fetch führen Sie pkg install
wie gewohnt aus, um ein heruntergeladenes Paket zu installieren. Der Installationsprozess verwendet die zwischengespeicherten Dateien anstelle der heruntergeladenen Daten.
Um das nginx
-Paket mit Abhängigkeiten nach dem Abrufen zu installieren, führen Sie den folgenden Befehl aus:
pkg install nginx
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Checking integrity... done (0 conflicting)
The following 1 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
nginx: 1.22.1_2,3 [FreeBSD]
Number of packages to be installed: 1
The process will require 1 MiB more space.
Proceed with this action? [y/N]: y
[1/1] Installing nginx-1.22.1_2,3...
===> Creating groups.
Using existing group 'www'.
===> Creating users
Using existing user 'www'.
[1/1] Extracting nginx-1.22.1_2,3: 100%
=====
Message from nginx-1.22.1_2,3:
--
Recent version of the NGINX introduces dynamic modules support. In
FreeBSD ports tree this feature was enabled by default with the DSO
knob. Several vendor's and third-party modules have been converted
to dynamic modules. Unset the DSO knob builds an NGINX without
dynamic modules support.
To load a module at runtime, include the new `load_module'
directive in the main context, specifying the path to the shared
object file for the module, enclosed in quotation marks. When you
reload the configuration or restart NGINX, the module is loaded in.
It is possible to specify a path relative to the source directory,
or a full path, please see
https://www.nginx.com/blog/dynamic-modules-nginx-1-9-11/ and
http://nginx.org/en/docs/ngx_core_module.html#load_module for
details.
Default path for the NGINX dynamic modules is
/usr/local/libexec/nginx.
Wie löscht man veraltete Pakete?
PKG speichert standardmäßig binäre Pakete im Cache-Verzeichnis, das in pkg.conf (5) durch PKG CACHEDIR angegeben ist. Es werden nur Kopien der zuletzt installierten Pakete aufbewahrt. Frühere Versionen von pkg behielten alle zuvor installierten Pakete. Das Verzeichnis des Paket-Cache kann im Laufe der Zeit an Größe zunehmen. Der Befehl pkg clean
entfernt alle zwischengespeicherten Pakete, die durch spätere Versionen ersetzt wurden, sowie alle Paketdateien, die aus dem Repository entfernt wurden. Verwenden Sie den Schalter -a
, um alle zwischengespeicherten Paketdateien zu löschen.
pkg clean -a
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
The following package files will be deleted:
/var/cache/pkg/p5-Clone-0.45~cfaf371064.pkg
/var/cache/pkg/tmux-3.2a~b0a828ab4b.pkg
/var/cache/pkg/libyaml-0.2.5.pkg
/var/cache/pkg/gmp-6.2.1.pkg
/var/cache/pkg/glib-2.70.4_3,2~0ef02eed07.pkg
/var/cache/pkg/protobuf-3.19.4,1~fc9e919e34.pkg
/var/cache/pkg/ruby-2.7.6,1.pkg
/var/cache/pkg/luv-1.41.0.0_3~4227c1bb22.pkg
.............................
/var/cache/pkg/pkcs11-helper-1.28.0~331b817f69.pkg
/var/cache/pkg/gmake-4.3_2~54be7f1f1b.pkg
/var/cache/pkg/vim-8.2.4669~c8dc83cb38.pkg
/var/cache/pkg/luv-1.41.0.0_3.pkg
/var/cache/pkg/gettext-runtime-0.21.pkg
/var/cache/pkg/icu-70.1_1,1~463967eb33.pkg
The cleanup will free 379 MiB
Proceed with cleaning the cache? [y/N]: y
Deleting files: 100%
All done
Wie deinstalliert man Pakete?
Verwenden Sie den folgenden Befehl, um ein Binärpaket zu entfernen, wobei packagename
der Name des zu installierenden Pakets ist:
pkg delete packagename
Zum Beispiel, um das curl
-Paket zu löschen, führen Sie den folgenden Befehl aus:
pkg delete curl
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 3 packages (of 0 packages in the universe):
Installed packages to be REMOVED:
cmake: 3.22.2
curl: 7.85.0
git: 2.35.2
Number of packages to be removed: 3
The operation will free 67 MiB.
Proceed with deinstalling packages? [y/N]: y
[1/3] Deinstalling cmake-3.22.2...
[1/3] Deleting files for cmake-3.22.2: 100%
[2/3] Deinstalling git-2.35.2...
[2/3] Deleting files for git-2.35.2: 100%
==> You should manually remove the "git_daemon" user.
==> You should manually remove the "git_daemon" group
[3/3] Deinstalling curl-7.85.0...
[3/3] Deleting files for curl-7.85.0: 100%
Wie man Pakete sperrt?
Es kann vorkommen, dass Sie möchten, dass ein Serverpaket niemals aktualisiert wird. Wenn ein Paket gesperrt ist, wird pkg
es nicht mehr aktualisieren, downgraden, entfernen oder neu installieren. Es wendet die gleichen Kriterien sowohl auf die Abhängigkeiten des Pakets als auch auf die Programme an, von denen es abhängt.
Verwenden Sie den folgenden Befehl, um ein Binärpaket zu sperren, wobei packagename
der Name des zu installierenden Pakets ist:
pkg lock packagename
Zum Beispiel, um das openssl
-Paket zu sperren, führen Sie den folgenden Befehl aus:
pkg lock openssl
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
openssl-1.1.1o,1: lock this package? [y/N]: y
Locking openssl-1.1.1o,1
openssl-1.1.1o,1: already locked
Verwenden Sie die -l
-Option, um alle derzeit auf dem System gesperrten Pakete aufzulisten:
pkg lock -l
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Currently locked packages:
openssl-1.1.1o,1
Um die Sperre zu entfernen, geben Sie den Befehl pkg unlock
ein:
pkg unlock openssl
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist.
openssl-1.1.1o,1: unlock this package? [y/N]: y
Unlocking openssl-1.1.1o,1
openssl-1.1.1o,1: already unlocked
Um alle Anwendungen auf Ihrem System zu sperren oder zu entsperren, verwenden Sie die Option -a
und drücken Sie y
zur Bestätigung:
pkg lock -a
pkg unlock -a
Wie man installierte Pakete aktualisiert?
Um installierte Pakete zu aktualisieren, können Sie den folgenden Befehl ausführen:
pkg upgrade
Dieser Befehl wird die installierten Versionen mit denen im Katalog des Repositories vergleichen und sie dann aus dem Repository aktualisieren.
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Checking for upgrades (69 candidates): 100%
Processing candidates (69 candidates): 100%
The following 73 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
autoconf-switch: 20220527 [FreeBSD]
go119: 1.19.3 [FreeBSD]
luajit-devel: 2.1.0.20221122 [FreeBSD]
python39: 3.9.15_1 [FreeBSD]
Installed packages to be UPGRADED:
autoconf: 2.69_3 -> 2.71 [FreeBSD]
bash: 5.1.16 -> 5.2.12 [FreeBSD]
boost-libs: 1.72.0_6 -> 1.80.0_1 [FreeBSD]
ca_root_nss: 3.76 -> 3.85 [FreeBSD]
dtrace-toolkit: 1.0_6 -> 1.0_7 [FreeBSD]
easy-rsa: 3.0.8_1 -> 3.1.1 [FreeBSD]
expat: 2.4.8 -> 2.5.0 [FreeBSD]
........
xxhash: 0.8.1 -> 0.8.1_2 [FreeBSD]
zenarmor: 1.11.4 -> 1.12.1 [SunnyValley]
zsh: 5.8.1 -> 5.9_1 [FreeBSD]
zstd: 1.5.2 -> 1.5.2_1 [FreeBSD]
Installed packages to be REINSTALLED:
python3-3_3 [FreeBSD] (direct dependency changed: python39)
Number of packages to be installed: 4
Number of packages to be upgraded: 68
Number of packages to be reinstalled: 1
The process will require 147 MiB more space.
282 MiB to be downloaded.
Proceed with this action? [y/N]:
Um eine bestimmte Anwendung zu aktualisieren, können Sie den folgenden Befehl ausführen, wobei package_name
der Name des zu aktualisierenden Pakets ist:
pkg upgrade package_name
Wie man installierte Pakete überprüft?
Regelmäßig werden Schwachstellen in Drittanbieterprogrammen aufgedeckt. Als Reaktion darauf integriert pkg ein Prüfwerkzeug. Um zu überprüfen, ob das installierte Programm bekannte Schwachstellen aufweist, verwenden Sie den folgenden Befehl:
pkg audit -F
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Fetching vuln.xml.xz: 100% 974 KiB 997.4kB/s 00:01
go119-1.19.3 is vulnerable:
go -- multiple vulnerabilities
CVE: CVE-2022-41717
CVE: CVE-2022-41720
WWW: https://vuxml.FreeBSD.org/freebsd/6f5192f5-75a7-11ed-83c0-411d43ce7fe4.html
python39-3.9.15_1 is vulnerable:
Python -- multiple vulnerabilities
WWW: https://vuxml.FreeBSD.org/freebsd/050eba46-7638-11ed-820d-080027d3a315.html
ruby-3.0.4_3,1 is vulnerable:
rubygem-cgi -- HTTP response splitting vulnerability
CVE: CVE-2021-33621
WWW: https://vuxml.FreeBSD.org/freebsd/84ab03b6-6c20-11ed-b519-080027f5fec9.html
python38-3.8.15_1 is vulnerable:
Python -- multiple vulnerabilities
WWW: https://vuxml.FreeBSD.org/freebsd/050eba46-7638-11ed-820d-080027d3a315.html
4 problem(s) in 4 installed package(s) found.
Wie entfernt man automatisch ungenutzte Pakete?
Wenn ein Paket entfernt wird, können Abhängigkeiten zurückbleiben, die nicht mehr notwendig sind. Nicht benötigte Pakete, die als abhängige Pakete (Blattpakete) geladen wurden, können automatisch identifiziert und gelöscht werden, indem der nächste Befehl ausgeführt wird:
pkg autoremove
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist, und y
drücken, um fortzufahren:
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 38 packages:
Installed packages to be REMOVED:
ca_root_nss: 3.85
jsoncpp: 1.9.5
libarchive: 3.6.1,1
libidn2: 2.3.3_1
............
p5-Mozilla-CA: 20221114
p5-Net-SSLeay: 1.92
p5-Socket6: 0.29
p5-TimeDate: 2.33,1
p5-URI: 5.15
python38: 3.8.15_1
rhash: 1.4.3
tree-sitter: 0.20.7
unibilium: 2.1.1
Number of packages to be removed: 38
The operation will free 138 MiB.
Proceed with deinstalling packages? [y/N]
Automatische Pakete sind Pakete, die als Abhängigkeiten installiert wurden. Nicht-automatische Pakete, d.h. Pakete, die explizit installiert wurden und nicht als Abhängigkeit eines anderen Pakets, können mit dem folgenden Befehl aufgelistet werden:
pkg prime-list
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
autoconf
automake
dtrace-toolkit
fasd
fusefs-sshfs
gdb
gettext
......
universal-ctags
valgrind
vim
wireguard-go
wireguard-tools
zenarmor
zenarmor-agent
zsh
Die Datei /usr/local/etc/pkg.conf
definiert den Alias-Befehl pkg prime-list. Es gibt mehrere andere Möglichkeiten, die Paketdatenbank des Systems abzufragen. Zum Beispiel kann der Befehl pkg prime-origins
verwendet werden, um das Ursprungsportverzeichnis aus der vorhergehenden Liste zu erhalten.
pkg prime-origins
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
devel/autoconf
devel/automake
sysutils/dtrace-toolkit
deskutils/fasd
sysutils/fusefs-sshfs
devel/gdb
devel/gettext
.......
devel/universal-ctags
devel/valgrind
editors/vim
net/wireguard-go
net/wireguard-tools
security/zenarmor
security/zenarmor-agent
shells/zsh
Wie stellt man die Paketdatenbank wieder her?
Im Gegensatz zu herkömmlichen Paketverwaltungssystemen bietet pkg
einen eigenen Backup-Mechanismus für die Paketdatenbank an. Standardmäßig ist diese Funktion aktiviert.
In periodic.conf
können Sie daily_backup_pkgdb_enable="NO"
setzen, um zu verhindern, dass das periodische Skript die Paketdatenbank sichert.
Um den Inhalt eines vorherigen Paketdatenbank-Backups wiederherzustellen, verwenden Sie den folgenden Befehl und ersetzen Sie den Speicherort des Backups durch /path/to/pkg.sql
:
pkg backup -r /path/to/pkg.sql
Bevor ein durch das periodische Skript erstelltes Backup wiederhergestellt wird, muss das Backup dekomprimiert werden.
Um ein manuelles Backup der pkg-Datenbank zu erstellen, verwenden Sie den folgenden Befehl und ersetzen Sie /path/to/pkg.sql
durch einen geeigneten Dateinamen und Speicherort:
pkg backup -d /path/to/pkg.sql
Dumping database:
Backing up: 100%
Wie definiert und konfiguriert man Repositories?
pkg
unterstützt Paket-Repositorys, die benannte Sammlungen von Paketen sind. Sie können Repositories hinzufügen, löschen, aktivieren und deaktivieren. Jedes Repository sollte in seiner eigenen Datei im UCL-Format konfiguriert werden. Das offizielle Verzeichnis des FreeBSD-Repositorys ist /etc/pkg
. FreeBSD wird mit dem aktivierten "FreeBSD"-Repository ausgeliefert. Seine Konfigurationsdatei befindet sich in /etc/pkg/FreeBSD.conf
.
Wie erforderlich können Sie Repositories hinzufügen oder löschen. Da /etc/pkg
für offizielle FreeBSD-Repositories reserviert ist, wird ein anderes Verzeichnis benötigt. Der übliche Pfad ist /usr/local/etc/pkg/repo
. Wenn Sie ein anderes Verzeichnis verwenden möchten, müssen Sie die REPO_DIRS
-Option in pkg.conf
anpassen. Das lokale Repository-Verzeichnis existiert standardmäßig nicht, daher muss mkdir -p /usr/local/etc/pkg/repos
verwendet werden, um es zu erstellen. In diesem Verzeichnis legen Sie Ihre eigenen Repository-Einstellungen ab.
Es spielt keine Rolle, wie der Dateiname lautet, aber er muss *.conf
entsprechen und eine priority
-Option sollte enthalten sein, um die bevorzugte Reihenfolge anzugeben. Dies ist eine einfache Ganzzahl, wobei größere Werte auf bevorzugte Repositories hinweisen. Die Priorität wird standardmäßig auf 0
gesetzt, wenn sie nicht ausdrücklich angegeben wird.
Um die Standard-FreeBSD.conf zu deaktivieren, erstellen Sie die folgende Datei in /usr/local/etc/pkg/repos:
FreeBSD: { enabled: no }
Führen Sie den nächsten Befehl aus, um schnell zu bestimmen, welche Repositories Sie eingerichtet haben:
pkg -vv
Sie sollten eine Ausgabe sehen, die der folgenden ähnlich ist:
Version : 1.18.4
PKG_DBDIR = "/var/db/pkg";
PKG_CACHEDIR = "/var/cache/pkg";
PORTSDIR = "/usr/ports";
INDEXDIR = "";
INDEXFILE = "INDEX-13";
HANDLE_RC_SCRIPTS = false;
DEFAULT_ALWAYS_YES = false;
ASSUME_ALWAYS_YES = false;
REPOS_DIR [
"/etc/pkg/",
"/usr/local/etc/pkg/repos/",
]
PLIST_KEYWORDS_DIR = "";
SYSLOG = true;
ABI = "FreeBSD:13:amd64";
ALTABI = "freebsd:13:x86:64";
DEVELOPER_MODE = false;
VULNXML_SITE = "http://vuxml.freebsd.org/freebsd/vuln.xml.xz";
FETCH_RETRY = 3;
PKG_PLUGINS_DIR = "/usr/local/lib/pkg/";
PKG_ENABLE_PLUGINS = true;
PLUGINS [
]
DEBUG_SCRIPTS = false;
PLUGINS_CONF_DIR = "/usr/local/etc/pkg/";
PERMISSIVE = false;
REPO_AUTOUPDATE = true;
NAMESERVER = "";
HTTP_USER_AGENT = "pkg/1.18.4";
EVENT_PIPE = "";
FETCH_TIMEOUT = 30;
UNSET_TIMESTAMP = false;
SSH_RESTRICT_DIR = "";
PKG_ENV {
}
PKG_SSH_ARGS = "";
DEBUG_LEVEL = 0;
ALIAS {
all-depends = "query %dn-%dv";
annotations = "info -A";
build-depends = "info -qd";
cinfo = "info -Cx";
comment = "query -i \"%c\"";
csearch = "search -Cx";
desc = "query -i \"%e\"";
download = "fetch";
iinfo = "info -ix";
isearch = "search -ix";
prime-list = "query -e '%a = 0' '%n'";
prime-origins = "query -e '%a = 0' '%o'";
leaf = "query -e '%#r == 0' '%n-%v'";
list = "info -ql";
noauto = "query -e '%a == 0' '%n-%v'";
options = "query -i \"%n - %Ok: %Ov\"";
origin = "info -qo";
orphans = "version -vRl?";
provided-depends = "info -qb";
rall-depends = "rquery %dn-%dv";
raw = "info -R";
rcomment = "rquery -i \"%c\"";
rdesc = "rquery -i \"%e\"";
required-depends = "info -qr";
roptions = "rquery -i \"%n - %Ok: %Ov\"";
shared-depends = "info -qB";
show = "info -f -k";
size = "info -sq";
unmaintained = "query -e '%m = \"[email protected]\"' '%o (%w)'";
runmaintained = "rquery -e '%m = \"[email protected]\"' '%o (%w)'";
}
CUDF_SOLVER = "";
SAT_SOLVER = "";
RUN_SCRIPTS = true;
CASE_SENSITIVE_MATCH = false;
LOCK_WAIT = 1;
LOCK_RETRIES = 5;
SQLITE_PROFILE = false;
WORKERS_COUNT = 0;
READ_LOCK = false;
IP_VERSION = 0;
AUTOMERGE = true;
VERSION_SOURCE = "";
CONSERVATIVE_UPGRADE = true;
PKG_CREATE_VERBOSE = false;
AUTOCLEAN = false;
DOT_FILE = "";
REPOSITORIES {
}
VALID_URL_SCHEME [
"pkg+http",
"pkg+https",
"https",
"http",
"file",
"ssh",
"tcp",
]
ALLOW_BASE_SHLIBS = false;
WARN_SIZE_LIMIT = 1048576;
METALOG = "";
OSVERSION = 1300139;
IGNORE_OSVERSION = false;
BACKUP_LIBRARIES = false;
BACKUP_LIBRARY_PATH = "/usr/local/lib/compat/pkg";
PKG_TRIGGERS_DIR = "/usr/local/share/pkg/triggers";
PKG_TRIGGERS_ENABLE = true;
AUDIT_IGNORE_GLOB [
]
AUDIT_IGNORE_REGEX [
"NULL",
]
COMPRESSION_LEVEL = -1;
ARCHIVE_SYMLINK = false;
REPO_ACCEPT_LEGACY_PKG = false;
FILES_IGNORE_GLOB [
"NULL",
]
FILES_IGNORE_REGEX [
"NULL",
]
Repositories:
FreeBSD: {
url : "pkg+http://pkg.FreeBSD.org/FreeBSD:13:amd64/latest",
enabled : yes,
priority : 0,
mirror_type : "SRV",
signature_type : "FINGERPRINTS",
fingerprints : "/usr/share/keys/pkg"
}
SunnyValley: {
url : "https://updates.sunnyvalley.io/FreeBSD/FreeBSD:13:amd64",
enabled : yes,
priority : 7
}
Nachdem Sie ein Repository hinzugefügt haben, sollten Sie die Repository-Kataloge mit dem folgenden Befehl abrufen:
pkg update
Wenn Sie mehr als ein Repository eingerichtet haben, möchten Sie wahrscheinlich bestimmte Pakete aus einem bestimmten Repository installieren, während andere aus jedem Repository abgerufen werden können, das sie hat.
Die Installation eines Pakets aus einem bestimmten Repository ist möglich:
pkg install -r myrepo zsh
wo myrepo eines der von pkg -vv
angezeigten Tags ist.
Zusätzlich können Sie pkg verwenden, um ein Paket-Repository zu erstellen.
Um ein Paket-Repository einzurichten, muss der Befehl pkg create
verwendet werden.
Das folgende Beispiel erstellt ein Repository, das alle derzeit installierten Pakete enthält:
cd /path/myrepo_directory
pkg create -a
pkg repo .
Die oben aufgeführten Skripte erstellen ein Repository für alle auf Ihrem System installierten Pakete. Jetzt können Sie Ihr Repository mit anderen teilen, indem Sie sie über Ihr Repository informieren.