Comments 64
Офтоп небольшой. Почему в последнее время чаще встречается aptitude, а не apt-*? Или мне кажется?
Рекомендуют его как более продвинутую тулзу, ссылки с цитатами можно увидеть в этой ветке обсуждения
aptitude — новая тулза
apt-* остались в новых версиях дебиана только для обратной совместимости
apt-* остались в новых версиях дебиана только для обратной совместимости
не совсем так, часть функций apt* в aptitude нет
И в Ubuntu удалили aptitude «из коробки».
Когда-то давным давно, во времена etch, было наоборот — многих функций aptitude не было в apt. Например, не было autoremove, а при удалении пакета с помощью apt-get все зависимые пакеты оставались в системе. Затем, благодаря Убунте (хотя, скорее всего, apt обновился всё же в Debian Testing, а в убунту попал уже оттуда; просто релизы дебиана выходят реже) все эти функции появились. Такие дела.
Это по-моему должен знать не только администратор, но и обычный пользователь Ubuntu/Debian. Я по привычке использую apt, разницы особо не вижу.
Разница в разруливании зависимостей. Там где apt-get при удалении пакета предлагает снести полсистемы aptitude находит куда более элегантное решение. Бывают и обратные примеры, но реже. К тому же у aptitude есть псевдографический режим, где можно попробовать разрулить зависимости голыми руками.
а как же управление пользователями, работа с архивами,…
Тема не раскрыта.
>5. Как посмотреть список файлов в пакете?
>поставить apt-file и…
dpkg -L package_name
dpkg -c package.deb
>5. Как посмотреть список файлов в пакете?
>поставить apt-file и…
dpkg -L package_name
dpkg -c package.deb
Благодарю, дополнил
Иногда нагляднее просто «зайти» в нужный .deb как в архив из mc — и посмотреть, что да как. Например, когда собрал пакет сам и хочешь посмотреть, всё ли там на месте.
Только с тем нюансом, что для
apt-file
пакет не обязательно должен быть скачан и установлен.Как удалить все пакеты, где есть exim4 в названии пакета:
(а то интернеты усыпанными всякими странными конструкциями из помеси aptitude + dpkg + grep + awk).
Удалить оставшиеся конфиги от удалённых пакетов:
Скачать исходник пакета:
подключить репозиторий с исходниками (читай продублировать строчку с обычным репозиторием и заменить deb в начале строки на deb-src)
Поиск пакета, в котором содержится файл lib.so (предаврительно поставить apt-file):
Очистить кэш загруженных пакетов:
aptitude purge ~iexim4
(а то интернеты усыпанными всякими странными конструкциями из помеси aptitude + dpkg + grep + awk).
Удалить оставшиеся конфиги от удалённых пакетов:
aptitude purge ~c
Скачать исходник пакета:
подключить репозиторий с исходниками (читай продублировать строчку с обычным репозиторием и заменить deb в начале строки на deb-src)
apt-get source package_name
Поиск пакета, в котором содержится файл lib.so (предаврительно поставить apt-file):
apt-file search lib.so
Очистить кэш загруженных пакетов:
aptitude autoclean # удалятся только пакеты неактуальных версий
aptitude clean # очистится весь кэш
Если скопились старые ядра, найти их пакеты можно так:
А потом удалить (я удаляю все, за исключением последних двух linux-image-* и текущего linux-headers-*):
dpkg -l linux-* | grep ii
А потом удалить (я удаляю все, за исключением последних двух linux-image-* и текущего linux-headers-*):
sudo aptitude purge <список пакетов через пробел>
Если же удалить нужно все, за исключением последнего одного, то можно обойтись и без ручного вмешательства:
( в вашем случае вообще тоже можно, но уж шибко страшные конструкции получаются =) )
aptitude search "?and(~i~nlinux-(im|he) ?not(~n`uname -r`)) ?not(~dmeta) ?not(~ncommon)"
( в вашем случае вообще тоже можно, но уж шибко страшные конструкции получаются =) )
Благодарю, дополнил
Таки упомянутое в статье — это для пользователя, а не администратора.
А как же весьма полезное для обновление машины без интернета через флешку:
А вот как установить пакеты с зависимостями в, например, /target? Самый близкий аналог: dpkg --root /target, но он же не подгрузит из сети зависимости. Какие-либо манипуляции с аналогичными аргументами apt привели к тому, что он и /var/lib/apt/lists начинает смотреть смотреть в /target.
А как же весьма полезное для обновление машины без интернета через флешку:
apt-get --print-uris -y dist-upgrade | grep "^'" | awk '{ print $1 }' | sed "s/'//g" > packages.lst # на целевой машине
wget -i packages.lst # на машине с интернетом
А вот как установить пакеты с зависимостями в, например, /target? Самый близкий аналог: dpkg --root /target, но он же не подгрузит из сети зависимости. Какие-либо манипуляции с аналогичными аргументами apt привели к тому, что он и /var/lib/apt/lists начинает смотреть смотреть в /target.
Тоже бывает полезно:
dpkg --get--selections > packages_list.txt # помещает в файл список всех установленных пакетов
dpkg --set-selections < packages_list.txt # Устанавтивает все пакеты перечисленные в файле
Не совсем. Устанавливает потом apt-get или aptitude. Последняя строчка только отмечает пакеты для установки.
dpkg --set-selections полезен, если нужно сделать что-то специфическое.
Например, заморозить установленную версию пакета, чтобы на неё не было поползновений к апдейту.
Например, наш рабочий вариант:
— ставим из исходников специфическую версию bison (потому что это вроде как крайняя версия, которая нормально работает и в винде, и на линухе. А более свежие генерят чуть иной код и тем самым гадят в коммиты. И последней строчкой заможариваем установленную версию, так что все новые апдейты на неё не действуют.
Например, заморозить установленную версию пакета, чтобы на неё не было поползновений к апдейту.
Например, наш рабочий вариант:
$ tar -xjf bison-1.875.tar.bz2
$ cd bison-1.875
$ ./configure
$ make
$ sudo checkinstall
$ echo 'bison hold' | sudo dpkg --set-selections
— ставим из исходников специфическую версию bison (потому что это вроде как крайняя версия, которая нормально работает и в винде, и на линухе. А более свежие генерят чуть иной код и тем самым гадят в коммиты. И последней строчкой заможариваем установленную версию, так что все новые апдейты на неё не действуют.
Есть куда более простой вариант — aptitude hold %package_name%
К слову, уже сталкивался с такими граблями,
aptitude hold
помечает пакет как необновляемый только в рамках самого aptitude
, а ближайший запуск apt-get
'a его всё-таки обновит. Приходится таскать за собой wajig
, который оказался очень удобной штукой.Про apt-file ни слова, про установку пакетов из sid/experimental ни слова.
мои пять копеек… горжусь ими =)
Для убунту автоматом установить не достающие ключи к репозиториям, если вы полностью доверяете им и контролируете ситуацию
для дебиан нужно заменить keyserver.ubuntu.com на свой — не знаю правда какой =(
Найти все Qt (KDE) программы и убрать из вывода библиотеки. Полезно, если решитесь со временем почистить систему и убрать из неKDE рабочей среды все KDE приложения. Помните — Qt != KDE. Qt приложение не обязательно тянет по зависимостям части KDE.
Для убунту автоматом установить не достающие ключи к репозиториям, если вы полностью доверяете им и контролируете ситуацию
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com `sudo apt-get update 2>&1 | grep -o '[0-9A-Z]\{16\}$' | xargs`
для дебиан нужно заменить keyserver.ubuntu.com на свой — не знаю правда какой =(
Найти все Qt (KDE) программы и убрать из вывода библиотеки. Полезно, если решитесь со временем почистить систему и убрать из неKDE рабочей среды все KDE приложения. Помните — Qt != KDE. Qt приложение не обязательно тянет по зависимостям части KDE.
sudo aptitude search '~i!~nlib(~Dqt|~Dkde)'
Я активно юзаю флаг -s, т.е. перед каждой установкой пакета проверяю:
apt-get install packet_name -s
Показывается, какие пакеты будут ставиться/апдейтиться, но установки не происходит. Это позволяет принять решение — ставить сейчас или добавить репы / переключиться на testing или unstable для версии поновее.
Имхо, мастхэв.
apt-get install packet_name -s
Показывается, какие пакеты будут ставиться/апдейтиться, но установки не происходит. Это позволяет принять решение — ставить сейчас или добавить репы / переключиться на testing или unstable для версии поновее.
Имхо, мастхэв.
Одному мне кажется что…

всю статью можно было написать одной строкой?
$aptitude --help

всю статью можно было написать одной строкой?
$aptitude --help
Именно кажется, не только в хелпе, но и в мане нет упоминания иных утилит, да и много чего нет, например описания шаблонов поиска — «For more information on search patterns, see the section “Search Patterns” in the aptitude reference manual», так что только читать всё документацию.
Ну и шпаргалка документацию не отменяет, а даёт быстрые ответы на стандартные вопросы и ориентиры.
Ну и шпаргалка документацию не отменяет, а даёт быстрые ответы на стандартные вопросы и ориентиры.
Насчёт «намного больше» это перегиб, там и половины упомянутого нет, но есть полезные дополнения, например про утилиту cruft (добавил в пост) или про сборку из исходников, но эту тему я ещё не исследовал — не было необходимости. За ссылку спасибо.
Насколько я понял, пакетные менеджеры ubuntu/debian не умеют показывать список пакетов, установленных вручную.
выводит что-то другое.
aptitude search '~i!~M'
выводит что-то другое.
В убунте действительно куча лишних пакетов помечается ручными, в дебиане должно быть нормально
Проверил на чистой установке Debian 6.0.5 — сразу после установки эта команда выдаёт кучу пакетов, так что вы правы — не то, поправил статью, благодарю за бдительность
Как в убунте используя apt-get обновить все, за исключением ядра?
Как посмотреть какие пакеты входят в метапакет?
Как сделать чтобы в результатах поиска показывались размеры пакетов?
Как сделать поиск по содержимому, но с выводом не в формате apt-file, а aptitude ( например вывести все пакеты в составе которых есть файл /etc/init.d и в результатах вывода вывести краткое описание пакетов)?
Как сделать чтобы в результатах поиска показывались размеры пакетов?
Как сделать поиск по содержимому, но с выводом не в формате apt-file, а aptitude ( например вывести все пакеты в составе которых есть файл /etc/init.d и в результатах вывода вывести краткое описание пакетов)?
Sign up to leave a comment.
Шпаргалка начинающего Debian/Ubuntu администратора по управлению пакетами