Warum gibt es Deb-Dateien in / var / cache / apt / archives /?

Antworten:

21

Hintergrundinformation

In Ubuntu (und in Debian, auf dem Ubuntu basiert) gibt es zwei Dinge, die allgemein als "Paketmanager" bezeichnet werden: dpkgund APT.

dpkgist ein Programm, das Pakete installiert und entfernt und eine Datenbank darüber verwaltet, welche Pakete in welchen Versionen installiert sind. Wenn Pakete installiert werden, erfolgt dies aus .debArchivdateien. Diese Archive sind die Art und Weise, wie Pakete verteilt werden.

dpkgKopiert (oder löscht) Dateien und aktualisiert die Datenbank. Außerdem werden Installations- und Entfernungsskripte ausgeführt. Es kann als ziemlich raffiniert angesehen werden. Was es aber nicht tun wird , ist Pakete zu finden und herunterzuladen.

APT findet und lädt Pakete herunter und wird dpkgordnungsgemäß ausgeführt, um sie zu installieren, zu aktualisieren und zu entfernen. APT ist eigentlich keine einzelne Software, obwohl es ein passendesInstallieren Sie apt Paket gibt, das die wesentlichen Teile enthält.

APT enthält eine Bibliothek ( libapt-pkg ), die Kernfunktionen bietet, auf die verschiedene Tools zugreifen . Einige dieser Tools apt-getwerden auch vom apt-Installieren Sie apt Paket bereitgestellt. Andere Werkzeuge werden separat installiert. APT bietet auch verschiedene Konfigurationsdateien, die steuern, wie die Kernbibliothek und die Programme, die sie verwenden, funktionieren.

Darüber hinaus ist APT ein System zum Speichern und Abrufen von Daten darüber, welche Softwarequellen welche Pakete in welchen Versionen bereitstellen, und zum Verarbeiten dieser Daten, um automatisch Paketverwaltungsaufgaben wie das Installieren und Aktualisieren von Paketen auszuführen. Dazu gehört, zu verfolgen, welche Pakete benötigt werden, damit andere Pakete funktionieren, und automatisch geeignete Pakete auszuwählen und zu installieren, um diese Abhängigkeiten zu erfüllen.

Wenn ich dem apt-getDienstprogramm beispielsweise sage , dass es das Chocolate-Doom-Installieren Sie Chocolate-Doom Paket installieren soll , wird herausgefunden, welche anderen Pakete installiert werden müssen, damit es funktioniert, und es wird automatisch abgerufen und auch installiert:

$ sudo apt-get install chocolate-doom
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2 libsdl1.2debian
Recommended packages:
  doom-engine
The following NEW packages will be installed:
  chocolate-doom doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2
  libsdl1.2debian
0 upgraded, 6 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/2,846 kB of archives.
After this operation, 8,626 kB of additional disk space will be used.

Grafische Tools wie das Software Center, der Software Updater / Update Manager und Synaptic führen ähnliche Funktionen aus wie apt-get. Sie verwenden das APT-System auch - durch eine Kombination aus Einhaltung seiner Regeln und Nutzung der von Kernbibliotheken bereitgestellten Funktionen -, um zu ändern, welche Pakete installiert sind, um dem Benutzer das zu geben, was er (normalerweise) möchte, so dass die Dinge (normalerweise) weiter arbeiten.

Wie und wann der /var/cache/apt/archivesOrdner verwendet wird

Wenn apt-get, aptitude, Software Center , Synaptic , Software Updater / Update Manager oder andere Paket - Management - Programm - Download - Pakete (und die anderen Pakete , die sie hängen von) von konfigurierten Softwarequellen und sie installieren, die heruntergeladenen Pakete (dh Dateien der .deb - Archiv von dem sie installiert werden) gespeichert werden /var/cache/apt/archives.

Wenn Sie eine .deb-Datei auf der Festplatte haben und diese mit installieren dpkg, wird keine Kopie davon erstellt /var/cache/apt/archives. Wenn jedoch ein Programm, das das APT-System für die automatische Auflösung von Abhängigkeiten und das Abrufen von Paketen verwendet oder implementiert, Pakete herunterlädt, werden diese dort gespeichert.

Während .deb-Dateien für automatisch heruntergeladene Pakete in gespeichert und von dort installiert werden /var/cache/apt/archives, werden sie nicht direkt an diesen Speicherort heruntergeladen. Stattdessen sind unvollständige (dh laufende) .deb-Dateidownloads in vorhanden /var/cache/apt/archives/partialund werden nach Abschluss in verschoben /var/cache/apt/archives.

.deb-Paketdateien bleiben /var/cache/apt/archivesauch nach erfolgreicher Installation zwischengespeichert, falls sie für die zukünftige Verwendung benötigt werden. Sie können jedoch .deb-Dateien, die alt genug sind, mit denen sie wahrscheinlich nicht mehr benötigt werden sudo apt-get autoclean, sicher entfernen oder die zwischengespeicherten .debDateien vollständig mit löschen sudo apt-get clean. Siehe man apt-getfür weitere Informationen.

Um die Funktion sudo apt-get autocleanund ähnliche Befehle zu veranschaulichen und um festzustellen, ob Sie sie ausführen möchten, können Sie ihre Aktionen simulieren , indem Sie sie dann mit dem -sFlag ausführen . Es ist am besten, diese Flagge vor dem autoclean(oder einem anderen) Aktionsverb zu übergeben. Es ist normalerweise nicht notwendig , ein Dienstprogramm als root mit läuft sudobei der Verwendung -s, da keine tatsächlichen Änderungen vorgenommen werden.

Zum Beispiel auf meinem System:

$ apt-get -s autoclean
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Del libubsan0 4.9.1-15ubuntu1 [83.7 kB]
Del cups-server-common 1.7.5-3 [519 kB]
Del python2.7 2.7.8-9 [205 kB]
Del g++-4.9 4.9.1-15ubuntu1 [17.4 MB]
Del libstdc++-4.9-dev 4.9.1-15ubuntu1 [1,121 kB]
    ....

Die aufgeführten Pakete werden nicht deinstalliert . Stattdessen werden nur zwischengespeicherte .deb-Dateien gelöscht. (Tatsächlich passierte beides nicht, als ich diesen Befehl ausführte, da es sich lediglich um eine Simulation handelte.)

Andere heruntergeladene Dateien

Software, die über dpkg(über APT oder auf andere Weise) installiert wurde, wird nicht über die .deb-Datei ausgeführt, die sie bereitstellt. Wie im Abschnitt Hintergrundinformationen angegeben , werden .deb-Dateien extrahiert. Aus diesem Grund können sie entfernt werden und das installierte Paket funktioniert weiterhin.

Dateien im gesamten System, die aus .deb-Paketen installiert werden, werden nicht an ihren aktuellen Speicherort heruntergeladen. Sie werden vielmehr aus den .deb-Dateien extrahiert, die sie bereitstellen (oder möglicherweise während der Installation oder danach speziell erstellt, wie dies der Fall ist für einige Konfigurationsdateien).

.Deb-Dateien sind jedoch nicht die einzigen Dateien, die von Dienstprogrammen zur Paketverwaltung heruntergeladen werden. Oft werden andere Dateien heruntergeladen, die Informationen darüber enthalten, wo Pakete vorhanden sind.

Wenn ich zum Beispiel laufe sudo apt-get update, enthält die Ausgabe Zeilen wie:

Get:13 http://us.archive.ubuntu.com utopic/main i386 Packages [1,341 kB]

Dies bedeutet, dass eine Datei wie http://us.archive.ubuntu.com/ubuntu/dists/utopic/main/binary-amd64/Packages.bz2 heruntergeladen und untersucht wurde, um die APT-Datenbank mit Informationen darüber zu aktualisieren, welche Pakete verfügbar sind ( und in welchen Versionen) von dieser bestimmten Softwarequelle. Sie finden Paketdateien und andere solche Dateien im /var/lib/apt/listVerzeichnis. Die dort gespeicherten Kopien erhalten unterschiedliche Namen wie us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages, da es viele solcher Dateien geben kann.

Sie haben apt-cachespeziell danach gefragt . Es fragt die Paketdatenbank ab, nimmt jedoch keine Änderungen am System vor und lädt keine Dateien herunter.

