GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Die Evolution von Paketmanagern

Jedes computergestützte Gerät verwendet irgendeine Form von Software, um seine beabsichtigten Aufgaben auszuführen. In den frühen Tagen der Software wurden Produkte streng auf Fehler und andere Mängel getestet. In den letzten zehn Jahren wurde Software über das Internet veröffentlicht, mit der Absicht, alle Fehler durch Anwendung neuer Versionen der Software zu beheben. In einigen Fällen hat jede einzelne Anwendung ihren eigenen Updater. In anderen bleibt es dem Benutzer überlassen, herauszufinden, wie er Software erhält und aktualisiert.

Linux übernahm früh die Praxis, einen zentralen Ort zu unterhalten, an dem Benutzer Software finden und installieren konnten. In diesem Artikel werde ich die Geschichte der Softwareinstallation unter Linux erörtern und wie moderne Betriebssysteme gegen die nie endende Flut von CVEs auf dem neuesten Stand gehalten werden.

Wie wurde Software unter Linux vor Paketmanagern installiert?

In der Vergangenheit wurde Software entweder über FTP oder Mailinglisten bereitgestellt (schließlich würde diese Distribution auf einfache Websites anwachsen). Nur wenige kleine Dateien enthielten die Anweisungen zum Erstellen einer Binärdatei (normalerweise in einer Tar-Datei). Sie würden die Dateien entpacken, die Readme-Datei lesen und solange Sie GCC oder eine andere Form von C-Compiler hatten, würden Sie dann normalerweise ein ./configure ausführen Skript mit einer Liste von Attributen, z. B. Pfad zu Bibliotheksdateien, Speicherort zum Erstellen neuer Binärdateien usw. Außerdem enthält das configure Der Prozess würde Ihr System auf Anwendungsabhängigkeiten überprüfen. Wenn wichtige Anforderungen fehlten, wurde das Konfigurationsskript beendet und Sie konnten mit der Installation nicht fortfahren, bis alle Abhängigkeiten erfüllt waren. Wenn das Konfigurationsskript erfolgreich abgeschlossen wurde, wird ein Makefile erstellt werden.

Einmal ein Makefile existiert, würden Sie dann mit der Ausführung von make fortfahren Befehl (dieser Befehl wird von dem Compiler bereitgestellt, den Sie verwendet haben). Das make Der Befehl hat eine Reihe von Optionen namens Flags erstellen , die dabei helfen, die resultierenden Binärdateien für Ihr System zu optimieren. In den früheren Tagen der Computertechnik war dies sehr wichtig, da die Hardware Schwierigkeiten hatte, mit den Anforderungen moderner Software Schritt zu halten. Heutzutage können Kompilierungsoptionen viel allgemeiner sein, da die meiste Hardware für moderne Software mehr als ausreichend ist.

Schließlich nach dem make Prozess abgeschlossen wäre, müssten Sie make install ausführen (oder sudo make install ), um die Software tatsächlich zu installieren. Wie Sie sich vorstellen können, war dies für jede einzelne Software zeitaufwändig und mühsam – ganz zu schweigen von der Tatsache, dass das Aktualisieren von Software ein komplizierter und potenziell sehr aufwendiger Prozess war.

Was ist ein Paket?

Pakete wurden erfunden, um diese Komplexität zu bekämpfen. Pakete sammeln mehrere Datendateien zusammen in einer einzigen Archivdatei, um sie leichter zu transportieren und zu speichern, oder komprimieren Dateien einfach, um Speicherplatz zu sparen. Die in einem Paket enthaltenen Binärdateien werden gemäß den vernünftigen Standardeinstellungen, die der Entwickler gewählt hat, vorkompiliert. Pakete enthalten auch Metadaten wie den Namen der Software, eine Beschreibung ihres Zwecks, eine Versionsnummer und eine Liste der Abhängigkeiten, die für die ordnungsgemäße Ausführung der Software erforderlich sind.

Mehrere Linux-Varianten haben ihre eigenen Paketformate erstellt. Zu den am häufigsten verwendeten Paketformaten gehören:

  • .deb:Dieses Paketformat wird von Debian, Ubuntu, Linux Mint und mehreren anderen Derivaten verwendet. Es war der erste Pakettyp, der erstellt wurde.
  • .rpm:Dieses Paketformat hieß ursprünglich Red Hat Package Manager. Es wird von Red Hat, Fedora, SUSE und einigen anderen kleineren Distributionen verwendet.
  • .tar.xz:Obwohl es nur ein komprimierter Tarball ist, ist dies das Format, das Arch Linux verwendet.

Während Pakete selbst Abhängigkeiten nicht direkt verwalten, stellten sie einen großen Fortschritt in der Verwaltung von Linux-Software dar.

Was ist ein Software-Repository?

