Pull to refresh

Comments 64

Офтоп небольшой. Почему в последнее время чаще встречается aptitude, а не apt-*? Или мне кажется?
aptitude — новая тулза
apt-* остались в новых версиях дебиана только для обратной совместимости
не совсем так, часть функций apt* в aptitude нет
И в Ubuntu удалили aptitude «из коробки».
12.04 server, aptitude из коробки стоит
в десктопной нету, пришлось доставлять руками
Когда-то давным давно, во времена etch, было наоборот — многих функций aptitude не было в apt. Например, не было autoremove, а при удалении пакета с помощью apt-get все зависимые пакеты оставались в системе. Затем, благодаря Убунте (хотя, скорее всего, apt обновился всё же в Debian Testing, а в убунту попал уже оттуда; просто релизы дебиана выходят реже) все эти функции появились. Такие дела.
UFO just landed and posted this here
Это по-моему должен знать не только администратор, но и обычный пользователь Ubuntu/Debian. Я по привычке использую apt, разницы особо не вижу.
Разница в разруливании зависимостей. Там где apt-get при удалении пакета предлагает снести полсистемы aptitude находит куда более элегантное решение. Бывают и обратные примеры, но реже. К тому же у aptitude есть псевдографический режим, где можно попробовать разрулить зависимости голыми руками.
Если нужен графический — поставьте synaptic.
Как-то пробовал в этом псевдографическом, точно не помню, что там было не так, но помню что понятнее было просто в терминале смотреть и ручками вписывать.
а как же управление пользователями, работа с архивами,…
Тема не раскрыта.

>5. Как посмотреть список файлов в пакете?
>поставить apt-file и…
dpkg -L package_name
dpkg -c package.deb
А ещё установка пакетов из файлов:
dpkg -i /path/to/package.deb
Иногда нагляднее просто «зайти» в нужный .deb как в архив из mc — и посмотреть, что да как. Например, когда собрал пакет сам и хочешь посмотреть, всё ли там на месте.
Только с тем нюансом, что для apt-file пакет не обязательно должен быть скачан и установлен.
Благодарю, важное замечание, уточнил
Как удалить все пакеты, где есть exim4 в названии пакета:
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 # очистится весь кэш
Также удалить можно «apt-get purge .*exim4.*»
>Скачать исходник пакета:
тогда еще
apt-get build-dep package_name

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

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)"

( в вашем случае вообще тоже можно, но уж шибко страшные конструкции получаются =) )
Таки упомянутое в статье — это для пользователя, а не администратора.
А как же весьма полезное для обновление машины без интернета через флешку:
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 полезен, если нужно сделать что-то специфическое.
Например, заморозить установленную версию пакета, чтобы на неё не было поползновений к апдейту.

Например, наш рабочий вариант:
$ 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-get, ведь aptitude лучше. :)
Спорный вопрос. Да проблема даже не в этом. Например Update Manager из Ubuntu пользуется конфигами apt/dpkg, и если поставить пакет на hold в aptitude, а потом обновить систему через GUI (а почему бы и нет?), пакет таки обновится.
UFO just landed and posted this here
Вы, извините, Debian с Fedora не путаете?
А хотя, бывают еще VDS и т.п., куда хостеры свои слоупочные сервера обновлений ставят, вместо дистрибутивных…
Про apt-file ни слова, про установку пакетов из sid/experimental ни слова.
Про apt-file слово было, теперь уже есть два, про установку пакетов из всяких testing нужно писать отдельную статью, хотя согласен что упомянуть нужно, благодарю — поправил
мои пять копеек… горжусь ими =)
Для убунту автоматом установить не достающие ключи к репозиториям, если вы полностью доверяете им и контролируете ситуацию
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)'


subkeys.pgp.net сгодится для дебиана. ещё были какие-то, но запамятовал.
А в каких случаях этих ключей не достаёт? Какие репозитории нужно подключать чтобы не хватало ключей?
если репозитарий добавлять ручками, а не через apt-add-repository, то придётся самому разбираться с ключами.
ясно, просто обычно с урлом репозитория написана строка для добавления ключа
Я активно юзаю флаг -s, т.е. перед каждой установкой пакета проверяю:
apt-get install packet_name -s
Показывается, какие пакеты будут ставиться/апдейтиться, но установки не происходит. Это позволяет принять решение — ставить сейчас или добавить репы / переключиться на testing или unstable для версии поновее.
Имхо, мастхэв.
Одному мне кажется что…
image
всю статью можно было написать одной строкой?
$aptitude --help
Именно кажется, не только в хелпе, но и в мане нет упоминания иных утилит, да и много чего нет, например описания шаблонов поиска — «For more information on search patterns, see the section “Search Patterns” in the aptitude reference manual», так что только читать всё документацию.
Ну и шпаргалка документацию не отменяет, а даёт быстрые ответы на стандартные вопросы и ориентиры.
UFO just landed and posted this here
Насчёт «намного больше» это перегиб, там и половины упомянутого нет, но есть полезные дополнения, например про утилиту cruft (добавил в пост) или про сборку из исходников, но эту тему я ещё не исследовал — не было необходимости. За ссылку спасибо.
Насколько я понял, пакетные менеджеры ubuntu/debian не умеют показывать список пакетов, установленных вручную.

aptitude search '~i!~M'

выводит что-то другое.
В убунте действительно куча лишних пакетов помечается ручными, в дебиане должно быть нормально
Что значит «должно быть»? Вы это проверяли?
Чистого эксперимента не проводил, смотрел на одном из доступных серваков — было похоже на правду, доверился хакерам из рассылки — убеждали меня что только под убунтой криво работает. Если есть сомнения, тогда проведу эксперимент
Проверил на чистой установке Debian 6.0.5 — сразу после установки эта команда выдаёт кучу пакетов, так что вы правы — не то, поправил статью, благодарю за бдительность
Да не за что, но меня удивило отсутствие простой возможности решить такую задачу. В этом плане в rolling-release дистрибутивах дела обстоят гораздо лучше (файл world в gentoo, pacman тоже умеет выводить нужный список).
Меня тоже это удивляет, по сути осталось два незакрытых вопроса, это откат и список ручных пакетов. Для ручных пакетов есть ещё куча способов основанных на логах, типо таких, но похоже они все какие-то недоделанные
Ещё kevit подсказывает как получить все измененные конфиги по сравнению с дистрибутивными:
dpkg-query -W -f='${Conffiles}\n' '*' | awk 'OFS="  "{print $2,$1}' | md5sum -c 2>/dev/null | awk -F': ' '$2 !~ /OK/{print $1}'

Как в убунте используя apt-get обновить все, за исключением ядра?
Зафиксировать пакет ядра, см. man aptitude по ключевым словам hold и keep, подробнее не скажу т.к. сам не пользовался
Как посмотреть какие пакеты входят в метапакет?
Как сделать чтобы в результатах поиска показывались размеры пакетов?
Как сделать поиск по содержимому, но с выводом не в формате apt-file, а aptitude ( например вывести все пакеты в составе которых есть файл /etc/init.d и в результатах вывода вывести краткое описание пакетов)?
Извиняюсь за поздний ответ, не до этого было:
1. aptitude show — см список зависимостей
2. Примерно так: aptitude search -F "%p %D %I" colordiff
3. Видимо так: apt-file search perl.pm | cut -d' ' -f 1 | sed 's/://' | xargs aptitude search
Sign up to leave a comment.

Articles