Это старая версия документа.


Консольные инструменты управления пакетами

Считается, и вполне оправданно, что набрать одну команду в терминале сильно проще, чем кликать мышкой по GUI инструментам. Кроме того, основой Linux всё-таки является терминал. Поэтому я никак не могу обойти описание работы с пакетами из терминала. К тому же большинство инструкций для Ubuntu содержат консольные команды управления пакетами, хотя все операции можно выполнить и через графические приложения. В общем, настоятельно рекомендую прочитать эту статью до конца, хотя на практике вам возможно всё описанное применять и не понадобится.

В Ubuntu есть три основных основных консольных инструмента для работы с пакетами: dpkg, aptitude и apt-get. По умолчанию установлена только apt-get. Но вы всегда можете установить остальные две, с помощью той же apt-get.

Утилита APT (Advanced Packaging Tool)

Основным же консольным инструментом работы с пакетами является APT. В некотором смысле это консольный аналог менеджера пакетов Synaptic, хотя APT на самом деле обладает куда как большим функционалом. В нее входят утилиты apt-get, apt-cache и apt-key.

Сразу же вспомните про sudo, поскольку как ни странно, для внесения изменений в установленные компоненты системы apt-get требует административных полномочий. Хотя некоторые функции, вроде поиска, работают и от имени обычного пользователя.

Начнём с того, что установить пакеты из репозиториев можно командой

sudo apt-get install имя_пакета1 [имя_пакета2 ...]

Сколько бы вы не указали пакетов, apt-get автоматически разрешит все зависимости и предложит вам конечный вариант необходимых действий, вам останется только лишь согласиться, нажав Enter:

Обратите внимание, apt-get предлагает вам в квадратных скобочках два возможных варианта ответа на поставленный вопрос:
[Д/н]

Д означает Да, то есть согласие, н - это Нет, то есть отказ. Вам нужно ввести символ, соответствующий вашему выбору и нажать Enter. Однако, есть вариант по умолчанию, выделенный в списке большой буквой, и если вам нужен именно он, то вы можете ничего не вводить, просто нажать Enter.

Аналогично установке, удалить пакеты можно одной из двух команд:

sudo apt-get remove имя_пакета1 [имя_пакета2 ...]
sudo apt-get purge имя_пакета1 [имя_пакета2 ...]

Первая удаляет только файлы пакета, оставляя настройки нетронутыми, вторая же удаляет пакет полностью (пользовательские настройки не удаляются).

Напоследок, несколько полезных команд:

  • sudo apt-get update- обновление информацию о пакетах, содержащихся в репозиториях. Никаких новых пакетов скачано и установлено не будет. Система просто проверит, есть ли новые версии для установленных у вас пакетов.
  • sudo apt-get upgrade - обновление пакетов, для которых в репозитории доступны новые версии. Будут скачаны из репозиториев и установлены в систему новые версии пакетов.
  • sudo apt-get autoremove - удаление пакетов, которые больше не нужны. Если пакет А был установлен не сам по себе, а как зависимость для пакета В, то, после удаления пакета В, пакет А тоже не нужен1).
  • sudo apt-get install -f - используется для устранения сбоев в базе пакетов вызванных нарушенными зависимостями.

Более подробную информацию можно узнать командой man apt-get.

Для получения информации о пакете используется утилита apt-cache. Основные команды:

  • apt-cache search - Поиск пакета по части названия или описания. Поддерживает регулярные выражения.
  • apt-cache show - Информация о пакете: версия, размер, описание и т. п.
  • apt-cache depends - Зависимости указанного пакета.
  • apt-cache rdepends - Обратные зависимости пакета.

apt-key служит для добавления и удаления ключей от репозиториев в систему. Ключи защищают репозитории от возможности подделки пакета.

Основные команды:

  • sudo apt-key add - Добавление ключа в базу доверенных ключей.
  • sudo apt-key del - Удаление ключа из доверенных.

Утилита dpkg

dpkg - это низкоуровневая программа управления пакетами, единственная полезная её функция для обычного пользователя - это прямая установка пакета из deb-файла. Выполняется она командой

sudo dpkg -i имя_пакета.deb

Для того, чтобы команда успешно выполнилась, в системе должны присутствовать все зависимости устанавливаемого пакета, поскольку dpkg не умеет их разрешать и скачивать что-либо из репозиториев. Можно так же ставить несколько пакетов за раз, передавая их все как аргументы команде dpkg -i. Больше я пожалуй ничего про dpkg рассказывать не буду, да и вряд ли вам как-либо ещё понадобится использовать эту утилиту.

Утилита apt-get

На самом деле я немного вас обманул. В инструкциях гораздо чаще вместо aptitude используется apt-get. apt-get - это стандартная утилита управления пакетами, используется она ровно так же, как и aptitude, только у неё нет графического интерфейса и поиска. То есть во всех командах с install, remove, purge можно заместо aptitude писать apt-get. Однако apt-get имеет ряд существенных недостатков2), поэтому напротив, настоятельно рекомендуется вместо неё всегда и везде использовать aptitude, благо для этого вам если что всего лишь придётся заменить одно слово в команде на другое3).

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

P.S. Немного позитива

Разработчики - люди весёлые. Наберите в терминале команду

apt-get moo

Забавно? Как же может ответить на это aptitude:

aptitude moo

Вот незадача! Но постойте, а если попросить повежливей?

aptitude -v moo

А можно и ещё вежливей, и даже намного вежливей:

aptitude -vv moo
aptitude -vvv moo

Что называется, продолжайте по аналогии. Но это всё развлечения, нас же ждёт следующая тема:

1)
На самом деле, все может быть сложнее: например, пакет А может быть зависимостью для двух или более пакетов, поэтому, после удаления только одного из этих пакетов, пакет А все еще будет нужен в системе. Но, не беспокойтесь: умный «apt-get» лишнего не удалит.
2)
Существенных по сравнению с aptitude, однако некритичных. apt-get хуже обрабатывает зависимости в некоторых случаях, не имеет мощного поиска и графического консольного интерфейса и не ведёт логов выполняемых операций.
3)
То есть если вы видите какую-нибудь команду с apt-get, просто замените в ней apt-get на aptitude и всё отлично заработает.