Установка и удаление пакетов
Чтобы установить или удалить пакет, есть соответственные команды:
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)