Время на прочтение
3 мин
Количество просмотров 286K
Долгое время меня глодало незнание того, как сделать некоторые элементарные вещи в дебиановских менеджерах пакетов, но, как часто бывает, спросить рядом было не у кого, а до написания куда-либо руки не доходили. И вот наконец вопросы вызрели и я написал свой вопрос в дебиановскую рассылку. Естественно оказалось что пропустил что-то очевидное, но и узнал много неочевидных полезностей, посему решил набросать шпаргалку, авось кому пригодится.
Краткая справка Debian администратора
Основное и общеизвестное
Получение информации о новых/обновлённых пакетах
sudo aptitude update
Обновление
sudo aptitude safe-upgrade
Поиск пакета по именам пакетов
aptitude search key_word
Поиск пакета по точному названию
aptitude search "^name$"
Поиск по описанию
aptitude search "?description("key_word")"
Информация о пакете
aptitude show package_name
Установка
sudo aptitude install package_name
Удаление
sudo aptitude remove package_name
Полное удаление (вместе с конфигами)
sudo aptitude purge package_name
Очистить кэш загруженных пакетов (освободить место)
aptitude autoclean # удалятся только пакеты неактуальных версий
aptitude clean # очистится весь кэш
Установка отдельно скачанного/созданного пакета (для создания пакета из сторонних исходников нужно использовать утилиту checkinstall с флагом -D)
sudo dpkg -i /path/to/package.deb
Для получения доп информации
man aptitude
sudo aptitude install aptitude-doc-en
и смотрим документацию (/usr/share/doc/aptitude/html/en/index.html), кому быструю справку по поисковым шаблонам, тому сюда — /usr/share/doc/aptitude/html/en/ch02s04.html. Если лень ставить доку, то в сети она есть.
Вводная на Debian Wiki: wiki.debian.org/Aptitude
А теперь то что не очевидно или требует полного прочтения документации
1. Как после update посмотреть какие пакеты будут обновлены?
aptitude search ?upgradable
также можно юзать (если поставить)
sudo daptup
но после его установки точно также будет себя вести и обычный update
2. Как узнать что изменилось в пакетах которые будут обновлены?
Можно пробовать
sudo aptitude changelog package_name
для каждого пакета.
Но лучше поставить apt-listchanges, тогда перед любой установкой обновлений будет показан список изменений, по умолчанию настройки не очень удобные, поэтому лучше перенастроить под себя, например, выбрать формат вывода (пока использую текст, при больших обновлениях наверно pager лучше), не слать писем, спрашивать подтверждения, выводить всю информацию. Для этого нужно запустить
sudo dpkg-reconfigure apt-listchanges
3. Что делать если обновление что-то поломало и нужно откатиться?
Отката нет, можно попробовать найти предыдущую версию пакета
sudo aptitude version package_name
и установить её
sudo aptitude install package_name=version
4. Как найти все пакеты установленные вручную?
есть вариант команды (aptitude search ‘~i!~M’), но к сожалению он не даёт желаемого результата, так что вопрос остаётся открытым, есть куча способов основанных на анализе логов
/var/log/aptitude (+ ротированные куски)
/var/log/installer/initial-status.gz
/var/log/dpkg.log (+ ротированные куски)
но простого и готового решения нет, да информация теоретически может быть потеряна при ротациях, нужно конфигурить
5. Как посмотреть список файлов в пакете?
если пакет установлен
dpkg -L package_name
для любых пакетов поставить apt-file и
apt-file list package_name
6. Как посмотреть какому пакету принадлежит файл?
dpkg -S file_name
7. Как удалить все пакеты, где есть key в названии пакета?
sudo aptitude purge ~ikey
8. Как удалить оставшиеся конфиги от удалённых пакетов?
sudo aptitude purge ~c
9. Как найти пакет пакет, в котором содержится файл lib.so:
apt-file search lib.so
10. Как сконвертировать rpm пакет в deb?
alien --to-deb /path/to/file.rpm
11. Как найти список установленных ядер?
dpkg --list linux-* | grep ii
12. Как установить пакет из testing или experimental?
На эту тему нужно писать отдельно (например так), но если кратко, то команды для этого есть
sudo aptitude -t testing package_name
или
sudo aptitude package_name/testing
13. Как удалить метапакет, но оставить одну из зависимостей?
придётся почитать документацию про ключ unmarkauto или глянуть сюда.
14. Как узнать что попало в файловую систему мимо системы управления пакетами?
Есть утилита cruft, хотя вопрос интерпретации результатов (файла report) пока открыт
sudo cruft -d / -r report --ignore /home --ignore /var --ignore /tmp
15. Какие есть дополнительные репозитории?
Debian — wiki.debian.org/UnofficialRepositories
Ubuntu — множество всяких PPA
16. Что есть ещё?
apt-cdrom
apt-spy
auto-apt. заметка на хабре
apt-key
apt-add-repository
Некоторые вещи умеет только apt-get
Есть альтернативные утилиты для управления пакетами, например wajig, который пытается вобрать в себя функционал всех остальных утилит.
17. Как найти пакеты зависящие от данного
apt-cache rdepends package_name
также может пригодится
aptitude why package_name
Благодарю всех кто помог своими советами в рассылке, жж (JackYF) и хабре ( run4way, sledopit, nazarpc, AgaFonOff, amarao, traaance, adrianopol, Karamax). Замечания и дополнения приветствуются.
Умение устанавливать, обновлять и удалять программное обеспечение относится к важнейшим навыкам работы с любой операционной системой. Поэтому изучение данного вопроса первостепенная задача для любого начинающего пользователя Linux, сразу после того, как он немного осмотрелся в системе. К сожалению, нет единого способа управления ПО, подходящего для всех дистрибутивов, разные семейства предполагают различные подходы, хотя общие принципы во многом совпадают. В данном материале мы будем разбирать вопрос применительно к системам основанным на Debian и Ubuntu.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Пакеты и репозитории
Слова, вынесенные в подзаголовок, знакомы любому пользователю Linux, но не все знают, что именно за ними кроется. Начнем с пакетов. Пакет – это архив специального формата, который содержит все необходимые приложению бинарные и конфигурационные файлы, информацию о том, как их следует разместить в файловой системе, данные о зависимостях пакета, а также список действий которые необходимо выполнить в процессе установки. Вы можете сами открыть любой пакет при помощи архиватора и посмотреть, что у него внутри.
Существуют различные форматы пакетов, наиболее распространенными из которых являются RPM (рекурсивный акроним RPM Package Manager, ранее Red Hat Package Manager) и DEB (сокращение от Debian). Первый используется в основанных на Red Hat/Fedora дистрибутивах, а также некоторых иных, например, OpenSUSE, второй – во всем многочисленном семействе систем на базе Debian и его производных, включая один из самых популярных дистрибутивов – Ubuntu.
Несмотря на разные форматы, общие принципы построения и управления пакетами в различных Linux системах совпадают, поэтому если вы овладеете приемами работы с одним форматом пакетов, то переучиться на другой не составит особого труда.
Еще одна особенность пакетов Linux вытекает из следования некоторым постулатам философии Unix, а именно каждый пакет содержит только необходимый минимум файлов и библиотек, все остальные необходимые ему компоненты указываются в качестве зависимостей. Причем разделение на небольшие пакеты присутствует даже у одного продукта: в один пакет могут быть включены бинарные файлы, во второй – общие библиотеки, в третий – документация и т.д. и т.п. Это позволяет достаточно гибко управлять процессом разработки и поддержки, если разработчики внесли изменения в какую-то библиотеку, то вам не нужно снова скачивать продукт целиком, достаточно обновить только пакет с библиотекой.
Кроме того, при разработке свободного ПО широко используются наработки других проектов, действительно, зачем повторно изобретать велосипед, если нужные функции уже есть в библиотеке другого проекта. Достаточно просто указать нужный пакет в зависимостях, при этом скачивать весь сторонний проект также будет не нужно, достаточно только необходимых пакетов.
Все это хорошо, скажет иной читатель, только как мне узнать какие именно пакеты мне нужно установить, чтобы получить на выходе полноценный продукт, как разобраться во всем этом обилии непривычных названий? Для этой цели существуют метапакеты. По сути – это пакет пустышка, который в своих зависимостях имеет нужный перечень пакетов для установки готового продукта. Например, если нужен офисный пакет, то достаточно просто установить libreoffice, этот метапакет по зависимостям подтянет и установит все необходимые компоненты для полного набора офиса, каким вы его привыкли видеть. Хотя никто не мешает установить самому только нужные компоненты, скажем только LibreOffice Calc.
Следующий вопрос – где брать пакеты? Windows опыт подсказывает – на сайте разработчика или производителя ПО. Но этот подход в Linux не работает, точнее работает частично. Почему? Ну вот скачали мы нужный пакет и выясняется, что у него еще 10 пакетов в зависимостях, где их брать? На сайтах их разработчиков, а у них окажутся свои зависимости… Поэтому в Linux были созданы и поддерживаются централизованные хранилища пакетов – репозитории. Каждый крупный дистрибутив имеет собственные репозитории для всех поддерживаемых выпусков и архитектур, которые содержат огромное количество ПО и поэтому вам не следует волноваться о том, где искать пакеты.
Кроме того, установка пакетов в обход репозитория может быть небезопасна и считается правилом дурного тона, хотя и применяется, в основном для коммерческого ПО. Наличие репозиториев также позволяет централизованно обновлять пакеты, достаточно сравнить текущие версии пакетов с версиями в репозитории и скачать нужные обновления. Это удобно, так как одновременно обновляется и система и все установленное в нее ПО.
Кроме того, собственные репозитории существуют и у разработчиков. Поэтому, если вы хотите получать самую свежую версию нужного вам продукта, не дожидаясь пока ее включат в дистрибутив, то можете подключить репозиторий разработчика и обновлять его оттуда.
Как правило типичный дистрибутив на базе Debian имеет четыре основных репозитория:
- Base repository – основное хранилище, содержит все пакеты, но обновляется достаточно редко, обычно одновременно с выходом минорной версии дистрибутива, например, Debian 9.6, Debian 9.7 и т.д.
- Security updates – обновления безопасности, являются критически важными для функционирования системы и крайне желательны к установке.
- Stable updates – стабильные обновления, не являющиеся обновлениями безопасности, могут исправлять некритические ошибки в ПО или незначительно расширять его функционал в рамках текущей версии.
- Stable backports – стабильное ПО с обратной совместимостью, содержит прекомпилированные для текущего дистрибутива самые свежие версии ПО, которые разрабатываются в рамках новой версии, позволяет использовать более новые версии программ, не подвергая стабильность дистрибутива угрозам при использовании пакетов тестируемой или нестабильной ветки.
Каждый репозиторий состоит из нескольких разделов, в Debian это:
- main – содержит пакеты, которые полностью совместимы с “Критериями Debian по определению Свободного ПО”
- non-free – распространяемое без ограничений ПО, которое не соответствует или не полностью соответствует принципам свободного ПО по версии FSF (Free Software Foundation, Фонд свободного ПО)
- contrib – свободное ПО, которое требует для работы несвободные компоненты, например, бинарные модули драйверов, прошивок ROM и т.д., либо требует ПО, имеющее собственника, скажем несвободную версию Java от Oracle.
В Ubuntu разделы немного иные:
- main – также, как и в Debian содержит свободные пакеты, поддерживаемые компанией Canonical
- restricted – несвободное ПО, поддерживаемое Canonical
- universe – свободное ПО, поддерживаемое сообществом
- multiverse – несвободное ПО, поддерживаемое сообществом.
Список подключенных репозиториев хранится в /etc/apt/sources.list, ниже показано содержимое этих файлов в Debian 10 (слева) и Ubuntu 18.04 (справа).
В Debian все достаточно лаконично, подключен только раздел main трех репозиториев Base, Security updates и Stable updates, если вам нужны иные разделы, то их следует подключить самостоятельно, добавив через пробел в нужную строку.
В Ubuntu более развернутый список репозиториев, он полностью не уместился на скриншот, но для понимания структуры записей приведенного фрагмента хватает. Сверху вниз подключены Base и Security updates для поддерживаемых компанией разделов, затем они же вместе для свободного и несвободного ПО поддерживаемого сообществом, а вот Stable backports прописан для всех веток одновременно, еще ниже (за пределами экрана на скриншоте) подключены Security updates и специальный партнерский репозиторий для пакетов партнеров компании Canonical.
Типичная запись репозитория выглядит как строка со следующей структурой:
deb http://deb.debian.org/debian buster main contrib non-free
Строка начинается с deb, который обозначает репозиторий с двоичными пакетами или deb-src для репозиториев с исходным кодом, если вы не собираетесь самостоятельно собирать пакеты, то вам они не нужны. Далее идет адрес репозитория и имя выпуска, для Debian это buster, для Ubuntu – bionic, затем следует перечисление подключенных разделов, в указанном примере подключены все три.
Адреса репозиториев сохраняются постоянными, отличаясь только именами выпуска, поэтому если вам нужно обновить выпуск, скажем с Debian 9 на Debian 10, то вам просто потребуется заменить везде stretch (имя девятого выпуска) на buster.
Также в Debian можно использовать вместо имен классы выпусков:
- stable – текущий выпуск дистрибутива,
- oldstable – предыдущий выпуск,
- testing – разрабатываемый выпуск,
- unstable – нестабильный выпуск, он же имеет собственное имя sid.
Но на практике это не используется, так как при выходе нового релиза вы получите его автоматическое обновление, что в большинстве случаев неприемлемо. Хотя если вы энтузиаст и хотите всегда быть на переднем крае прогресса, то можете везде прописать testing, получив аналог популярных ныне rolling release дистрибутивов, которые не имеют закрепленной версии и всегда предоставляют наиболее свежий срез пакетов, зачастую ценой стабильности.
Для добавления собственных источников пакетов предназначена директория /etc/apt/sources.list.d/ в которой следует располагать файлы с адресами источников и обязательным расширением .list. Хотя их можно прописать и в основной файл, но это считается дурным тоном.
Низкоуровневый менеджер пакетов Dpkg
Все это время мы говорили о пакетах и не касались вопроса каким образом происходит их установка. В Windows все просто, инсталлятор является исполняемым файлом и сам производит все необходимые действия, в Linux это не так и для работы с пакетами нам потребуется специальная утилита – пакетный менеджер.
Основой системы управления пакетами в Debian является dpkg – достаточно низкоуровневая утилита, предназначенная для получения информации, установки и удаления пакетов. Назвать ее менеджером пакетов в современном смысле этого слова достаточно затруднительно, dpkg не умеет работать с репозиториями и разрешать зависимости. Но тем не менее этот инструмент достаточно широко используется по сей день и навыки работы с ним необходимо иметь каждому администратору.
Данная утилита обычно используется для установки пакетов, скачанных вручную, например, коммерческого ПО. Синтаксис ее довольно прост и легко запоминается. Прежде всего полезно получить информацию о пакете, чтобы узнать его зависимости и возможные конфликты, для этого выполните:
dpkg -I имя_файла_пакета.deb
Для установки просто выполните:
dpkg -i имя_файла_пакета.deb
Но помните, что dpkg не умеет разрешать зависимости и вы должны будете сделать это вручную, либо скачать все необходимые пакеты и установить их в нужном порядке, это можно поручить dpkg, запустив его с маской в имени пакетов:
dpkg -i *.deb
Такая конструкция установит все находящиеся в данном расположении deb-пакеты, так что будьте внимательны, либо используйте более узкие маски.
Чтобы получить сведения о всех доступных и установленных пакетах используется ключ -l, но он выведет список всех пакетов, поэтому следует использовать его с маской, например, так:
dpkg -l gimp
Так как мы задали имя пакета без подстановочных символов, то информация будет выведена только при полном совпадении заданного имени с именем пакета. Если мы хотим получить больше информации, то можем сделать так:
dpkg -l gimp*
Теперь мы видим больше пакетов, как установленных в системе, так и доступных в репозитории. Но это не все пакеты, относящиеся к gimp, так как наша маска предписывает искать пакеты, которые начинаются на gimp и игнорирует иные варианты. Поэтому, если вы не уверены, что правильно задали маску, можно пойти другим путем, отдав вывод dpkg команде grep, которая найдет все нужные вхождения.
dpkg -l | grep gimp
В этом случае вы получите список только установленных, либо удаленных, но имеющих оставшиеся части (например, конфигурационные файлы) пакетов, но при этом будут найдены все вхождения указанной строки, даже в середине имени, в данном случае мы обнаружили ранее не найденную библиотеку libgimp2.0
Для удаления пакета используйте:
dpkg -r имя_пакета
Обратите внимание, что здесь мы указываем не имя deb-файла, а имя установленного пакета, узнать его можно способом, представленным выше. Часто после удаления пакета от него остаются конфигурационные файлы и иные данные, полностью очистить их можно командой:
dpkg -P имя_пакета
Но будьте внимательны, при этой операции могут быть удалены пользовательские данные, хранившиеся в стандартных расположениях. Это актуально для таких видов программ, как веб-сервера или СУБД.
На этом мы закончим знакомство с dpkg, ограничившись наиболее часто необходимыми в повседневной деятельности командами, а сами перейдем к более высокоуровневым инструментам.
Улучшенный инструмент для работы с пакетами APT и команды apt и apt-get
Настоящим пакетным менеджером в Debain является APT (Advanced Package Tool, Улучшенный инструмент для работы с пакетами), который умеет работать с репозиториями, разрешать зависимости и взаимодействовать с dpkg, которая, собственно, и занимается установкой пакетов.
APT имеет два интерфейса командной строки: apt-get и более новый apt. Их синтаксис и возможности во многом схожи, и мы будем практически всегда использовать последний, кроме отдельных случаев, когда требуемые возможности поддерживает только apt-get.
Как мы уже говорили, списки репозиториев хранятся в /etc/apt/sources.list, но они не содержат сведений о пакетах, чтобы их получить нужно скачать из репозитория список находящихся в нем пакетов. Понятно, что каждый раз скачивать списки – плохая идея, поэтому APT хранит локальный кеш пакетов в /var/lib/apt/lists, также копии всех скачанных пакетов сохраняются в /var/cache/apt/archives, что позволяет предотвратить их скачивание в случае повторной установки.
Списки пакетов представляют собой простые текстовые файлы с перечнем пакетов в репозитории, данными о пакете, его зависимостях и его расположении в структуре репозитория, один из таких списков открыт на скриншоте выше.
APT всегда работает с локальным кешем списков, поэтому перед любыми действиями с пакетным менеджером следует обновить списки в кеше. Это можно сделать командой, которая должна быть широко известна нашим читателям:
apt update
Команда проверяет версии списков в репозитории и при необходимости скачивает их новые версии, после чего анализирует список установленных пакетов и сообщает о доступных обновлениях, увидеть список пакетов, для которых доступны обновления можно командой:
apt list --upgradable
Установить обновления можно командой:
apt upgrade
Это безопасный способ обновления, при котором обновляются только установленные пакеты и не происходит установки новых пакетов, если они затрагивают текущие версии, также не удаляются убранные из репозитория пакеты. Если же вы хотите установить самые последние версии пакетов, то следует воспользоваться иной командой:
apt dist-upgrade
Следует понимать разницу в работе этих команд, потому что во многих случаях результат их работы оказывается одинаковым и кажется, что разницы между ними нет. Например, в ситуации, показанной на скриншоте выше обе команды отработают одинаково.
Обычные обновления следует выполнять командой upgrade, тогда как dist-upgrade следует использовать для обновления дистрибутива, в том числе и на минорные версии в составе текущего выпуска.
Для установки пакетов следует использовать команду:
apt install имя_пакета
Если нужно установить несколько пакетов, то их следует перечислить через пробел. Система проанализирует изменения и либо выполнит установку, либо попросит дополнительного подтверждения, особенно если нужно установить большое количество новых пакетов по зависимостям.
В целом APT хорошо знает свое дело, но мы все равно советуем обращать внимание на состав добавляемых и, особенно, удаляемых пакетов. Также не будет лишним изучить список предлагаемых пакетов, там вы можете найти много интересного и полезного, что позволит расширить возможности устанавливаемого ПО и о чем вы могли даже не догадываться.
Для удаления пакета используйте:
apt remove имя_пакета
Это удалит сам пакет, но оставит его конфигурационные файлы (если они были изменены) и прочие данные. Для полного удаления пакета со всеми его данными используйте другую команду:
apt purge имя_пакета
Но будьте внимательны, так как эта команда удалит все данные пакета, в том числе и добавленные пользователем в стандартные расположения, данные, находящиеся в домашних директориях пользователей при этом удалены не будут.
Дополнительно остановимся на таком виде пакетов, как пакеты установленные автоматически. Это пакеты, которые были установлены по зависимостям иных пакетов и после удаления или обновления последних могут более никем не использоваться. APT отслеживает такие пакеты и сообщает о них пользователю.
Удалить их можно командой:
apt autoremove
Как можно заметить, APT достаточно дружелюбен к пользователю, постоянно подсказывая ему необходимые команды, что в очередной раз развеивает миф о сложности администрирования Linux, особенно в режиме командной строки.
Также иногда может потребоваться возможность очистить кеш скачанных пакетов, скажем при недостатке места на диске, это можно сделать, введя:
apt clean
Эта команда полностью очистит кеш, также можно использовать более мягкую очистку с помощью apt-get, который дает возможность удалить из кеша только те пакеты, которые на текущий момент отсутствуют в репозитории (были заменены новыми версиями или удалены):
apt-get autoclean
Затронем еще один интересный момент, допустим вы в своих экспериментах удалили или еще как-либо повредили входящие в состав пакета файлы, но система считает, что пакет установлен и отказывается устанавливать его повторно. Но можно всегда переустановить пакет:
apt --reinstall install имя_пакета
Еще одна важная возможность APT – это восстановление нарушенных зависимостей и автоматическое исправление ошибок при установке пакетов, например, когда процесс обновления или установки был аварийно прерван. Либо когда вы установили некоторый пакет при помощи dpkg и при этом у него оказались неудовлетворенные зависимости. Все это в большинстве случаев отлично исправляется одной простой командой:
apt install -f
Также иногда бывает нужно проверить что произойдет при установке пакета без его установки, особенно если у нас есть подозрения, что мы можем что-то сломать в системе. Для этого запустите команду установки с ключом -s:
apt install имя_пакета -s
Система смоделирует все необходимые действия и покажет вам результат, после чего вы сможете принять верное решение без опасных экспериментов над ней.
Если вы не знаете точного названия нужного вам пакета, то можно выполнить его поиск командой:
apt search строка_поиска
При этом поиск производится не только по имени пакета, но и по его описанию. Это удобно и позволяет быстро найти все связанные с указанной строкой поиска пакеты, даже если они имеют отличное наименование.
Для получения информации о пакете просто введите:
apt show имя_пакета
Еще одна задача, с которой может столкнуться администратор – это фиксация версии пакета, допустим вы собрали и установили собственный пакет с нужными вам функциями и не хотите чтобы при обновлении системы он был заменен стандартным из репозитория. Не проблема, отметьте пакет как зафиксированный:
apt-mark hold имя_пакета
Чтобы отменить фиксацию выполните:
apt-mark unhold имя_пакета
Объем данной статьи не позволяет рассмотреть все возможности apt, поэтому мы ограничились наиболее необходимыми в повседневной деятельности, ну и в завершение небольшая порция юмора. Если запустить команду apt без параметров, то вы увидите краткую справку в самом конце которой будет строка: В APT есть коровья СУПЕРСИЛА. Что это значит? Просто наберите:
apt moo
И вы увидите старую пасхалку от разработчиков, которая была еще в apt-get, а затем ее заботливо перенесли в apt.
Графические оболочки Aptitude и Synaptic
Кроме родных для APT консольных интерфейсов apt-get и apt существуют и более высокоуровневые оболочки. Одна из них aptitude, которая может работать как в псевдографическом режиме, так и в режиме командной строки, имея синтаксис во многом повторяющий синтаксис apt. Благодаря этому многие воспринимают эту утилиту как еще один интерфейс к APT, хотя основной задачей разработчиков было именно создание псевдографической интерактивной оболочки.
В современных дистрибутивах Debian и Ubuntu aptitude отсутствует в основной поставке и вам потребуется установить этот пакет отдельно.
Если вы используете настольную версию Linux, то вам будет доступен графический менеджер пакетов Synaptic, он также отсутствует в основной поставке основных дистрибутивов и может быть установлен вручную. Данный пакет представляет собой опрятный и удобный графический интерфейс над APT, в тоже время дающий администратору все возможности по тонкой настройке процесса.
Однако не смотря на то, что Aptitude и Synaptic являются зрелыми и эффективными инструментами, мы бы не рекомендовали их использование по крайней мере до тех пор, пока вы не освоите работу с базовым интерфейсом apt.
Магазины приложений
Если мы говорим о настольных системах, то нельзя обойти вниманием магазины приложений. Это модный тренд, пришедший из мира мобильных устройств, но быстро завоевавший популярность и в настольной среде. Действительно, системой могут пользоваться разные люди, они могут являться хорошими специалистами в своей отрасли, но им совершенно не хочется разбираться в устройстве системы, а нужно просто включить компьютер в розетку и работать с ним.
Такой подход может вызвать возмущение у продвинутых пользователей и энтузиастов, но он имеет право на жизнь. Компьютер давно перестал быть уделом избранных и стал неотъемлемой частью нашей жизни. Проведем простую аналогию: сев за руль автомобиля многие из нас просто заводят его, нажимают педали, переключают рычаг коробки передач, не задумываясь о том, какие процессы происходят внутри, а в случае каких-либо неполадок отгоняют машину на сервис.
Так и в современном Linux, если раньше эта ОС ассоциировалась преимущественно с энтузиастами и “хакерами”, то сейчас это система открыта для всех. Магазины приложений – это простой и надежный способ управления программным обеспечением для обычных пользователей, не имеющих специальных технических знаний. А опытный администратор, скорее всего, предпочтет работу в привычной ему командной строке.
Ниже показан магазин для актуальной версии Debian
или Ubuntu
Заключение
Как видим, Debian и основанные на нем системы предоставляют широкий выбор инструментов для управления пакетами, начиная от утилит командной строки и заканчивая магазинами приложений. Каждый найдет инструмент себе по душе. Но для начинающих администраторов мы бы рекомендовали в обязательном порядке осваивать базовые инструменты, такие как dpkg и apt, потому что ситуации бывают разные, а базовые инструменты, в отличие от графической оболочки или псевдографических утилит, доступны всегда.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
На этом уроке рассмотрим пакетные менеджеры apt и apt-get. Которые используются для работы с пакетами приложений в Linux.
На этом уроке мы рассмотрим следующие пакетные менеджеры:
- apt-get — используется для установки, удаления, обновления пакетов;
- apt-cache — используется для получения информации о пакетах;
- apt-mark — используется для установок различных меток на пакеты. Например, можно, поставив метку, запретить пакету обновляться;
- apt — утилита основанная на apt-get и apt-cache. Она является более удобной и информативной. В процессе установки пакета, обновления системы или удаления пакета показывает “Прогресс бар”. В некоторых случаях выводит больше информации.
Работа с пакетами это административное действие, поэтому вам придётся работать под пользователем root или использовать sudo. Я в примерах буду использовать sudo. Примеры одинаково выполняются и в Debian и в Ubuntu.
Все рассматриваемые команды имеют под-команды, и в зависимости от под-команды могут иметь различные опции. Например переустановка приложения:
$ sudo apt install --reinstall apache2
Где:
- apt — сам пакетный менеджер;
- install — под-команда установки пакета;
- –reinstall — опция переустановки;
- apache2 — имя пакета.
Обновление системы
Обновление кэша пакетов
В Debian и Ubuntu прежде чем обновлять систему, нужно выяснить, какие обновления доступны в репозиториях. Это так называемое обновление кэша пакетов. Выполняется оно с помощью команды apt-get update или apt update. Пример:
$ sudo apt-get update $ sudo apt update
При этом команда apt update дополнительно покажет количество пакетов, которые можно обновить и команду с помощью которой можно посмотреть список таких пакетов.
Получаем список возможных обновлений
Если есть пакеты, которые можно обновить, то мы можем посмотреть их с помощью команды apt list –upgradable, а опция -a выводит больше информации. С помощью apt-get это проделать невозможно.
Пример:
$ sudo apt list --upgradable -a
Обновление системы (без возможности удаления пакетов)
Перед обновлением расскажу про зависимости пакетов. Работа некоторых приложений зависит от других приложений или библиотек. Поэтому почти каждый пакет имеет список зависимостей других пакетов. Обычно вручную с зависимостями не работают. Просто пакетные менеджеры (apt или apt-get) при установке определённого пакета также устанавливают пакеты от которых зависит этот пакет.
Точно также и при обновлении. Если приложение после обновления начало зависеть от других библиотек, то их тоже нужно установить или обновить.
Но бывает ситуация когда некоторые пакеты не совместимы. Например, чтобы обновить пакет требуется установить новые пакеты, но они несовместимы с теми, которые уже установлены. Тут есть два варианта, либо удалить установленные пакеты и выполнить обновление системы, либо не удалять пакеты и прервать обновление.
Без возможности удаления пакетов вы можете выполнить обновление с помощью команд apt-get upgrade и apt upgrade. Например:
$ sudo apt-get upgrade $ sudo apt upgrade
Обновление системы (с возможностью удаления пакетов)
Если вы все-таки хотите обновить пакеты и вас не пугает удаление некоторых пакетов, то выполните следующие команды: apt-get dist-upgrade или apt dist-upgrade. Но это более рискованно, так что обратите особое внимание на то, какие пакеты будут удалены. Ведь удаление некоторых пакетов может просто сломать вашу систему. Пример:
$ sudo apt-get dist-upgrade $ sudo apt dist-upgrade
Получение информации о пакетах из репозиториев
Список пакетов в репозиториях
Чтобы получить список пакетов в репозиториях можно выполнить apt list. Так как это не административное действие, то можно не использовать sudo. Например:
$ apt list
Кстати, утилита apt-get это выполнить не может.
Поиск пакета по ключевому слову
Если мы примерно знаем название приложения, которое нам нужно, то можем попытаться найти пакет используя ключевое слово. При этом поиск идет не только по названию пакетов, но и по его содержимому. Такой поиск выполняется с помощью команд apt-cache search <ключевое слово> или apt search <ключевое слово>.
Пример (так как вывод может быть большим, то я использую less):
$ apt-cache search apache | less $ apt search apache | less
Смотрим информацию о пакете
Зная имя пакета, можем посмотреть информацию о нём с помощью команд apt-cache show <имя пакета> или apt show <имя пакета>.
Пример (так как вывод может быть большим, то я использую less):
$ apt-cache show apache2 | less $ apt show apache2 | less
Поиск зависимостей
Зависимости можно посмотреть в информации о пакете с помощью уже рассмотренных команд apt-cache show <имя пакета> или apt show <имя пакета>. Но для этого есть ещё одна команда: apt-cache depends <имя пакета> или apt depends <имя пакета>. Например:
$ apt-cache depends apache2 $ apt depends apache2
Работа с отдельными пакетами
Установка пакета
Установить пакет из репозитория можно с помощью команд apt-get install <имя пакета> или apt install <имя пакета>. При этом установится пакет и его зависимости. Пример:
$ sudo apt-get install apache2 $ sudo apt install apache2
Удаление пакета без удаления конфигов
Чтобы удалить пакет обычно используют команды apt-get remove <имя пакета> или apt remove <имя пакета>. Но эти команды удалят только само приложение, не удалив его конфиги. Пример:
$ sudo apt-get remove apache2 $ sudo apt remove apache2
Удаление пакета вместе с конфигами
А чтобы удалить приложение вместе с его конфигами используйте команды apt-get purge <имя пакета> или apt purge <имя пакета>, например:
$ sudo apt-get purge apache2 $ sudo apt purge apache2
Переустановка пакета
Для переустановки используйте команды apt-get install –reinstall <имя пакета> или apt install –reinstall <имя пакета>.
Например:
$ sudo apt-get install --reinstall apache2 $ sudo apt install --reinstall apache2
Обновление отдельного приложения
Если нам нужно обновить не всю систему а отдельный пакет, то тут нужно использовать знакомую команду apt-get install <имя пакета> или apt install <имя пакета>. При этом, если пакета нет в системе то он установится, а если есть то обновится. Пример:
$ sudo apt-get install apache2 $ sudo apt install apache2
Скачивание пакета без установки
Если вам просто нужно скачать пакет, а не устанавливать его в систему, то используйте команду apt-get download <имя пакета> или apt download <имя пакета>. Например:
$ apt-get download apache2 $ apt download apache2
При этом зависимости скачиваться не будут.
Заморозка пакета
Если вы хотите чтобы система больше не обновляла какой-то отдельный пакет то выполните apt-mark hold <имя пакета>, например:
$ sudo apt-mark hold apache2
К сожалению с помощью apt это проделать невозможно.
Исправление проблем с пакетами
Исправление ошибок с зависимостями
Если в процессе установки некоторого пакета или при обновлении всей системы вы столкнётесь с проблемой с зависимостями. То можете воспользоваться командами apt-get -f install или apt -f install. Эти команды пытаются решить проблемы с зависимостями путём удаления или установки новых пакетов.
$ sudo apt-get -f install $ sudo apt -f install
Только внимательно смотрите на список удаляемых пакетов!
Очистка системы от ненужных пакетов
Удаление ненужных пакетов
Когда мы устанавливаем пакет то устанавливаются и его зависимости. А при удалении пакета зависимости остаются и больше не используются. Чтобы удалить подобные пакеты, которые установились, но больше не нужны в системе применяются команды apt-get autoremove или apt autoremove. Например:
$ sudo apt-get autoremove $ sudo apt autoremove
Очистка кэша
При установке какого-нибудь пакета, он вначале скачивается в каталог /var/cache/apt/archives/, а затем устанавливается в систему. Эти установочные файлы тоже можно удалять, освобождая место на диске. Для этого используйте команды apt-get clean или apt clean, например
$ sudo apt-get clean $ sudo apt clean
Мягкая очистка кэша
Помимо clean есть более мягкая команда autoclean. Она удалит только те скаченные пакеты, у которых версия ниже чем в репозитории, остальные пакеты не удалятся:
$ sudo apt-get autoclean $ sudo apt autoclean
Посмотрим на корову 🙂
А еще с помощью apt-get и apt мы можем посмотреть на корову:
$ apt moo (__) (oo) /------/ / | || * /---/ ~~ ~~ ..."Have you mooed today?"... $ apt-get moo (__) (oo) /------/ / | || * /---/ ~~ ~~ ..."Have you mooed today?"...
Итог
Мы узнали множество команд с помощью которых можем устанавливать и удалять пакеты в систему, а также обновлять её. И проделывать другие вещи.
А также мы узнали что перед установкой deb пакеты скачиваются в каталог /var/cache/apt/archives/. И у пакетов есть зависимости, которые apt или apt-get определяет и автоматически устанавливает.
Сводка
Имя статьи
Пакетные менеджеры apt и apt-get
Описание
На этом уроке рассмотрим пакетные менеджеры apt и apt-get. Которые используются для работы с пакетами приложений в Linux
apt
— это утилита командной строки для установки, обновления, удаления и иного управления пакетами deb в Ubuntu, Debian и связанных с ними дистрибутивах Linux. Он сочетает в себе наиболее часто используемые команды из инструментов apt-get
и apt-cache
с разными значениями по умолчанию некоторых параметров.
apt
предназначен для интерактивного использования. Отдавайте предпочтение сценариям apt-get
и apt-cache
в вашей оболочке, поскольку они обратно совместимы между различными версиями и имеют больше параметров и функций.
Большинство apt
команд необходимо запускать от имени пользователя с sudo
привилегиями.
В этом руководстве вы можете узнать все о apt
командах в Linix системе.
Обновление индекса пакета ( apt update
)
Индекс пакетов APT — это, по сути, база данных, в которой хранятся записи о доступных пакетах из репозиториев, включенных в вашей системе.
Чтобы обновить индекс пакета, выполните команду ниже. Это вытянет последние изменения из репозиториев APT:
sudo apt update
Всегда обновляйте индекс пакетов перед обновлением или установкой новых пакетов.
Обновление пакетов ( apt upgrade
)
Регулярное обновление вашей системы Linux является одним из наиболее важных аспектов общей безопасности системы.
Чтобы обновить установленные пакеты до последних версий, запустите:
sudo apt upgrade
Команда не обновляет пакеты, требующие удаления установленных пакетов.
Если вы хотите обновить один пакет, передайте имя пакета:
sudo apt upgrade package_name
Полное обновление ( apt full-upgrade
)
Разница между upgrade
и full-upgrade
заключается в том, что последний удалит установленные пакеты, если это необходимо для обновления всей системы.
sudo apt full-upgrade
Будьте особенно осторожны при использовании этой команды.
Установка пакетов ( apt install
)
Установка пакетов так же проста, как запуск следующей команды:
sudo apt install package_name
Если вы хотите установить несколько пакетов одной командой, укажите их в виде списка, разделенного пробелами:
sudo apt install package1 package2
Чтобы установить локальные файлы deb, укажите полный путь к файлу. В противном случае команда попытается получить и установить пакет из репозиториев APT.
sudo apt install /full/path/file.deb
Удаление пакетов ( apt remove
)
Чтобы удалить установленный пакет, введите следующее:
sudo apt remove package_name
Вы также можете указать несколько пакетов, разделенных пробелами:
sudo apt remove package1 package2
Команда remove
удалит указанные пакеты, но может оставить некоторые файлы конфигурации. Если вы хотите удалить пакет, включая все файлы конфигурации, используйте purge
вместо remove
:
sudo apt purge package_name
Удалить неиспользуемые пакеты ( apt autoremove
)
Всякий раз, когда в системе устанавливается новый пакет, который зависит от других пакетов, зависимости пакета также будут установлены. Когда пакет будет удален, зависимости останутся в системе. Эти оставшиеся пакеты больше ничем не используются и могут быть удалены.
sudo apt autoremove
Список пакетов ( apt list
)
Команда list
позволяет вам перечислить доступные, установленные и обновляемые пакеты.
Чтобы просмотреть все доступные пакеты, используйте следующую команду:
sudo apt list
Команда напечатает список всех пакетов, включая информацию о версиях и архитектуре пакета. Чтобы узнать, установлен ли конкретный пакет, вы можете отфильтровать вывод с помощью grep
команды.
sudo apt list | grep package_name
Чтобы перечислить только установленные пакеты , введите:
sudo apt list --installed
Получение списка обновляемых пакетов может быть полезно перед фактическим обновлением пакетов:
sudo apt list --upgradeable
Поиск пакетов ( apt search
)
Эта команда позволяет вам искать данный пакет в списке доступных пакетов:
sudo apt search package_name
Если найдено, команда вернет пакеты, имя которых соответствует поисковому запросу.
Информация о пакете ( apt show
)
Информация о зависимостях пакета, размере установки, источнике пакета и т. д. может быть полезна перед удалением или установкой нового пакета.
Чтобы получить информацию о данном пакете, используйте show
команду:
sudo apt show package_name
Debian 10 имеет большой репозиторий пакетов. Будь то шрифты, базы данных, редакторы, игры или инструменты разработки, вы найдете необходимый пакет в этом репозитории. Чтобы найти конкретный пакет в большом репозитории, вам нужно знать точное имя пакета. Иногда имя программы отличается от имени пакета. Например, для программы с именем ‘iostat’, используемой для статистики дискового ввода-вывода и отчетов ЦП, пакет назван ‘sysstat’. Итак, необходимо знать имя пакета, чтобы найти его в репозитории, а не просто имя команды и ее функция.
Для поиска пакетов в Debian 10 Buster можно использовать несколько методов. Для фильтрации пакетов доступны мощные и стабильные инструменты для поиска правильного имени пакета. Debian 10 предлагает как командную строку, так и графический менеджер пакетов для фильтрации и поиска пакетов. Synaptic – популярный инструмент, используемый для графического интерфейса пользователя, но он подходит не для всех машин, включая рабочие серверы. Итак, вам нужно будет использовать некоторые инструменты командной строки для поиска пакетов Debian.
Есть несколько вариантов поиска пакетов в Debian 10. В этой статье будет рассмотрено, как искать пакет с помощью менеджеров пакетов aptitude, apt-cache, dpkg и apt. Все команды в этой статье были реализованы в терминале Debian 10 Buster. С помощью утилит, обсуждаемых в этой статье, вы можете искать пакеты и показывать их описание.
Поиск доступных пакетов с помощью команды aptitude
Aptitude – это приложение, основанное на интерфейсе Ncurses для apt, работающее под терминальным приложением. Это еще не установлено в Debian, Ubuntu и других дистрибутивах на основе Linux. Чтобы установить aptitude в Debian 10, откройте терминал с помощью панели поиска приложения следующим образом:
Введите следующую команду, чтобы установить aptitude в Debian 10 Buster:
$ судо подходящий установитьспособность
После того, как вы установили этот инструмент в своей системе, вы можете искать любой доступный пакет с помощью команды aptitude в терминале. Для этого следуйте синтаксису ниже:
$ поиск способностей имя пакета
Например, если вы хотите найти все пакеты OpenSSH, выполните команду, показанную ниже:
Вы также можете выполнить поиск пакета с помощью пользовательского интерфейса aptitude Ncurses. Введите «aptitude» в терминал, и в окне отобразится следующий интерфейс.
Чтобы найти пакет, нажмите ‘/’, а затем введите имя пакета в строку поиска.
Поиск доступных пакетов с помощью команды apt-cache
В Debian 10 вы можете искать доступные пакеты в репозитории Debian с помощью команды apt-cache. С помощью команды apt-cache вы также можете искать пакеты DEB, установленные в вашей системе, которых нет в репозитории Debian. Используйте следующую команду для выполнения задач поиска с помощью команды apt-cache.
$ поиск APT-кеша имя пакета
Пример
$ поиск APT-кешаvim
Приведенная выше команда отобразит имена пакетов с выражением «vim» в описании или имени. Для поиска этих пакетов используйте выражение поиска только в имени. Затем введите следующую команду:
$ поиск APT-кеша–names-only апач
Чтобы просмотреть дополнительные сведения об указанном пакете, используйте следующую команду:
$ apt-cache показать имя пакета
Пример
$ apt-cache показать emacs
Aptitude и apt-cache предоставляют аналогичную информацию о пакетах.
В большинстве случаев результаты будут слишком долгими. Чтобы сократить результаты, вы можете запустить следующую команду:
$ поиск APT-кеша имя пакета |более
Вы можете исключить результаты, не содержащие определенного ключевого слова, с помощью команды grep следующим образом:
$ поиск APT-кеша имя пакета |grep имя-пакета2
Команда grep чувствительна к регистру. Чтобы игнорировать чувствительность к регистру, используйте флаг -i (grep -i search-word).
Поиск доступных пакетов с помощью команды apt
Используя команду apt, вы можете искать все доступные пакеты. Используйте следующий синтаксис для поиска с помощью apt:
$ подходящее имя-пакета поиска
Пример
$ apt search emacs
Поиск доступных пакетов с помощью команды dpkg
Для поиска установленных пакетов используйте команду dpkg, как показано ниже:
$ dpkg-S поисковый шаблон
Пример
$ dpkg-S апач
Вы также можете использовать dpkg с grep следующим образом:
Вывод
В этой статье было рассмотрено, как искать пакеты с помощью командной строки в Debian 10, включая некоторые различные методы поиска и фильтрации. Используя эти методы, вы можете искать пакеты Debian, даже если вы не знаете точное имя пакета. Вы можете узнать больше о командах apt-cache, grep search, aptitude и apt в Интернете.