Für das Software Center spezifische heruntergeladene Dateien

Wenn das Ubuntu Software Center Daten für den eigenen Gebrauch herunterlädt, die für es spezifisch sind und sich nicht auf allgemeine APT- (oder dpkg) Funktionen beziehen , speichert es diese in /var/cache/software-center.

Auf meinem System (und auf den meisten Systemen) enthält dieser Ordner beispielsweise einen xapianUnterordner:

ek@Ilex:/var/cache/software-center/xapian$ ls
flintlock       postlist.baseB  record.baseB    spelling.baseB  termlist.baseB
iamchert        postlist.DB     record.DB       spelling.DB     termlist.DB
postlist.baseA  record.baseA    spelling.baseA  termlist.baseA

Das Software Center verwendet Xapian, um Informationen für die schnelle Suche zu indizieren.

Heruntergeladene Dateien für andere verwandte Dienstprogramme

Einige zusätzliche Dienstprogramme, die mit dem APT-System arbeiten, laden Dateien im Rahmen ihres Betriebs herunter und speichern sie. apt-filewird nicht standardmäßig in Ubuntu installiert, kann aber aus dem apt-file-Installieren Sie apt-file Paket installiert werden .

apt-filespeichert Informationen darüber, welche Dateien von welchen Paketen bereitgestellt werden (auch für Pakete, die nicht lokal installiert sind). Diese Informationen zum Inhalt von Paketen werden durch Herunterladen komprimierter ContentsDateien abgerufen :

$ sudo apt-file update
Downloading complete file http://us.archive.ubuntu.com/ubuntu/dists/utopic/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 29.6M  100 29.6M    0     0   856k      0  0:00:35  0:00:35 --:--:--  832k

Wenn apt-file updatees als root ausgeführt wird (wie oben), werden diese Dateien in das /var/cache/apt/apt-fileVerzeichnis heruntergeladen . Um dies zu entdecken, lief ich:

$ sudo updatedb
$ locate Contents-amd64
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic-proposed_Contents-amd64.gz
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic_Contents-amd64.gz

Beachten Sie, dass die Informationen in diesem Beitrag eine Reihe von Beispielen für Datendateien enthalten, die von Paketverwaltungsdienstprogrammen unter Ubuntu heruntergeladen und gespeichert wurden. Sie sollten jedoch nicht als vollständige Liste der Fälle betrachtet werden, in denen solche Dateien verwendet und gespeichert werden.

Eliah Kagan
quelle
Vielen Dank. Haben apt-cache oder / und apt-fileauch viele Dinge herunterladen? Wenn ja, wo sind sie?
Tim
Was bedeutet "Wenn ein Programm, das das APT-System für die automatische Abhängigkeitsauflösung und das Abrufen von Paketen verwendet oder implementiert, Pakete herunterlädt, werden diese dort gespeichert." bedeuten?
Tim
@Tim Ich habe meine Antwort erheblich erweitert, so dass ich hoffe, diese Fragen (und mehr) richtig zu beantworten. Wie immer ist Ihr Feedback sehr willkommen - besonders wenn etwas unklar ist.
Eliah Kagan
Dank "apt-cache fragt die Paketdatenbank ab", ist die Datenbank online oder auf dem lokalen Computer? Benötigt apt-cache Zugang zum Internet?
Tim
1
@Orian (Ich bin froh, dass diese Antwort geholfen hat!) Sie können den Stern auf die Frage klicken. Es liegt knapp unter der Punktzahl und den Abstimmungspfeilen der Frage. Dann erscheint die Frage auf der Registerkarte Favoriten Ihres Profils . Es können nur Fragen bevorzugt werden. Bei dieser Antwort handelt es sich derzeit um die einzige Frage. Andere werden möglicherweise veröffentlicht - obwohl Sie sich diese wahrscheinlich auch ansehen möchten, da neue Antworten manchmal Informationen über neue Entwicklungen in einem Thema enthalten. Sie können die Lesezeichen Ihres Browsers verwenden, die auch für Antworten funktionieren. Verwenden Sie den Freigabelink unter der Antwort, um die Seite mit einer bestimmten Antwort zu öffnen.
Eliah Kagan