Перейти к содержанию

8.3 Управление пакетами Debian (Managing Debian Software Packages)

Не все дистрибутивы используют RPM для управления программными пакетами. Дистрибутивы, основанные на Debian, вместо этого применяют менеджер пакетов Debian (Debian Package Manager, dpkg). Ubuntu — пожалуй, один из наиболее популярных дистрибутивов на базе Debian, использующих dpkg для управления программами вместо RPM. Пакеты Debian аналогичны RPM-пакетам по функциональности, однако принципиально отличаются от них по реализации.

Примечание

Мне нередко приходится встречать людей, ошибочно полагающих, что RPM и пакеты Debian совместимы между собой. Это не так. Устанавливать RPM-пакеты можно только на системы, использующие RPM, а пакеты Debian — только на системы на базе Debian. Однако для преобразования пакетов из одного формата в другой существует утилита alien.

В этой части главы мы рассмотрим управление программными пакетами Debian. Будут освещены следующие темы:

  • Именование пакетов Debian
  • Установка пакетов с помощью dpkg
  • Просмотр информации о пакетах с помощью apt-cache
  • Установка пакетов с помощью apt-get
  • Использование aptitude

Начнём с рассмотрения соглашений об именовании пакетов Debian.

Именование пакетов Debian (Debian Package Naming)

Пакеты Debian используют соглашение об именовании, аналогичное принятому для RPM-пакетов. Синтаксис имени выглядит так: packagename_version_architecture.deb (например, 3dchess_0.8.1-16_i386.deb).

Ниже описывается, как интерпретировать имена файлов пакетов Debian:

  • packagename — как и в RPM, просто задаёт имя пакета. В приведённом примере имя приложения в пакете — 3dchess.
  • version — задаёт номер версии пакета. В данном примере это 0.8.1-16.
  • architecture — задаёт аппаратную архитектуру, для которой предназначен пакет. В примере значение i386 означает, что пакет запустится на процессорах Intel 80386 и более поздних.

Как и RPM-пакеты, пакеты Debian включают информацию о зависимостях. Прежде чем установить тот или иной пакет, необходимо установить все пакеты, от которых он зависит.

Совет

Большую коллекцию пакетов Debian можно скачать с сайта http://packages.debian.org.

Разобравшись с именованием, перейдём к установке пакетов Debian.

Установка пакетов с помощью dpkg (Installing Packages with dpkg)

Как и в случае с RPM-пакетами, на большинстве дистрибутивов для установки пакетов Debian доступны два варианта. Первый — воспользоваться удобной графической утилитой. Например, в Ubuntu можно открыть Ubuntu Software Center, выбрав Applications | Ubuntu Software Center. Эта утилита позволяет управлять пакетами Debian через меню с графическим интерфейсом, как показано на рис. 8-8.

Рис. 8-8. Установка пакетов с помощью Ubuntu Software Center.

Рис. 8-8. Установка пакетов с помощью Ubuntu Software Center.

Как и рассмотренные ранее графические утилиты для работы с RPM, Ubuntu Software Center позволяет устанавливать новые пакеты, удалять установленные и обновлять их. Пакеты загружаются из настроенных репозиториев. Утилита также автоматически определяет зависимости пакетов и устанавливает их.

Тем не менее, какими бы удобными ни были графические утилиты управления пакетами, они не входят в программу экзамена LPIC-1/Linux+. Для его сдачи необходимо уметь управлять пакетами с помощью инструментов командной строки.

Основным инструментом командной строки для управления пакетами Debian является dpkg. Синтаксис его использования:

dpkg options action package_name or package_filename

Доступные действия и параметры команды dpkg перечислены в таблицах 8-3 и 8-4.

Таблица 8-3. Действия команды dpkg

Действие Описание
-i Устанавливает указанный пакет.
-r Удаляет указанный пакет, но не удаляет его конфигурационные файлы.
-P Удаляет указанный пакет вместе со всеми его конфигурационными файлами.
--configure Перенастраивает указанный пакет (то же самое можно сделать с помощью dpkg-reconfigure).
-p Выводит информацию об указанном пакете. Пакет должен быть уже установлен.
-I Выводит информацию о пакете, который в настоящее время не установлен в системе.
-l Перечисляет все установленные в системе пакеты.
-L Перечисляет все файлы, установленные в системе указанным пакетом.
-S filename Определяет, каким пакетом был установлен указанный файл.

