Linux Professional Institute Learning Logo.
Weiter zum Inhalt
  • Home
    • Alle Ressourcen
    • LPI Lernmaterialien
    • Mitmachen
    • Publishing Partner
    • Publishing Partner werden
    • Über uns
    • FAQ
    • Mitwirkende
    • Roadmap
    • Kontakt
  • LPI.org
102.4 Lektion 1
Thema 101: Systemarchitektur
101.1 Hardwareeinstellungen ermitteln und konfigurieren
  • 101.1 Lektion 1
101.2 Das System starten
  • 101.2 Lektion 1
101.3 Runlevel wechseln und das System anhalten oder neu starten
  • 101.3 Lektion 1
Thema 102: Linux-Installation und -Paketverwaltung
102.1 Festplattenaufteilung planen
  • 102.1 Lektion 1
102.2 Einen Bootmanager installieren
  • 102.2 Lektion 1
102.3 Shared Libraries verwalten
  • 102.3 Lektion 1
102.4 Debian-Paketverwaltung verwenden
  • 102.4 Lektion 1
102.5 RPM und YUM-Paketverwaltung verwenden
  • 102.5 Lektion 1
102.6 Linux als Virtualisierungs-Gast
  • 102.6 Lektion 1
Thema 103: GNU- und Unix-Befehle
103.1 Auf der Befehlszeile arbeiten
  • 103.1 Lektion 1
  • 103.1 Lektion 2
103.2 Textströme mit Filtern verarbeiten
  • 103.2 Lektion 1
103.3 Grundlegende Dateiverwaltung
  • 103.3 Lektion 1
  • 103.3 Lektion 2
103.4 Ströme, Pipes und Umleitungen verwenden
  • 103.4 Lektion 1
  • 103.4 Lektion 2
103.5 Prozesse erzeugen, überwachen und beenden
  • 103.5 Lektion 1
  • 103.5 Lektion 2
103.6 Prozess-Ausführungsprioritäten ändern
  • 103.6 Lektion 1
103.7 Textdateien mit regulären Ausdrücken durchsuchen
  • 103.7 Lektion 1
  • 103.7 Lektion 2
103.8 Grundlegendes Editieren von Dateien
  • 103.8 Lektion 1
Thema 104: Geräte, Linux-Dateisysteme, Filesystem Hierarchy Standard
104.1 Partitionen und Dateisysteme anlegen
  • 104.1 Lektion 1
104.2 Die Integrität von Dateisystemen sichern
  • 104.2 Lektion 1
104.3 Das Mounten und Unmounten von Dateisystemen steuern
  • 104.3 Lektion 1
104.5 Dateizugriffsrechte und -eigentümerschaft verwalten
  • 104.5 Lektion 1
104.6 Symbolische und Hardlinks anlegen und ändern
  • 104.6 Lektion 1
104.7 Systemdateien finden und Dateien am richtigen Ort plazieren
  • 104.7 Lektion 1
How to get certified
  1. Thema 102: Linux-Installation und -Paketverwaltung
  2. 102.4 Debian-Paketverwaltung verwenden
  3. 102.4 Lektion 1

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:

# dkpg -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 dpkg zwingen, ein Paket zu installieren oder zu entfernen, selbst wenn die Abhängigkeiten nicht erfüllt sind, indem Sie den Parameter --force hinzufügen (wie in dpkg -i --force PACKAGENAME). Dies wird jedoch höchstwahrscheinlich das installierte Paket, oder sogar Ihr System, in einem disfunktionalem Zustand bringen. Benutzen Sie --force nur, wenn Sie absolut sicher sind, was Sie tun.

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

apt und apt-get können eine Netzwerkverbindung erfordern, da Pakete und Paketindizes möglicherweise von einem entfernten Server heruntergeladen werden müssen.

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 apt-get update können Sie auch apt update verwenden.

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 apt install und apt remove verwenden.

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 apt install -f verwenden.

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 apt upgrade und apt update verwenden.

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 apt clean verwenden.

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 apt search anstelle von apt-cache search und apt show anstelle von apt-cache show verwenden.

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, Typ deb-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 das main-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 apt list anstelle von apt-file list verwenden.

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

  1. Wie lautet der Befehl, um ein Paket namens package.deb mit dpkg zu installieren?

  2. Finden Sie mittels dpkg-query heraus, welches Paket eine Datei namens 7zr.1.gz enthält.

  3. Können Sie ein Paket namens unzip mit dpkg -r unzip aus dem System entfernen, wenn das Paket file-roller davon abhängt? Wenn nicht, was wäre dann der richtige Weg, dies zu tun?

  4. Wie können Sie mit apt-file herausfinden, welches Paket die Datei unrar enthält?

  5. Wie lautet der Befehl, um mit apt-cache Informationen für das Paket gimp anzuzeigen?

