У меня простой вопрос.
Когда вы устанавливаете пакет, используя apt-get install
, часто он устанавливает несколько пакетов зависимостей, а также основной. Мне было интересно, если есть способ полностью отменить эту установку. Зачастую удаление основного пакета оставляет несколько пакетов позади. Например, я недавно установил kubuntu-desktop
. Желая полностью удалить его, мне пришлось следовать инструкциям на этой странице:
http://www.psychocats.net/ubuntu/puregnome
Я хотел бы точно знать, как они получили эту информацию, касающуюся всех пакетов для удаления.
Спасибо за любую помощь!
Попробуйте debfoster
. Сначала установите его, используя sudo apt-get install debfoster
, а затем запустите sudo debfoster kubuntu-desktop
. Он удалит все метапакеты, установленные как часть kubuntu-desktop
.
Используйте apt-cache depends
, чтобы перечислить все пакеты «внутри» метапакета:
apt-cache depends kxstudio-meta-audio-plugins-lv2
kxstudio-meta-audio-plugins-lv2
Depends: carla-lv2
Depends: carla
Depends: carla-dbg
Depends: abgate
Depends: avldrums.lv2
Depends: drmr
Depends: eq10q
Depends: freaked-plugins
(...)
Я думаю, что самый простой способ узнать, какие пакеты поставляются с чем-то вроде kubuntu-desktop (или любого другого пакета), это проверить http://packages.ubuntu.com/ . Это дает вам подробный список всего, что требуется, рекомендуется и предлагается для каждого пакета, доступного через официальные репозитории.
Для 10.10 пакет kubuntu-desktop находится здесь: http://packages.ubuntu.com/maverick/kubuntu-desktop
Если что-то помечено «зависит», это требуется для правильной работы пакета. Если он помечен как «рекомендует», то он устанавливается по умолчанию, но не является обязательным (apt-get install --no-intstall-Recommended останавливает их установку), а предлагаемые являются чисто дополнительными и не устанавливаются по умолчанию. [ 114]
Вы также можете проверить это в менеджере пакетов synaptic (установлен по умолчанию - в меню администратора, как мне кажется). Щелкните правой кнопкой мыши по любому пакету и выберите «Свойства», перейдите на вкладку «Зависимости» и убедитесь, что раскрывающийся список «Зависимости». Здесь показана та же информация, что и на сайте packages.ubuntu.com.
Насколько я знаю, оба эти метода перечисляют прямые зависимости текущего пакета, но не зависимости от зависимостей. Я не на 100% в этом, но это меня не удивит.
Если вы устанавливаете пакеты через apt-get, и в него входят зависимости и рекомендуемые пакеты, прежде чем нажимать клавишу «y», вы всегда можете скопировать списки пакетов, которые будут установлены. Затем вы можете подключить этот список к apt-get remove, и он должен избавиться от всего этого. Просто убедитесь, что ничто из того, что вы установили (что вы хотите сохранить), также не зависит от того, что будет удалено.
Еще одним полезным инструментом является apt-get autoremove. Это удалит все, что вы не установили вручную (оно было извлечено как зависимость или предложенный пакет), что было зависимостью от того, что больше не установлено. По моему опыту, это не всегда работает для метапакетов, таких как kubuntu-desktop.
В большинстве случаев команда autoremove
из apt-get
сделает свое дело, она удалит все пакеты, установленные и помеченные как , автоматически установленные, но не требуются никаким другим установленным пакетом. Это предпочтительный и безопасный метод, когда мастер-пакет не является метапакетом.
Это не относится к метапакетам, таким как kubuntu-desktop
, а потому, что пакеты, установленные как следствие установки метапакета, не помечены как автоматически установленные, поэтому их нельзя удалить с помощью autoremove
.
Удаление всех пакетов, помеченных как зависимости или рекомендованных данным метапакетом, например kubuntu-desktop
, может быть опасным, поскольку некоторые из этих пакетов могут находиться в вашей системе до установки метапакета.
Самым безопасным способом для продолжения, на мой взгляд, является анализ /var/log/dpkg.log
и его предков, чтобы увидеть, какие пакеты были установлены в метках времени вокруг метки времени установки данного пакета-нарушителя. Я предлагаю команду для получения более краткого и ясного представления о конкатенации задействованных файлов журнала:
less $(ls -rt /var/log/dpkg.log*) |
awk '$3 ~ /^(install|upgrade|remove|purge)$/' |
less