Vor einigen Jahren, vor der Verbreitung von Smartphones, war die Idee eines Software-Repositorys für viele Benutzer schwer zu verstehen, wenn sie nicht in das Linux-Ökosystem involviert waren. Bis zum heutigen Tag scheinen die meisten Windows-Benutzer immer noch fest verdrahtet zu sein, um einen Webbrowser zu öffnen, um nach neuer Software zu suchen und diese zu installieren. Diejenigen mit Smartphones haben sich jedoch an die Idee eines Software-"Stores" gewöhnt. Die Art und Weise, wie Smartphone-Benutzer Software erhalten, und die Arbeitsweise von Paketmanagern sind nicht unähnlich. Obwohl es mehrere Versuche gegeben hat, eine attraktive Benutzeroberfläche für Software-Repositories zu erstellen, verwendet die überwiegende Mehrheit der Linux-Benutzer immer noch die Befehlszeile, um Pakete zu installieren. Software-Repositories sind eine zentralisierte Auflistung aller verfügbaren Software für alle Repositorys, für deren Verwendung das System konfiguriert wurde. Unten sind einige Beispiele für das Durchsuchen eines Repositorys nach einem bestimmten Paket (beachten Sie, dass diese der Kürze halber gekürzt wurden):

Arch Linux mit Aurman

user@arch ~ $  aurman -Ss kate

extra/kate 18.04.2-2 (kde-applications kdebase)
    Advanced Text Editor
aur/kate-root 18.04.0-1 (11, 1.139399)
    Advanced Text Editor, patched to be able to run as root
aur/kate-git r15288.15d26a7-1 (1, 1e-06)
    An advanced editor component which is used in numerous KDE applications requiring a text editing component

CentOS 7 mit YUM

[user@centos ~]$ yum search kate

kate-devel.x86_64 : Development files for kate
kate-libs.x86_64 : Runtime files for kate
kate-part.x86_64 : Kate kpart plugin

Ubuntu mit APT

user@ubuntu ~ $ apt search kate
Sorting... Done
Full Text Search... Done

kate/xenial 4:15.12.3-0ubuntu2 amd64
  powerful text editor

kate-data/xenial,xenial 4:4.14.3-0ubuntu4 all
  shared data files for Kate text editor

kate-dbg/xenial 4:15.12.3-0ubuntu2 amd64
  debugging symbols for Kate

kate5-data/xenial,xenial 4:15.12.3-0ubuntu2 all
  shared data files for Kate text editor

Was sind die bekanntesten Paketmanager?

Wie in der obigen Ausgabe vorgeschlagen, werden Paketmanager verwendet, um mit Software-Repositories zu interagieren. Das Folgende ist ein kurzer Überblick über einige der bekanntesten Paketmanager.

RPM-basierte Paketmanager

Die Aktualisierung von RPM-basierten Systemen, insbesondere von Systemen, die auf Red Hat-Technologien basieren, hat eine sehr interessante und detaillierte Geschichte. Tatsächlich kombinieren die aktuellen Versionen von yum (für Enterprise-Distributionen) und DNF (für Community) mehrere Open-Source-Projekte, um ihre aktuelle Funktionalität bereitzustellen.

Anfangs nutzte Red Hat einen Paketmanager namens RPM (Red Hat Package Manager), der auch heute noch im Einsatz ist. Sein Hauptzweck ist jedoch die Installation von RPMs, die Sie lokal haben, und nicht die Suche nach Software-Repositories. Der Paketmanager namens up2date wurde erstellt, um Benutzer über Aktualisierungen von Paketen zu informieren und es ihnen zu ermöglichen, entfernte Repositories zu durchsuchen und Abhängigkeiten einfach zu installieren. Während es seinen Zweck erfüllte, waren einige Community-Mitglieder der Meinung, dass up2date hatte einige erhebliche Mängel.

Die aktuelle Beschwörung von Yum kam von mehreren verschiedenen Gemeinschaftsbemühungen. Yellowdog Updater (YUP) wurde 1999-2001 von Leuten bei Terra Soft Solutions als Back-End-Engine für einen grafischen Installer von Yellow Dog Linux entwickelt. Die Duke University mochte die Idee von YUP und beschloss, sie zu verbessern. Sie erstellten Yellowdog Updater, Modified (yum), der schließlich angepasst wurde, um die Verwaltung der Red Hat Linux-Systeme der Universität zu unterstützen. Yum wurde immer beliebter und 2005 wurde es schätzungsweise von mehr als der Hälfte des Linux-Marktes verwendet. Heutzutage verwendet fast jede Linux-Distribution, die RPMs verwendet, yum für die Paketverwaltung (mit einigen bemerkenswerten Ausnahmen).

Mit yum arbeiten

Damit yum Pakete aus einem Internet-Repository herunterladen und installieren kann, müssen sich die Dateien in /etc/yum.repos.d/ befinden und sie müssen die Erweiterung .repo haben . Hier ist eine Beispiel-Repo-Datei:

[local_base]
name=Base CentOS  (local)
baseurl=http://7-repo.apps.home.local/yum-repo/7/
enabled=1
gpgcheck=0

