четверг, 20 августа 2009 г.

Debian package manager

Так как моя "виртуальная ферма" в основном состоит из Debian виртуалок, то думаю для себя и для других данная инфа будет интерсна.
Данная инфа была взята с форума linuxforum.ru, за что всем тамошним участникам большое спасибо.
Использование менеджеров пакетов Debian:
Q: Какие инструменты используются в Debian для управления пакетами?
A: на самом "нижнем" уровне работает dpkg, Над ним располагаются основные оболочки, такие как apt-tools, dselect, рекомендованный ныне aptitude и графические, например synaptic.

Q: Как обновить список пакетов?
A: apt-get update или aptitude update пройдет по всему списку указанному у Вас в /etc/apt/sources.list и обновит списки пакетов по всем репозиториям.

Q: Списки я обновил, как теперь сами пакеты обновить?
A: apt-get upgrade - менее "интеллектуальный" вариант, обновляющий пакеты которые есть в системе
apt-get dist-upgrade более "интеллектуальный" вариант, который следит за тем, не сменили ли пакеты имя и пытающийся обновлять более важные пакеты даже ценой удаления менее важных.
aptitude upgrade - самый продвинутый из вариантов, который может, при необходимости, предложить несколько вариантов по разрешению проблем с зависимостями.

Q: А я не хочу все обновлять, как мне обновить только один пакет?
A: Точно так же как и установка пакета: apt-get install <пакет> или aptitude install <пакет>

Q: Как удалить пакет?
A: apt-get remove <пакет> или aptitude remove <пакет>

Q: А после удаления точно ничего от пакета не останется?
A: Для того, чтобы точно не осталось лучше пользоваться apt-get remove --purge <пакет> или aptitude purge <пакет>

Q: Как мне узнать как называется пакет для какой-то цели?
A: Попробуйте поиск по ключевым словам при помощи apt-cache search <слова>

Q: Хочу посмотреть информацию об установленном пакете.
A: apt-cache show <пакет> или dpkg --status <пакет>

Q: Мне принесли компакты дистрибутива, которых у меня не было, как мне их добавить?
А: apt-cdrom add должно помочь. Вставляете поочередно диски и для каждого выполняете apt-cdrom add -d=/точка/монтирования/. apt-cdrom просматривает индексные файлы на компактах, после чего производит автоматическое добавление оных в /etc/apt/sources.list как репозиториев.

Q: Мне кажется, что меня взломали и что-то сделали с <пакетом>
A: apt-get install --reinstall вернет пакет к изначальному состоянию, то есть такому какой он был на свежеустановленной системе.

Q: Очень хочется создать локальное зеркало, в какую сторону смотреть?
A: apt-move скорее всего решит полностью вашу проблему, для него достаточно указать где лежит архив файлов и куда выложить ваше зеркало.

Q: А подробнее про apt-move можно?
А: Можно:
apt-move update - переносит из /var/cache/apt/archives пакеты в директорию локального зеркала (указывается в /etc/apt-move.conf - LOCALDIR= )
По сути apt-move update является выполнением apt-move get, apt-move move, apt-move delete, apt-move packages.
apt-move get - формирует мастер-файл (не знаю как это перевести правильно на русский)
apt-move move - переносит пакеты из кэша apt в локальное зеркало
apt-move delete - удаляет устаревшие пакеты
apt-move packages - создает Packages.gz и Sources.gz дерева локального зеркала

Q: Как получить полный список установленных у меня пакетов?
А: dpkg --get-selections | grep -v "deinstall"

Q: У меня пакеты все уже удалени из кэша, а друг тоже хочет весь свежак, который у меня устанговлен...
A: Простой скрипт, выполненный в пустом каталоге соберет в нем пакеты, которые установлены в системе:
Код
dpkg --get-selections | grep -v "deinstall" | awk '{print $1}' | xargs dpkg-repack


Q: Есть подозрение, что из-за моих экспериментов в системе много мусора...
A: Попробуйте пакет debfoster, он при первом запуске спросит у вас о необходимости пакетов и удалит все лишнее.

Q: Где по умолчанию лежат пакеты, которые мне скачал apt-get?
A: в /var/cache/apt/archives

Q: Как мне поставить один *.deb пакет в систему?
A: При условии того, что удовлетворены все зависимости, dpkg -i <пакет> приведет к желаемому результату.

Q: В текущей папке у меня лежит .deb-пакет. Как мне посмотреть краткую информацию о нем?
A: dpkg -I <пакет>.deb

Q: Как заставит apt работать через proxy сервер?
A: Либо установив переменную окружения при помощи export "http://login:password@xxx.xxx.x.xx:yyyy", либо прописав в файл /etc/apt/apt.conf строку
Acquire::http::Proxy "http://xxx.xxx.xx:yyyy"; где xxx.xxx.xx - имя вашего прокси, yyyy - порт

Q: Я хочу определить в каком пакете необходимый мне файл (libodbc.so)
А: apt-file утилита поиска по содержимому пакетов.
apt-file update - получает файл Contents-.gz, следует учесть, что исходя из того, что проект Debian довольно большой, то и файл получится соответствующий.
apt-file search <файл> - поиск пакета с указанным файлом
Пример:
apt-file search libodbc.so
unixodbc: usr/lib/libodbc.so.1
unixodbc: usr/lib/libodbc.so.1.0.0
unixodbc-dev: usr/lib/libodbc.so

Q: А как просмотреть полный список содержимого пакета?
А: apt-file list <пакет> - отображает содержимое указанного пакета

Q: Я больше не собираюсь использовать apt-file, а Contents-.gz занимает место на диске
А: apt-file purge удалить все Contents-.gz
По поводу дополнительных опций - man apt-file

Q: Как мне найти неиспользуемые (осиротевшие) пакеты
А: deborphan без указания ключа осуществляет поиск в разделе библиотек, с указанием ключа "-a" поиск ведется во всех разделах. Имеется и интерфейс к deborphan - orphaner, поставляются в одном пакете.

Q: Есть локальный репозиторий из дистрибутивных дисков. Packages.gz сделал, а вот как сделать Contents-.gz для того, чтобы apt-file'ом можно было пользоваться
A: apt-ftparchive contents . | gzip > Contents-i386.gz, также с помощью apt-ftparchive можно создавать Sources.gz и Packages.gz
apt-ftparchive sources . | gzip > Sources.gz
apt-ftparchive packages .| gzip > Packages.gz

Q:Хочется создать дистрибутив некоторых выбранных пакетов и залить его на болванки. При этом хочется поместить на болванки и пакеты, не установленные в моей системе. Как это объяснить apt-move?
A: Вариант номер один - посмотреть в сторону jidgo, возможно, он вас устроит, вариант номер два - получить недостающие пакеты, но не устанавливать их в систему с помощью аpt-get install -d <пакеты>.

Q: У меня стоит мешанина из stable, testing, unstable и даже кое-что из experimental установил. Как мне сделать, чтобы все в таком виде и обновлялось?
A: Чтобы этого добиться, поместите следующую строку в /etc/apt/apt.conf:
APT::Default-Release "testing";
Затем, при установке пакетов из, например, нестабильного дистрибутива, просто
используйте ключ -t:
# apt-get -t unstable install имя_пакета
помимо этого рекомендуем прочитать man apt-preferences

Q: При установке пакета xxx с помощью apt (или aptitude) получаю список зависимостей и список "предлагаемых пакетов". Устанавливаются только зависимости и нужный мне пакет. Что такое "предлагаемые пакеты", и что с ними делать?
A:Предлагаемые пакеты - это пакеты, без которых устанавливаемая программа будет работать, но не будет реализовывать весь свой функционал. Обычно такие "предлагаемые пакеты" позволяют добавить в программу то или иное действие или поддержку тех или иных форматов и/или протоколов.
apt (или aptitude) знает, что пользователь может захотеть иметь этот функционал и сообщает ему, что он может ещё установить для его (функционала) получения.
Если Вы используете aptitude и хотите устанавливать "предлагаемые пакеты" автоматически, как и обязательные зависимости, Вы можете вызывать aptitude с ключём "--with-recommends".

Комментариев нет: