Я думал о переходе на aptitude, но слышал, как люди говорили: «Если вы уже используете apt-get, вам следует подождать до следующей установки, чтобы переключиться». Почему люди так говорят? Какие проблемы (если таковые имеются) это может вызвать?
7 ответов
apt-get и aptitude - это разные пользовательские интерфейсы, которые являются частью одной и той же системы управления пакетами, APT, Advanced Packaging Tool. Например, оба настроены с использованием /etc/apt/apt.conf
, оба используют одно и то же файловое пространство и форматы для представления состояния пакета и одно и то же файловое пространство для хранения загруженных .debs.
Чем они отличаются, так это их внутренней системой правил для представления потенциальных конфликтов между пакетами, как их разрешать (например, во время apt-get dist-upgrade
против aptitude full-upgrade
) и как их выражать при взаимодействии с пользователем. Вообще говоря, оба могут делать неправильные вещи в сложных ситуациях, но apt-get гораздо чаще ошибается, чем aptitude.
Много полезных советов уже здесь, но позвольте мне добавить одну вещь, которую никто не упомянул. Если вы решите переключиться, вы можете запустить эту команду, в зависимости от того, что вы использовали с помощью apt-get
:
aptitude keep-all
Эта команда сбрасывает в aptitude
представление о том, какие пакеты являются сиротами и должны быть удалены.
Вот причина, по которой это иногда полезно: на некоторое время и apt-get
и aptitude
будут отслеживать пакеты, которые были автоматически установлены, как зависимость от чего-то другого. Так, например, если вы установите mpd
, вы можете получить lib-so-and-so
в качестве зависимости. Они делают это, так что если вы позже удалите mpd
, lib-so-and-so
будет удален. Но aptitude
и apt-get
справляются с этим по-разному. aptitude
немедленно пытается удалить все потерянные зависимости; но apt-get
просто предлагает запустить apt-get autoremove
для очистки. (Логика, лежащая в основе всего этого, заключается в том, что вы получили библиотеку только потому, что она нужна mpd
. Если вы не сохраняете mpd
, вам больше не нужна библиотека. Если от него все еще зависит другой пакет, то и aptitude
и apt-get
узнают об этом и не попытаются удалить библиотеку.)
Какой у меня смысл? Что ж, если вы видели постоянные толчки при запуске apt-get autoremove
и вы переключаетесь на aptitude
, то вы можете испытать шок при первой попытке установить что-либо. aptitude
сразу же попытается удалить всех этих сирот. В общем, это будет хорошо (в конце концов, они сироты и не нужны), но есть один сложный случай. Все метапакеты рабочего стола включают сложную цепочку зависимостей, в которую каждая отдельная программа добавляется как зависимость от оболочки виртуального пакета. Например, если у вас установлен Gnome, потому что вы установили пакет gnome
, то все ваши обычные программы для настольных компьютеров были установлены как зависимости. Если вы удалили одну из этих программ (например, Ekiga или Gedit), то в глазах aptitude
следует удалить и остальную часть вашего рабочего стола. Обратите внимание, что aptitude
всегда спрашивает, прежде чем что-то удалить, но люди часто вводят «Y», не читая. По моему опыту, это единственная наиболее распространенная жалоба / путаница для людей, плохо знакомых с Debian.
Два общих совета:
- Всегда внимательно читайте вывод
aptitude
илиapt-get
, прежде чем что-либо говорить «да». - Помните, что вы всегда можете выполнить пробный запуск, используя
aptitude -s safe-upgrade
илиaptitude -s install foo
. Флаг-s|--simulate
- ваш друг.
Несколько лет назад в списке рассылки Debian было сказано, что переключение с apt-get на aptitude было рискованным. Это две версии Debian (скажем, 10 лет) назад. Все эти проблемы, кажется, уже решены, и, конечно, я не видел проблем ни в Debian, ни в Ubuntu.
Я также сказал бы идти вперед и использовать aptitude
.
Aptitude
имеет лучшее управление зависимостями, чем apt-get
. Это поможет снизить количество осиротевших пакетов.
Некоторое время назад я читал, что aptitude
имеет лучший алгоритм обновления dist по сравнению с apt-get
. Но это вряд ли убийственная функция, так как она не используется так часто во время жизни системы.
Кроме того, у вас будет больше вещей, объединенных в один инструмент. Вместо того, чтобы помнить, когда вызывать apt-get
, apt-cache
или dpkg
и с какими переключателями я просто использую aptitude и выполняю большинство задач.
Что касается осложнений при переключении "посередине": я не помню, чтобы они были, когда я это делал.
Разве они не просто другой интерфейс к одному и тому же бэкэнду?
По моему опыту, у них есть другой способ закрепления версий пакетов. В моем случае я сказал aptitude заблокировать определенные пакеты, предполагая, что буду в безопасности от будущих обновлений. Я был неправ; диспетчер обновлений cron, который использует apt-get, продолжает обновлять его до моего ужаса.
Дратс, когда я писал это, я погуглил и обнаружил, что ошибка (# 557580 aptitude не подчиняется штифтам в preferences.d/*) уже исправлена!
Я использую apt-get и aptitude без проблем: у меня один и тот же вопрос ...Почему люди так говорят ??? : D
Продолжайте, и не беспокойтесь: aptitude - это просто текстовый интерфейс для apt-get, который вы можете использовать даже в качестве приложения командной строки, например, apt-get install foo
- это то же самое, что aptitude install foo
.
С уважением