30 мая 2010 г.

Работа с apt

APT - Advanced Packaging Tool - Инструмент управления пакетами, позволяющий обслуживать зависимости и сохранять пользовательские настройки программ. Создан для Debian, и работает в других дистрибутивах на основе Debian, таких как Ubuntu.
Хорошее представление об этом даёт цитата из руководтсва по apt:

В начале был .tar.gz. Пользователи должны были сначала скомпилировать программы, которые они хотели использовать на своих системах GNU/Linux. Когда создавался Debian, возникла необходимость в системе управления пакетами, установленными на машине. Этой системе было дано имя dpkg. Этот известный "пакет" первым появился на GNU/Linux, прежде чем Red Hat решил создать собственную систему "rpm".
Затем перед создателями GNU/Linux быстро возникла новая дилемма. Им понадобился способ для быстрого, практического и эффективного пути установки пакетов, который должен автоматически обслуживать зависимости и сохранять настроечные файлы при обновлении. Тут снова, Debian вышел вперед и предложил миру APT, Advanced Packaging Tool, который затем был портирован Conectiva для использования с rpm и был адаптирован некоторыми другими дистибутивами.
Это самое руководство находится тут, и даже несмотря на свой год создания (2002) в целом оно и сейчас актуально.
Здесь частичный коспект этого документа и манов по использованию инструментов apt и aptitude.

Файл со списком источников

Для работы APT требуется файл со списком источников пакетов. Обычно это /etc/apt/sources.list (в ubuntu ещё используются отдельные файлы, находящиеся в папке /etc/apt/sources.list.d/ для программ из нестандартных источников).
Строки файла имеют следующий формат:
deb http://host/debian distribution section1 section2 section3 deb-src http://host/debian distribution section1 section2
deb - это архив двоичных пакетов (*.deb), deb-src - архивы пакетов с исходными текстами программ.
Это только пример (вместо debian в других дистрибутивах подставляется соответствующее (ubuntu, linuxmint), вместо distibution нужно вписывать соответствующую версию дистрибутива (lenny, karmic, lucid, isadora), вместо sections соответствующие разделы - тоже разные у каждого дистрибутива).
Строки, начинающиеся с решётки (#) - закомментированные, не используются, и достаточно удалить символ решётки, чтобы начать их использовать.

В исходном руководстве дальше есть много полезной информации: как сделать локальный репозиторий у себя на жёстком диске, как выбрать наилучшие зеркала для добавления в список источников, как использовать смешанную систему на основе стабильных и тестируемых пакетов, работа с некоторыми дополнительными программами, распространённые ошибки и тому подобное. Но сюда я перенесла только основные команды, необходимые для работы с пакетами, работающие как на debian, так и на ubuntu. Остальное можно узнать, набрав в консоли man и через пробел команду, использование которой нужно узнать лучше. К сожалению полностью переведённых на русский язык манов, я не нашла.

Основные операции с пакетами (установка-удаление)


apt-get install package1 package2 установит перечисленные через пробел пакеты
Если для работы одного из указанных пакетов требуется другой пакет, даже не указанный в команде, он всё равно будет установлен как зависимость, после дополнительного вопроса.
Все скачанные при установке пакеты остаются в папке /usr/cache/apt/archives/.

apt-get --reinstall install package переустановит указанный пакет
apt-get install package/distribution установит пакет из указанного дистрибутива (для debian возможно значения stable, testing или unstable)
apt-get install package=version установит пакет указанной версии

apt-get remove package удалит пакет и все его зависимости
apt-get remove --purge package удалит пакет, его зависимости и все пользовательские настройки программы

Многие из них могут применяться и с другими командами:
-d только загружает пакеты, но не устанавливает их
-s имитирует указанные действия, не выполняя их на самом деле (симуляция)
-y автоматически ответит "да" на все вопросы, не выводя их
-u выведет список всех пакетов, которые должны быть обновлены
-q не будет выводить индиктор хода работы
-V покажет полные номера версий пакетов
-f попытается починить сломанные зависимости
-m игнорировать отсутствующие пакеты (в тех случаях, когда они не могут быть скачаны или скачаны с ошибками)
Пример использования: sudo apt-get -ys install gajim - произведёт имитацию установки пакета gajim, не спрашивая подтверждения для установки зависимостей при этом.

Команды по установке и удалению можно совмещать следующим образом:
apt-get install package1 package2 package3- установит пакеты 1 и 2 и удалит пакет 3 (минус) apt-get remove package1 package2 package3+ удалит пакеты 1 и 2 и установит пакет 3 (плюс)

Другие операции с базой данных

apt-get upgrade обновит все установленные в системе пакеты, для которых уже появились более новые версии
apt-get dist-upgrade обновит полностью систему, с помощью этой же команды возможет переход на более свежую версию дистрибутива

apt-get update обновляет список пакетов и файлы их описаний.
Пожалуй самая важная команда, которая всегда должна выполняться перед обновлением и желательно перед любой работой с базой, особенно после изменения списка источников.
Программа Apt для определения зависимостей и других операций использует базу данных с информацией об установленных, не установленных и доступных для установки пакетах, которая хранится в файлах Packages.gz. Вышеприведённая команда синхронизирует информацию, хранящуюся локально на компьютере пользователя с данными, находящимися в он-лайновых источниках. Соответственно, если в источниках происходят какие-то изменения, а синхронизация не производилась, некоторые действия не смогут быть выполненны или будут выполнены некорректно (простейший пример: добавлен новый источник и производится попытка установить из него программу - пока не будет выполнена команда apt-get update, программу невозможно будет установить, так как в локальной базе нет информации об новом источнике и его содержимом).

apt-get check обновляет кэш пакетов и проверяет пакеты, которые недоустановлены, повреждены или установлены с ошибками
apt-get clean очищает локальное хранилище полученных файлов пакетов, но оставляет файлы из /var/cache/apt/archives/ и /var/cache/apt/archives/partial/
apt-get autoclean удаляет только те файлы, которые больше не могут быть получены и использованы
apt-get autoremove удаляет пакеты, которые были установлены автоматически для удовлетворения зависимостей, но больше не используются

Работа с исходными текстами

Должны быть подключены источники с архивами исходников (deb-src)
apt-get source package скачивает архивы исходных текстов и распаковывает их (в каталог, из которого выполняется команда)
apt-get -b source package скачивает исходники и автоматически создаёт из них установочный пакет
apt-get --compile source package вариант предыдущей команды
apt-get --download-only source package только скачивает архивы, но не распаковывает их
apt-get build-dep package устанавливает пакеты, необходимые для правильной сборки указанного пакета

Работа с оптическим носителем

apt-cdrom add добавит Cd-Rom в качестве источника для установки программ
apt-cdrom -d /path/ add добавит в качестве источника Cd-rom, точка монитрования которого отличается от стандартной (но она должна быть настроена в /etc/fstab)
apt-cdrom ident идентифицирует Cd-Rom без добавления его в список источников

Получение различной информации о пакетах

apt-cache search packagename ищет указаный пакет в базе по имени или любому слову в имени и описании (может использоваться с поисковыми запросами)
apt-cache show packagename покажет полную информацию об указанном пакете
apt-cache showpkg packagename покажет общую информацию о пакете (версию, зависимости)
apt-cache depends packagename покажет зависимости пакета
apt-cache stats покажет некоторую статистическую информацию о локальной базе пакетов

Дополнительные программы

apt-show-versions покажет, какие версии пакетов установлены в системе
apt-show-versions -u покажет список пакетов, которые могут быть обновлены, текущие и доступные версии

auto-apt run command запросит установку необходимых пакетов для выполнения указанной команды и установит их
auto-apt update обновит свою базу

apt-file search filename покажет пакет, которому принадлежит указанный файл
apt-file list packagename покажет список файлов, содержащихся в указанном пакете
apt-file update обновит свою базу (по-умолчанию использует базу auto-apt)

apt-listchanges покажет список изменений в последних версиях пакетов (эти списки хранятся в файлах /usr/share/doc/packagename/changelog.Debian.gz)

3 комментария: