Grundlagen der Paketverwaltung: apt, yum, dnf, pkg

Einführung

Die meisten modernen Unix-ähnlichen Betriebssysteme bieten einen zentralen Mechanismus zum Auffinden und Installieren von Software. Software wird normalerweise in Form vonpackages verteilt, die inrepositories gespeichert sind. Das Arbeiten mit Paketen wird alspackage management bezeichnet. Pakete stellen die grundlegenden Komponenten eines Betriebssystems zusammen mit gemeinsam genutzten Bibliotheken, Anwendungen, Diensten und Dokumentationen bereit.

Ein Paketverwaltungssystem erledigt viel mehr als eine einmalige Installation von Software. Außerdem werden Tools zum Aktualisieren bereits installierter Pakete bereitgestellt. Paket-Repositorys stellen sicher, dass der Code für die Verwendung auf Ihrem System überprüft wurde und die installierten Softwareversionen von Entwicklern und Paketbetreuern genehmigt wurden.

Bei der Konfiguration von Servern oder Entwicklungsumgebungen muss häufig über offizielle Repositorys hinausgesehen werden. Pakete in der stabilen Version einer Distribution sind möglicherweise veraltet, insbesondere wenn es um neue oder sich schnell ändernde Software geht. Dennoch ist die Paketverwaltung für Systemadministratoren und Entwickler von entscheidender Bedeutung, und die Fülle an Softwarepaketen für große Distributionen ist eine enorme Ressource.

Dieses Handbuch dient als Kurzreferenz für die Grundlagen zum Auffinden, Installieren und Aktualisieren von Paketen auf einer Vielzahl von Distributionen und soll Ihnen dabei helfen, dieses Wissen zwischen Systemen zu übersetzen.

Paketverwaltungssysteme: Ein kurzer Überblick

Die meisten Paketsysteme basieren auf Sammlungen von Paketdateien. Eine Paketdatei ist normalerweise ein Archiv, das kompilierte Binärdateien und andere Ressourcen der Software sowie Installationsskripts enthält. Pakete enthalten auch wertvolle Metadaten, einschließlich ihrerdependencies, einer Liste anderer Pakete, die für die Installation und Ausführung erforderlich sind.

Obwohl ihre Funktionen und Vorteile weitgehend identisch sind, variieren die Verpackungsformate und -tools je nach Plattform:

Betriebssystem Format Werkzeuge)

Debian

.deb

apt,apt-cache,apt-get,dpkg

Ubuntu

.deb

apt,apt-cache,apt-get,dpkg

CentOS

.rpm

yum

Fedora

.rpm

dnf

FreeBSD

Ports,.txz

make,pkg

In Debian und darauf basierenden Systemen wie Ubuntu, Linux Mint und Raspbian ist das Paketformat die.deb-Datei. APT, das Advanced Packaging Tool, bietet Befehle, die für die häufigsten Vorgänge verwendet werden: Durchsuchen von Repositorys, Installieren von Paketsammlungen und deren Abhängigkeiten sowie Verwalten von Upgrades. APT-Befehle fungieren als Front-End für das Dienstprogrammdpkgder unteren Ebene, das die Installation einzelner.deb-Dateien auf dem lokalen System übernimmt und manchmal direkt aufgerufen wird.

Neuere Versionen der meisten von Debian abgeleiteten Distributionen enthalten den Befehlapt, der eine übersichtliche und einheitliche Schnittstelle zu allgemeinen Operationen bietet, die traditionell von den spezifischerenapt-get undapt-cache verarbeitet wurden. Die Verwendung ist optional, kann jedoch einige Aufgaben vereinfachen.

CentOS, Fedora und andere Mitglieder der Red Hat-Familie verwenden RPM-Dateien. In CentOS wirdyum verwendet, um sowohl mit einzelnen Paketdateien als auch mit Repositorys zu interagieren.

In neueren Versionen von Fedora wurdeyum durchdnf ersetzt, eine modernisierte Gabel, die den größten Teil der Schnittstelle vonyum beibehält.

Das Binärpaketsystem von FreeBSD wird mit dem Befehlpkgverwaltet. FreeBSD bietet auch die Ports Collection, eine lokale Verzeichnisstruktur und Tools, mit denen der Benutzer Pakete mit Makefiles direkt aus dem Quellcode abrufen, kompilieren und installieren kann. Es ist normalerweise viel bequemer,pkg zu verwenden, aber gelegentlich ist ein vorkompiliertes Paket nicht verfügbar, oder Sie müssen möglicherweise die Optionen zur Kompilierungszeit ändern.

Paketlisten aktualisieren

Die meisten Systeme halten eine lokale Datenbank der Pakete in Remote-Repositorys bereit. Am besten aktualisieren Sie diese Datenbank, bevor Sie Pakete installieren oder aktualisieren. Als teilweise Ausnahme von diesem Muster suchenyum unddnf nach Aktualisierungen, bevor einige Vorgänge ausgeführt werden. Sie können sie jedoch jederzeit fragen, ob Aktualisierungen verfügbar sind.

System Befehl

Debian / Ubuntu

sudo apt-get update

