Шпаргалка начинающего администратора Ubuntu по управлению пакетами

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

Краткая справка Debian администратора

Основное и общеизвестное

Получение информации о новых/обновлённых пакетах:

Обновление:

Поиск пакета по именам пакетов:

Поиск пакета по точному названию:

Поиск по описанию:

Информация о пакете:

Установка:

Удаление:

Полное удаление (вместе с конфигами):

Очистить кэш загруженных пакетов (освободить место):

Установка отдельно скачанного/созданного пакета (для создания пакета из сторонних исходников нужно использовать утилиту checkinstall с флагом -D):

Для получения доп информации:

Вводная на Debian Wiki: wiki.debian.org/Aptitude.

А теперь то что не очевидно или требует полного прочтения документации

1. Как после update посмотреть какие пакеты будут обновлены:

Также можно юзать (если поставить):

Но после его установки точно также будет себя вести и обычный update.

2. Как узнать что изменилось в пакетах которые будут обновлены? Можно пробовать:

Для каждого пакета. Но лучше поставить apt-listchanges, тогда перед любой установкой обновлений будет показан список изменений, по умолчанию настройки не очень удобные, поэтому лучше перенастроить под себя, например, выбрать формат вывода (пока использую текст, при больших обновлениях наверно pager лучше), не слать писем, спрашивать подтверждения, выводить всю информацию. Для этого нужно запустить:

3. Что делать если обновление что-то поломало и нужно откатиться? Отката нет, можно попробовать найти предыдущую версию пакета:

И установить её:

4. Как найти все пакеты установленные вручную? Есть вариант команды (aptitude search '~i!~M'), но к сожалению он не даёт желаемого результата, так что вопрос остаётся открытым, есть куча способов основанных на анализе логов:

  • /var/log/aptitude (+ ротированные куски)
  • /var/log/installer/initial-status.gz
  • /var/log/dpkg.log (+ ротированные куски)

Но простого и готового решения нет, да информация теоретически может быть потеряна при ротациях, нужно конфигурить.

5. Как посмотреть список файлов в пакете? Если пакет установлен:

Для любых пакетов поставить apt-file и:

6. Как посмотреть какому пакету принадлежит файл:

7. Как удалить все пакеты, где есть key в названии пакета:

8. Как удалить оставшиеся конфиги от удалённых пакетов:

9. Как найти пакет пакет, в котором содержится файл lib.so:

10. Как сконвертировать rpm пакет в deb:

11. Как найти список установленных ядер:

12. Как установить пакет из testing или experimental? На эту тему нужно писать отдельно, но если кратко, то команды для этого есть:

Или:

13. Как удалить метапакет, но оставить одну из зависимостей? Придётся почитать документацию про ключ unmarkauto.

14. Как узнать что попало в файловую систему мимо системы управления пакетами? Есть утилита cruft, хотя вопрос интерпретации результатов (файла report) пока открыт:

15. Какие есть дополнительные репозитории?

  • Debian — wiki.debian.org/UnofficialRepositories
  • Ubuntu — множество всяких PPA

16. Что есть ещё?

  • apt-cdrom
  • apt-spy
  • auto-apt
  • apt-key
  • apt-add-repository
  • Некоторые вещи умеет только apt-get
  • Есть альтернативные утилиты для управления пакетами, например wajig, который пытается вобрать в себя функционал всех остальных утилит.