Управление пакетами в Debian
- Базовая конфигурация
- Основные утилиты для управления пакетами
- Примеры использования apt-get
- Управление пакетами с помощью aptitude
- Оптимизированный sources.list
- Команда dpkg-divert
- Что делать, если команда dpkg сломана
- Локальный архив пакетов
- Команда auto-apt
- Основные ошибки при управлении пакетами
Базовая конфигурация
APT использует файл, который содержит список "источников" из которых могут быть получены пакеты. Это файл /etc/apt/sources.list. Записи в этом файл обычно следуют формату:
deb http://URL/debian distribution parameter1 parameter2 parameter3 deb-src http://URL/debian distribution parameter1 parameter2 parameter3
Конечно, указанные выше записи приведены только для примера и не должны использоваться. Первое слово каждой линии, deb или deb-src, показывают тип архива: является ли эта строка ссылкой на бинарные пакеты (deb), которые являются прекомпилированными пакетами, которые мы обычно используем, или это это ссылки на исходные коды оригинальных программ, плюс контрольные файлы Debian (.dsc) и diff.gz, содержащие изменения необходимы для "дебианизации" программы.
В Debian версии 6.0.5, установленного загрузкой файлов из интернета, sources.list имеет следующее содержание:
#deb cdrom:[Debian GNU/Linux 6.0.5 _Squeeze_ - Official amd64 NETINST Binary-1 20120512-20:40]/ squeeze main deb http://mirror.yandex.ru/debian/ squeeze main deb-src http://mirror.yandex.ru/debian/ squeeze main deb http://security.debian.org/ squeeze/updates main deb-src http://security.debian.org/ squeeze/updates main #squeeze-updates, previously known as 'volatile' deb http://mirror.yandex.ru/debian/ squeeze-updates main deb-src http://mirror.yandex.ru/debian/ squeeze-updates main
Здесь представлены строки, необходимые для базовой установки Debian. Первый блок указывает на региональный архив основных файлов, второй - на обновления безопасности, а третий на обновления Debian.
Строки, начинающиеся с deb - ссылки на архивы бинарных пакетов, начинающиеся с deb-src - ссылки на архивы исходных кодов пакетов.
Файл /etc/apt/sources.list может содержать различные типы строк. APT умеет использовать архивы следующих типов: http, ftp, file (локальные файлы, то есть директории, содержащие примонтированные файловые системы типа ISO9660) и ssh, насколько мне известно.
Не забудьте запустить команду apt-get update после изменения файла /etc/apt/sources.list. Вы должны сделать это чтобы APT мог получить списки пакетов из указанных вам источников. Когда вы устанавливаете пакет APT получает необходимые файлы с хостов перечисленных в /etc/apt/sources.list, сохраняет их в локальном репозитарии (/var/cache/apt/archives/) и переходит к установке.
Основные утилиты для управления пакетами
dpkg – установщик пакетных файлов Debian
apt-get – утилита командной строки для APT
aptitude – имеет как псевдографический интерфейс, так и вариант для командной строки
synaptic – графический (gui) интерфейс для APT
dselect – менеджер пакетов на основе меню
tasksel – установщик задач
Для установки программ с помощью apt выполните следующее:
# apt-get install software
Утилита имеет следующие параметры:
-h - отобразить справку
-d - только загрузить пакеты, но не устанавливать их
-f - попытаться продолжить, если тесты целостности не пройдены
-s - ничего не делать, только провести симуляцию установки
-y - отвечать Да на все вопросы и ничего не спрашивать
-u - также отобразить список обновляемых пакетов.
Примеры использования apt-get
Если вы как-либо повредили установленный пакет или просто хотите обновить пакет до последней версии, которая доступна, вы можете использовать параметр --reinstall, к примеру, так:
# apt-get --reinstall install packagename
Обновление списка пакетов из источников, перечисленных в вашем файле sources.list:
# apt-get update
Обновление программ с помощью APT:
# apt-get -u upgrade
Чтобы изменить список зеркал APT:
# apt-setup
Искать пакет в локальном кэше:
# apt-cache search package
Удалить программу с помощью APT:
# apt-get remove software
Обновить список пакетов:
# apt-get update
Обновить доступные списки пакетов:
# dselect update
Обновить все установленные пакеты:
# apt-get upgrade
Установить пакет:
# apt-get install pkg
Удалить пакет:
# apt-get remove pkg
Показать все установленные и удалённые пакеты:
# dpkg -l
Показать статус установки пакета:
# dpkg -l pkg
Показать все пакеты, удовлетворяющие маске:
# dpkg -S pattern
Показать пакеты, которые содержат строку:
# dpkg
Показать список файлов в пакете:
# dpkg -L pkg
Показать статус пакета:
# dpkg -s pkg
Показать детали пакета:
# dpkg -p pkg
Показать связанные пакеты:
# apt-cache search string
Установить пакет из deb файла:
# dpkg -i file.deb
Вычистить пакет из системы вместе с конфигурационными файлами:
# dpkg -P pkg
Повторно запустить конфигурацию для пакета:
# dpkg-reconfigure pkg
Получить исходные коды пакета:
# apt-get source pkg
Определяет зависимости для исходников и устанавливает их, если нужно:
# apt-get build-dep name
Установить пакет из указанного релиза:
# apt-get -t release install pkg
Предотвращает загрузку указанной программы при старте системы:
# update-rc.d -f name remove
Обновить дистрибутив:
# apt-get –u dist-upgrade
Параметр -u показывает список обновляемых пакетов:
# apt-show-versions -u
Как узнать, какие пакеты могут быть обновлены?
apt-show-versions - это программа, которая показывает какие пакеты в системе могут быть обновлены и, кроме того, некоторую полезную информацию.
Управление пакетами с помощью aptitude
Aptitude является в настоящий момент предпочтительной системой для работы с APT (Advanced Package Tool). Она запоминает, какие пакеты были установлены напрямую Вами, а какие пакеты были установлены за счет зависимостей. Недавние пакеты будут автоматически удалены системой aptitude, когда они будут уже не будут требоваться какому-либо пакету, установленному напрямую. Aptitude имеет продвинутые функции фильтрации пакетов, но они могут быть сложны в настройке.
Обновление локального кеша доступных пакетов (ранее: apt-get update):
# aptitude update
Обновить доступные пакеты (ранее: apt-get upgrade):
# aptitude upgrade
Обновить доступные пакеты, даже если это значит удаление части пакетов (ранее: apt-get dist-upgrade):
# aptitude dist-upgrade
Установить пакет (ранее: apt-get install):
# aptitude install pkgname
Удалить пакет (ранее: apt-get remove):
# aptitude remove pkgname
Удалить пакет и конфигурационные файлы (ранее: apt-get –purge remove):
# aptitude purge pkgname
Искать пакет с текстом "string" в имени или описании (ранее: apt-cache search string):
# aptitude search string
Показать подробную информацию о пакете (ранее: apt-cache show pkgname):
# aptitude show pkgname
Удалить загруженные файлы пакетов (ранее: apt-get clean):
# aptitude clean
Удалить только файлы пакетов старых версий, но пакеты текущих версий оставить (ранее: apt-get autoclean):
# aptitude autoclean
Зафиксировать пакет на текущей версии и не обновлять его автоматически (ранее: не понятная команда echo-to-file):
# aptitude hold pkgname
Чтобы снять фиксацию следует использовать параметр unhold.
Оптимизированный sources.list
Вообще говоря, усилия для создания оптимизированного sources.list не дают особого улучшения.
apt-spy создает sources.list автоматически, на основе задержек и пропускной способности. netselect-apt создает более полный sources.list, но использует более простой метод выбора лучшего зеркала (сравнения времени пингов).
# aptitude install apt-spy # cd /etc/apt ; mv sources.list sources.list.org # apt-spy -d testing -l sources.apt
Команда dpkg-divert
Файловые "отклонения" (divertions) - это способ заставить dpkg не устанавливать файл в директорию по умолчанию, но устанавливать в измененную директорию. "Отклонения" могут быть использованы с помощью дебиановских скриптов управления пакетами для перемещения файла в другое место когда он вызывает конфликты. Системные администраторы также могут использовать "отклонение" для подавления конфигурационного файла пакета или в случае, когда некоторые файлы (которые не помечены как conffiles) должны быть сохранены системой dpkg во время установки новой версии пакета, содержащего эти файлы.
# dpkg-divert [--add] filename # add "diversion" # dpkg-divert --remove filename # remove "diversion"
Что делать, если команда dpkg сломана
Сломанный dpkg делает невозможным установку любых .deb файлов. Процедура, описанная ниже, поможет вам в этой ситуации. Вам понадобится любая команда для браузинга сайтов, к примеру, links.
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/ ... download the good dpkg_version_arch.deb $ su password: ***** # ar x dpkg_version_arch.deb # mv data.tar.gz /data.tar.gz # cd / # tar xzfv data.tar.gz
Для архитектуры i386, в URL может быть использована также ссылка http://packages.debian.org/dpkg
Локальный архив пакетов
Для того, чтобы создать локальный архив пакетов, совместимый с APT и системой dselect, пакеты должны быть созданы и занесены в особое дерево директорий.
Локальный deb репозитарий, похожий на официальный архив Debian, может быть создан следующим образом:
# aptitude install dpkg-dev # cd /usr/local # install -d pool # physical packages are located here # install -d dists/unstable/main/binary-i386 # ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override # editor override # adjust priority and section # dpkg-scanpackages pool override /usr/local/ \ > dists/unstable/main/binary-i386/Packages # cat > dists/unstable/main/Release << EOF Archive: unstable Version: 3.0 Component: main Origin: Local Label: Local Architecture: i386 EOF # echo "deb file:/usr/local unstable main" \ >> /etc/apt/sources.list
Другим способом, быстрый и грязный локальный deb архив может быть создан так:
# aptitude install dpkg-dev # mkdir /usr/local/debian # mv /some/where/package.deb /usr/local/debian # dpkg-scanpackages /usr/local/debian /dev/null | \ gzip - > /usr/local/debian/Packages.gz # echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list
К этим архивам можно получить удаленный доступ, если предоставить доступ к этим директориям посредством HTTP или FTP и внести соответствующие изменения в файл /etc/apt/sources.list
Команда auto-apt
auto-apt - это приложение для установки пакетов по требованию.
$ sudo auto-apt update ... update database $ auto-apt -x -y run Entering auto-apt mode: /bin/bash Exit the command to leave auto-apt mode. $ less /usr/share/doc/med-bio/copyright # access non-existing file ... Install the package which provide this file. ... Also install dependencies
Основные ошибки при управлении пакетами
Ошибки всегда случаются, многие из них по причине не внимательности пользователей. Ниже представлены наиболее часто встречающиеся ошибки и информация о том, что делать при их возникновении.
1. Если Вы получили представленное ниже сообщение, когда пытались выполнить команду вида apt-get install package
Reading Package Lists... Done Building Dependency Tree... Done W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory) W: You may want to run apt-get update to correct these missing files E: Couldn't find package penguineyes
то вы забыли выполнить команду apt-get update после того, как внесли изменения в файл /etc/apt/sources.list.
2. Если ошибка выглядит как эта:
E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied) E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
в момент, когда вы пытаетесь воспользоваться одним из методов apt-get, кроме source, то у вас нет прав суперпользователя, то есть вы работаете под обычным пользователем.
Существует ошибка похожая на представленную выше, которая возникает когда вы запускаете две копии apt-get в одно и то же время или если вы даже пытаетесь запустить apt-get пока активен процесс dpkg. Единственный метод, который может использоваться одновременно с другими - это метод source.
3. Если установка прерывается в середине процесса и вы обнаруживаете, что более нет возможности устанавливать или удалять пакеты, попробуйте воспользоваться следующими двумя командами:
# apt-get -f install # dpkg --configure -a
и затем попробуйте заново провести установку. Может понадобиться выполнить вторую из представленных выше команд больше чем один раз. Это может быть хорошим уроком для тех приключенцев, которые любят использовать "не стабильный" софт.
4. Если вы получили ошибку
E: Dynamic MMap ran out of room
во время работы apt-get update, то добавьте следующую строку в файл /etc/apt/apt.conf:
APT::Cache-Limit 10000000;
Опубликовано