Самое прекрасное — это когда нужна поддержка сайта, а ты сидишь с телефоном
в руке и ЗНАЕШЬ, чей номер набрать! т. +7 831 4637611 моб. +7 910 3820622Айтишник РУ Нижний Новгород, Симферопольская, 21
A+ A A-

Управление пакетами с помощью aptitude в Debian

После того, как подключены репозитории и настроено обновление системы, самое время заняться установкой необходимого программного обеспечения. Программное обеспечение для Debian распространяется в виде пакетов и исходного кода. Причём используется собственный формат пакетов — т. н. deb - пакеты. Устанавливать пакеты можно из сетевых хранилищ, с установочных дисков, из локальных директорий. Ниже приведён список ресурсов, который будет полезен для поиска и установки Debian пакетов:

Изначально для управления пакетами использовалась программа dpkg. Dpkg аналогична по функционалу другой подобной программе - rpm. При помощи dpkg можно производить действие в основном с отдельным пакетом, а так же базовую настройку некоторых пакетов. Затем были созданы apt-tools — система управления пакетами apt. Apt, являясь надстройкой над dpkg, может работать как с отдельными пакетами, так и с базой пакетов. Работа с этой программой проста и логически понятна. Популярность её давно вышла за пределы дистрибутивов, основанных на Debian. Следующим шагом к управлению пакетами стала программа aptitude. Она в свою очередь является надстройкой над apt. Естественно, что aptitude может делать всё тоже, что и apt, но при этом лучше работает с базой пакетов и может работать как в командной строке, так и в интерактивном режиме. Всё это плюс дополнительные функции, которых нет в apt привело к тому, что aptitude стало рекомендованным средством по работе с базой пакетов в стабильной ветке Debian. Конечно же, ни dpkg, ни apt никуда не исчезли из дистрибутива и можно управлять пакетами и с помощью первой из них, и с помощью второй, на всё же я рекомендую работать с aptitude.

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

Приступим к работе с программой aptitude. Данная программа рекомендована сообществом Debian в качестве менеджера пакетов. Она является более новым инструментом, чем apt, полностью заменяет функционал программ apt-get и apt-cache, а так же «умнее» работает с удовлетворением зависимостей. Поэтому лучше, чтобы вся работа с пакетами выполнялась с помощью aptitude. Если запустить эту программу без параметров,

# aptitude

то она запустится в интерактивном режиме, но сейчас не об этом.

Перед установкой пакетов или после подключения репозиториев следует запросить обновления:

# aptitude update

Если есть обновления, то имеет смысл установить их:

# aptitude safe-upgrade

или

# aptitude full-upgrade

О разнице между этими командами читайте ниже.

Краткая справочная информация о программе вызывается так:

$ aptitude help

Для начала, неплохо было бы узнать установлен ли интересующий нас пакет. Пусть это будет пакет mc. Для этого выполним команду:

$ aptitude search mc

В ответ на это мы увидим список пакетов, которые содержат в своём имени mc. Нас интересует следующая строка:

p mc - Midnight Commander a powerful file manager ...

В первой позиции мы видим символ (ы). Одиночные символы и символы расположенные левее, если их несколько, назовём основными. Они обозначают состояние пакета. Если символ:

p – Значит пакет не установлен или удалён полностью, вместе с файлом конфигурации. Символ p это сокращение от purge.

i – Значит пакет уже установлен. Символ i это сокращение от installed.

c – Значит пакет удалён, но конфигурационный файл сохранён. Символ c это сокращение от clean.

v - Значит данный пакет виртуальный, т. е. он не содержит какой либо программы, он содержит описания зависимостей. Соответственно, символ v это сокращение от virtual.

Рядом с основными символами, могут располагаться дополнительные:

A – комбинация iA. Означает, что пакет установлен автоматически для удовлетворения зависимостей. Символ A это сокращение от Automatic.

B – комбинация iB. Означает, что пакет содержит ошибки или утратил зависимости. Символ B это сокращение от Broken.

C – комбинация iC. Означает, что пакет не настроен, его установка была прервана на стадии настройки. Символ C это сокращение от half-Configured.

h – комбинация ih. Означает, что для пакета зафиксирована текущая версия. Символ h это сокращение от hold.

H – комбинация iH. Означает, что пакет установлен только частично. Например, в момент установки произошёл сбой. Символ H это сокращение от Half-installed.

u – комбинация pu. Означает, что пакет был получен, распакован, но не был установлен. Символ u это сокращение от unpacked.

Вообще же символов статуса может быть не два, а три. Но описывать все их комбинации не входит в рамки этой статьи.

После символов состояния следует имя пакета, а затем его краткое описание.

После search не обязательно писать полное имя искомого пакета – это поисковый шаблон, можно написать часть имени. В выводе команды мы получим список пакетов, содержащих в имени искомые символы. Например, если набрать aptitude search ssh, то в выводе команды получим список пакетов, содержащих в своём имени ssh. Но это всё по-умолчанию. Вообще же search поддерживает различные поисковые запросы. Можно искать в имени пакета ~n, в его описании ~d, в разделе репозитория (см. ниже) ~s. Можно делать отбор только в установленных пакетах ~i или в тех пакетах, которые можно обновить ~U. Можно манипулировать запросами с помощью скобок, запрашивать альтернативы "|" или отрицания "!". Вообще же это тема для отдельной статьи, но некоторые возможности запросов я продемонстрирую на предыдущем примере. Выполним:

$ aptitude search '~nmc~dMidn~sutils'

В выдаче получаем одну-единственную строку о пакете mc. Расшифруем поисковый запрос. Мы хотим найти пакет, который содержит в своём имени mc, в описании пакета должна присутствовать часть строки Midn, а искать нужно в разделе utils. Запрос заключается в прямые одинарные кавычки, всё пишется слитно, без пробелов.

Если необходима более полная информация о пакете mc, то вводим следующую команду:

$ aptitude show mc

В выводе команды show видим следующую информацию:

Имя пакета

Состояние пакета. Если пакет виртуальный, то в этой строке можно увидеть надпись «не реальный пакет».

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

Приоритет пакета. Может быть:

  • Необходимый – без таких пакетов система не будет функционировать;
  • Важный – без таких пакетов система не будет нормально работать или не будет удобной;
  • Стандартный - эти пакеты обычно устанавливаются по-умолчанию;
  • Дополнительный – в основном, все те пакеты, которые устанавливает пользователь;
  • Особые – редко используемые или конфликтующие с пакетами других приоритетных групп.

Раздел. Информация о том, к какому разделу репозитория он относится. На этой странице можно поискать пакеты в соответствующих разделах.

Имя сопровождающего или команды, которая сопровождает пакет. А так же адрес электронной почты, по которой с ними можно связаться.

Размер пакета в распакованном виде.

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

Более подробное описание пакета. Возможна ссылка на сайт программы.

Можно получить информацию о нескольких пакетах. Для этого имена пакетов в командной строке отделяют пробелами.

$ aptitude show openssh-server openssh-client openssh-blacklist

Следующая команда покажет пакеты, для которых необходим данный пакет:

$ aptitude why mc

Если нужно узнать с какими пакетами конфликтует данный пакет, то выполняем:

$ aptitude why-not имя_пакета

Теперь мы знаем, как получить информацию о пакетах. Пора бы начинать их устанавливать. В качестве примера установим Midnight Commander:

# aptitude install mc

Сначала программа проверит наличие пакета в подключённых репозиториях (см. Настройка обновлений для Debian). Если появится сообщение о том, что такой пакет не найден, то это произошло по одной из следующих причин:

  • Указано неверное имя пакета
  • Не подключен репозиторий, содержащий данный пакет или с репозиторием нет связи.

Если всё в порядке и пакет есть, aptitude проверит пакет на конфликты с установленными пакетами и если таковые имеются, выдаст на экран запрос о принятии решения. В нашем примере конфликтов нет. Так же будет выведена информация об удовлетворении зависимостей, если такие возникнут в результате установки данного пакета. Чаще всего программа предлагает установить ещё пакеты для удовлетворения зависимостей. В нашем примере программа предлагает установить ещё три пакета для удовлетворения зависимостей.

Далее, в сообщении будет указано количество пакетов, которые будут обновлены, количество новых пакетов, которые будут установлены – в нашем случае 4, количество пакетов отмеченных для удаления, количество пакетов, которые не будут обновлены. Так же мы будем проинформированы о размере пакета и о количестве занимаемого им места после установки. Теперь нужно сделать выбор: или подтвердить установку и нажать «y», или отказаться от установки и нажать «n», или произвести дополнительные действия. Чтобы посмотреть, что можно сделать ещё, нажимаем «?» и получаем краткую справку по дополнительным действиям. В данный момент нам не требуется никаких дополнительных действий, поэтому подтверждаем установку. Вот собственно и всё. Пакеты, указанные в списке устанавливаемых сначала будут скопированы в кэш, который находится в /var/cache/apt/archives/, а затем установлены. Теперь вводим:

$ mc

и работаем.

Установка нескольких пакетов. Имена пакетов отделяются друг от друга пробелами:

# aptitude install sudo gcc vim

Если во время установки произошёл сбой, пакет работает не корректно или нужно вернуть конфигурационные файлы в состояние по-умолчанию, то пакет можно переустановить следующей командой:

# aptitude reinstall mc

Удаление пакета – операция обратная установке.

# aptitude remove mc

Aptitude проверит, будут ли нарушены зависимости при удалении пакета и сообщит об этом. Так же будет выведена информация о том, сколько пакетов будет обновлено, сколько пакетов будет установлено, сколько пакетов отмечено для удаления – в нашем случае 4, сколько пакетов не будет обновлено. Заметим, что программа удаляет и пакеты, которые были установлены автоматически для удовлетворения зависимостей. Будет выведена информация об освобождающемся месте после удаления. Подтверждаем удаление. Пакет удаляется, но его конфигурационные файлы остаются.

Для удаления нескольких пакетов перечисляем их через пробел:

# aptitude remove sudo gcc vim

Для полного удаления пакета вместе с файлами конфигурации выполняем:

# aptitude purge mc

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

В некоторых случаях может понадобиться зафиксировать версию пакета. Т. е. сделать так, чтобы он не обновлялся. Это например, бывает нужно тогда, когда какое- то программное обеспечение не может работать корректно с обновлённым пакетом. Например, чтобы зафиксировать версию пакета gzip выполним:

# aptitude hold gzip

Теперь этот пакет не будет обновляться при выполнении safe-upgrade и full-upgrade. Выполним команду aptitude search gzip и обратим внимание на статус пакета. Статус пакета ih. Это означает, что пакет установлен и его текущая версия зафиксирована.

Если нужно снять фиксацию версии для пакета gzip, то выполним команду:

# aptitude unhold gzip

Если нужно отменить какие либо запланированные действия для пакета gzip, то выполним:

# aptitude keep gzip

В этом случае он будет обновляться при выполнении safe-upgrade и full-upgrade и его статус не изменится.

Иногда, требуется сбросить все запланированные действия для всех пакетов. Для этого выполним:

# aptitude keep-all

Если для удовлетворения зависимостей пришлось устанавливать пакет вручную или нужно пометить пакет, как установленный для удовлетворения зависимостей, то выплняем (gzip взят для примера):

# aptitude markauto gzip

Смотрим его статус. Он изменился на iA. Этот пакет будет удалён, когда будут удалены пакеты, для которых он был установлен, в качестве удовлетворителя зависимостей.

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

# aptitude unmarkauto gzip

Чтобы загрузить пакет mc, но не устанавливать его, следует выполнить:

# aptitude download mc

Пакет будет загружен в текущую директорию.

В процессе работы с менеджером пакетов кэш наполняется загруженными пакетами. Как я уже писал выше, сначала aptitude помещает пакет в кэш, который находится в /var/cache/apt/archives/, а после этого запускается его установка. Замечу, что при удалении пакета, пакет в кэше сохраняется. Периодически, кэш нужно чистить. Следующая команда удаляет из кэша все загруженные пакеты:

# aptitude clean

Если из кэша нужно удалить загруженные пакеты, которые уже не используются в системе, выполним:

# aptitude autoclean

Теперь немного коснёмся команд обновления. Команда:

# aptitude update

обновит список пакетов. Поэтому она обязательна для выполнения после изменений в /etc/apt/sources.list.

Команда:

# aptitude safe-upgrade

обновит, установленные версии пакетов, не изменив при этом их состав. Т. е. будут обновлены те пакеты системы, для обновления которых не требуется удалять другие пакеты. Aptitude сообщит об этой ситуации, но эти пакеты не обновит.

Команда

# aptitude full-upgrade

она же

# aptitude dist-upgrade

обновит все пакеты, для которых есть новые версии. Если потребуется удаление пакетов, оно будет выполнено.

Вот вкратце и всё! Так же полезно почитать:

$ man 8 aptitude

Теперь ознакомимся с работой aptitude в интерактивном режиме и перейдём к настройке SSH.

 

Об авторе:

ZolkinМеня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.

 

Ещё статьи о Debian

    • Как обновить Debian 4 Etch до Debian 5 (Lenny)

      Как обновить Debian 4 Etch до Debian 5 (Lenny)Вот чем мне нравится Debian, так тем что можно обновить установленную систему на ходу, без какой либо переустановки. На момент написания этой статьи произошла смена стабильного дистрибутива Debian. Вместо Debian 4 Etch, ставшей теперь...

    • Как обновить Debian 6 Squeeze до Debian 7 Wheezy

      Как обновить Debian 6 Squeeze до Debian 7 WheezyПрошло более двух месяцев с момента выхода новой стабильной версии операционной системы Debian GNU/Linux – Debian 7 (Wheezy). За это время были исправлены ошибки и даже вышла новая версия – 7.1. А это значит, что теперь можно и...

    • Linux HTML-редакторы

      Linux HTML-редакторыЕсли задать подобный вопрос на каком-нибудь из форумов, то с высокой долей вероятности вы наткнётесь на две диаметрально противоположных рекомендации - "составлять" всё в чисто визуальном (то бишь WYSIWYG) редакторе типа DreamWeaver либо...

    • Настройка сети в Debian

      Настройка сети в DebianВ этой статье я опишу простую настройку сети для сервера под управлением ОС Debian 5 (Lenny). Всё, что описано в этой статье так же может быть использовано и для настройки сети в Debian 6 (Squeeze). Изначально рассматривалась настройка...

    • SSH Подключение с использованием ключа хоста...

      SSH Подключение с использованием ключа хоста...Теперь попробуем подключиться к нашему серверу, который выполняет и функцию ssh сервера, с настройками по умолчанию. Позже мы изменим настройки согласно нашим нуждам и требованиям безопасности. Для подключения по SSH нам нужны учётные...

    • Настройка SSH в Debian

      Настройка SSH в DebianДовольно часто, администрирование сервера на базе Linux происходит посредством удалённого доступа. А основным способом удалённого администрирования является администрирование с помощью SSH. Об этом и пойдёт речь в этой статье. Данная...