Как пользоваться apt
Пакетный менеджер Apt или Advanced Package Tool используется во множестве дистрибутивов, основанных на Debian или Ubuntu, а таких дистрибутивов сейчас очень много. Этот пакетный менеджер поддерживает все необходимые функции, вы можете устанавливать и удалять пакеты, обновлять то, что было уже установлено, искать пакеты, устанавливать их из файла или загружать без установки. При этом все зависимости будут разрешаться автоматически.
Утилита apt ничем не уступает пакетному менеджеру yum, используемому в RPM дистрибутивах, да, здесь все ещё не поддерживается частичное обновление пакетов, как в Zypper, но в целом всё выглядит очень неплохо. В этой статье мы подробно рассмотрим как пользоваться apt в Linux для решения задач работы с программами.
Синтаксис и опции apt
Синтаксис команды apt очень простой и похож на другие команды Linux:
$ apt опции команда параметры_команды
Опции указывают общее поведение утилиты, команда — действие, которое надо выполнить, а в параметрах команды обычно передается имя пакета, с которым следует работать, например, установить или удалить. Вот основные опции утилиты:
- -v, —version — выводит версию утилиты;
- -h, —help — выводит справку по использованию утилиты;
- -y, —yes — автоматически отвечать «да» на все возникающие вопросы;
- —assume-no — автоматически отвечать «нет» на все возникающие вопросы;
- -d, —download-only — только скачать пакеты и больше ничего не делать;
- -f, —fix-broken — исправить недостающие зависимости;
- —no-download — ничего не загружать, использовать только пакеты из кэша;
- -s, —simulate — режим симуляции, никакие операции не выполняются, только выводится информация на экран;
- —allow-unauthenticated — позволяет установить пакеты, из репозиториев, для которых нет GPG подписи;
- —no-install-recommends — не устанавливать рекомендованные пакеты, по умолчанию будут установлены;
- -m, —ignore-missing — игнорировать пакеты, которые существует;
- -q, —quiet — выводить минимум информации, не показывать прогресс бар;
- -V, —verbose-versions — показывать полные версии обновленных пакетов;
- —only-upgrade — не устанавливать новые пакеты, только обновлять;
- —allow-downgrades — разрешить откатывать версию пакетов;
- —reinstall — переустановить пакет если он уже установлен;
А теперь давайте пройдёмся по командам apt, которые вы можете использовать:
- install — установить пакет;
- remove — удалить пакет, конфигурационные файлы, которые были изменены в вашей системе удалены не будут;
- purge — полностью удалить пакет, вместе со всеми его конфигурационными файлами;
- autoremove — очистить ненужные пакеты;
- autoclean — очистить кэш пакетов;
- update — обновить списки пакетов из репозиториев;
- upgrade — обновить версию пакета до последней, если пакет не указан будут обновлены все пакеты;
- full-upgrade — полное обновление системы, включая удаление несовместимых или больше ненужных пакетов;
- list — список установленных пакетов;
- search — поиск пакетов;
- show — посмотреть информацию о пакете;
- download — скачать пакет в текущую папку;
- edit-sources — открыть с настройками репозиториев в текстовом редакторе.
- source — скачать исходный код пакета в текущую папку;
- build-dep — установить зависимости необходимые для сборки выбранного пакета;
Дальше рассмотрим несколько примеров работы с apt, которые пригодятся как начинающим, так и более опытным пользователям.
Как пользоваться apt
1. Обновление пакетов
Сначала давайте обновим список пакетов apt из репозиториев. Репозитории находятся на удалённых серверах и когда утилита apt ищет пакет для установки, естественно, что она не обращается ко всем репозиториям подряд чтобы узнать где он находится. В системе уже есть сохранённых кэш информации о том, какие пакеты вообще есть и где их можно скачать. Для обновления этого кэша используйте команду update:
Во время загрузки URL репозиториев обозначаются специальными префиксами, вот что они означают:
- Hit (Сущ) — список не изменился с момента предыдущей загрузки;
- Ign (Игн) — репозиторий игнорируется, либо он слишком новый, либо произошла незначительная ошибка во время загрузки;
- Get(Пол) — доступна новая версия и она будет загружена.
Когда кэш обновлен вы можете посмотреть для каких пакетов доступны обновления:
Аналогично можно посмотреть установленные пакеты apt:
sudo apt list —all-versions
Затем можно обновить все пакеты в системе:
как скачать пакет без установки
Иногда может потребоваться скачать пакет, не устанавливая его.
Это довольно несложная процедура, но зачастую трудно вспомнить или понять, как это сделать.
Давайте расмотрим её на примере двух дистрибутивов CentOS и Debian/Ubuntu.
Для Debian/Ubuntu будем использовать стандартный менеджер пакетов с коровьей силой, он же apt.
У apt-get есть незамысловатая опция download, которая скачает пакет в текущую директорию без установки. Так же есть опция -d, аналогична download.
sudo apt-get download apt Get:1 Downloading apt 0.9.8.2 [1,314 kB] Fetched 1,314 kB in 0s (2,152 kB/s) ls -la apt_0.9.8.2_amd64.deb -rw-r--r-- 1 root root 1313670 Jun 6 21:39 apt_0.9.8.2_amd64.deb
Если вы уже установили пакет, то его скачанный файл можно достать из
Для CentOS/RedHat/Fedora есть стандартная утилита yumdownloader с длинным списком опций.
Без опций делает то же, что и команда apt-get download. Директорию, куда yumdownloader положит пакет можно задать опцией –destdir
sudo yumdownloader yum --destdir=/tmp Loaded plugins: fastestmirror, presto Loading mirror speeds from cached hostfile * base: centos-mirror.rbc.ru * epel: be.mirror.eurid.eu * extras: centos-mirror.rbc.ru * rpmforge: apt.sw.be * updates: centos-mirror.rbc.ru yum-3.2.29-40.el6.centos.noarch.rpm ls -la /tmp/yum-3.2.29-40.el6.centos.noarch.rpm -rw-r--r-- 1 root root 1019540 Feb 23 12:50 /tmp/yum-3.2.29-40.el6.centos.noarch.rpm
Установленные файлы пакетов находятся в /var/cache/yum/arch/release/repo/packages/
Также для yum есть плагин с незамысловатым названием: yum-downloadonly
Он добавляет yum две опции: –downloadonly и –downloaddir
How to download deb packages using apt in Ubuntu and Debian
apt (and apt-get) is the default package manager for Ubuntu and Debian. apt or Advanced Packaging Tool can search, download, and install deb packages along with the dependencies from its package repositories.
apt has the download-only option, which will only download these packages without installing them. The option is helpful if you want to use the deb files for purposes other than to install them.
Steps to only download deb packages and dependencies using apt or apt-get:
$ sudo apt clean [sudo] password for user:
$ sudo apt search mysql Sorting. Done Full Text Search. Done akonadi-backend-mysql/hirsute,hirsute 4:20.12.3-0ubuntu1 all MySQL storage backend for Akonadi apophenia-bin/hirsute 1.0+ds-8build1 amd64 Apophenia Statistical C Library -- binary package apophenia-doc/hirsute,hirsute 1.0+ds-8build1 all Apophenia Statistical C Library -- reference manual asterisk-mysql/hirsute 1:16.16.1~dfsg-1 amd64 MySQL database protocol support for the Asterisk PBX audiolink/hirsute,hirsute 0.05-4 all makes managing and searching for music easier automysqlbackup/hirsute,hirsute 2.6+debian.4-3 all daily, weekly and monthly backup for your MySQL database autopostgresqlbackup/hirsute,hirsute 1.1-1 all Automated tool to make periodic backups of PostgreSQL databases backup-manager/hirsute,hirsute 0.7.14-1.2 all command-line backup tool backupninja/hirsute,hirsute 1.2.1-1 all lightweight, extensible meta-backup system bacula-common-mysql/hirsute 9.6.7-3 amd64 network backup service - MySQL common files bacula-director-mysql/hirsute,hirsute 9.6.7-3 all network backup service - MySQL storage for Director ##### snipped
$ sudo apt --download-only --assume-yes install mysql-server Reading package lists. Done Building dependency tree. Done Reading state information. Done The following additional packages will be installed: libaio1 libcgi-fast-perl libcgi-pm-perl libevent-core-2.1-7 libevent-pthreads-2.1-7 libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-template-perl libmecab2 libprotobuf-lite23 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server-8.0 mysql-server-core-8.0 Suggested packages: libipc-sharedcache-perl mailx tinyca The following NEW packages will be installed: libaio1 libcgi-fast-perl libcgi-pm-perl libevent-core-2.1-7 libevent-pthreads-2.1-7 libfcgi-bin libfcgi-perl libfcgi0ldbl libhtml-template-perl libmecab2 libprotobuf-lite23 mecab-ipadic mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server mysql-server-8.0 mysql-server-core-8.0 0 upgraded, 20 newly installed, 0 to remove and 0 not upgraded. Need to get 29.1 MB of archives. ##### snipped Fetched 29.1 MB in 19s (1,525 kB/s) Download complete and in download only mode
$ ll /var/cache/apt/archives/ total 28524 drwxr-xr-x 3 root root 16384 Ogos 31 10:06 ./ drwxr-xr-x 3 root root 4096 Ogos 31 10:04 ../ -rw-r--r-- 1 root root 6972 Mac 23 05:18 libaio1_0.3.112-9ubuntu1_amd64.deb -rw-r--r-- 1 root root 10520 Jul 18 2019 libcgi-fast-perl_1%3a2.15-1_all.deb -rw-r--r-- 1 root root 186112 Okt 29 2020 libcgi-pm-perl_4.51-1_all.deb -rw-r--r-- 1 root root 89368 Jul 12 2020 libevent-core-2.1-7_2.1.12-stable-1_amd64.deb -rw-r--r-- 1 root root 7364 Jul 12 2020 libevent-pthreads-2.1-7_2.1.12-stable-1_amd64.deb -rw-r--r-- 1 root root 26076 Jan 12 2021 libfcgi0ldbl_2.4.2-2_amd64.deb -rw-r--r-- 1 root root 10744 Jan 12 2021 libfcgi-bin_2.4.2-2_amd64.deb -rw-r--r-- 1 root root 21604 Jan 31 2021 libfcgi-perl_0.79+ds-2_amd64.deb -rw-r--r-- 1 root root 59124 Dis 24 2020 libhtml-template-perl_2.97-1.1_all.deb -rw-r--r-- 1 root root 216892 Dis 8 2020 libmecab2_0.996-14build3_amd64.deb -rw-r--r-- 1 root root 189840 Mac 29 14:38 libprotobuf-lite23_3.12.4-1ubuntu2_amd64.deb -rw-r----- 1 root root 0 Apr 20 18:59 lock -rw-r--r-- 1 root root 6717648 Mei 19 2020 mecab-ipadic_2.7.0-20070801+main-3_all.deb -rw-r--r-- 1 root root 4384 Mei 19 2020 mecab-ipadic-utf8_2.7.0-20070801+main-3_all.deb -rw-r--r-- 1 root root 4916 Dis 8 2020 mecab-utils_0.996-14build3_amd64.deb -rw-r--r-- 1 root root 22016 Jul 26 22:25 mysql-client-8.0_8.0.26-0ubuntu0.21.04.3_amd64.deb -rw-r--r-- 1 root root 3918928 Jul 26 22:25 mysql-client-core-8.0_8.0.26-0ubuntu0.21.04.3_amd64.deb -rw-r--r-- 1 root root 7496 Ogos 23 2019 mysql-common_5.8+1.0.5ubuntu2_all.deb -rw-r--r-- 1 root root 9536 Jul 26 22:25 mysql-server_8.0.26-0ubuntu0.21.04.3_all.deb -rw-r--r-- 1 root root 1423236 Jul 26 22:25 mysql-server-8.0_8.0.26-0ubuntu0.21.04.3_amd64.deb -rw-r--r-- 1 root root 16211156 Jul 26 22:25 mysql-server-core-8.0_8.0.26-0ubuntu0.21.04.3_amd64.deb drwx------ 2 _apt root 4096 Ogos 31 10:06 partial/