uzverss - Памятка по управлению пакетами в Debian и Ubuntu
View:Recent Entries.
View:Archive.
View:Friends.
View:User Info.

Subject:Памятка по управлению пакетами в Debian и Ubuntu
Time:08:29 pm

Все управление пакетами в Debian происходит с помощью следующих простых команд.

Обновление базы доступных пакетов:
sudo apt-get update

Пакеты можно искать через веб-интерфейс или с помощь команды:
apt-cache search mysql | less

Просмотр дополнительной информации о пакете:
apt-cache show mysql-server

Получения списка доступных версий пакета:
apt-cache madison postgresql

Установка пакета:
sudo apt-get install имя_пакета

… или, в случае всяких там Dropbox, Skype и тп:
sudo dpkg -i dropbox_1.4.0_i386.deb

Переустановка пакета:
sudo apt-get install --reinstall имя_пакета

Даунгрейд или установка определенной версии:
sudo apt-get install имя_пакета=версия

Если не переустанавливается, можно попробовать так (осторожно, временно ломаются зависимости):
sudo dpkg --purge --force-depends имя_пакета
sudo apt-get install имя_пакета

Обновление всех пакетов (с подробностями):
sudo apt-get -V upgrade

Запретить/разрешить обновление конкретного пакета:
sudo apt-mark hold имя_пакета
sudo apt-mark unhold имя_пакета

Посмотреть список пакетов на холде:
sudo dpkg --get-selections | grep hold

Проверка контрольных сумм установленных пакетов:
sudo dpkg --verify

Список установленных пакетов и поиск по нему:
dpkg -l | grep firefox

Удаление пакета:
sudo apt-get remove firefox

Удаление вместе с файлами конфигурации:
sudo apt-get purge firefox

Удаление пакетов, которые были установлены в качестве зависимостей и более не требуются:
sudo apt-get autoremove # --purge для удаления конфигов

Чистка кэша deb-пакетов (каталог /var/cache/apt/archives/):
sudo apt-get clean

Просмотр логов — что и когда ставилось:
/var/log/dpkg.*

Иногда нужно определить, к какому пакету относится файл. Данную задачу можно решить так:
dpkg -S /usr/bin/pstree

А еще можно получить список всех файлов, содержащихся в пакете:
dpkg-query -L package_name

В общем, все легко и просто, если не считать пары моментов. Во-первых, иногда требуется установить какой-нибудь экспериментальный пакет (из ветки sid). Для этого нужно открыть файл /etc/apt/sources.list и дописать в него строчку:

deb http://ftp.ru.debian.org/debian sid main

… после чего говорим «sudo apt-get update», ставим нужный пакет, удаляем строчку из sources.list и вновь говорим «sudo apt-get update».
Во-вторых, некоторые пакеты тянут за собой слишком много лишнего софта. Например, mail-notifications тянет за собой postfix и требует его настроить. Для решения это проблемы следует прописать в /etc/apt/apt.conf следующее:

APT::Install-Recommends "0";

После чего все должно пройти как по маслу:
sudo apt-get update
sudo apt-get install mail-notification

Альтернативное решение, не требующее правки apt.conf:
sudo apt-get --no-install-recommends install mail-notification

Бывает еще так, что нужно создать резервную копию уже установленного пакета. Например, если он по каким-то причинам был удален из репозитория. Такое иногда бывает в случае со внутренними репозиториями компании. Решается эта проблема так:

sudo apt-get install dpkg-repack
sudo dpkg-repack имя_пакета

Из приятных фишек Debian/Ubuntu мне особенно хотелось бы отметить умение выводить суммарный размер пакетов при их установке/удалении, а также способность делать так:

$ dia
Приложение 'dia' может быть найдено в следующих пакетах:
* dia-gnome
* dia
Попробуйте: sudo apt-get install <выбранный пакет>

Чтобы такая же фишка появилась в zsh, нужно прописать в ~/.zshrc:

command_not_found_handler() {
  /usr/lib/command-not-found $1
}


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

Сборка пакета в среде стабильного дистрибутива обечпечит генерацию .deb с зависимостями, соответствующими пакетам, доступным в дистрибутиве.

Для этого запись deb-src в вашем файле /etc/apt/sources.list должна указывать на нестабильный дистрибутив. Она должна быть разрешена (раскомментирована).
Для скачивания пакетов исходных текстов рекомендуется использовать команду:

$ apt-get source packagename

Команда должна скачать три файла: .orig.tar.gz, .dsc и .diff.gz. В случае, если пакеты создавались исключительно для Debian, последний из них не скачивается и первый файл не имеет вставки "orig" в своем имени.

Файл .dsc пользуется командой dpkg-source для распаковки пакета исходных текстов в каталог packagename-version. Внутри каждого скачанного пакета исходных текстов есть каталог debian/, который содержит файлы, необходимые для создания пакета .deb.

Для автоматического построения пакета из скачиваемых исходных текстов просто укажите ключ -b в командной строке, примерно так:

$ apt-get -b source имяпакета

Если вы рашаете не создавать .deb при скачивани, то вы можете создать его позже командой:

$ dpkg-buildpackage -rfakeroot -uc -b

из каталога, который был создан для пакета после скачивания.

для того, чтобы пакет можно было собрать, нужны некоторые заголовочные файлы и совместно-используемые библиотеки. Все пакеты исходных текстов имеют в своих управляющих файлах поле 'Build-Depends:', которое указывает дополнительные пакеты, которые необходимы для построения пакета из исходных текстов.

APT имеет простой метод скачивания этих пакетов. Просто запустите apt-get build-dep package, где `package' - это имя пакета, который вы собираетесь построить

apt-get build-dep имяпакета

краткая справка:


apt-get

apt-get update - обновление базы пакетов
apt-get upgrade - обновление всех установленных пакетов
apt-get install название_пакета - установить пакет
apt-get purge название_пакета - полное удаление (не удаляет файлы в дом каталоге)
apt-get remove название_пакета - удаление с сохранением его конфигурационных файлов
apt-get check - узнать о конфликтующих пакетах, а также поломанных зависимостях пакетов
apt-get -f install название_пакета - исправить нарушенные зависимости
apt-get -h - справка

dpkg

dpkg -l - отобразить список всех установленных пакетов
dpkg -l | grep name - отобразить список всех установленных пакетов, в названии которых есть "name"
dpkg -S /bin/ping - найти пакет, в который входит указанный файл
dpkg -s название_пакета - отобразить информацию по конкретному пакету
dpkg -i /путь/к/пакету/название_пакета. deb - установить или обновить пакет
dpkg -i *.deb - установка всех deb пакетов из текущей папки
dpkg -r название_пакета - удалить пакет, но сохранить файл конфигурации
dpkg -P название_пакета - удалить пакет и удалить файл конфигурации
dpkg -h - справка
dpkg-reconfigure


aptitude

aptitude update - обновление базы пакетов
aptitude upgrade - обновление всех установленных пакетов
aptitude full-upgrade - обновление системы

aptitude search название_пакета - поиск пакета

Значения основного статуса:

* i (от installed) - пакет установлен в системе:
* p (от purge) - пакет не был установлен или был удален "вчистую";
* c (от clean) - пакет, удаленный с сохранением конфигурационных файлов;
* v (от virtual) - т. н. виртуальные пакеты, то есть просто списки реальных пакетов, один из которых будет использоваться в той или иной ситуации.

Дополнительный статус:

* A (от Auto) - пакет был установлен не самостоятельно, а автоматически, как зависимость другого пакета;
* h (от hold) - для пакета зафиксирована его текущая версия, то есть он не будет обновляться при выполнении операторов upgrade и dist-upgrade;
* u (от unpacked) - пакет был получен, распакован, но не инкорпорирован в файловую систему и не сконфигурирован;
* C (от half-Configured) - пакет, установка которого оборвалась на стадии конфигурирования;
* H (от Half-installed) - пакет, установка которого оборвалась на стадии инсталляции;
* B (от Broken) - т. н. "сломанные" пакеты - то есть содержащие ошибки внутри себя или утратившие свои зависимости.

aptitude show название_пакета - информация о пакете
aptitude install название_пакета - установка/обновление пакета
aptitude remove название_пакета - удаление с сохранением его конфигурационных файлов
aptitude purge название_пакета - полное удаление (не удаляет файлы в дом каталоге)
aptitude purge ~c - удаление кофигурационных файлов удалённых пакетов
aptitude remove или aptitude purge "~name" - удалить все пакеты имеющие в своём названии "name"
aptitude autoclean - удалить неиспользуемые пакеты из кэша
aptitude clean - удалить все пакеты из кэша
Полезные опции:
-h справка
-s ничего не делать, имитировать выполнение
-d только загрузить - не устанавливать и не распаковывать архивы
-y предполагается ответ Yes на все вопросы, сами вопросы не выводить
-f принудительно исправлять неработоспособные пакеты
-u показывать список обновленных пакетов

некоторые рецепты



dpkg --get-selections | grep -v deinstall > backup.txt
sudo dpkg --set-selections < backup.txt
sudo apt-get -y update
sudo apt-get dselect-upgrade

tac /var/log/apt/history.log |head --lines=225
tail -n 125 /var/log/apt/history.log
dpkg --get-selections | sed -n 's/\t\+install$//p'
dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge

http://eax.me/debian-packages/
https://wiki.debian.org/ru/PackageManagement
https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.ru.html
https://www.debian.org/releases/testing/mipsel/release-notes/ch-upgrading.ru.html

comments: Leave a comment Previous Entry Tell A Friend Add to Memories Next Entry

uzverss - Памятка по управлению пакетами в Debian и Ubuntu
View:Recent Entries.
View:Archive.
View:Friends.
View:User Info.