Например, если вы загрузили пакет с именем 3dchess_0.8.1-16_i386.deb и хотите его установить, следует сначала перейти командой cd в каталог с файлом, а затем от имени суперпользователя root ввести команду dpkg -i 3dchess_0.8.1-16_i386.deb, как показано в следующем примере:

rtracy@Ubuntu-Desktop:~$ su -
Password:
root@Ubuntu-Desktop:~# cd /home/rtracy/Downloads
root@Ubuntu-Desktop:/home/rtracy/Downloads# ls
3dchess_0.8.1-16_i386.deb
root@Ubuntu-Desktop:/home/rtracy/Downloads# dpkg -i 3dchess_0.8.1-16_i386.deb
(Reading database ... 138218 files and directories currently installed.)
Unpacking 3dchess (from 3dchess_0.8.1-16_i386.deb) ...
Setting up 3dchess (0.8.1-16) ...

Processing triggers for desktop-file-utils ...
Processing triggers for man-db ...

Таблица 8-4. Параметры команды dpkg

Параметр Связанное действие Описание
-B -r При удалении пакета, от которого зависят другие пакеты, этот параметр отключает зависимые пакеты.
-G -i Указывает dpkg не устанавливать пакет, если в системе уже установлена его более новая версия.
-E -i Указывает dpkg не устанавливать пакет, если в системе уже установлена та же версия этого пакета.
--ignore -i или -r Заставляет dpkg игнорировать информацию о зависимостях при установке или удалении пакета.
--no-act -i или -r Указывает dpkg проверить наличие проблем (например, неразрешённых зависимостей) при установке или удалении пакета, не выполняя при этом само действие.
--recursive -i Позволяет устанавливать несколько пакетов одновременно, используя * в части имени файла пакета в команде. Будут установлены все подходящие пакеты в текущем каталоге и его подкаталогах.

Обратите внимание: в этой команде пришлось указать полное имя файла пакета, поскольку он ещё не был установлен. После установки пакета можно ссылаться на него просто по имени. Например, чтобы просмотреть информацию об установленном пакете 3dchess, следует ввести команду dpkg -p 3dchess, как показано в следующем примере:

root@Ubuntu-Desktop:/home/rtracy/Downloads# dpkg -p 3dchess
Package: 3dchess
Priority: optional
Section: games
Installed-Size: 144
Maintainer: Debian Games Team pkg-games-devel@lists.alioth.debian.org
Architecture: i386
Version: 0.8.1-16
Depends: libc6 (>= 2.7-1), libx11-6, libxext6, libxmu6, libxpm4, libxt6,
xaw3dg
(>= 1.5+E-1)
Size: 34932
Description: 3D chess for X11
 3 dimensional Chess game for X11R6. There are three boards, stacked
 vertically; 96 pieces of which most are the traditional chess pieces with
 just a couple of additions; 26 possible directions in which to move. The
 AI isn't wonderful, but provides a challenging enough game to all but the
 most highly skilled players.

Аналогичным образом можно удалить пакет 3dchess командой dpkg -r 3dchess, как показано ниже:

root@Ubuntu-Desktop:/home/rtracy/Downloads# dpkg -r 3dchess
(Reading database ... 138218 files and directories currently installed.)
Removing 3dchess ...
Processing triggers for man-db ...
Processing triggers for desktop-file-utils ...

Теперь, когда вы умеете управлять пакетами с помощью dpkg, рассмотрим команду apt-cache.

Просмотр информации о пакетах с помощью apt-cache (Viewing Package Information with apt-cache)

В дополнение к dpkg для управления пакетами на системах на базе Debian можно использовать ряд инструментов APT (Advanced Package Tool — расширенный инструмент управления пакетами). Первым из них, с которым необходимо познакомиться, является apt-cache. Эта команда аналогична команде rpm -q и используется для запроса информации о пакетах из базы данных пакетов Debian (называемой кешем пакетов). Наиболее распространённые команды apt-cache перечислены в таблице 8-5.

Таблица 8-5. Наиболее распространённые команды apt-cache

Команда apt-cache Описание
apt-cache showpkg package_name или apt-cache show package_name Выводит информацию о пакете.
apt-cache stats Отображает количество установленных пакетов, информацию о зависимостях и другую статистику кеша пакетов.
apt-cache unmet Сообщает о всех неудовлетворённых зависимостях в кеше пакетов.
apt-cache depends package_name Выводит все зависимости пакета.
apt-cache pkgnames package_name Проверяет, установлен ли пакет в системе. Если имя пакета не указано, отображает список всех установленных в системе пакетов.
apt-cache search keyword Выполняет поиск указанного ключевого слова в описаниях пакетов.