Dies ist für eines meiner lokalen Repositories, was erklärt, warum die GPG-Prüfung deaktiviert ist. Wenn diese Prüfung aktiviert wäre, müsste jedes Paket mit einem kryptografischen Schlüssel signiert werden, und ein entsprechender Schlüssel müsste in das System importiert werden, das die Updates erhält. Da ich dieses Repository selbst betreue, vertraue ich den Paketen und unterschreibe sie nicht.

Sobald eine Repository-Datei vorhanden ist, können Sie mit der Installation von Paketen aus dem Remote-Repository beginnen. Der einfachste Befehl ist yum update , wodurch jedes derzeit installierte Paket aktualisiert wird. Dies nicht erfordern einen bestimmten Schritt, um die Informationen über Repositories zu aktualisieren; dies geschieht automatisch. Ein Beispiel des Befehls ist unten dargestellt:

[user@centos ~]$ sudo yum update
Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-manager
local_base                             | 3.6 kB  00:00:00    
local_epel                             | 2.9 kB  00:00:00    
local_rpm_forge                        | 1.9 kB  00:00:00    
local_updates                          | 3.4 kB  00:00:00    
spideroak-one-stable                   | 2.9 kB  00:00:00    
zfs                                    | 2.9 kB  00:00:00    
(1/6): local_base/group_gz             | 166 kB  00:00:00    
(2/6): local_updates/primary_db        | 2.7 MB  00:00:00    
(3/6): local_base/primary_db           | 5.9 MB  00:00:00    
(4/6): spideroak-one-stable/primary_db |  12 kB  00:00:00    
(5/6): local_epel/primary_db           | 6.3 MB  00:00:00    
(6/6): zfs/x86_64/primary_db           |  78 kB  00:00:00    
local_rpm_forge/primary_db             | 125 kB  00:00:00    
Determining fastest mirrors
Resolving Dependencies
--> Running transaction check

Wenn Sie sicher sind, dass yum jeden Befehl ausführen soll, ohne für die Eingabe anzuhalten, können Sie -y eingeben -Flag im Befehl, z. B. yum update -y .

Die Installation eines neuen Pakets ist genauso einfach. Suchen Sie zuerst mit yum search nach dem Namen des Pakets :

[user@centos ~]$ yum search kate

artwiz-aleczapka-kates-fonts.noarch : Kates font in Artwiz family
ghc-highlighting-kate-devel.x86_64 : Haskell highlighting-kate library development files
kate-devel.i686 : Development files for kate
kate-devel.x86_64 : Development files for kate
kate-libs.i686 : Runtime files for kate
kate-libs.x86_64 : Runtime files for kate
kate-part.i686 : Kate kpart plugin

Sobald Sie den Namen des Pakets haben, können Sie das Paket einfach mit sudo yum install kate-devel -y installieren . Wenn Sie ein Paket installiert haben, das Sie nicht mehr benötigen, können Sie es mit sudo yum remove kate-devel -y entfernen . Standardmäßig entfernt yum das Paket und seine Abhängigkeiten.

Es kann vorkommen, dass Sie den Namen des Pakets nicht kennen, aber Sie kennen den Namen des Dienstprogramms. Angenommen, Sie suchen nach dem Dienstprogramm updatedb , das die von locate verwendete Datenbank erstellt/aktualisiert Befehl. Versuch, updatedb zu installieren gibt die folgenden Ergebnisse zurück:

[user@centos ~]$ sudo yum install updatedb
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
No package updatedb available.
Error: Nothing to do

Sie können herausfinden, aus welchem ​​Paket das Dienstprogramm stammt, indem Sie Folgendes ausführen:

[user@centos ~]$ yum whatprovides *updatedb
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile

bacula-director-5.2.13-23.1.el7.x86_64 : Bacula Director files
Repo        : local_base
Matched from:
Filename    : /usr/share/doc/bacula-director-5.2.13/updatedb

mlocate-0.26-8.el7.x86_64 : An utility for finding files by name
Repo        : local_base
Matched from:
Filename    : /usr/bin/updatedb

Der Grund, warum ich ein Sternchen * verwendet habe vor dem Befehl steht da yum whatprovides verwendet den Pfad zu der Datei, um eine Übereinstimmung herzustellen. Da ich nicht sicher war, wo sich die Datei befand, habe ich einen Stern verwendet, um einen beliebigen Pfad anzugeben.

Natürlich stehen Yum noch viele weitere Optionen zur Verfügung. Ich ermutige Sie, die Manpage für yum für zusätzliche Optionen zu lesen.