Offene Übungen

  1. Ein Repository mit Debianquellpaketen für die xenial-Distribution, gehostet auf http://us.archive.ubuntu.com/ubuntu/ und mit Paketen für die universe-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?

  2. Beim Kompilieren eines Programms stoßen Sie auf eine Fehlermeldung, das die Headerdatei zzip-io.h nicht auf Ihrem System vorhanden ist. Wie können Sie herausfinden, welches Paket diese Datei zur Verfügung stellt?

  3. 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?

  4. Wie können Sie mit apt mehr Informationen über ein Paket namens midori erhalten?

  5. 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

  1. Wie lautet der Befehl, um ein Paket namens package.deb mit dpkg zu installieren?

    Übergeben Sie den Parameter -i an dpkg:

    # dpkg -i package.deb
  2. Finden Sie mittels dpkg-query heraus, welches Paket eine Datei namens 7zr.1.gz enthält.

    Fügen Sie den Parameter -S zu dpkg-query hinzu:

    # dpkg-query -S 7zr.1.gz
  3. Können Sie ein Paket namens unzip mit dpkg -r unzip aus dem System entfernen, wenn das Paket file-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 zuerst file-roller entfernen (vorausgesetzt, nichts hängt davon ab) und dann unzip entfernen, oder Sie könnten beide gleichzeitig entfernen:

    # dpkg -r unzip file-roller
  4. 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
  5. Wie lautet der Befehl, um mit apt-cache Informationen für das Paket gimp anzuzeigen?

    Verwenden Sie den Parameter show gefolgt vom Paketnamen:

    # apt-cache show gimp

Lösungen zu den offenen Übungen

  1. Ein Repository mit Debianquellpaketen für die xenial-Distribution, gehostet auf http://us.archive.ubuntu.com/ubuntu/ und mit Paketen für die universe-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 etwas xenial_sources.list.

  2. Beim Kompilieren eines Programms stoßen Sie auf eine Fehlermeldung, dass die Headerdatei zzip-io.h nicht auf Ihrem System vorhanden ist. Wie können Sie herausfinden, welches Paket diese Datei zur Verfügung stellt?

    Verwenden Sie apt-file search, um herauszufinden, welches Paket eine Datei enthält, die nicht im System vorhanden ist:

    # apt-file search zzip-io.h
  3. 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.

  4. Wie können Sie mit apt-cache mehr Informationen über ein Paket namens midori erhalten?

    Verwenden Sie apt-cache show, gefolgt von dem Paketnamen:

    # apt-cache show midori
  5. 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.

Linux Professional Insitute Inc. Alle Rechte vorbehalten. Besuchen Sie die LPI Learning Website: https://learning.lpi.org
Dieses Werk steht unter der Lizenz Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International.

Nächste Lektion

102.5 RPM und YUM-Paketverwaltung verwenden (102.5 Lektion 1)

Nächste Lektion lesen

Linux Professional Insitute Inc. Alle Rechte vorbehalten. Besuchen Sie die LPI Learning Website: https://learning.lpi.org
Dieses Werk steht unter der Lizenz Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International.

LPI ist eine Non-Profit-Organisation.

© 2022 Linux Professional Institute (LPI) ist eine globale Organisation für Zertifizierungsstandards und zur Karriereplanung für Open-Source-Profis. Mit mehr als 200.000 Zertifikatsinhabern ist es die weltweit erste und größte herstellerneutrale Linux- und Open-Source-Zertifizierungsstelle. LPI verfügt über zertifizierte Fachleute in über 180 Ländern, bietet Prüfungen in mehreren Sprachen an und hat Hunderte von Trainingspartnern.

Unser Ziel ist es, wirtschaftliche und kreative Möglichkeiten für alle zu ermöglichen, indem wir Open-Source-Wissens- und Kompetenzzertifizierungen allgemein zugänglich machen.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Kontaktieren Sie uns
  • Datenschutz und Cookie-Richtlinien

Haben Sie einen Fehler entdeckt oder möchten Sie helfen, diese Seite zu verbessern? Lassen Sie es uns wissen.

© 1999–2022 The Linux Professional Institute Inc. Alle Rechte vorbehalten.