Я думал о переходе на 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 .
С уважением