sudo apt update

CentOS

yum check-update

Fedora

dnf check-update

FreeBSD-Pakete

sudo pkg update

FreeBSD-Ports

sudo portsnap fetch update

Aktualisieren Sie installierte Pakete

Sicherzustellen, dass die gesamte auf einem Computer installierte Software auf dem neuesten Stand ist, wäre ohne ein Paketsystem ein gewaltiges Unterfangen. Sie müssten Upstream-Änderungen und Sicherheitswarnungen für Hunderte verschiedener Pakete nachverfolgen. Ein Paketmanager löst zwar nicht jedes Problem, das beim Aktualisieren von Software auftritt, ermöglicht es Ihnen jedoch, die meisten Systemkomponenten mit wenigen Befehlen zu warten.

Unter FreeBSD kann ein Upgrade der installierten Ports zu Änderungen führen oder manuelle Konfigurationsschritte erfordern. Lesen Sie am besten/usr/ports/UPDATING, bevor Sie ein Upgrade mitportmaster durchführen.

System Befehl Anmerkungen

Debian / Ubuntu

sudo apt-get upgrade

Aktualisiert nach Möglichkeit nur installierte Pakete.

sudo apt-get dist-upgrade

Kann Pakete hinzufügen oder entfernen, um neue Abhängigkeiten zu erfüllen.

sudo apt upgrade

Wieapt-get upgrade.

sudo apt full-upgrade

Wieapt-get dist-upgrade.

CentOS

sudo yum update

Fedora

sudo dnf upgrade

FreeBSD-Pakete

sudo pkg upgrade

FreeBSD-Ports

less /usr/ports/UPDATING

Verwendetless, um Aktualisierungsnotizen für Ports anzuzeigen (scrollen Sie mit den Pfeiltasten und drücken Sie zum Beendenq).

cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a

Installiertportmaster und aktualisiert damit die installierten Ports.

Finde ein Paket

Die meisten Distributionen bieten ein grafisches oder menügesteuertes Frontend für Paketsammlungen. Dies kann eine gute Möglichkeit sein, nach Kategorien zu suchen und neue Software zu entdecken. Die schnellste und effektivste Methode zum Auffinden eines Pakets ist jedoch häufig die Suche mit Befehlszeilentools.

System Befehl Anmerkungen

Debian / Ubuntu

apt-cache search search_string

apt search search_string

CentOS

yum search search_string

yum search all search_string

Durchsucht alle Felder einschließlich der Beschreibung.

Fedora

dnf search search_string

dnf search all search_string

Durchsucht alle Felder einschließlich der Beschreibung.

FreeBSD-Pakete

pkg search search_string

Sucht nach Namen.

pkg search -f search_string

Sucht nach Namen und gibt vollständige Beschreibungen zurück.

pkg search -D search_string

Sucht nach einer Beschreibung.

FreeBSD-Ports

cd /usr/ports && make search name=package

Sucht nach Namen.

cd /usr/ports && make search key=search_string

Durchsucht Kommentare, Beschreibungen und Abhängigkeiten.

Anzeigen von Informationen zu einem bestimmten Paket

Bei der Entscheidung, was installiert werden soll, ist es oft hilfreich, detaillierte Beschreibungen der Pakete zu lesen. Neben lesbarem Text enthalten diese häufig Metadaten wie Versionsnummern und eine Liste der Abhängigkeiten des Pakets.

System Befehl Anmerkungen

Debian / Ubuntu

apt-cache show package

Zeigt lokal zwischengespeicherte Informationen zu einem Paket an.

apt show package

dpkg -s package

Zeigt den aktuellen Installationsstatus eines Pakets an.

CentOS

yum info package

yum deplist package

Listet Abhängigkeiten für ein Paket auf.

Fedora

dnf info package

dnf repoquery --requires package

Listet Abhängigkeiten für ein Paket auf.

FreeBSD-Pakete

pkg info package

Zeigt Informationen zu einem installierten Paket an.

FreeBSD-Ports

cd /usr/ports/category/port && cat pkg-descr

Installieren Sie ein Paket aus Repositorys

Sobald Sie den Namen eines Pakets kennen, können Sie es und seine Abhängigkeiten normalerweise mit einem einzigen Befehl installieren. Im Allgemeinen können Sie mehrere Pakete zur Installation bereitstellen, indem Sie sie alle auflisten.

System Befehl Anmerkungen

Debian / Ubuntu

sudo apt-get install package

sudo apt-get install package1 package2 ...

Installiert alle aufgelisteten Pakete.

sudo apt-get install -y package

Nimmt "Ja" an, wobeiapt normalerweise zum Fortfahren auffordert.

sudo apt install package

Zeigt einen farbigen Fortschrittsbalken an.

CentOS

sudo yum install package

sudo yum install package1 package2 ...

Installiert alle aufgelisteten Pakete.

sudo yum install -y package

Nimmt "Ja" an, wobeiyum normalerweise zum Fortfahren auffordert.

Fedora

sudo dnf install package

sudo dnf install package1 package2 ...

Installiert alle aufgelisteten Pakete.

sudo dnf install -y package