Dandified Yum (DNF) ist eine neuere Version von Yum. Eingeführt in Fedora 18, wurde es noch nicht in die Enterprise-Distributionen übernommen und wird als solches überwiegend in Fedora (und Derivaten) verwendet. Seine Verwendung ist fast genau die gleiche wie die von yum, aber es wurde entwickelt, um schlechte Leistung, undokumentierte APIs, langsame/unterbrochene Abhängigkeitsauflösung und gelegentlich hohe Speicherauslastung zu beheben. DNF ist als Drop-in-Ersatz für yum gedacht, und deshalb werde ich die Befehle nicht wiederholen – überall dort, wo Sie yum verwenden würden , ersetzen Sie einfach dnf .

Mit Zypper arbeiten

Zypper ist ein weiterer Paketmanager, der bei der Verwaltung von RPMs helfen soll. Dieser Paketmanager wird am häufigsten mit SUSE (und openSUSE) in Verbindung gebracht, wurde aber auch von MeeGo, Sailfish OS und Tizen übernommen. Es wurde ursprünglich im Jahr 2006 eingeführt und seitdem immer wieder überarbeitet. Es gibt nicht viel zu sagen, außer dass Zypper als Backend für das Systemverwaltungstool YaST verwendet wird und einige Benutzer es für schneller als yum halten.

Die Verwendung von Zypper ist der von yum sehr ähnlich. Um ein Paket zu suchen, zu aktualisieren, zu installieren oder zu entfernen, verwenden Sie einfach Folgendes:

zypper search kate
zypper update
zypper install kate
zypper remove kate

Einige wesentliche Unterschiede spielen eine Rolle, wie Repositories mit zypper zum System hinzugefügt werden . Im Gegensatz zu den oben besprochenen Paketmanagern ist zypper fügt Repositories mit dem Paketmanager selbst hinzu. Der gebräuchlichste Weg ist über eine URL, aber zypper unterstützt auch den Import aus Repo-Dateien.

suse:~ # zypper addrepo http://download.videolan.org/pub/vlc/SuSE/15.0 vlc
Adding repository 'vlc' [done]
Repository 'vlc' successfully added

Enabled     : Yes
Autorefresh : No
GPG Check   : Yes
URI         : http://download.videolan.org/pub/vlc/SuSE/15.0
Priority    : 99

Sie entfernen Repositories auf ähnliche Weise:

suse:~ # zypper removerepo vlc
Removing repository 'vlc' ...................................[done]
Repository 'vlc' has been removed.

Verwenden Sie die zypper repos Befehl, um den Status der Repositories auf Ihrem System anzuzeigen:

suse:~ # zypper repos
Repository priorities are without effect. All enabled repositories share the same priority.

#  | Alias                     | Name                                    | Enabled | GPG Check | Refresh
---+---------------------------+-----------------------------------------+---------+-----------+--------
 1 | repo-debug                | openSUSE-Leap-15.0-Debug                | No      | ----      | ----  
 2 | repo-debug-non-oss        | openSUSE-Leap-15.0-Debug-Non-Oss        | No      | ----      | ----  
 3 | repo-debug-update         | openSUSE-Leap-15.0-Update-Debug         | No      | ----      | ----  
 4 | repo-debug-update-non-oss | openSUSE-Leap-15.0-Update-Debug-Non-Oss | No      | ----      | ----  
 5 | repo-non-oss              | openSUSE-Leap-15.0-Non-Oss              | Yes     | ( p) Yes  | Yes    
 6 | repo-oss                  | openSUSE-Leap-15.0-Oss                  | Yes     | ( p) Yes  | Yes    

zypper hat sogar eine ähnliche Fähigkeit zu bestimmen, welcher Paketname Dateien oder Binärdateien enthält. Im Gegensatz zu YUM verwendet es einen Bindestrich im Befehl (obwohl diese Suchmethode veraltet ist):

localhost:~ # zypper what-provides kate
Command 'what-provides' is replaced by 'search --provides --match-exact'.
See 'help search' for all available options.
Loading repository data...
Reading installed packages...

S  | Name | Summary              | Type      
---+------+----------------------+------------
i+ | Kate | Advanced Text Editor | application
i  | kate | Advanced Text Editor | package  

Wie bei YUM und DNF hat Zypper einen viel umfangreicheren Funktionsumfang als hier behandelt. Weitere Informationen finden Sie in der offiziellen Dokumentation.

Debian-basierte Paketmanager

Als eine der ältesten derzeit gepflegten Linux-Distributionen ist das System von Debian RPM-basierten Systemen sehr ähnlich. Sie verwenden .deb Pakete, die von einem Tool namens dpkg verwaltet werden können . dpkg ist sehr ähnlich zu rpm , dass es zur Verwaltung von Paketen entwickelt wurde, die lokal verfügbar sind. Es führt keine Abhängigkeitsauflösung durch (obwohl es eine Abhängigkeitsprüfung durchführt) und hat keine zuverlässige Möglichkeit, mit entfernten Repositories zu interagieren. Um die Benutzererfahrung und Benutzerfreundlichkeit zu verbessern, hat das Debian-Projekt ein Projekt namens Deity in Auftrag gegeben . Dieser Codename wurde schließlich aufgegeben und in Advanced Package Tool (APT) geändert.

