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

6

Я только что установил пакет ( 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]?

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

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

# 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 месяца назад, имел вместе с ним зависимости), есть ли способ удалить пакет и все другие зависимости, которые были установлены, как в этом случае?

    
задан Mike 24.06.2012 в 04:37
источник

2 ответа

3

Как сказал 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 , поэтому не рекомендуется. (на самом деле, настоятельно рекомендуется избегать этого, если вы не удовлетворены сломанной системой)

    
ответ дан Anwar 24.06.2012 в 05:51
источник
3

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

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

[email protected]:~$ 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' ' ''
    
ответ дан izx 24.06.2012 в 05:03