Безопасно ли вручную удалять содержимое / 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 будет обрабатывать зависимости, так что вы все равно можете установить вещь-с-тоннами-deps.deb, а затем запустить apt-get -f installдля получения зависимостей.

Полностью экстремальный ответ 1

Поскольку речь шла о встроенной системе, 90% основных репозиториев не принесут вам никакой пользы. Для этого вы можете запустить свой собственный сервер репозитория apt-get. Посмотрите эту ссылку . Это не легко, и это 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
Страница man apt-get четко описывает функцию cleanas * clean, которая очищает локальный репозиторий от полученных файлов пакетов. Он удаляет все, кроме файла блокировки, из / var / cache / apt / archives / и /var/cache/apt/archives/partial/.* Если это опасно, не будет такой функции для очистки.
Анвар


1

Сохраните pkgcache.binи srcpkgcache.bin, вы можете безопасно удалить остальные. Не трогайте каталоги!


Хорошо спасибо. Я временно переместил *bin.*файлы в резервную папку. Однако почему apt-get управляет кешем внутри кеша? Каталог кэша должен быть временным хранилищем по своей природе.
30

Эта проблема уже исправлена. :) Смотрите здесь
Frantique

Конечно, вы можете удалить pkgcache.bin и srcpkgcache.bin, ничего не происходит. Обновление apt-get воссоздает их.
Томас М

0

Конечно, вы можете создать NFS-ресурс (сетевую файловую систему) для этого. Оставьте эти файлы на сервере и подключайте общий ресурс только тогда, когда вы хотите обновить / установить пакеты. Во встроенных средах установка в любом случае обычно будет относительно статичной.

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


Технически это должно работать, за исключением того, что вы не имеете полного контроля над тем, когда apt запускается. Если вы используете что-то подобное, вам нужно убедиться, что вы отключили «автоматизированные» задачи, такие как задания cron, которые запускают apt-get update.
Котейр
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.