среда, 27 декабря 2006 г.

Система управления пакетами APT.

Debian отличается от других дистрибутивов Linux очень удобной работой с пакетами. Для этих целей в Debian существуют два удобных менеджера пакетов: apt и dpkg. В данной статье я опишу лишь работу с менеджером пакетов APT.
APT - это Advanced Packaging Tool, система управления пакетами, то есть набор программ для установки, удаления, поиска бинарных пакетов определенных форматов. В набор входят следующие утилиты:

  • apt-get - утилита для установки и удаления пакетов;
  • apt-cache - утилита для работы с кэшами пакетов (например, поиса пакетов по ключевым словам);
  • apt-cdrom - утилита управления CDROM ;
  • apt-file утилита поиска по содержимому пакетов
  • apt-config - инструмент для чтения конфигурационного файла APT;
  • apt-setup - утилита для легкого доступа и управления sources.list;
  • apt-move - утилита для создания локального зеркала пакетов
  • apt-key - управление ключами пакетов;
  • apt-sortpkgs - утилита сортировки index-файлов (файлов, которые содержат информацию о всех доступных пакетах сайта);
  • apt-ftparchive - утилита для создания index-файлов (создается на сайте);
  • apt-extracttemplates - утилита для извлечения DebConf конфигов и шаблонов из пакетов Debian;
  • и другие.



Рассмотрим подробней работу некоторых из приведенных утилит.

apt-get и apt-cache



Утилита apt-get используется для установки и удаления пакетов. Всю информацию она берет с файла /etc/apt/sources.list. Структура этого файла следующая:

#это комментарий
deb http://host/debian distribution раздел1 раздел2 раздел3
deb-src http://host/debian distribution раздел1 раздел2 раздел3

Живой пример с моего компьютера:

# Line commented out by installer because it failed to verify:
deb http://kr.archive.ubuntu.com/ubuntu/ dapper main restricted
# Line commented out by installer because it failed to verify:
deb-src http://kr.archive.ubuntu.com/ubuntu/ dapper main restricted
...................................................

Каждая строка начинается либо с deb либо с deb-src. Эти строки указывают на адреса, где хранятся пакеты. Причем deb указывает на то, что по данному адресу находятся бинарные .deb пакеты, т.е. уже скомпилированные на компьютере разработчика, а deb-src - на то что здесь хранятся архивы исходных текстов плюс управляющие файлы. Обычно после установки многие источники закомментированы. Поэтому многие пакеты недоступны. Для решения этой проблемы надо зайти в файл /etc/apt/sources.list и удалить знак # перед нужным источником.
Также на сайте http://www.apt-get.org/ можно найти список доступных источников.
После изменений в указанном выше файле нужно запустить утилиту:

apt-get update

которая обновит список репозиториев и запишет его в базу данных доступных пакетов. Теперь информация о доступных пакетах указанных репозиториев хранится у Вас на компьютере. Даже без доступа к Интернету можно посмотреть доступные пакеты. Это делается командой:

apt-cache search имя_пакета(часть имени, свойство, присущее данному пакету...)

Если пакет доступен, устанавливаем его:

# apt-get install имя_пакета

Здесь начинается вся прелесть утилиты apt-get. Программа проверит все зависимости пакета, скачает и установит их и уже после этого установит сам пакет. Это называется автоматическим разрешением зависимостей.
Если нужно удалить пакет:

# apt-get remove имя_пакета.

Если нужно обновить всю систему, то запускаем утилиту
apt-get update - она обновляет информацию о новых версиях пакетов
и после этого
apt-get upgrade - устанавливает доступные обновления для всех пакетов системы

И в дополнения к теме обновлений:
apt-get dist-upgrade - используйте для обновления всего дистрибутива до более новой версии.

Apt-get закачивает все архивы пакетов в папку /var/cache/apt/archives/. Для удаления всех архивов с этой папки, используйте утилиту:

apt-get clean - удалит все архивы с указанной выше папки, или
apt-get autoclean - удалит только те файлы пакетов, которые больше не могут быть получены и использованы.

Утилита apt-cache уже упоминалась выше. Рассмотрим другие ее полезные возможности:

apt-cache show имя_пакета - просмотр детальной информации о пакете.
apt-cache showpkg имя_пакета - выводит более общую информацию о пакете.
apt-cache depends имя_пакета - просмотреть лишь зависимости пакета.
apt-cache rdepends имя_пакета - показать все пакеты, которые нуждаются в указанном.

apt-cdrom

Для добавления CD-ROM(DVD) в список доступных репозиториев ( в файл /etc/apt/sources.list) есть утилита:

apt-cdrom add

Если дисков несколько, то вставляем все по очереди.

apt-file

Использование.
Сначала надо обновить информацию о файлах:
apt-file update
После этого можно пользоваться некоторыми полезными функциями данной программы. Для примера найдем какому пакету принадлежит файл libkipi.so.0.

apt-file search libkipi.so.0

libkipi0: usr/lib/libkipi.so.0
libkipi0: usr/lib/libkipi.so.0.1.0

Просмотрим все содержимое этого пакета:

apt-file list libkipi0

libkipi0: usr/lib/libkipi.so.0
libkipi0: usr/lib/libkipi.so.0.1.0
libkipi0: usr/share/apps/kipi/data/banner_left.png
libkipi0: usr/share/doc/libkipi0/AUTHORS
libkipi0: usr/share/doc/libkipi0/README
........................

В отличие от apt-cache, apt-file может искать файлы в пакетах и выводить полный список файлов данного пакета, даже если он не установлен.

apt-setup

apt-setup - это утилита для удобного добавления дополнительных репозиторев в файл /etc/apt/sources.list.
Запускаем apt-setup , после чего должно появиться меню с вопросами о конфигурации файла /etc/apt/sources.list. Вопросы вида: выбрать с чего ставить (CD-ROM, http, ftp...), выбрать страну, выбрать с какого зеркала ставить, указать прокси (если надо). Если у Вас нет данной утилиты, то надо поставить пакет base-config. Альтернатива: править все вручную.

apt-config

Все настройки APT прописаны в конфигурационном файле /etc/apt/apt.conf. Утилита apt-config может отобразить этот файл на экран, используя

apt-config dump

APT "";
APT::Architecture "amd64";
APT::Build-Essential "";
APT::Build-Essential:: "build-essential";
APT::Periodic "";
..................

Более полезным будет использование этой утилиты в скриптах.

apt-move

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

apt-move update - переносит из /var/cache/apt/archives пакеты в директорию локального зеркала (указывается в /etc/apt-move.conf как переменная LOCALDIR=path_to).
По сути apt-move update является выполнением последовательности команд:

apt-move get - формирует мастер-файл;
apt-move move - переносит пакеты из кэша apt в локальное зеркало;
apt-move delete - удаляет устаревшие пакеты;
apt-move packages - создает Packages.gz и Sources.gz дерева локального зеркала.

apt-key

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

sudo apt-key list

pub 1024D/437D05B5 2004-09-12
uid Ubuntu Archive Automatic Signing Key
.............

Если Вы добавили некоторый неофициальный репозиторий в файл /etc/apt/sources.list, то могут возникнуть проблемы с ключами. Чтобы их решить, нужно добавить ключи этого пакета в файл списка связок ключей (/etc/apt/trusted.gpg), используя команду

apt-key add файл_содержащий_ключ

Более подробно о службе безопасности утилиты APT можно почитать здесь.


Помощь.

APT - предоставляет хорошую документацию - пакеты apt-doc и apt-howto-ru. Устанавливаем их. Для того, чтобы прочитать apt-doc, набираем в браузере следующее usr/share/doc/apt-doc/guide.html/index.html. Хороший справичник HOWTO на русском языке смотрим здесь - /usr/share/doc/Debian/apt-howto/apt-howto.ru.html.

Литература:

1. ATP-HOWTO
2.http://linuxhelp.blogspot.com/2005/12/concise-apt-get-dpkg-primer-for-new.html
3.
http://wiki.debian.org/SecureApt
4.http://citkit.ru/articles/130/

(продолжение - менеджер пакетов DPKG)

8 коммент.:

virens комментирует...

Хорошая шпаргалка, спасибо. Если меня постигнет амнезия, буду знать, куда идти :-)

Andrey Fedoseev комментирует...

А как же aptitude? Вместо apt-get я сейчас использую только его.

serhiy cherevko комментирует...

К сожаление с aptitude я почти не знаком. Вернее как-то так получалось что все время использовал или apt или dpkg. И вроде хватало.

Roman Lagunov комментирует...

Кстати, многие рекомендуют использовать именно aptitude, аргументируюя это тем, что он лучше справляется с проблемами зависимостей.

Ну, и опять же, довольно-таки удобный "псевдографический" интерфейс

diesel комментирует...

> Кстати, многие рекомендуют использовать именно aptitude, аргументируюя это тем, что он лучше справляется с проблемами зависимостей.

правильней "разработчики Debian рекомендуют использовать aptitude".

> Ну, и опять же, довольно-таки удобный "псевдографический" интерфейс.

Откройте для себя aptitude install pkg-name, aptitude search etc.

Vladislav комментирует...

Неплохо бы добавить apt-src - тоже во многом полезна

serhiy cherevko комментирует...

Ну если разработчики рекомендуют aptitude, то значит придется учить:).

calibra комментирует...

Если меня постигнет амнезия, буду знать, куда идти :-)