Чи безпечно вручну видаляти вміст / var / cache / apt?


21

У вбудованій системі з дуже обмеженим дисковим простором у мене папка, яка /var/cache/aptмістить 700 Мб srcpkgcache.bin.*і кілька великих *.binфайлів.

Виконання sudo apt-get cleanне зробило помітної різниці.

Чи безпечно видаляти ці *.bin*файли вручну ?


6
Як і в Ubuntu 14.04, цілком безпечно видаляти *.binфайли у вказаній папці - якщо припустимо, що зараз не запущений процес, пов'язаний з apt. Наступне apt-get updateвідновить *.binфайли. Це питання , безумовно, стосується не файлів /var/cache/apt/archives, а файлів /var/cache/apt/*.bin. Велика різниця. Перші можна прибрати, видавши apt-get clean, останні потрібно видалити вручну. Зрозуміло, що ті, хто голосує за закриття питання, неправильно не прочитали питання На жаль, я не можу проголосувати за повторне відкриття після вручення деяких моїх представників у приємності.
0xC0000022L

3
Це не дублікат. Пов'язана відповідь стосується підкаталогу archivesвсередині /var/cache/apt/, ця - про *.bin*файли.
Олаф Дієтше

Відповіді:


11

Не зовсім. Ці файли допомагають вашій системі визначити, що є, а що ні. Видалення цього каталогу призведе до порушення роботи системи apt-get. Ось пара порад.

По-перше, авточистка

додати а

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

до кінця /etc/apt/apt.conf. Це зробить процеси apt і dpkg зайняти більше часу, але зробить це так, щоб ваш каталог кешу завжди був чистим.

Далі, Видаліть архіви

Почніть з видалення та відключення всіх джерел архівів (якими ви не користуєтесь). У вбудованій системі вам, швидше за все, вони не потрібні. Далі видаліть усі архіви, які не використовуються. Ви можете запустити, apt-cache policyщоб зрозуміти, з чого складається репо-пакет, якщо ви не впевнені.

Детальніше Видалення архівів

Деякі PPA жахливо ставляться до величезної кількості пакетів, коли вам потрібно лише 1 або 2. Спробуйте вимкнути ці PPA та просто встановити файли deb вручну. Ви економите місце в цих випадках, але ви втрачаєте автоматичне оновлення. Майте на увазі, що dpkg буде обробляти залежності, тому ви все одно можете встановити thing-with-tons-of-deps.deb, а потім запустити, apt-get -f installщоб отримати залежності.

Повністю екстремальний відповідь 1

Оскільки говорили про вбудовану систему, 90% основних репостів не принесуть вам користі. Щоб вирішити це, ви можете запустити свій власний сервер apt-get repo. Перейдіть за цим посиланням . Це непросто, і це PIA для однієї машини. Але якщо у вас є кілька цих машин, це абсолютно варто. (У вас підходящий сервер репо може розміщувати лише підмножину пакунків, якими ви фактично користуєтесь. Вам не потрібно відображати все це)

Повністю екстремальний відповідь 2

Якщо простір справді має велике значення, ви можете відключити apt все разом і повернутися до встановлення вручну через dpkg. Мені довелося це робити в декількох вбудованих системах. Це працює, але це адмін кошмар.


Це чудова відповідь (особливо абсолютно крайні), але /etc/apt/apt.conf вже не існує в Ubuntu 14.04. Яка найкраща практика в даний час?
зачаян

1
ЯКЩО зробіть файл, якщо його не існує. Він все одно буде прочитаний.
coteyr

5
Будь ласка, чому ви пишете, що видаляти *.binфайли не безпечно ? Будь-який запуск apt-get updateрегенерує ці файли з нуля (перевірено). Наприклад, мій випадок використання полягає в тому, що я хочу створити шаблони контейнерів LXC і хочу максимально зняти архів. Я не бачу причин, тому що це небезпечно. І ваша відповідь не вказує на причину, лише зазначає, що це небезпечно. Перевірено, що це абсолютно безпечно на Ubuntu 14.04.
0xC0000022L

1
Ви говорите, що включення apt-cache cleanв дзвінок dpkg призведе до отримання більш чистого кешу, але користувач каже, що apt-cache cleanнічого не очистив. Також ваша відповідь абсолютно неправильна, оскільки dpkg не використовує /var/cache/apt/*контент для отримання інформації про статистику пакету.
Анвар

1
Сторінка apt-get чітко описує функцію cleanяк * clean очищає локальне сховище отриманих файлів пакетів. Він видаляє все, крім файлу блокування, з / var / cache / apt / archives / та /var/cache/apt/archives/partial/.* Якщо це небезпечно, чистити таку функцію не було б.
Анвар


1

Зберігайте pkgcache.binі srcpkgcache.bin, ви можете безпечно видалити інші. Не торкайся каталогів!


Добре, дякую. Я тимчасово перемістив *bin.*файли в папку резервного копіювання. Однак чому apt-get управляє кешем всередині кешу? Каталог кешу повинен бути тимчасовим сховищем за своєю природою.
ysap

Цю проблему вже зареєстровано. :) Дивіться тут
Frantique

Звичайно, можна видалити pkgcache.bin і srcpkgcache.bin, нічого не відбувається. apt-get update відтворює їх.
Томаш М

0

Звичайно, ви можете створити для цього NFS-спільний доступ (мережева файлова система). Залиште ці файли на сервері та змонтуйте спільний доступ лише тоді, коли ви хочете оновити / встановити пакети. У вбудованих середовищах установка зазвичай буде відносно статичною.

sshfs - ще один хороший варіант, його набагато простіше налаштувати (в основному потрібен лише SSH, який є стандартним), але він має більше накладних витрат (повільніше).


Це технічно повинно працювати, за винятком того, що ви не маєте повного контролю над тим, як працює засіб. Якщо ви використовуєте щось подібне, вам потрібно переконатися, що ви відключите «автоматизовані» завдання, такі як завдання cron, які виконують оновлення apt-get.
coteyr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.