Czy bezpiecznie jest ręcznie usunąć zawartość / var / cache / apt?

21

W systemie osadzonym z bardzo ograniczonym miejscem na dysku mam /var/cache/aptpełny folder z około 700 MB srcpkgcache.bin.*i kilkoma dużymi *.binplikami.

Występowanie sudo apt-get cleannie robiło widocznej różnicy.

Czy bezpiecznie jest ręcznie usunąć te *.bin*pliki?

tak
źródło
6
Począwszy od Ubuntu 14.04, usuwanie *.binplików ze wspomnianego folderu jest całkowicie bezpieczne - zakładając, że nie jest uruchomiony żaden proces związany z apt. Następny apt-get updatezregeneruje *.binpliki. To pytanie zdecydowanie nie dotyczy plików /var/cache/apt/archives, ale plików /var/cache/apt/*.bin. Duża różnica. Pierwsze z nich można wyczyścić, wydając apt-get clean, drugie należy usunąć ręcznie. Najwyraźniej osoby głosujące za zamknięciem pytania nie przeczytały pytania poprawnie. Niestety nie mogę głosować za ponownym otwarciem po przyznaniu części mojego przedstawiciela nagrodami.
0xC0000022L
3
To nie jest duplikat. Połączona odpowiedź dotyczy podkatalogu archiveswewnątrz /var/cache/apt/, ta dotyczy *.bin*plików.
Olaf Dietsche,
1
Możliwy duplikat Usuń pliki z / var / cache / apt (NOT archives)
Eliah Kagan

Odpowiedzi:

11

Nie całkiem. Pliki te pomagają Twojemu systemowi określić, co jest dostępne, a co nie. Opróżnienie tego katalogu spowoduje uszkodzenie systemu apt-get. Oto kilka wskazówek.

Po pierwsze, automatyczne czyszczenie

dodać

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

do końca /etc/apt/apt.conf. Spowoduje to, że procesy apt i dpkg zajmą więcej czasu, ale sprawi, że katalog pamięci podręcznej będzie zawsze czysty.

Następnie usuń archiwa

Zacznij od usunięcia i wyłączenia wszystkich archiwów źródłowych (których nie używasz). W systemie wbudowanym prawdopodobnie ich nie potrzebujesz. Następnie usuń wszystkie archiwa, które nie są używane. Możesz uruchomić, apt-cache policyaby dowiedzieć się, z jakiego repo pochodzi pakiet, jeśli nie jesteś pewien.

Więcej Usuwanie archiwów

Niektóre umowy PPA są przerażające z powodu posiadania dużej liczby pakietów, gdy potrzebujesz tylko 1 lub 2. Spróbuj wyłączyć te umowy PPA i po prostu ręcznie zainstalować pliki deb. W takich przypadkach oszczędzasz miejsce, ale tracisz automatyczną aktualizację. Należy pamiętać, że dpkg będzie obsługiwał zależności, więc nadal można zainstalować plik rzecz-z-ton-z-deps.deb, a następnie uruchomić, apt-get -f installaby pobrać zależności.

Całkowicie ekstremalna odpowiedź 1

Ponieważ mówiliśmy o systemie wbudowanym, 90% głównych repozytoriów nic ci nie da. Aby to zrobić, możesz uruchomić własny serwer repozytorium apt-get Zobacz ten link . To nie jest łatwe i jest to PIA dla tylko jednej maszyny. Ale jeśli masz kilka takich maszyn, jest to całkowicie tego warte. (Twój serwer apt repo może obsługiwać tylko podzbiór pakietów, których faktycznie używasz. Nie musisz kopiować całości)

Całkowicie ekstremalna odpowiedź 2

Jeśli przestrzeń jest tak dużym problemem, możesz wyłączyć apt wszystko razem i powrócić do ręcznej instalacji przez dpkg. Musiałem to zrobić na kilku systemach wbudowanych. Działa, ale to koszmar administratora.

Coteyr
źródło
To świetna odpowiedź (szczególnie te skrajnie ekstremalne), ale /etc/apt/apt.conf już nie istnieje w Ubuntu 14.04. Jaka jest obecnie najlepsza praktyka?
zachaysan
1
JUst utwórz plik, jeśli nie istnieje. To będzie nadal czytane.
coteyr
5
Dlaczego piszesz, że usuwanie *.binplików nie jest bezpieczne ? Każde uruchomienie apt-get updatespowoduje ponowne wygenerowanie tych plików od zera (przetestowano). Na przykład mój przypadek użycia polega na tym, że chcę utworzyć szablony kontenerów LXC i chcę maksymalnie usunąć archiwum. Nie widzę żadnego powodu, dla którego jest to niebezpieczne. Twoja odpowiedź nie wskazuje powodu, po prostu stwierdza , że jest niebezpieczna. Testowano, że jest całkowicie bezpieczny na Ubuntu 14.04.
0xC0000022L
1
Mówisz, że włączenie apt-cache cleando wywołania dpkg spowoduje apt-cache cleanwyczyszczenie pamięci podręcznej, ale użytkownik twierdzi, że niczego dla nich nie wyczyścił. Również twoja odpowiedź jest całkowicie błędna, ponieważ dpkg nie używa /var/cache/apt/*zawartości do uzyskania informacji na temat statystyki pakietu.
Anwar,
1
Strona apt-get wyraźnie opisuje funkcję, cleanponieważ * clean czyści lokalne repozytorium pobranych plików pakietów. Usuwa wszystko oprócz pliku blokady z / var / cache / apt / archives / i /var/cache/apt/archives/partial/.* Jeśli jest to niebezpieczne, nie byłoby takiej funkcji do wyczyszczenia.
Anwar
3

Możesz oczywiście usunąć pkgcache.bini srcpkgcache.binnic się nie dzieje. Wystarczy uruchomić, apt-get updateaby je ponownie utworzyć.

Tomas M.
źródło
... i czy to prawda niezależnie od usunięcia .debplików?
einpoklum
1

Zachowaj pkgcache.bini srcpkgcache.bin, możesz bezpiecznie usunąć pozostałe. Nie dotykaj katalogów!

Frantique
źródło
Ok dzięki. Tymczasowo przeniosłem *bin.*pliki do folderu kopii zapasowej. Dlaczego jednak apt-get zarządza pamięcią podręczną w pamięci podręcznej? Katalog pamięci podręcznej powinien być z natury tymczasowym miejscem do przechowywania.
ysap
Ten problem został już zgłoszony. :) Zobacz tutaj
Frantique
Oczywiście możesz usunąć pkgcache.bin i srcpkgcache.bin, nic się nie dzieje. Aktualizacja apt-get odtwarza je.
Tomas M
0

Możesz oczywiście stworzyć do tego udział NFS (sieciowy system plików). Pozostaw te pliki na serwerze i zamontuj udział tylko wtedy, gdy chcesz zaktualizować / zainstalować pakiety. W środowiskach osadzonych instalacja i tak zwykle będzie względnie statyczna.

sshfs to kolejna dobra opcja, jest znacznie łatwiejsza w konfiguracji (w zasadzie wymaga tylko SSH, który jest standardem), ale ma więcej narzutu (wolniej).

jippie
źródło
To powinno technicznie zadziałać, ale nie masz pełnej kontroli nad uruchomieniem apt. Jeśli używasz czegoś takiego, musisz upewnić się, że wyłączysz „automatyczne” zadania, takie jak zadania cron, które uruchamiają apt-get update.
coteyr