Почему «автоматическое удаление» не удаляет все ненужные зависимости?

Я только что установил пакет (dansguardian в данном случае) и apt сказал мне, что у меня есть неудовлетворенные зависимости.

# sudo apt-get install dansguardian
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  clamav clamav-base clamav-freshclam libclamav6 libtommath0
Suggested packages:
  clamav-docs squid libclamunrar6
The following NEW packages will be installed:
  clamav clamav-base clamav-freshclam dansguardian libclamav6 libtommath0
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/4,956 kB of archives.
After this operation, 14.4 MB of additional disk space will be used.
Do you want to continue [Y/n]?

Итак, я установил его и зависимости. Пока все хорошо.

Позже я решил, что этот пакет просто не для меня, поэтому я хочу удалить его и все остальные ненужные файлы, которые он установил вместе с ним, так как он мне не понадобится: [ 1110]

# sudo apt-get remove --auto-remove --purge dansguardian
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  dansguardian
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,816 kB disk space will be freed.
Do you want to continue [Y/n]?

Однако он удаляет только этот конкретный пакет. А как насчет clamav clamav-base clamav-freshclam libclamav6 libtommath0? Он не только не удалил их, но clamav фактически запустил демон, который загружается каждый раз при загрузке компьютера. Я думал, что --auto-remove удалит не только пакеты, но и зависимости, которые были установлены с ним.

Так что, в основном, не просматривая файл журнала истории apt (если я даже не забуду это сделать, или если я даже помню, что определенный пакет, который я установил 3 месяца назад, имел зависимости вместе с ним), есть ли способ удалить пакет и все другие зависимости, которые были установлены, как в этом случае?

6
задан 24 June 2012 в 08:46

2 ответа

Как izx сказал, в его общем ответе, первой точке, может быть причина этого вида вещей.

Те зависимости теперь также требуются/рекомендуются некоторым другим пакетом (пакетами), которые все еще установлены в Вашей системе.

Это - самая вероятная и допустимая причина этого вида ситуации, Но я думаю, что, другие пакеты назвали с clamav clamav-base clamav-freshclam libclamav6 libtommath0 скорее всего, только связанный с их родительским пакетом clamav. Так, первая точка, может не иметь место в этой конкретной ситуации.

Наиболее вероятная причина этой проблемы, которая, кажется, причина, после установки dansguardian пакет, Вы позже установили все, что это - пакеты зависимости путем выполнения этого вида команды ниже:

sudo apt-get install clamav clamav-base clamav-freshclam dansguardian libclamav6 libtommath0

Если это действительно имеет место, Вы не можете, удалил их путем удаления их родительского пакета dansguardian. с тех пор на языке APT, они установлены "вручную", как Вы явно установили эти пакеты путем питания их имени к apt-get команда, так должен также удалить их с явным утверждением их имени пакета

Можно проверить это, если это имеет место путем просмотра /var/log/apt/history.log файлы.

Удалить:

Необходимо удалить установленные пакеты путем явного именования их имени. Так, в Вашей определенной ситуации это

sudo apt-get purge clamav clamav-base clamav-freshclam dansguardian libclamav6 libtommath0

Видеть зависимые пакеты

Можно найти все зависимые пакеты с ниже команды:

apt-cache depends -i dansguardian | cut -f 2 -d ':' | tr '\n' ' '.

Отметьте это, dansguardian зависит от пакета libc6. в то время как тот пакет является очень очень существенным в Вашей системе. Так, Вы не можете удалить всю зависимость dansguardian путем генерации их пакета зависимости перечисляют с apt-cache команда, следовательно это не рекомендуется. (на самом деле это настоятельно рекомендовано, чтобы не делать это, если Вы не довольны поврежденной системой),

3
ответ дан 24 June 2012 в 08:46

Конкретный ответ:

Это не нормальное поведение:

izx@preciseunity:~$ sudo apt-get remove --auto-remove --purge dansguardian
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  clamav* clamav-base* clamav-freshclam* dansguardian* libclamav6*
  libtommath0* python-gpgme*
0 upgraded, 0 newly installed, 7 to remove and 91 not upgraded.
After this operation, 14.7 MB disk space will be freed.
Do you want to continue [Y/n]? 

См. Общий ответ №. 1 ниже по наиболее вероятной причине.


Общий ответ:

Это может происходить по нескольким причинам. Наиболее распространенными из них являются:

  1. Эти зависимости теперь также требуются / рекомендуются некоторыми другими пакетами, которые все еще установлены в вашей системе.
  2. Первоначальный пакет представлял собой метапакет, то есть ярлык для установки нескольких пакетов одним быстрым движением. Удаление метапакета удаляет только ярлык, а не все пакеты, которые он установил. Типичными примерами являются различные пакеты зонтичных рабочих столов, например ubuntu-desktop .

Чтобы удалить , используйте apt-cache depends package-name, чтобы получить его зависимости, и подайте их в apt-get remove. Дважды проверьте показанный список, чтобы убедиться, что вы ничего не потеряете!

Вы можете сделать это за один шаг с помощью следующей команды (опять же, не нажимайте Y, если вы не прочитали список!) :

sudo apt-get remove `apt-cache depends dansguardian | grep Dep | cut -d: -f2 | tr '\n' ' '`
0
ответ дан 24 June 2012 в 08:46

Другие вопросы по тегам:

Похожие вопросы: