Шпаргалка начинающего Debian

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


<code>sudo aptitude update
</code>

Обновление

<code>sudo aptitude safe-upgrade
</code>

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

<code>aptitude search key_word
</code>

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

<code>aptitude search <span class="hljs-string">"^name$"</span>
</code>

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

<code>aptitude search <span class="hljs-string">"?description("</span>key_word<span class="hljs-string">")"</span>
</code>

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

<code>aptitude show package_name
</code>

Установка

<code>sudo aptitude install package_name
</code>

Удаление

<code>sudo aptitude remove package_name
</code>

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

<code>sudo aptitude purge package_name
</code>

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

<code>aptitude autoclean <em># удалятся только пакеты неактуальных версий</em>
aptitude clean <em># очистится весь кэш</em>
</code>

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

<code>sudo dpkg -i /path/to/package.deb
</code>

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

<code>man aptitude
sudo aptitude install aptitude-doc-en
</code>

и смотрим документацию (/usr/share/doc/aptitude/html/en/index.html), кому быструю справку по поисковым шаблонам, тому сюда — /usr/share/doc/aptitude/html/en/ch02s04.html. Если лень ставить доку, то в сети онаесть.
Вводная на Debian Wiki: wiki.debian.org/Aptitude



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

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

<code>aptitude search ?upgradable
</code>

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

<code>sudo daptup
</code>

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



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

<code>sudo aptitude changelog package_name
</code>

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

<code>sudo dpkg-reconfigure apt-listchanges
</code>

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

<code>sudo aptitude version package_name
</code>

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

<code>sudo aptitude install package_name=version
</code>

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

<code>/var/<span class="hljs-built_in">log</span>/aptitude (+ ротированные куски)
/var/<span class="hljs-built_in">log</span>/installer/initial-status.gz
/var/<span class="hljs-built_in">log</span>/dpkg.log (+ ротированные куски)
</code>

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



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

<code>dpkg -L package_name
</code>

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

<code>apt-file list package_name
</code>

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

<code>dpkg -S file_name
</code>

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

<code>sudo aptitude purge ~ikey
</code>

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

<code>sudo aptitude purge ~c
</code>

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

<code>apt-file search lib.so
</code>

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

<code>alien --to-deb /path/to/file.rpm
</code>

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

<code>dpkg --list linux-* | grep ii
</code>

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

<code>sudo aptitude -t testing package_name
</code>

или

<code>sudo aptitude package_name/testing
</code>

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



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

<code>sudo cruft <span class="hljs-_">-d</span> / -r report --ignore /home --ignore /var --ignore /tmp
</code>

15. Какие есть дополнительные репозитории?
Debian — wiki.debian.org/UnofficialRepositories
Ubuntu — множество всяких PPA



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



17. Как найти пакеты зависящие от данного

<code>apt-cache rdepends package_name
</code>

также может пригодится

<code>aptitude why package_name
</code>