Долгое время меня глодало незнание того, как сделать некоторые элементарные вещи в дебиановских менеджерах пакетов, но, как часто бывает, спросить рядом было не у кого, а до написания куда-либо руки не доходили. И вот наконец вопросы вызрели и я написал свой вопрос в дебиановскую рассылку. Естественно оказалось что пропустил что-то очевидное, но и узнал много неочевидных полезностей, посему решил набросать шпаргалку, авось кому пригодится.
Краткая справка Debian администратора
Основное и общеизвестное
Получение информации о новых/обновлённых пакетах:
1
|
sudo
aptitude
update
|
Обновление:
1
|
sudo
aptitude
safe
-
upgrade
|
Поиск пакета по именам пакетов:
1
|
aptitude
search
key_word
|
Поиск пакета по точному названию:
1
|
aptitude
search
"^name$"
|
Поиск по описанию:
1
|
aptitude
search
"?description("
key
_word")"
|
Информация о пакете:
1
|
aptitude
show
package_name
|
Установка:
1
|
sudo
aptitude
install
package_name
|
Удаление:
1
|
sudo
aptitude
remove
package_name
|
Полное удаление (вместе с конфигами):
1
|
sudo
aptitude
purge
package_name
|
Очистить кэш загруженных пакетов (освободить место):
1
2
|
aptitude
autoclean
# удалятся только пакеты неактуальных версий
aptitude
clean
# очистится весь кэш
|
Установка отдельно скачанного/созданного пакета (для создания пакета из сторонних исходников нужно использовать утилиту checkinstall с флагом -D):
1
|
sudo
dpkg
-
i
/
path
/
to
/
package
.deb
|
Для получения доп информации:
1
2
|
man
aptitude
sudo
aptitude
install
aptitude
-
doc
-
en
|
Вводная на Debian Wiki: wiki.debian.org/Aptitude.
А теперь то что не очевидно или требует полного прочтения документации
1. Как после update посмотреть какие пакеты будут обновлены:
1
|
aptitude
search
?
upgradable
|
Также можно юзать (если поставить):
1
|
sudo
daptup
|
Но после его установки точно также будет себя вести и обычный update.
2. Как узнать что изменилось в пакетах которые будут обновлены? Можно пробовать:
1
|
sudo
aptitude
changelog
package_name
|
Для каждого пакета. Но лучше поставить apt-listchanges, тогда перед любой установкой обновлений будет показан список изменений, по умолчанию настройки не очень удобные, поэтому лучше перенастроить под себя, например, выбрать формат вывода (пока использую текст, при больших обновлениях наверно pager лучше), не слать писем, спрашивать подтверждения, выводить всю информацию. Для этого нужно запустить:
1
|
sudo
dpkg
-
reconfigure
apt
-
listchanges
|
3. Что делать если обновление что-то поломало и нужно откатиться? Отката нет, можно попробовать найти предыдущую версию пакета:
1
|
sudo
aptitude
version
package_name
|
И установить её:
1
|
sudo
aptitude
install
package_name
=
version
|
4. Как найти все пакеты установленные вручную? Есть вариант команды (aptitude search '~i!~M'), но к сожалению он не даёт желаемого результата, так что вопрос остаётся открытым, есть куча способов основанных на анализе логов:
- /var/log/aptitude (+ ротированные куски)
- /var/log/installer/initial-status.gz
- /var/log/dpkg.log (+ ротированные куски)
Но простого и готового решения нет, да информация теоретически может быть потеряна при ротациях, нужно конфигурить.
5. Как посмотреть список файлов в пакете? Если пакет установлен:
1
|
dpkg
-
L
package_name
|
Для любых пакетов поставить apt-file и:
1
|
apt
-
file
list
package_name
|
6. Как посмотреть какому пакету принадлежит файл:
1
|
dpkg
-
S
file_name
|
7. Как удалить все пакеты, где есть key в названии пакета:
1
|
sudo
aptitude
purge
~
ikey
|
8. Как удалить оставшиеся конфиги от удалённых пакетов:
1
|
sudo
aptitude
purge
~
c
|
9. Как найти пакет пакет, в котором содержится файл lib.so:
1
|
apt
-
file
search
lib
.so
|
10. Как сконвертировать rpm пакет в deb:
1
|
alien
--
to
-
deb
/
path
/
to
/
file
.rpm
|
11. Как найти список установленных ядер:
1
|
dpkg
--
list
linux
-
*
|
grep
ii
|
12. Как установить пакет из testing или experimental? На эту тему нужно писать отдельно, но если кратко, то команды для этого есть:
1
|
sudo
aptitude
-
t
testing
package_name
|
Или:
1
|
sudo
aptitude
package_name
/
testing
|
13. Как удалить метапакет, но оставить одну из зависимостей? Придётся почитать документацию про ключ unmarkauto.
14. Как узнать что попало в файловую систему мимо системы управления пакетами? Есть утилита cruft, хотя вопрос интерпретации результатов (файла report) пока открыт:
1
|
sudo
cruft
-
d
/
-
r
report
--
ignore
/
home
--
ignore
/
var
--
ignore
/
tmp
|
15. Какие есть дополнительные репозитории?
- Debian — wiki.debian.org/UnofficialRepositories
- Ubuntu — множество всяких PPA
16. Что есть ещё?
- apt-cdrom
- apt-spy
- auto-apt
- apt-key
- apt-add-repository
- Некоторые вещи умеет только apt-get
- Есть альтернативные утилиты для управления пакетами, например wajig, который пытается вобрать в себя функционал всех остальных утилит.