Перейти к основному содержимому
Установка и удаление пакетов

Установка и удаление пакетов

к сведению

Чтобы установить или удалить пакет, есть соответственные команды:

  • apt install пакет
  • apt remove пакет

В обоих случаях apt установит или удалит необходимые зависимости.

Команда apt purge пакет выполняет полное удаление, в том числе удаление конфигурационных файлов.

Установка одинакового набора пакетов на несколько устройств

1. Получить список установленных пакетов на устройстве, которое будет шаблоном

dpkg --get-selections >pkg-list

После этого в файле pkg-list покажется список всех установленных пакетов.

2. Переслать pkg-list на другие устройства и ввести следующие команды:

# Обновить базу известных пакетов для dpkg 
avail=`mktemp`
apt-cache dumpavail > "$avail"
dpkg --merge-avail "$avail"
rm -f "$avail"

# Обновить выбор пакетов dpkg
dpkg --set-selections < pkg-list

# Установить пакеты, выбранные с помощью dpkg
apt-get dselect-upgrade
  • Первая команда записывает список доступных пакетов в базу данных dpkg.
  • Команда dpkg --set-selections загружает список пакетов, которые нужно установить.
  • Команда apt-get выполняет необходимые операции.

Используемая команда не имеет аналога в aptitude.

Удаление и установка одной командой

apt (или apt-get, или aptitude) может установить одни пакеты и удалить в рамках одной команды, используя специальные суффиксы:

  • для команды apt install можно добавить - к именам пакетов, которые нужно удалить
  • для команды apt remove можно добавить + к именам пакетов, которые нужно установить

Следующие примеры демонстрируют два разных способа установить пакет1 и удалить пакет2.

apt install пакет1 пакет2-
apt remove пакет1+ пакет2

Также этим способом можно предотвращать установку пакетов, которые по умолчанию были бы включены в установку — например, зависимости Recommends. Менеджер зависимостей использует указанные суффиксы в качестве информации для поиска альтернативных решений.

Переустановка пакета

Система может повредиться из-за удаления или изменения файла, принадлежащего пакету. Чтобы вернуть прежнее состояние таких файлов, нужно переустановить соответствующий пакет.

Обычно пакетный менеджер отказывается переустанавливать пакет, если он уже установлен.

Опция --reinstall для apt и apt-get переопределяет это поведение. Следующий пример устанавливает или переустанавливает пакет postfix, даже если он уже установлен:

apt --reinstall install postfix

Аналогичная команда для aptitude: aptitude reinstall postfix.

Проблемы с переустановкой не возникает с dpkg, но администратор редко использует его напрямую.

осторожно

Восстановление пакетов через apt --reinstall на системе, подвергшейся атаке, не восстановит систему такой, какой она была до атаки.

Эти команды не восстанавливают конфигурационные файлы. Однако следующая команда во время установки предложит откатить изменения в конфигурационном файле или восстановить удалённый файл:

apt --reinstall -o Dpkg::Options::="--force-confask,confmiss" install пакет

Некоторые пакеты не поставляют конфигурационные файлы в директории /etc, а создают их в процессе инициализации путём копирования из других файлов или генерации скриптом.

Так, файл /etc/inputrc копируется из файла /usr/share/readline/inputrc. В таких случаях приведённые выше команды работать не будут.

Версия пакета

Если в файле sources.list указаны несколько источников, то при установке возможно выбрать версию пакета, которую нужно установить.

Можно указать требуемый номер версии пакета:

  • в команде apt install пакет=версия,
  • в команде apt install пакет дистрибутив.

Во втором случае указывается дистрибутив, содержащий версию пакета.

С помощью этой команды можно вернуться к старой версии пакета, если она доступна в одном из источников, указанных в sources.list.

Установка без репозитория

Менеджер пакетов apt так же можно использовать для установки без репозитория, если пакет передан в виде файла .deb

Чтобы установить пакет и связанные с ним зависимости, существует команда:

apt install ./путь-к-пакету.deb

Компонент ./ в этом примере важен, так как он даёт понять, что мы указываем путь к файлу, а не имя пакета из репозитория.

Необходимые зависимости должны быть доступны в репозитории.

Кеширование пакетов .deb

apt сохраняет копию каждого загруженного файла .deb в директорию /var/cache/apt/archives/.

Если обновления выполняются часто, объем директории может быстро вырасти за счёт множественных версий одних и тех же пакетов. Чтобы провести чистку, можно использовать две команды:

  • apt-get clean очищает директорию полностью
  • apt-get autoclean удаляет только те пакеты, которые больше нельзя скачать (потому что их нет в репозитории)

С помощью конфигурационного параметра APT::Clean-Installed можно защитить от удаления .deb-файлы, которые сейчас установлены.

Отслеживание пакетов, установленных автоматически

apt отслеживает пакеты, которые были установлены автоматически как зависимости. Как правило, это библиотеки.

Эта информация позволяет вычислить все зависимости во время удаления пакета, и удалить только то, что больше не нужно. Зависимости, установленные вручную, будут сохранены.

примечание

Команды удаления лишних зависимостей:

  • apt-get autoremove
  • apt autoremove

У aptitude нет аналогичной команды, потому что эта программа удаляет лишние пакеты сразу, как только обнаруживает.

Все три программы показывают сообщение, явно указывая список затрагиваемых пакетов.

Можно автоматическими отмечать пакеты, которые не нужны вне зависимостей и которые могут быть удалены при удалении основного пакета.

  • apt-mark auto пакет помечает пакет автоматическим
  • apt-mark manual пакет делает обратное

Скачивание пакетов без установки

  • apt download пакет скачает .deb пакета,
  • apt source --download-only пакет скачает исходные коды программы, но не распакует их.

Поиск зависимостей

  • apt-rdepends пакет рекурсивно найдет все зависимости для этого пакета (какие пакеты ему нужны),
  • apt rdepends пакет найдет обратные зависимости (каким пакетам он нужен).
примечание

apt rdepends встроен в пакет apt.

apt-rdepends — это отдельная утилита, которая возможно требует установки.

Отличия в aptitude

Команды aptitude markauto и aptitude unmarkauto работают аналогично, но предлагают больше возможностей для одновременной отметки нескольких пакетов.

Также aptitude позволяет видеть и изменять этот флаг на нескольких пакетах.

Если нужно узнать, почему именно тот или иной пакет был автоматически установлен, можно ввести aptitude why пакет

Пример вывода:

$ aptitude why python3-debian
i aptitude Suggests apt-xapian-index
p apt-xapian-index Depends python3-debian (>= 0.1.14)