Als Test-Builds im Jahr 1998 veröffentlicht (bevor es 1999 in Debian 2.1 auftauchte), betrachten viele Benutzer APT als eines der bestimmenden Merkmale von Debian-basierten Systemen. Es verwendet Repositories auf ähnliche Weise wie RPM-basierte Systeme, aber anstelle von einzelnen .repo Dateien, die yum sind verwendet, apt hat in der Vergangenheit /etc/apt/sources.list verwendet Repositories zu verwalten. In jüngerer Zeit nimmt es auch Dateien von /etc/apt/sources.d/ auf . Wenn Sie den Beispielen in den RPM-basierten Paketmanagern folgen, haben Sie einige Optionen, um dasselbe auf Debian-basierten Distributionen zu erreichen. Sie können die Dateien manuell an den oben genannten Orten vom Terminal aus bearbeiten/erstellen oder in einigen Fällen ein UI-Frontend (wie Software & Updates) verwenden bereitgestellt von Ubuntu et al.). Um allen Distributionen die gleiche Behandlung zu bieten, werde ich nur die Befehlszeilenoptionen behandeln. Um ein Repository hinzuzufügen, ohne direkt eine Datei zu bearbeiten, können Sie etwa so vorgehen:

user@ubuntu:~$ sudo apt-add-repository "deb http://APT.spideroak.com/ubuntu-spideroak-hardy/ release restricted"

Dadurch wird eine spideroakone.list erstellt Datei in /etc/apt/sources.list.d . Offensichtlich ändern sich diese Zeilen je nach hinzugefügtem Repository. Wenn Sie ein Personal Package Archive (PPA) hinzufügen, können Sie Folgendes tun:

user@ubuntu:~$ sudo apt-add-repository ppa:gnome-desktop

HINWEIS: Debian unterstützt PPAs nicht nativ.

Nachdem ein Repository hinzugefügt wurde, müssen Debian-basierte Systeme darauf aufmerksam gemacht werden, dass es einen neuen Speicherort gibt, an dem nach Paketen gesucht werden kann. Dies geschieht über das apt-get update Befehl:

user@ubuntu:~$ sudo apt-get update
Get:1 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
Hit:2 http://APT.spideroak.com/ubuntu-spideroak-hardy release InRelease
Hit:3 http://ca.archive.ubuntu.com/ubuntu xenial InRelease
Get:4 http://ca.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]              
Get:5 http://security.ubuntu.com/ubuntu xenial-security/main amd64 Packages [517 kB]
Get:6 http://security.ubuntu.com/ubuntu xenial-security/main i386 Packages [455 kB]      
Get:7 http://security.ubuntu.com/ubuntu xenial-security/main Translation-en [221 kB]    
...

Fetched 6,399 kB in 3s (2,017 kB/s)                                          
Reading package lists... Done

Nachdem das neue Repository hinzugefügt und aktualisiert wurde, können Sie mithilfe des apt-cache nach einem Paket suchen Befehl:

user@ubuntu:~$ apt-cache search kate
aterm-ml - Afterstep XVT - a VT102 emulator for the X window system
frescobaldi - Qt4 LilyPond sheet music editor
gitit - Wiki engine backed by a git or darcs filestore
jedit - Plugin-based editor for programmers
kate - powerful text editor
kate-data - shared data files for Kate text editor
kate-dbg - debugging symbols for Kate
katepart - embeddable text editor component

Um kate zu installieren , führen Sie einfach den entsprechenden Installationsbefehl aus:

user@ubuntu:~$ sudo apt-get install kate

Verwenden Sie zum Entfernen eines Pakets apt-get remove :

user@ubuntu:~$ sudo apt-get remove kate

Wenn es um die Paketerkennung geht, bietet APT keine ähnliche Funktionalität wie yum whatprovides . Es gibt mehrere Möglichkeiten, diese Informationen zu erhalten, wenn Sie versuchen herauszufinden, woher eine bestimmte Datei auf der Festplatte stammt.

Verwendung von dpkg

user@ubuntu:~$ dpkg -S /bin/ls
coreutils: /bin/ls

Apt-Datei verwenden

user@ubuntu:~$ sudo apt-get install apt-file -y 

user@ubuntu:~$ sudo apt-file update

user@ubuntu:~$ apt-file search kate

Das Problem mit apt-file search ist, dass es im Gegensatz zu yum whatprovides , es ist übermäßig ausführlich, es sei denn, Sie kennen den genauen Pfad, und es fügt automatisch eine Platzhaltersuche hinzu, sodass Sie am Ende Ergebnisse für alles mit dem Wort kate erhalten darin:

kate: /usr/bin/kate
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katebacktracebrowserplugin.so
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katebuildplugin.so
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katecloseexceptplugin.so
kate: /usr/lib/x86_64-linux-gnu/qt5/plugins/ktexteditor/katectagsplugin.so

Die meisten dieser Beispiele haben apt-get verwendet . Beachten Sie, dass die meisten aktuellen Tutorials für Ubuntu speziell dazu übergegangen sind, einfach apt zu verwenden . Das einzelne apt command wurde entwickelt, um nur die am häufigsten verwendeten Befehle im APT-Arsenal zu implementieren. Da die Funktionalität zwischen apt-get aufgeteilt ist , apt-cache , und andere Befehle, apt versucht, diese in einem einzigen Befehl zu vereinen. Es fügt auch einige Feinheiten wie Farbgebung, Fortschrittsbalken und andere Kleinigkeiten hinzu. Die meisten der oben erwähnten Befehle können durch apt ersetzt werden ,  aber nicht alle Debian-basierten Distributionen, die derzeit Sicherheitspatches mit apt erhalten standardmäßig, sodass Sie möglicherweise zusätzliche Pakete installieren müssen.

Arch-basierte Paketmanager

Arch Linux verwendet einen Paketmanager namens Pacman. Im Gegensatz zu .deb oder .rpm Dateien verwendet Pacman mit LZMA2 einen traditionelleren Tarball Komprimierung (.tar.xz ). Dadurch können Arch-Linux-Pakete viel kleiner sein als andere Formen komprimierter Archive (wie gzip ). Ursprünglich im Jahr 2002 veröffentlicht, wurde Pacman ständig weiterentwickelt und verbessert. Einer der Hauptvorteile von Pacman ist, dass es das Arch Build System unterstützt, ein System zum Erstellen von Paketen aus dem Quellcode. Das Build-System nimmt eine Datei namens PKGBUILD auf, die Metadaten (wie Versionsnummern, Revisionen, Abhängigkeiten usw.) sowie ein Shell-Skript mit den erforderlichen Flags zum Kompilieren eines Pakets enthält, das den Anforderungen von Arch Linux entspricht. Die resultierenden Binärdateien werden dann in die oben erwähnte .tar.xz gepackt Datei zum Verbrauch durch Pacman.

Dieses System führte zur Erstellung des Arch User Repository (AUR), einem von der Community betriebenen Repository, das PKGBUILD-Dateien enthält und Patches oder Skripte unterstützt. Dies ermöglicht es, eine praktisch endlose Menge an Software in Arch verfügbar zu machen. Der offensichtliche Vorteil dieses Systems besteht darin, dass, wenn ein Benutzer (oder Betreuer) Software der Öffentlichkeit zur Verfügung stellen möchte, er nicht über offizielle Kanäle gehen muss, um sie in den Hauptrepositorys zu akzeptieren. Der Nachteil ist, dass es ähnlich wie Docker Hub, Snap-Pakete von Canonical oder andere ähnliche Mechanismen auf Community-Kuration angewiesen ist. Es gibt zahlreiche AUR-spezifische Paketmanager, die verwendet werden können, um die PKGBUILD-Dateien in der AUR herunterzuladen, zu kompilieren und zu installieren (wir werden uns das später ansehen).

Arbeiten mit Pacman und offiziellen Repositories

Der Hauptpaketmanager von Arch, pacman, verwendet Flags anstelle von Befehlswörtern wie yum und apt . Um beispielsweise nach einem Paket zu suchen, würden Sie pacman -Ss verwenden . Wie bei den meisten Befehlen unter Linux finden Sie sowohl eine manpage und Inline-Hilfe. Die meisten Befehle für pacman  Verwenden Sie die Synchronisierung (-S)-Flag. Zum Beispiel:

user@arch ~ $ pacman -Ss kate

extra/kate 18.04.2-2 (kde-applications kdebase)
    Advanced Text Editor
extra/libkate 0.4.1-6 [installed]
    A karaoke and text codec for embedding in ogg
extra/libtiger 0.3.4-5 [installed]
    A rendering library for Kate streams using Pango and Cairo
extra/ttf-cheapskate 2.0-12
    TTFonts collection from dustimo.com
community/haskell-cheapskate 0.1.1-100
    Experimental markdown processor.

Arch verwendet auch Repositories ähnlich wie andere Paketmanager. In der obigen Ausgabe wird den Suchergebnissen das Repository vorangestellt, in dem sie gefunden werden (extra/ und community/ in diesem Fall). Ähnlich wie bei Red Hat- und Debian-basierten Systemen verlässt sich Arch darauf, dass der Benutzer die Repository-Informationen in eine bestimmte Datei einfügt. Der Speicherort für diese Repositories ist /etc/pacman.conf . Das folgende Beispiel kommt einem Aktiensystem ziemlich nahe. Ich habe [multilib] aktiviert Repository für Steam-Support:

[options]
Architecture = auto

Color
CheckSpace

SigLevel    = Required DatabaseOptional
LocalFileSigLevel = Optional

[core]
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

[community]
Include = /etc/pacman.d/mirrorlist

[multilib]
Include = /etc/pacman.d/mirrorlist

Es ist möglich, eine bestimmte URL in pacman.conf anzugeben . Diese Funktionalität kann verwendet werden, um sicherzustellen, dass alle Pakete von einem bestimmten Zeitpunkt stammen. Wenn zum Beispiel ein Paket einen Fehler hat, der Sie stark beeinträchtigt, und es mehrere Abhängigkeiten hat, können Sie zu einem bestimmten Zeitpunkt zurücksetzen, indem Sie eine bestimmte URL in Ihre pacman.conf einfügen und führen Sie dann die Befehle aus, um das System herunterzustufen:

[core]
Server=https://archive.archlinux.org/repos/2017/12/22/$repo/os/$arch

Wie Debian-basierte Systeme aktualisiert Arch seine lokalen Repository-Informationen nicht, bis Sie es dazu auffordern. Sie können die Paketdatenbank aktualisieren, indem Sie den folgenden Befehl ausgeben:

user@arch ~ $ sudo pacman -Sy 

:: Synchronizing package databases...
 core                                                                     130.2 KiB   851K/s 00:00 [##########################################################] 100%
 extra                                                                   1645.3 KiB  2.69M/s 00:01 [##########################################################] 100%
 community                                                                  4.5 MiB  2.27M/s 00:02 [##########################################################] 100%
 multilib is up to date

Wie Sie in der obigen Ausgabe sehen können, pacman denkt, dass die Multilib-Paketdatenbank auf dem neuesten Stand ist. Sie können eine Aktualisierung erzwingen, wenn Sie der Meinung sind, dass dies falsch ist, indem Sie pacman -Syy ausführen . Wenn Sie Ihr gesamtes System aktualisieren möchten (mit Ausnahme der vom AUR installierten Pakete), können Sie pacman -Syu ausführen :

user@arch ~ $ sudo pacman -Syu

:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (45) ceph-13.2.0-2  ceph-libs-13.2.0-2  debootstrap-1.0.105-1  guile-2.2.4-1  harfbuzz-1.8.2-1  harfbuzz-icu-1.8.2-1  haskell-aeson-1.3.1.1-20
              haskell-attoparsec-0.13.2.2-24  haskell-tagged-0.8.6-1  imagemagick-7.0.8.4-1  lib32-harfbuzz-1.8.2-1  lib32-libgusb-0.3.0-1  lib32-systemd-239.0-1
              libgit2-1:0.27.2-1  libinput-1.11.2-1  libmagick-7.0.8.4-1  libmagick6-6.9.10.4-1  libopenshot-0.2.0-1  libopenshot-audio-0.1.6-1  libosinfo-1.2.0-1
              libxfce4util-4.13.2-1  minetest-0.4.17.1-1  minetest-common-0.4.17.1-1  mlt-6.10.0-1  mlt-python-bindings-6.10.0-1  ndctl-61.1-1  netctl-1.17-1
              nodejs-10.6.0-1  

Total Download Size:      2.66 MiB
Total Installed Size:   879.15 MiB
Net Upgrade Size:      -365.27 MiB

:: Proceed with installation? [Y/n]

In dem zuvor erwähnten Szenario bezüglich des Downgrades eines Systems können Sie ein Downgrade erzwingen, indem Sie pacman -Syyuu ausgeben . Es ist wichtig zu beachten, dass dies nicht auf die leichte Schulter genommen werden sollte. Dies sollte in den meisten Fällen kein Problem darstellen; Es besteht jedoch die Möglichkeit, dass das Herunterstufen eines Pakets oder mehrerer Pakete einen kaskadierenden Fehler verursacht und Ihr System in einem inkonsistenten Zustand zurücklässt. MIT VORSICHT VERWENDEN!

Um ein Paket zu installieren, verwenden Sie einfach pacman -S kate :

user@arch ~ $ sudo pacman -S kate

resolving dependencies...
looking for conflicting packages...

Packages (7) editorconfig-core-c-0.12.2-1  kactivities-5.47.0-1  kparts-5.47.0-1  ktexteditor-5.47.0-2  syntax-highlighting-5.47.0-1  threadweaver-5.47.0-1
             kate-18.04.2-2

Total Download Size:   10.94 MiB
Total Installed Size:  38.91 MiB

:: Proceed with installation? [Y/n]

Um ein Paket zu entfernen, können Sie pacman -R kate ausführen . Dies entfernt nur das Paket und nicht seine Abhängigkeiten:

user@arch ~ $ sudo pacman -S kate

checking dependencies...

Packages (1) kate-18.04.2-2

Total Removed Size:  20.30 MiB

:: Do you want to remove these packages? [Y/n]

Wenn Sie die Abhängigkeiten entfernen möchten, die nicht sind von anderen Paketen benötigt wird, können Sie pacman -Rs: ausführen

user@arch ~ $ sudo pacman -Rs kate

checking dependencies...

Packages (7) editorconfig-core-c-0.12.2-1  kactivities-5.47.0-1  kparts-5.47.0-1  ktexteditor-5.47.0-2  syntax-highlighting-5.47.0-1  threadweaver-5.47.0-1
             kate-18.04.2-2

Total Removed Size:  38.91 MiB

:: Do you want to remove these packages? [Y/n]

Pacman, in my opinion, offers the most succinct way of searching for the name of a package for a given utility. As shown above, yum and apt both rely on pathing in order to find useful results. Pacman makes some intelligent guesses as to which package you are most likely looking for:

user@arch ~ $ sudo pacman -Fs updatedb
core/mlocate 0.26.git.20170220-1
    usr/bin/updatedb

user@arch ~ $ sudo pacman -Fs kate
extra/kate 18.04.2-2
    usr/bin/kate

Working with the AUR

There are several popular AUR package manager helpers. Of these, yaourt and pacaur are fairly prolific. However, both projects are listed as discontinued or problematic on the Arch Wiki. For that reason, I will discuss aurman . It works almost exactly like pacman, except it searches the AUR and includes some helpful, albeit potentially dangerous, options. Installing a package from the AUR will initiate use of the package maintainer's build scripts. You will be prompted several times for permission to continue (I have truncated the output for brevity):

aurman -S telegram-desktop-bin
~~ initializing aurman...
~~ the following packages are neither in known repos nor in the aur
...
~~ calculating solutions...

:: The following 1 package(s) are getting updated:
   aur/telegram-desktop-bin  1.3.0-1  ->  1.3.9-1

?? Do you want to continue? Y/n: Y

~~ looking for new pkgbuilds and fetching them...
Cloning into 'telegram-desktop-bin'...

remote: Counting objects: 301, done.
remote: Compressing objects: 100% (152/152), done.
remote: Total 301 (delta 161), reused 286 (delta 147)
Receiving objects: 100% (301/301), 76.17 KiB | 639.00 KiB/s, done.
Resolving deltas: 100% (161/161), done.
?? Do you want to see the changes of telegram-desktop-bin? N/y: N

[sudo] password for user:

...
==> Leaving fakeroot environment.
==> Finished making: telegram-desktop-bin 1.3.9-1 (Thu 05 Jul 2018 11:22:02 AM EDT)
==> Cleaning up...
loading packages...
resolving dependencies...
looking for conflicting packages...

Packages (1) telegram-desktop-bin-1.3.9-1

Total Installed Size:  88.81 MiB
Net Upgrade Size:       5.33 MiB

:: Proceed with installation? [Y/n]

Sometimes you will be prompted for more input, depending on the complexity of the package you are installing. To avoid this tedium, aurman allows you to pass both the --noconfirm and --noedit Optionen. This is equivalent to saying "accept all of the defaults, and trust that the package maintainers scripts will not be malicious." USE THIS OPTION WITH EXTREME CAUTION! While these options are unlikely to break your system on their own, you should never blindly accept someone else's scripts.

Schlussfolgerung

This article, of course, only scratches the surface of what package managers can do. There are also many other package managers available that I could not cover in this space. Some distributions, such as Ubuntu or Elementary OS, have gone to great lengths to provide a graphical approach to package management.

If you are interested in some of the more advanced functions of package managers, please post your questions or comments below and I would be glad to write a follow-up article.

Appendix

# search for packages
yum search <package>
dnf search <package>
zypper search <package>
apt-cache search <package>
apt search <package>
pacman -Ss <package>

# install packages
yum install <package>
dnf install <package>
zypper install <package>
apt-get install <package>
apt install <package>
pacman -S <package>

# update package database, not required by yum, dnf and zypper
apt-get update
apt update
pacman -Sy

# update all system packages
yum update
dnf update
zypper update
apt-get upgrade
apt upgrade
pacman -Su

# remove an installed package
yum remove <package>
dnf remove <package>
apt-get remove <package>
apt remove <package>
pacman -R <package>
pacman -Rs <package>

# search for the package name containing specific file or folder
yum whatprovides *<binary>
dnf whatprovides *<binary>
zypper what-provides <binary>
zypper search --provides <binary>
apt-file search <binary>
pacman -Fs <binary>

Linux
  1. Linux-Paketmanager:dnf vs apt

  2. 5 Gründe für die Verwendung von Linux-Paketmanagern

  3. So listen Sie die Abhängigkeiten eines Pakets in Linux auf

  4. Debian – Sicherheit des Debian-Repository?

  5. Die 5 besten plattformübergreifenden Team-Chat-Software für PC

Softwarepaketaktualisierungen

DevOps vs. Software Engineer:Was ist der Unterschied?

Der apt-Befehl – ​​Ein praktischer Gebrauchsleitfaden

Die 15 besten Backup-Software für Linux-Desktop

Die 15 besten Fraktal-Software für Linux-Desktop

Die 15 besten zu verwendenden Linux-Referenz-Manager-Software