Как я удаляю способный индекс пакета?

Я заметил со многими основанными на Debian/ubuntu изображениями докера, необходимо сделать apt-get update перед установкой любых пакетов. Кэш абсолютно ясен. Я чувствую, что должен сделать то же сам после того, как я делаю мой RUN apt-update && apt-get install -y whatever. Я не могу выяснить, как сделать это. Есть ли команда, или сделайте меня просто rm -rf q папка?

1
задан 29 June 2018 в 21:10

4 ответа

НЕ «очищайте» базу данных пакетов apt, если вы не обладаете высокой квалификацией и не знаете точно, что вы делаете (и почему). Ваша система Ubuntu нуждается в этом индексе пакетов для правильной работы менеджера пакетов.

Цель sudo apt update перед выполнением большинства действий с пакетом состоит в том, чтобы обновить базу данных пакета самой последней информацией перед запуском фактической процедуры, которую вы хотите выполнить. Это не позволяет apt запрашивать устаревшие или отозванные пакеты и сбивать вас с толку возникающими ошибками.

Преодолей это чувство. Это неправильно.

0
ответ дан 14 April 2019 в 14:50

Когда вы создаете образ докера, вы стараетесь сделать его как можно меньше. Поэтому тот, кто создает образ при установке пакета, удаляет кэш, чтобы сохранить его небольшим. В результате вы должны запустить apt-get update, если хотите установить какой-либо пакет.

И так как каждая выполняемая команда docker создает слой, и его содержимое будет оставаться «навсегда», после того, как вы закончите установку пакета, вы также захотите удалить кеш.

Два способа сделать это один из следующих:

  1. rm -rf /var/cache/apt/archives.

ИЛИ

  1. apt-get clean

очищает локальный репозиторий извлеченных файлов пакетов. Он удаляет все, кроме файла блокировки, из / var / cache / apt / archives / и /var/cache/apt/archives/partial/.

(источник: справочная страница)

9
ответ дан 3 December 2019 в 07:24

rm -rf / var / lib / apt / lists / *

Это в лучших практиках Docker :

при очистке кэша apt путем удаления / var / lib / apt / lists это уменьшает размер изображения, поскольку кеш apt не хранится в слое.

/ var / cache / apt / archives не содержит большого количества данных. Сравните du между этими двумя каталогами.

5
ответ дан 7 February 2020 в 01:49

Как сказано в ответе Дэвида, вы обычно apt-get clean или rm -rf /var/cache/apt/archives. При этом удаляется кеш пакетов, который, согласно мануалу, содержит сами загруженные пакеты.

Однако, согласно рекомендациям Docker, apt-get clean выполняется для вас на любом официальном образе Ubuntu/Debian.


Единственное, что осталось очистить в этом случае, это кеш индекса репозитория: вам нужно всего лишь

rm -rf /var/cache/apt/lists.

5
ответ дан 17 June 2020 в 15:03

Другие вопросы по тегам:

Похожие вопросы: