Может ли это вызвать проблемы с переключением с apt-get на aptitude?

8

Я думал о переходе на aptitude, но слышал, как люди говорили: «Если вы уже используете apt-get, вам следует подождать до следующей установки, чтобы переключиться». Почему люди так говорят? Какие проблемы (если таковые имеются) это может вызвать?

Мэтью
источник

Ответы:

8

apt-get и aptitude - это разные пользовательские интерфейсы, которые являются частью одной и той же системы управления пакетами, APT, Advanced Packaging Tool . Например, оба настроены с использованием /etc/apt/apt.conf, оба используют одно и то же файловое пространство и форматы для представления состояния пакета, и одно и то же файловое пространство для хранения загруженных .debs.

Чем они отличаются, так это их внутренней системой правил для представления потенциальных конфликтов между пакетами, как их разрешать (скажем, во время apt-get dist-upgradeпротив aptitude full-upgrade) и как выражать их при взаимодействии с пользователем. Вообще говоря, оба могут делать неправильные вещи в сложных ситуациях, но apt-get гораздо чаще ошибается, чем aptitude.

Чарльз Стюарт
источник
2
Отличный, четкий ответ. Еще одна деталь - как / когда они удаляют автоматически установленные зависимости. aptitudeудалит их сразу, но apt-getпредложит вам удалить их, введя команду apt-get autoremove. В общем, они захотят удалить одни и те же предметы. Смотрите эту ссылку, однако, для сложного случая, когда они не согласились с этим: forums.debian.net/viewtopic.php?f=10&t=49589&start=0
Telemachus
5

Много полезных советов уже здесь, но позвольте мне добавить одну вещь, которую никто не упомянул. Если вы решите переключиться, вы можете запустить эту команду, в зависимости от того, с чем вы работали 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.

Два общих совета:

  1. Всегда читайте вывод aptitudeили apt-getвнимательно, прежде чем сказать что-либо да.
  2. Помните, что вы всегда можете выполнить пробный прогон, используя aptitude -s safe-upgradeили aptitude -s install foo. -s|--simulateФлаг является вашим другом.
Телемах
источник
4

Несколько лет назад в списке рассылки Debian было сказано, что переключение с apt-get на aptitude было рискованным. Это две версии Debian (скажем, 10 лет) назад. Все эти проблемы, кажется, уже решены, и, конечно, я не видел проблем ни в Debian, ни в Ubuntu.

CarlF
источник
1
У вас есть ссылка на сообщение в списке рассылки?
Матфея
Мэтью, ты представляешь, что я хранил здесь отлично проиндексированный архив всего списка рассылки debian-user? Когда из вышесказанного становится ясно, что я даже не помню год?
CarlF
@Matthew: некоторое время назад (Sarge или ранний Etch), было много людей, обеспокоенных переключением с apt-getна aptitude. Тогда они выполняли многие важные функции совершенно по-разному. Со временем они стали намного более похожими, и aptitudeповзрослели. В 90% случаев не должно быть проблем при переключении. Смотрите мой пост для одного крайнего случая.
Телемах
2

Я также сказал бы идти вперед и использовать aptitude.
Aptitudeимеет лучшее управление зависимостями, чем apt-get. Это поможет снизить количество осиротевших посылок.
Я читал некоторое время назад, у которого aptitudeесть лучший алгоритм обновления dist по сравнению с apt-get. Но это вряд ли убийственная функция, так как она не используется так часто во время жизни системы.

Кроме того, у вас будет больше вещей, объединенных в один инструмент. Вместо того , чтобы вспомнить , когда звонить apt-get, apt-cacheили dpkgи с которой переключатели я просто использовать способности и получить большинство вещей сделать.

Что касается осложнений при переключении «в середине»: я не помню, чтобы когда-либо было, когда я делал это.

foraidt
источник
1

Разве они не просто другой интерфейс к одному и тому же бэкэнду?

Svish
источник
2
aptitudeявляется более функциональным интерфейсом ...
Quack Quixote
Это может быть. Но интерфейс с большим количеством функций не обязательно означает другой бэкэнд.
Свиш
2
нет, вы правы, оба являются передними dpkg. но dpkgпросто устанавливает пакеты; это внешние интерфейсы, которые отвечают за поиск, разрешение зависимостей и загрузку.
шарлатан-кихот
но поиск, загрузка и разрешение зависимостей ничего не сломают. или если это произойдет, это будет очень странно, на мой взгляд ...
Свиш
2
только что заметил ваш последний комментарий. имейте в виду, что именно внешние интерфейсы решают, что устанавливать; dpkg просто выполняет установку. если что-то ломается, обычно это происходит из-за сбоя разрешения зависимостей или из-за того, что пользователь отключил разрешение зависимостей (например, с помощью параметра --force ).
Квик-кихот
1

По моему опыту, у них есть другой способ закрепления версий пакетов. В моем случае я сказал aptitude заблокировать определенные пакеты, предполагая, что буду в безопасности от будущих обновлений. Я был неправ; диспетчер обновлений cron, который использует apt-get, продолжает обновлять его до моего ужаса.

Дратс, когда я писал это, я погуглил и обнаружил, что ошибка ( # 557580 aptitude не подчиняется пинам в settings.d / *) уже исправлена!

syockit
источник
-1

Я использую apt-get и aptitude без проблем: у меня один и тот же вопрос ... Почему люди так говорят ??? : D

Продолжайте, и не беспокойтесь: aptitude - это просто текстовый интерфейс для apt-get, который вы можете использовать даже в качестве приложения командной строки, например apt-get install foo, такой же, как aptitude install foo.

С уважением

dag729
источник
Я не верю, что они одинаковы. Если что-то не изменилось, aptitude выполнит больше отслеживания зависимостей и удалит все автоматически установленные пакеты, а apt-get - нет. То есть, если foo зависит от bar и вы устанавливаете и удаляете foo с помощью apt-get, bar останется в вашей системе. Если вы делаете то же самое с aptitude, это не так.
Уильям Перселл
Вы правы: смотрите комментарии ~ кряка ниже.
dag729
@William, @ dag729: Текущие версии apt-getтакже предлагают автоматическое удаление пакетов, установленных только как зависимости. Оставшаяся разница в этом отношении заключается в том, что aptitudeмгновенно удаляет зависимости (при необходимости), но apt-getтолько подталкивает вас к запуску команды apt-get autoremove. Но теперь они оба отслеживают зависимости одинаково. Однако они по-прежнему отличаются обработкой сложных зависимостей и крайних случаев (очень сложные установки или удаления), но для большинства людей и большинства ситуаций они работают одинаково.
Телемах