Ist es sicher, den Inhalt von / var / cache / apt manuell zu löschen?

21

Auf einem eingebetteten System mit einem sehr begrenzten Speicherplatz habe ich den Ordner /var/cache/aptmit etwa 700 MB srcpkgcache.bin.*und ein paar großen *.binDateien voll .

Die Aufführung sudo apt-get cleanmachte keinen sichtbaren Unterschied.

Ist es sicher, diese *.bin*Dateien manuell zu löschen ?

ysap
quelle
6
Ab Ubuntu 14.04 ist es absolut sicher, die *.binDateien in diesem Ordner zu entfernen - vorausgesetzt, es wird derzeit kein mit apt zusammenhängender Prozess ausgeführt. Der nächste apt-get updatewird die *.binDateien neu generieren. Bei dieser Frage geht es entschieden nicht um die Dateien in /var/cache/apt/archives, sondern um die Dateien /var/cache/apt/*.bin. Großer Unterschied. Ersteres kann durch Ausgabe gereinigt werden apt-get clean, letzteres muss manuell entfernt werden. Offensichtlich haben diejenigen, die zum Schließen der Frage abstimmen, die Frage nicht richtig gelesen . Leider kann ich nicht für die Wiedereröffnung stimmen, nachdem ich einen Teil meiner Repräsentanten mit Kopfgeldern belohnt habe.
0xC0000022L
3
Dies ist kein Duplikat. Die verknüpfte Antwort ist über das Unterverzeichnis archivesinnerhalb /var/cache/apt/, dieser über die ist *.bin*Dateien.
Olaf Dietsche
1
Mögliches Duplikat von Dateien aus / var / cache / apt entfernen (NICHT Archive)
Eliah Kagan

Antworten:

11

Nicht wirklich. Mithilfe dieser Dateien kann Ihr System feststellen, was verfügbar ist und was nicht. Das Leeren dieses Verzeichnisses führt zu einem Defekt des apt-get-Systems. Hier sind ein paar Tipps.

Erstens, automatische Reinigung

füge hinzu ein

DPkg::Post-Invoke { "apt-get clean"; };

bis zum Ende von /etc/apt/apt.conf. Apt- und dpkg-Prozesse werden dadurch länger dauern, aber Ihr Cache-Verzeichnis ist immer sauber.

Als nächstes Archive entfernen

Entfernen und deaktivieren Sie zunächst alle Quellarchive (die Sie nicht verwenden). Auf einem eingebetteten System benötigen Sie sie wahrscheinlich nicht. Entfernen Sie anschließend alle nicht verwendeten Archive. Sie können apt-cache policyherausfinden, von welchem ​​Repo ein Paket stammt, wenn Sie sich nicht sicher sind.

Mehr Entfernen von Archiven

Einige PPAs sind entsetzlich, weil sie eine große Anzahl von Paketen enthalten, wenn Sie nur 1 oder 2 benötigen. Deaktivieren Sie diese PPAs und installieren Sie die deb-Dateien einfach manuell. In diesen Fällen sparen Sie Speicherplatz, verlieren jedoch die automatische Aktualisierung. Denken Sie daran, dass dpkg Abhängigkeiten handhabt. Sie können also weiterhin thing-with-tons-of-deps.deb installieren und dann ausführen apt-get -f install, um die Abhängigkeiten abzurufen.

Völlig extreme Antwort 1

Da es sich um ein Embedded-System handelt, nützen Ihnen 90% der Haupt-Repos nichts. Um dies zu handhaben, können Sie Ihren eigenen Apt-Get-Repo-Server betreiben. Siehe diesen Link . Es ist nicht einfach, und es ist eine PIA für nur eine Maschine. Aber wenn Sie mehrere dieser Maschinen haben, lohnt es sich auf jeden Fall. (Sie können nur eine Teilmenge der Pakete hosten, die Sie tatsächlich verwenden. Sie müssen nicht das Ganze spiegeln.)

Völlig extreme Antwort 2

Wenn der Speicherplatz wirklich ein so großes Problem darstellt, können Sie apt all together deaktivieren und zur manuellen Installation über dpkg zurückkehren. Ich musste dies auf mehreren eingebetteten Systemen tun. Es funktioniert, aber es ist ein Administrator-Albtraum.

coteyr
quelle
Dies ist eine großartige Antwort (besonders die extremsten), aber /etc/apt/apt.conf existiert in Ubuntu 14.04 nicht mehr. Was ist die aktuelle Best Practice?
Zachaysan
1
JUst die Datei erstellen, wenn sie nicht existiert. Es wird noch gelesen.
Coteyr
5
Bitte, warum schreibst du, ist es nicht sicher, die *.binDateien zu entfernen ? Bei jeder Ausführung von apt-get updatewerden diese Dateien von Grund auf neu erstellt (getestet). Mein Anwendungsfall ist beispielsweise, dass ich LXC-Containervorlagen erstellen und das Archiv so weit wie möglich entpacken möchte. Ich kann keinen Grund dafür erkennen, dass es unsicher ist. Und Ihre Antwort gibt keinen Grund an, sondern gibt nur an , dass es unsicher ist. Getestet, dass es unter Ubuntu 14.04 absolut sicher ist .
0xC0000022L
1
Sie sagen, dass die Aufnahme apt-cache cleanin einen dpkg-Aufruf zu einem saubereren Cache führt, aber der Benutzer sagt, apt-cache cleandass er nichts für sie bereinigt hat. Auch Ihre Antwort ist völlig falsch, da dpkg keine /var/cache/apt/*Inhalte verwendet, um sich über die Paketstatistik zu informieren.
Anwar
1
Die apt-get-Manpage beschreibt klar und deutlich die Funktion von cleanas * clean, mit der das lokale Repository von abgerufenen Paketdateien gelöscht wird. Es entfernt alles außer der Sperrdatei aus / var / cache / apt / archives / und /var/cache/apt/archives/partial/.
Anwar
3

Du kannst natürlich löschen pkgcache.binund srcpkgcache.bines passiert nichts. Führen Sie apt-get updatesie einfach aus , um sie neu zu erstellen.

Tomas M
quelle
... und ist das unabhängig vom Löschen der .debDateien?
einpoklum - wieder Monica
1

Behalte das pkgcache.binund srcpkgcache.bin, du kannst die anderen sicher löschen. Berühren Sie nicht die Verzeichnisse!

Frantique
quelle
OK danke. Ich habe die *bin.*Dateien vorübergehend in einen Sicherungsordner verschoben . Warum verwaltet apt-get den Cache im Cache? Ein Cache-Verzeichnis sollte von Natur aus ein temporärer Speicher sein.
ysap
Dieses Problem ist bereits behoben. :) Siehe hier
Frantique
Du kannst natürlich pkgcache.bin und srcpkgcache.bin löschen, nichts passiert. apt-get update erstellt sie neu.
Tomas M
0

Sie können hierfür natürlich eine NFS-Freigabe (Netzwerk-Dateisystem) anlegen. Lassen Sie diese Dateien auf einem Server und hängen Sie die Freigabe nur ein, wenn Sie Pakete aktualisieren / installieren möchten. In eingebetteten Umgebungen ist die Installation normalerweise ohnehin relativ statisch.

sshfs ist eine weitere gute Option, ist viel einfacher einzurichten (erfordert im Grunde nur SSH, was Standard ist), hat aber mehr Overhead (langsamer).

jippie
quelle
Dies sollte technisch funktionieren, es sei denn, Sie haben keine vollständige Kontrolle darüber, wann apt ausgeführt wird. Wenn Sie so etwas verwenden, müssen Sie sicherstellen, dass Sie die "automatisierten" Aufgaben wie Cron-Jobs, die apt-get update ausführen, deaktivieren.
Coteyr