Nimmt "Ja" an, wobeidnf normalerweise zum Fortfahren auffordert.

FreeBSD-Pakete

sudo pkg install package

sudo pkg install package1 package2 ...

Installiert alle aufgelisteten Pakete.

FreeBSD-Ports

cd /usr/ports/category/port && sudo make install

Erstellt und installiert einen Port aus dem Quellcode.

Installieren Sie ein Paket aus dem lokalen Dateisystem

Manchmal bietet ein Entwickler oder Anbieter Paketdateien zum Download an, auch wenn die Software für ein bestimmtes Betriebssystem nicht offiziell gepackt ist. Sie können diese normalerweise mit Ihrem Webbrowser oder übercurl in der Befehlszeile abrufen. Sobald sich ein Paket auf dem Zielsystem befindet, kann es häufig mit einem einzigen Befehl installiert werden.

Auf von Debian abgeleiteten Systemen verarbeitetdpkg einzelne Paketdateien. Wenn ein Paket nicht erfüllte Abhängigkeiten aufweist, können diese häufig mitgdebi aus offiziellen Repositorys abgerufen werden.

Auf CentOS- und Fedora-Systemen werdenyum unddnf zum Installieren einzelner Dateien verwendet und behandeln auch die erforderlichen Abhängigkeiten.

System Befehl Anmerkungen

Debian / Ubuntu

sudo dpkg -i package.deb

sudo apt-get install -y gdebi && sudo gdebi package.deb

Installiert und verwendetgdebi, umpackage.deb zu installieren und fehlende Abhängigkeiten abzurufen.

CentOS

sudo yum install package.rpm

Fedora

sudo dnf install package.rpm

FreeBSD-Pakete

sudo pkg add package.txz

sudo pkg add -f package.txz

Installiert das Paket, auch wenn es bereits installiert ist.

Entfernen Sie ein oder mehrere installierte Pakete

Da ein Paketmanager weiß, welche Dateien von einem bestimmten Paket bereitgestellt werden, kann er diese normalerweise sauber von einem System entfernen, wenn die Software nicht mehr benötigt wird.

System Befehl Anmerkungen

Debian / Ubuntu

sudo apt-get remove package

sudo apt remove package

sudo apt-get autoremove

Entfernt nicht benötigte Pakete.

CentOS

sudo yum remove package

Fedora

sudo dnf erase package

FreeBSD-Pakete

sudo pkg delete package

sudo pkg autoremove

Entfernt nicht benötigte Pakete.

FreeBSD-Ports

sudo pkg delete package

cd /usr/ports/path_to_port && make deinstall

Deinstalliert einen installierten Port.

Der Befehlapt

Administratoren von Distributionen der Debian-Familie sind im Allgemeinen mitapt-get undapt-cache vertraut. Weniger bekannt ist die vereinfachteapt-Schnittstelle, die speziell für die interaktive Verwendung entwickelt wurde.

Traditionelles Kommando apt Äquivalent

apt-get update

apt update

apt-get dist-upgrade

apt full-upgrade

apt-cache search string

apt search string

apt-get install package

apt install package

apt-get remove package

apt remove package

apt-get purge package

apt purge package

Währendapt häufig eine schnellere Abkürzung für einen bestimmten Vorgang ist, ist es nicht als vollständiger Ersatz für die herkömmlichen Tools gedacht, und die Benutzeroberfläche kann sich zwischen den Versionen ändern, um die Benutzerfreundlichkeit zu verbessern. Wenn Sie Paketverwaltungsbefehle in einem Skript oder einer Shell-Pipeline verwenden, sollten Sie sich anapt-get undapt-cache halten.

Hilfe bekommen

Beachten Sie neben der webbasierten Dokumentation, dass Unix-Handbuchseiten (normalerweise alsman pages bezeichnet) für die meisten Befehle in der Shell verfügbar sind. Verwenden Sie zum Lesen einer Seiteman:

man page

Inman können Sie mit den Pfeiltasten navigieren. Drücken Sie/, um nach Text auf der Seite zu suchen, undq, um den Vorgang zu beenden.

System Befehl Anmerkungen

Debian / Ubuntu

man apt-get

Aktualisieren der lokalen Paketdatenbank und Arbeiten mit Paketen.

man apt-cache

Abfragen der lokalen Paketdatenbank.

man dpkg

Arbeiten mit einzelnen Paketdateien und Abfragen installierter Pakete.

man apt

Arbeiten mit einer übersichtlicheren, benutzerfreundlicheren Oberfläche für die meisten grundlegenden Vorgänge.

CentOS

man yum

Fedora

man dnf

FreeBSD-Pakete

man pkg

Arbeiten mit vorkompilierten Binärpaketen.

FreeBSD-Ports

man ports

Arbeiten mit der Ports-Sammlung.

Fazit und weiterführende Literatur

Dieses Handbuch bietet einen Überblick über grundlegende Vorgänge, auf die zwischen Systemen verwiesen werden kann, die jedoch nur die Oberfläche eines komplexen Themas zerkratzen. Weitere Informationen zu einem bestimmten System finden Sie in den folgenden Ressourcen: