102.4 Lektion 1
Zertifikat: |
LPIC-1 |
---|---|
Version: |
5.0 |
Thema: |
102 Linux-Installation und -Paketverwaltung |
Lernziel: |
102.4 Debian-Paketverwaltung verwenden |
Lektion: |
1 von 1 |
Einführung
Vor langer Zeit, als Linux noch in den Kinderschuhen steckte, war die gebräuchlichste Art, Software zu verteilen, eine komprimierte Datei (normalerweise ein .tar.gz
-Archiv) mit Quellcode herunterzuladen, die man selbst entpacken und kompilieren musste.
Als jedoch die Menge und Komplexität der Software wuchs, wurde die Notwendigkeit einer Möglichkeit zur Verteilung vorkompilierter Software deutlich. Schließlich verfügte nicht jeder über die zeitlichen und computertechnischen Ressourcen, um große Projekte wie den Linux-Kernel oder einen X Server zu kompilieren.
Bald wuchsen die Bemühungen um die Standardisierung einer Methode zur Verteilung dieser Softwarepakete, und die ersten Paketmanager waren geboren. Diese Werkzeuge machten es viel einfacher, Software zu installieren, zu konfigurieren oder aus einem System zu entfernen.
Eines davon war das Debianpaketformat (.deb
) und sein Paketwerkzeug (dpkg
). Heute sind diese nicht nur auf Debian selbst, sondern auch auf seinen Derivaten, wie Ubuntu und den von ihm abgeleiteten Distributionen, weit verbreitet.
Ein weiteres Paketverwaltungswerkzeug, das auf Debian-basierten Systemen eine weite Verbreitung fand, ist das Advanced Package Tool (apt
), welches viele Aspekte der Installation, Wartung und Entfernung von Paketen rationalisieren kann, wodurch die Handhabung vereinfacht wird.
In dieser Lektion werden wir lernen, wie man sowohl dpkg
als auch apt
verwendet, um Software auf einem Debian-basierten Linux-System zu erhalten, zu installieren, zu warten und zu entfernen.
Das Debian Package Tool (dpkg)
Das Werkzeug Debian Package (dpkg
) ist das wichtigste Werkzeug, um Softwarepakete auf Debian-basierten Systemen zu installieren, zu konfigurieren, zu warten und zu entfernen. Die grundlegendste Operation ist die Installation eines .deb
-Paketes, was mit folgendem Befehl erledigt werden kann:
# dpkg -i PACKAGENAME
Wobei PACKAGENAME
für den Namen der zu installierenden .deb
-Datei steht.
Paketupgrades werden auf die gleiche Weise gehandhabt. Bevor ein Paket installiert wird, prüft dpkg
, ob bereits eine frühere Version im System vorhanden ist. Falls ja, wird das Paket auf die neue Version aktualisiert. Falls nicht, wird eine neue Kopie installiert.
Umgang mit Abhängigkeiten
In den meisten Fällen hängt ein Paket von anderen Paketen ab, damit es wie beabsichtigt funktioniert. Zum Beispiel kann ein Bildbearbeitungsprogramm Bibliotheken benötigen, um JPEG-Dateien zu öffnen, oder ein anderes Dienstprogramm kann ein Widget-Toolkit wie Qt oder GTK für seine Benutzeroberfläche benötigen.
dpkg
wird prüfen, ob diese Abhängigkeiten auf Ihrem System installiert sind, und wird das Paket nicht installieren, wenn dies nicht der Fall ist. In diesem Fall wird dpkg
auflisten, welche Pakete fehlen. Allerdings kann es Abhängigkeiten nicht von selbst auflösen. Es obliegt dem Benutzer, die .deb
Pakete mit den entsprechenden Abhängigkeiten zu finden und zu installieren.
Im folgenden Beispiel versucht der Benutzer, das OpenShot Video Editor Paket zu installieren, aber es fehlen einige Abhängigkeiten:
# dpkg -i openshot-qt_2.4.3+dfsg1-1_all.deb (Reading database ... 269630 files and directories currently installed.) Preparing to unpack openshot-qt_2.4.3+dfsg1-1_all.deb ... Unpacking openshot-qt (2.4.3+dfsg1-1) over (2.4.3+dfsg1-1) ... dpkg: dependency problems prevent configuration of openshot-qt: openshot-qt depends on fonts-cantarell; however: Package fonts-cantarell is not installed. openshot-qt depends on python3-openshot; however: Package python3-openshot is not installed. openshot-qt depends on python3-pyqt5; however: Package python3-pyqt5 is not installed. openshot-qt depends on python3-pyqt5.qtsvg; however: Package python3-pyqt5.qtsvg is not installed. openshot-qt depends on python3-pyqt5.qtwebkit; however: Package python3-pyqt5.qtwebkit is not installed. openshot-qt depends on python3-zmq; however: Package python3-zmq is not installed. dpkg: error processing package openshot-qt (--install): dependency problems - leaving unconfigured Processing triggers for mime-support (3.60ubuntu1) ... Processing triggers for gnome-menus (3.32.0-1ubuntu1) ... Processing triggers for desktop-file-utils (0.23-4ubuntu1) ... Processing triggers for hicolor-icon-theme (0.17-2) ... Processing triggers for man-db (2.8.5-2) ... Errors were encountered while processing: openshot-qt
Wie oben gezeigt, hängt OpenShot von den Paketen fonts-cantarell
, python3-openshot
, python3-pyqt5
, python3-pyqt5.qtsvg
, python3-pyqt5.qtwebkit
und python3-zmq
ab. All diese Pakete müssen installiert werden, bevor die Installation von OpenShot erfolgen kann.
Entfernen von Paketen
Um ein Paket zu entfernen, übergeben Sie den Parameter -r
an dpkg
, gefolgt vom Paketnamen. Der folgende Befehl entfernt zum Beispiel das unrar
-Paket aus dem System:
# dpkg -r unrar (Reading database ... 269630 files and directories currently installed.) Removing unrar (1:5.6.6-2) ... Processing triggers for man-db (2.8.5-2) ...
Die Entfernungsoperation führt ebenfalls eine Abhängigkeitsprüfung durch. Ein Paket kann nur entfernt werden, wenn jedes andere Paket, das von ihm abhängt, ebenfalls entfernt wird. Wenn Sie versuchen, dies zu tun, erhalten Sie die folgende Fehlermeldung:
# dpkg -r p7zip dpkg: dependency problems prevent removal of p7zip: winetricks depends on p7zip; however: Package p7zip is to be removed. p7zip-full depends on p7zip (= 16.02+dfsg-6). dpkg: error processing package p7zip (--remove): dependency problems - not removing Errors were encountered while processing: p7zip
Sie können mehrere Paketnamen an dpkg -r
übergeben, so dass alle genannten Pakete auf einmal entfernt werden.
Wenn ein Paket entfernt wird, bleiben die entsprechenden Konfigurationsdateien auf dem System. Wenn alles entfernen wollen soll, was mit dem Paket zusammenhängt, ist die Option -P
(purge) anstelle von -r
zu benutzen.
Note
|
Sie können |
Erhalten von Paketinformationen
Um Informationen über ein .deb
-Paket zu erhalten, wie z.B. seine Version, Architektur, Betreuer, Abhängigkeiten und mehr, benutzen Sie den dpkg
-Befehl mit dem Parameter -I
, gefolgt vom Dateinamen des Pakets, welches Sie inspizieren wollen:
# dpkg -I google-chrome-stable_current_amd64.deb new Debian package, version 2.0. size 59477810 bytes: control archive=10394 bytes. 1222 bytes, 13 lines control 16906 bytes, 457 lines * postinst #!/bin/sh 12983 bytes, 344 lines * postrm #!/bin/sh 1385 bytes, 42 lines * prerm #!/bin/sh Package: google-chrome-stable Version: 76.0.3809.100-1 Architecture: amd64 Maintainer: Chrome Linux Team <chromium-dev@chromium.org> Installed-Size: 205436 Pre-Depends: dpkg (>= 1.14.0) Depends: ca-certificates, fonts-liberation, libappindicator3-1, libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 2.2.0), libatspi2.0-0 (>= 2.9.90), libc6 (>= 2.16), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.5.12), libexpat1 (>= 2.0.1), libgcc1 (>= 1:3.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libuuid1 (>= 2.16), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, lsb-release, wget, xdg-utils (>= 1.0.2) Recommends: libu2f-udev Provides: www-browser Section: web Priority: optional Description: The web browser from Google Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.
Auflisten der installierten Pakete und Paketinhalte
Um eine Liste aller auf dem System installierten Pakete zu erhalten, benutzen Sie die Option --get-selections
, wie in dpkg --get-selections
. Sie können auch eine Liste aller Dateien erhalten, die von einem bestimmten Paket installiert wurden, indem Sie den Parameter -L PACKAGENAME
an dpkg
übergeben, wie hier ersichtlich:
# dpkg -L unrar /. /usr /usr/bin /usr/bin/unrar-nonfree /usr/share /usr/share/doc /usr/share/doc/unrar /usr/share/doc/unrar/changelog.Debian.gz /usr/share/doc/unrar/copyright /usr/share/man /usr/share/man/man1 /usr/share/man/man1/unrar-nonfree.1.gz
Herausfinden, welches Paket eine bestimmte Datei besitzt
Um herausfinden welches Paket eine bestimmte Datei in Ihrem System besitzt, kann das Dienstprogramm dpkg-query verwendet werden, gefolgt vom Parameter -S
plus dem Pfad zur fraglichen Datei:
# dpkg-query -S /usr/bin/unrar-nonfree unrar: /usr/bin/unrar-nonfree
Rekonfigurieren installierter Pakete
Wenn ein Paket installiert wird, gibt es einen Konfigurationsschritt namens post-install, bei dem ein Skript ausgeführt wird, um alles einzurichten, was für die Ausführung der Software benötigt wird, wie z.B. Berechtigungen setzen, Platzierung der Konfigurationsdateien usw. Dieser Konfigurationsschritt kann auch Fragen an den Benutzer stellen, um Präferenzen festzulegen, wie die Software ausgeführt werden soll.
Manchmal möchten Sie aufgrund einer beschädigten oder fehlerhaften Konfigurationsdatei die Einstellungen eines Pakets wieder in den “frischen” Zustand versetzen. Oder Sie möchten vielleicht die Antworten, die Sie auf die anfänglichen Konfigurationsfragen gegeben haben, ändern. Um dies zu erreichen, führen Sie das Dienstprogramm dpkg-reconfigure
aus, gefolgt vom Paketnamen.
Dieses Programm sichert die alten Konfigurationsdateien, entpackt die neuen in die richtigen Verzeichnisse und führt das vom Paket bereitgestellte post-install Skript erneut aus, als ob das Paket zum ersten Mal installiert worden wäre. Versuchen Sie, das Paket tzdata
anhand folgendem Beispiel neu zu konfigurieren:
# dpkg-reconfigure tzdata
Advanced Package Tool (apt)
Das Advanced Package Tool (APT) ist ein Paketverwaltungssystem mit einer Reihe von Tools, welche die Installation, Aktualisierung, Entfernung und Verwaltung von Paketen erheblich vereinfacht. APT bietet Funktionen wie erweiterte Suchfunktionen und automatische Auflösung von Abhängigkeiten.
APT ist kein “Ersatz” für dpkg
. Sie können es als ein "Front-End" betrachten, das Operationen rationalisiert und Lücken in der Funktionalität von dpkg
füllt, wie beispielsweise die Auflösung von Abhängigkeiten.
APT arbeitet mittels Software-Repositories, welche die zur Installation verfügbaren Pakete enthalten. Solche Repositories können ein lokaler oder entfernter Server oder (weniger häufig) sogar eine CD-ROM sein.
Linux-Distributionen wie Debian und Ubuntu pflegen ihre eigenen Repositories, und andere Repositories können von Entwicklern oder Benutzergruppen gepflegt werden, um Software bereitzustellen, die nicht in den Repositories der Hauptdistribution verfügbar ist.
Es gibt viele Dienstprogramme, die mit APT interagieren, die Wichtigsten davon sind:
apt-get
-
wird benutzt, um Pakete herunterzuladen, zu installieren, zu aktualisieren oder aus dem System zu entfernen.
apt-cache
-
wird benutzt, um Operationen, wie Suchen, im Paketindex durchzuführen.
apt-file
-
wird für die Suche nach Dateien innerhalb von Paketen verwendet.
Es gibt auch ein “freundlicheres” Dienstprogramm, das schlicht apt
genannt wird und die am häufigsten verwendeten Optionen von apt-get
und apt-cache
in einem Dienstprogramm kombiniert. Viele der Befehle für apt
sind die gleichen wie die für apt-get
, so dass diese in vielen Fällen austauschbar sind. Da apt
jedoch nicht auf jedem System installiert sein muss, ist es empfehlenswert zu lernen, wie man apt-get
und apt-cache
benutzt.
Note
|
|
Aktualisieren des Paketindex
Vor der Installation oder Aktualisierung von Software mit APT wird empfohlen, zunächst den Paketindex zu aktualisieren, um Informationen über neue und aktualisierte Pakete abzurufen. Dies geschieht mit dem Befehl apt-get
, gefolgt von dem Parameter update
:
# apt-get update Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease Hit:2 https://repo.skype.com/deb stable InRelease Hit:3 http://us.archive.ubuntu.com/ubuntu disco InRelease Hit:4 http://repository.spotify.com stable InRelease Hit:5 http://dl.google.com/linux/chrome/deb stable Release Hit:6 http://apt.pop-os.org/proprietary disco InRelease Hit:7 http://ppa.launchpad.net/system76/pop/ubuntu disco InRelease Hit:8 http://us.archive.ubuntu.com/ubuntu disco-security InRelease Hit:9 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease Hit:10 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease Reading package lists... Done
Tip
|
Statt |
Installieren und Entfernen von Paketen
Mit einem aktualisierten Paketindex können nun ein Paket installieren werden. Dies geschieht mit apt-get install
, gefolgt vom Namen des Pakets, das es zu installieren gilt:
# apt-get install xournal Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: xournal 0 upgraded, 1 newly installed, 0 to remove and 75 not upgraded. Need to get 285 kB of archives. After this operation, 1041 kB of additional disk space will be used.
Um ein Paket zu entfernen, verwenden Sie in ähnlicher Weise apt-get remove
, gefolgt von Namen des Pakets:
# apt-get remove xournal Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: xournal 0 upgraded, 0 newly installed, 1 to remove and 75 not upgraded. After this operation, 1041 kB disk space will be freed. Do you want to continue? [Y/n]
Seien Sie sich bewusst, dass APT beim Installieren oder Entfernen von Paketen eine automatische Auflösung von Abhängigkeiten vornimmt. Das bedeutet, dass alle zusätzlichen Pakete, die von dem Paket, welches Sie installieren, benötigt werden, auch installiert werden. Ebenso werden Pakete, die von dem Paket abhängen, welches Sie entfernen möchten auch entfernt werden. APT listet stets auf, welche Pakete installiert oder entfernt werden, bevor Sie gefragt werden, ob Sie fortfahren möchten:
# apt-get remove p7zip Reading package lists... Done Building dependency tree The following packages will be REMOVED: android-libbacktrace android-libunwind android-libutils android-libziparchive android-sdk-platform-tools fastboot p7zip p7zip-full 0 upgraded, 0 newly installed, 8 to remove and 75 not upgraded. After this operation, 6545 kB disk space will be freed. Do you want to continue? [Y/n]
Beachten Sie, dass wenn ein Paket entfernt wird, die entsprechenden Konfigurationsdateien auf dem System verbleiben. Um das Paket und alle Konfigurationsdateien zu entfernen, verwenden Sie den Parameter purge
anstelle von remove
oder den Parameter remove
mit der Option --purge
:
# apt-get purge p7zip
oder
# apt-get remove --purge p7zip
Tip
|
Sie können auch |
Behebung defekter Abhängigkeiten
Es ist möglich, “defekte Abhängigkeiten” in einem System zu haben. Das bedeutet, dass eines oder mehrere der installierten Pakete von anderen Paketen abhängen, die nicht installiert wurden oder nicht mehr vorhanden sind. Dies kann aufgrund eines Fehlers in APT oder aufgrund eines manuell installierten Pakets geschehen.
Um dies zu lösen, verwenden Sie den Befehl apt-get install -f
. Damit wird versucht, die defekten Pakete zu “reparieren”, indem die fehlenden Abhängigkeiten installiert werden, um sicherzustellen, dass alle Pakete wieder konsistent sind.
Tip
|
Sie können auch |
Aktualisieren von Paketen
APT kann verwendet werden, um alle installierten Pakete automatisch auf die neuesten Versionen zu aktualisieren, welche in den Repositories verfügbar sind. Dies geschieht mit dem Befehl apt-get upgrade
. Bevor Sie diesen ausführen, aktualisieren Sie zunächst den Paketindex mittels apt-get update
:
# apt-get update Hit:1 http://us.archive.ubuntu.com/ubuntu disco InRelease Hit:2 http://us.archive.ubuntu.com/ubuntu disco-security InRelease Hit:3 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease Hit:4 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease Reading package lists... Done # apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages have been kept back: gnome-control-center The following packages will be upgraded: cups cups-bsd cups-client cups-common cups-core-drivers cups-daemon cups-ipp-utils cups-ppdc cups-server-common firefox-locale-ar (...) 74 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. Need to get 243 MB of archives. After this operation, 30.7 kB of additional disk space will be used. Do you want to continue? [Y/n]
Die Zusammenfassung am Ende der Ausgabe zeigt, wie viele Pakete aktualisiert werden, wie viele installiert, entfernt oder zurückgehalten werden, die Gesamtgröße des Downloads und wie viel zusätzlicher Speicherplatz für den Abschluss des Vorgangs benötigt wird. Um das Upgrade abzuschließen, antworten Sie einfach mit Y
und warten Sie auf die Beendigung von apt-get
.
Um ein einzelnes Paket zu aktualisieren, führen Sie einfach apt-get upgrade
gefolgt vom Paketnamen aus. Wie in dpkg
wird apt-get
zunächst prüfen, ob eine frühere Version eines Pakets installiert ist. Ist dies der Fall, wird das Paket auf die Neueste im Repository verfügbare Version aktualisiert. Falls nicht, wird eine neue Kopie installiert.
Tip
|
Sie können auch |
Der lokale Cache
Wenn Sie ein Paket installieren oder aktualisieren, wird die entsprechende .deb
-Datei in ein lokales Cacheverzeichnis heruntergeladen, bevor das Paket installiert wird. Standardmäßig ist dieses Verzeichnis /var/cache/apt/archives
. Teilweise heruntergeladene Dateien werden nach /var/cache/apt/archives/partial/
kopiert.
Wenn Sie Pakete installieren und aktualisieren, kann das Cacheverzeichnis ziemlich groß werden. Um wieder Platz zu schaffen, können Sie den Cache leeren, indem Sie den Befehl apt-get clean
verwenden. Dadurch wird der Inhalt der Verzeichnisse /var/cache/apt/archives
und /var/cache/apt/archives/partial/
entfernt.
Tip
|
Sie können auch |
Suche nach Paketen
Das Dienstprogramm apt-cache
kann benutzt werden, um Operationen auf dem Paketindex durchzuführen, wie z.B. das Suchen nach einem bestimmten Paket oder das Auflisten, welche Pakete eine bestimmte Datei enthalten.
Um eine Suche durchzuführen, verwenden Sie apt-cache search
gefolgt von einem Suchmuster. Die Ausgabe wird eine Liste aller Pakete sein, welche dem Muster entsprechen, entweder im Paketnamen, in der Beschreibung oder in den bereitgestellten Dateien.
# apt-cache search p7zip liblzma-dev - XZ-format compression library - development files liblzma5 - XZ-format compression library forensics-extra - Forensics Environment - extra console components (metapackage) p7zip - 7zr file archiver with high compression ratio p7zip-full - 7z and 7za file archivers with high compression ratio p7zip-rar - non-free rar module for p7zip
Im obigen Beispiel scheint der Eintrag liblzma5 - Komprimierungsbibliothek im XZ-Format
nicht mit dem Muster übereinzustimmen. Wenn wir jedoch die vollständigen Informationen, einschließlich der Beschreibung, für das Paket mit dem Parameter show
anzeigen, werden wir das Muster dort finden:
# apt-cache show liblzma5 Package: liblzma5 Architecture: amd64 Version: 5.2.4-1 Multi-Arch: same Priority: required Section: libs Source: xz-utils Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 259 Depends: libc6 (>= 2.17) Breaks: liblzma2 (<< 5.1.1alpha+20110809-3~) Filename: pool/main/x/xz-utils/liblzma5_5.2.4-1_amd64.deb Size: 92352 MD5sum: 223533a347dc76a8cc9445cfc6146ec3 SHA1: 8ed14092fb1caecfebc556fda0745e1e74ba5a67 SHA256: 01020b5a0515dbc9a7c00b464a65450f788b0258c3fbb733ecad0438f5124800 Homepage: https://tukaani.org/xz/ Description-en: XZ-format compression library XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm compression format, which provides memory-hungry but powerful compression (often better than bzip2) and fast, easy decompression. . The native format of liblzma is XZ; it also supports raw (headerless) streams and the older LZMA format used by lzma. (For 7-Zip's related format, use the p7zip package instead.)
Sie können reguläre Ausdrücke mit dem Suchmuster verwenden, wodurch sehr komplexe (und präzise) Suchen möglich sind. Dieses Thema ist jedoch nicht Gegenstand dieser Lektion.
Tip
|
Sie können auch |
Die Quellenliste
APT benutzt eine Liste von Quellen, um zu erfahren, woher Pakete bezogen werden können. Diese Liste wird in der Datei sources.list
gespeichert, die sich im Verzeichnis /etc/apt
befindet. Diese Datei kann direkt mit einem Texteditor, wie vi
, pico
oder nano
, oder mit grafischen Hilfsprogrammen wie aptitude
oder synaptic
bearbeitet werden.
Eine typische Zeile innerhalb von sources.list
sieht wie folgt aus:
deb http://us.archive.ubuntu.com/ubuntu/ disco main restricted universe multiverse
Die Syntax lautet Archivtyp, URL, Distribution und eine oder mehrere Komponenten, wobei:
- Archivtyp
-
Ein Repository kann Pakete mit lauffähiger Software (Binärpakete, Typ
deb
) oder mit dem Quellcode dieser Software (Quellpakete, Typdeb-src
) enthalten. Das obige Beispiel enthält Binärpakete.- URL
-
Die URL für das Repository.
- Distribution
-
Der Name (oder Codename) für die Distribution, für welche die Pakete bereitgestellt werden. Ein Repository kann Pakete für mehrere Distributionen beherbergen. Im obigen Beispiel ist
disco
der Codename für Ubuntu 19.04 Disco Dingo. - Komponenten
-
Jede Komponente stellt einen Satz von Paketen dar. Diese Komponenten können auf verschiedenen Linux-Distributionen unterschiedlich sein. Auf Ubuntu und dessen Derivaten sind diese zum Beispiel:
main
-
enthält offiziell unterstützte Open-Source-Pakete.
restricted
-
enthält offiziell unterstützte Closed-Source-Software, wie z.B. Gerätetreiber für Grafikkarten.
universe
-
enthält von der Gemeinschaft gepflegte Open-Source-Software.
multiverse
-
enthält nicht unterstützte Closed-Source- oder patentbelastete Software.
Unter Debian sind die Hauptkomponenten:
main
-
besteht aus Paketen, die mit den Debian Free Software Guidelines (DFSG) konform sind und nicht auf Software außerhalb dieses Bereichs angewiesen sind, um zu funktionieren. Die hier enthaltenen Pakete werden als Teil der Debian-Distribution betrachtet.
contrib
-
enthält DFSG-konforme Pakete, die aber von anderen Paketen abhängen, welche sich nicht im
main
befinden. non-free
-
enthält Pakete, die nicht konform mit der DFSG sind.
security
-
enthält Sicherheitsupdates.
backports
-
enthält neuere Versionen von Paketen, die sich in
main
befinden. Der Entwicklungszyklus der stabilen Versionen von Debian ist ziemlich lang (etwa zwei Jahre). Das stellt sicher, dass Benutzer die aktuellsten Pakete erhalten können, ohne dasmain
-Repository modifizieren zu müssen.
Note
|
Sie können mehr über die Debian Free Software Guidelines erfahren unter: https://www.debian.org/social_contract#guidelines |
Um ein neues Repository hinzuzufügen, aus dem Pakete bezogen werden sollen, können Sie einfach die entsprechende Zeile (normalerweise vom Repository-Betreuer bereitgestellt) am Ende von sources.list
einfügen, die Datei speichern und den Paketindex mit apt-get update
neu laden. Danach stehen die Pakete im neuen Repository mit apt-get install
zur Installation zur Verfügung.
Denken Sie daran, dass Zeilen, die mit dem Zeichen #
beginnen, als Kommentare betrachtet und ignoriert werden.
Das Verzeichnis /etc/apt/sources.list.d
Innerhalb des Verzeichnisses /etc/apt/sources.list.d
können Sie Dateien mit zusätzlichen Repositories hinzufügen, die von APT verwendet werden sollen, ohne die Hauptdatei /etc/apt/sources.list
modifizieren zu müssen. Dabei handelt es sich um einfache Textdateien, mit der gleichen Syntax wie oben beschrieben und der Dateierweiterung .list
.
Unten sehen Sie den Inhalt einer Datei namens /etc/apt/sources.list.d/buster-backports.list
:
deb http://deb.debian.org/debian buster-backports main contrib non-free deb-src http://deb.debian.org/debian buster-backports main contrib non-free
Auflisten von Paketinhalten und Suchen von Dateien
Das Dienstprogramm namens apt-file
kann verwendet werden, um weitere Operationen im Paketindex durchzuführen, wie das Auflisten des Inhalts eines Pakets oder das Auffinden eines Pakets, welches eine bestimmte Datei enthält. Dieses Dienstprogramm ist möglicherweise nicht standardmäßig in Ihrem System installiert. In diesem Fall können Sie es mit apt-get
installieren:
# apt-get install apt-file
Nach der Installation müssen Sie den für apt-file
verwendeten Paketcache aktualisieren:
# apt-file update
Dies dauert in der Regel nur wenige Sekunden. Danach ist das Sysstem bereit, apt-file
zu verwenden.
Um den Inhalt eines Pakets aufzulisten, verwenden Sie den Parameter list
, gefolgt vom Paketnamen:
# apt-file list unrar unrar: /usr/bin/unrar-nonfree unrar: /usr/share/doc/unrar/changelog.Debian.gz unrar: /usr/share/doc/unrar/copyright unrar: /usr/share/man/man1/unrar-nonfree.1.gz
Tip
|
Sie können auch |
Sie können alle Pakete mit dem Parameter search
, gefolgt vom Dateinamen, nach einer Datei durchsuchen. Wenn Sie zum Beispiel wissen wollen, welches Paket eine Datei namens libSDL2.so
zur Verfügung stellt, können Sie diesen Parameter verwenden:
# apt-file search libSDL2.so libsdl2-dev: /usr/lib/x86_64-linux-gnu/libSDL2.so
Die Antwort ist das Paket libsdl2-dev
, das die Datei /usr/lib/x86_64-linux-gnu/libSDL2.so
bereitstellt.
Der Unterschied zwischen apt-file search
und dpkg-query
besteht darin, dass apt-file search
auch nicht installierte Pakete durchsucht, während dpkg-query
nur Dateien anzeigen kann, die zu einem bereits installiertem Paket gehören.
Geführte Übungen
-
Wie lautet der Befehl, um ein Paket namens
package.deb
mitdpkg
zu installieren? -
Finden Sie mittels
dpkg-query
heraus, welches Paket eine Datei namens7zr.1.gz
enthält. -
Können Sie ein Paket namens
unzip
mitdpkg -r unzip
aus dem System entfernen, wenn das Paketfile-roller
davon abhängt? Wenn nicht, was wäre dann der richtige Weg, dies zu tun? -
Wie können Sie mit
apt-file
herausfinden, welches Paket die Dateiunrar
enthält? -
Wie lautet der Befehl, um mit
apt-cache
Informationen für das Paketgimp
anzuzeigen?
Offene Übungen
-
Ein Repository mit Debianquellpaketen für die
xenial
-Distribution, gehostet aufhttp://us.archive.ubuntu.com/ubuntu/
und mit Paketen für dieuniverse
-Komponente soll auf einem System zur Verfügung gestellt werden. Wie lautet der entsprechende Eintrag, welcher in der Datei/etc/apt/sources.list
vorgenommen werden muss? -
While compiling a program, you come across an error message complaining that the header file
zzip-io.h
is not present in your system. How can you find out which package provides that file? -
Wie können Sie eine Abhängigkeitswarnung ignorieren und ein Paket mit
dpkg
entfernen, selbst wenn es im System Pakete gibt, die davon abhängen? -
Wie können Sie mit
apt
mehr Informationen über ein Paket namensmidori
erhalten? -
Welcher Befehl sollte vor der Installation oder Aktualisierung von Paketen mit
apt
benutzt werden, um sicherzustellen, dass der Paketindex aktuell ist?
Zusammenfassung
In dieser Lektion haben Sie gelernt:
-
Wie man
dpkg
benutzt, um Pakete zu installieren und zu entfernen. -
Wie man installierte Pakete und Paketinhalte auflistet.
-
Wie man ein installiertes Paket neu konfiguriert.
-
Was
apt
ist und wie man damit Pakete installiert, aktualisiert und entfernt. -
Wie man
apt-cache
benutzt, um nach Paketen zu suchen. -
Wie die Datei
/etc/apt/sources.list
funktioniert. -
Wie man
apt-file
benutzt, um den Inhalt eines Pakets anzuzeigen, oder wie man herausfindet, welches Paket eine bestimmte Datei enthält.
Die folgenden Befehle wurden diskutiert:
dpkg -i
-
Installiert ein einzelnes Paket oder eine durch Leerzeichen getrennte Liste von Paketen.
dpkg -r
-
Entfernt ein Paket oder eine durch Leerzeichen getrennte Liste von Paketen.
dpkg -I
-
Inspiziert ein Paket und liefert Details über die Software, die es installiert, und alle benötigten Abhängigkeiten.
dpkg --get-selections
-
Listet jedes Paket auf, das
dpkg
auf dem System installiert hat. dpkg -L
-
Druckt eine Liste aller Dateien aus, die ein bestimmtes Paket installiert.
dpkg-query
-
Mit einem angegebenen Dateinamen gibt dieser Befehl das Paket aus, das die Datei installiert hat.
dpkg-reconfigure
-
Dieser Befehl führt ein post-install-Skript des Pakets erneut aus, so dass ein Administrator Konfigurationsanpassungen an der Installation des Pakets vornehmen kann.
apt-get update
-
Dieser Befehl wird den lokalen Paketindex aktualisieren, so dass er mit dem übereinstimmt, was in den konfigurierten Repositories unter dem Verzeichnis
/etc/apt/
verfügbar ist. apt-get install
-
Dieser Befehl lädt ein Paket von einem entfernten Repository herunter und installiert es zusammen mit seinen Abhängigkeiten. Er kann auch verwendet werden, um ein Debian-Paket zu installieren, das bereits heruntergeladen wurde.
apt-get remove
-
Dieser Befehl deinstalliert das/die angegebene(n) Paket(e) vom System.
apt-cache show
-
Genau wie der Befehl
dpkg -I
kann dieser Befehl benutzt werden, um Details zu einem bestimmten Paket anzuzeigen. apt-cache search
-
Dieser Befehl durchsucht Ihre lokale APT-Cache-Datenbank nach einem bestimmten Paket.
apt-file update
-
Dieser Befehl aktualisiert den Paketcache, so dass der Befehl
apt-file
seinen Inhalt abfragen kann. apt-file search
-
Dieser Befehl sucht, in welchem Paket eine Datei enthalten ist. Es wird eine Liste aller Pakete zurückgegeben, die dem übergebenem Muster entsprechen.
apt-file list
-
Dieser Befehl wird benutzt, um den Inhalt eines Pakets aufzulisten, genau wie der Befehl
dpkg -L
.
Lösungen zu den geführten Übungen
-
Wie lautet der Befehl, um ein Paket namens
package.deb
mitdpkg
zu installieren?Übergeben Sie den Parameter
-i
andpkg
:# dpkg -i package.deb
-
Finden Sie mittels
dpkg-query
heraus, welches Paket eine Datei namens7zr.1.gz
enthält.Fügen Sie den Parameter
-S
zudpkg-query
hinzu:# dpkg-query -S 7zr.1.gz
-
Können Sie ein Paket namens
unzip
mitdpkg -r unzip
aus dem System entfernen, wenn das Paketfile-roller
davon abhängt? Wenn nicht, was wäre dann der richtige Weg, dies zu tun?Nein.
dpkg
löst keine Abhängigkeiten auf und lässt Sie ein Paket nicht entfernen, wenn ein anderes installiertes Paket davon abhängt. In diesem Beispiel könnten Sie zuerstfile-roller
entfernen (vorausgesetzt, nichts hängt davon ab) und dannunzip
entfernen, oder Sie könnten beide gleichzeitig entfernen:# dpkg -r unzip file-roller
-
Wie können Sie mit dem Dienstprogramm
apt-file
herausfinden, welches Paket die Datei/usr/bin/unrar
enthält?Verwenden Sie den Parameter
search
gefolgt vom Pfad (oder Dateinamen):# apt-file search /usr/bin/unrar
-
Wie lautet der Befehl, um mit
apt-cache
Informationen für das Paketgimp
anzuzeigen?Verwenden Sie den Parameter
show
gefolgt vom Paketnamen:# apt-cache show gimp
Lösungen zu den offenen Übungen
-
Ein Repository mit Debianquellpaketen für die
xenial
-Distribution, gehostet aufhttp://us.archive.ubuntu.com/ubuntu/
und mit Paketen für dieuniverse
-Komponente soll auf einem System zur Verfügung gestellt werden. Wie lautet der entsprechende Eintrag, welcher in der Datei/etc/apt/sources.list
vorgenommen werden muss?Quellpakete sind vom Typ
deb-src
, daher muss die Zeile wie folge lauten:deb-src http://us.archive.ubuntu.com/ubuntu/ xenial universe
Diese Zeile könnte auch innerhalb einer
.list
-Datei in/etc/apt/sources.list.d/
hinzugefügt werden. Der Name ist frei wählbar, sollte aber aussagekräftig sein, wie etwasxenial_sources.list
. -
While compiling a program, you come across an error message complaining that the header file
zzip-io.h
is not present on your system. How can you find out which package provides that file?Use
apt-file search
to find which package contains a file not present in the system:# apt-file search zzip-io.h
-
Wie können Sie eine Abhängigkeitswarnung ignorieren und ein Paket mit
dpkg
entfernen, selbst wenn es im System Pakete gibt, die davon abhängen?Der Parameter
--force
kann verwendet werden, aber dies sollte nie erfolgen, es sei denn, Sie wissen genau, was Sie tun. Denn es besteht große Gefahr, dass Ihr System in einem inkonsistenten oder “defekten” Zustand hinterlassen wird. -
Wie können Sie mit
apt-cache
mehr Informationen über ein Paket namensmidori
erhalten?Verwenden Sie
apt-cache show
, gefolgt von dem Paketnamen:# apt-cache show midori
-
Welcher Befehl sollte vor der Installation oder Aktualisierung von Paketen mit
apt-get
benutzt werden, um sicherzustellen, dass der Paketindex aktuell ist?apt-get update
sollte verwendet werden. Dadurch werden die neuesten Paketindizes von den Repositories heruntergeladen, die in der Datei/etc/apt/sources.list
oder im Verzeichnis/etc/apt/sources.list.d/
gelistet sind.