Например, чтобы проверить, установлен ли в системе пакет 3dchess, с которым мы работали ранее, можно ввести команду apt-cache pkgnames 3dchess, как показано в следующем примере:

root@Ubuntu-Desktop:~# apt-cache pkgnames 3dchess
3dchess

Чтобы просмотреть информацию о пакете 3dchess, можно ввести команду apt-cache showpkg 3dchess, как показано ниже:

root@Ubuntu-Desktop:~# apt-cache showpkg 3dchess
Package: 3dchess
Versions:
0.8.1-16 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_
universe_binary-
i386_Packages)
 Description Language:
                File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_
karmic_universe_binary-
i386_Packages
                 MD5: c8da6105051b2cae45e59fac61bb2a2a
0.8.1-16 (/var/lib/dpkg/status)
 Description Language:
                File: /var/lib/dpkg/status
                 MD5: c8da6105051b2cae45e59fac61bb2a2a
Reverse Depends:
Dependencies:
0.8.1-16 - libc6 (2 2.4) libx11-6 (0 (null)) libxext6 (0 (null)) libxmu6
(0 (null)) libxpm4 (0 (null)) libxt6 (0 (null)) xaw3dg (2 1.5+E-1)
0.8.1-16 - libc6 (2 2.7-1) libx11-6 (0 (null)) libxext6 (0 (null)) libxmu6
(0 (null)) libxpm4 (0 (null)) libxt6 (0 (null)) xaw3dg (2 1.5+E-1)
Provides:
0.8.1-16 -
0.8.1-16 -
Reverse Provides:

Чтобы просмотреть информацию о зависимостях пакета 3dchess, следует ввести команду apt-cache depends 3dchess, как показано ниже:

root@Ubuntu-Desktop:~# apt-cache depends 3dchess
3dchess
  Depends: libc6
  Depends: libx11-6
  Depends: libxext6
  Depends: libxmu6
  Depends: libxpm4
  Depends: libxt6
  Depends: xaw3dg

Теперь, когда вы познакомились с apt-cache, перейдём к изучению apt-get.

Установка пакетов с помощью apt-get (Installing Packages with apt-get)

Помимо apt-cache, в состав набора инструментов APT входит утилита apt-get, которая является аналогом утилиты yum на системах с RPM. Она автоматически загружает и устанавливает пакеты вместе со всеми зависимыми пакетами.

Файл /etc/apt/sources.list определяет репозитории, из которых apt-get может устанавливать пакеты. Как и в случае с yum, эти репозитории могут располагаться на локальном оптическом диске (например, на установочном диске), на локальном жёстком диске или на сервере в интернете (по протоколу HTTP или FTP). Пример файла sources.list:

root@Ubuntu-Desktop:/etc/apt# cat sources.list
#deb cdrom:[Ubuntu 9.10 _Karmic Koala_ - Release i386 (20091028.5)]/
karmic main restricted
deb http://us.archive.ubuntu.com/ubuntu/ karmic main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic main restricted
deb http://us.archive.ubuntu.com/ubuntu/ karmic universe
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic universe
deb http://us.archive.ubuntu.com/ubuntu/ karmic-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic-updates universe
deb http://us.archive.ubuntu.com/ubuntu/ karmic multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic multiverse
deb http://us.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
deb http://security.ubuntu.com/ubuntu karmic-security main restricted
deb-src http://security.ubuntu.com/ubuntu karmic-security main restricted
deb http://security.ubuntu.com/ubuntu karmic-security universe
deb-src http://security.ubuntu.com/ubuntu karmic-security universe
deb http://security.ubuntu.com/ubuntu karmic-security multiverse
deb-src http://security.ubuntu.com/ubuntu karmic-security multiverse

Репозитории бинарных пакетов идентифицируются в этом файле префиксом deb, а репозитории с исходным кодом — префиксом deb-src. После префикса указывается URL репозитория.

Синтаксис использования apt-get прост:

apt-get options command package_name

Наиболее часто используемые команды и параметры apt-get перечислены в таблицах 8-6 и 8-7 соответственно.

Таблица 8-6. Наиболее распространённые команды apt-get

Команда apt-get Описание
install Устанавливает последнюю версию указанного пакета.
remove Удаляет указанный пакет.
update Обновляет информацию обо всех пакетах, доступных в настроенных репозиториях.
upgrade Обновляет все установленные пакеты до новейшей версии.
dist-upgrade Обновляет все установленные пакеты до новейшей версии, но пропускает обновление, если оно нарушает зависимость.
check Проверяет целостность установленных пакетов и базы данных пакетов.
clean Удаляет устаревшую информацию из базы данных пакетов.

Например, чтобы установить новый пакет с помощью apt-get, следует ввести (от имени суперпользователя root) команду apt-get install package_name. Чтобы установить программу для 3D-моделирования Blender, нужно ввести команду apt-get install blender. Пример выполнения:

root@Ubuntu-Desktop:~# apt-get install blender
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer
required:
  linux-headers-2.6.31-14 xaw3dg linux-headers-2.6.31-14-generic
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  cvs gettext libalut0 libavcodec52 libavdevice52 libavformat52 libavutil49
  libdc1394-22 libftgl2 libgsm1 libopenal1 libopenjpeg2 libschroedinger-1.0-0
  libswscale0 ttf-dejavu ttf-dejavu-extra
Suggested packages:
  yafray gettext-doc
The following NEW packages will be installed:
  blender cvs gettext libalut0 libavcodec52 libavdevice52 libavformat52
  libavutil49 libdc1394-22 libftgl2 libgsm1 libopenal1 libopenjpeg2
  libschroedinger-1.0-0 libswscale0 ttf-dejavu ttf-dejavu-extra
0 upgraded, 17 newly installed, 0 to remove and 276 not upgraded.
Need to get 23.2MB of archives.
After this operation, 61.0MB of additional disk space will be used.
Do you want to continue [Y/n]? Y

Таблица 8-7. Наиболее распространённые параметры apt-get

Параметр Связанная команда Описание
-d upgrade, install Загружает указанный пакет, но не устанавливает его.
-s Все команды Имитирует действия, связанные с указанной командой, но не выполняет их фактически.
-f install, remove Проверяет неудовлетворённые зависимости и, если возможно, исправляет их.
-q Все команды Подавляет вывод информации о ходе выполнения.
-y Все команды Автоматически отвечает «да» на все запросы, отображаемые в процессе выполнения.
--no-upgrade Указывает apt-get не обновлять пакет, если его старая версия уже установлена.

Как видно из примера выше, apt-get обнаружил пакет Blender в одном из настроенных репозиториев, рассчитал зависимости и предложил пользователю начать загрузку необходимых пакетов перед их установкой. Вот ещё несколько примеров команд apt-get:

  • apt-get upgrade package_name — обновляет пакет до новейшей версии;
  • apt-get remove package_name — удаляет указанный пакет;
  • apt-get dist-upgrade — обновляет все пакеты, установленные в системе.

Теперь рассмотрим утилиту aptitude.

Использование aptitude (Using aptitude)

Все инструменты APT, рассмотренные в этой главе, являются утилитами командной строки. Однако данный набор инструментов также включает удобную текстовую утилиту управления пакетами с меню, называемую aptitude. Запустить aptitude можно, просто введя команду aptitude в командной строке. При этом отобразится интерфейс, показанный на рис. 8-9.

Рис. 8-9. Управление пакетами с помощью aptitude.

Рис. 8-9. Управление пакетами с помощью aptitude.

С помощью aptitude можно выполнять практически все те же действия, что и с dpkg или apt-get: устанавливать пакеты, удалять их и обновлять. Например, чтобы установить новый пакет, следует нажать клавишу «стрелка вниз», выделить строку «Not Installed Packages» (Не установленные пакеты), перейти к нужному пакету и нажать клавишу g. Для доступа к меню aptitude можно также нажать ctrl-t, как показано на рис. 8-10.

Рис. 8-10. Доступ к меню aptitude.

Рис. 8-10. Доступ к меню aptitude.

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

Таблица 8-8. Команды aptitude в режиме командной строки

Команда aptitude Описание
aptitude install package_name Загружает и устанавливает указанный пакет.
aptitude remove package_name Удаляет указанный пакет.
aptitude purge package_name Удаляет указанный пакет, а также все связанные с ним конфигурационные и файлы данных.
aptitude update Обновляет список доступных пакетов.
aptitude full-upgrade Обновляет все установленные пакеты до последней версии.
aptitude search search_term Выполняет поиск по шаблонам, содержащим указанный поисковый запрос.

Теперь, когда вы знаете, как управлять пакетами RPM и Debian в системе Linux, необходимо изучить управление разделяемыми библиотеками. Этому посвящён следующий раздел.