apt-get autoremove não funciona da maneira como é anunciado

6

Eu quero perguntar sobre o comportamento anormal da função auto-remove no apt-get, que "deveria" remover os pacotes instalados automaticamente restantes, que vieram como uma dependência do (s) pacote (s) realmente (manualmente) instalado (s). Mas não é o caso. A saída a seguir mostra um exemplo disso.

$ sudo apt-get --no-install-recommends install equivs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  binutils debhelper dh-apparmor dpkg-dev fakeroot gettext html2text intltool-debian libdpkg-perl libgettextpo0 libunistring0 make po-debconf
Suggested packages:
  binutils-doc dh-make debian-keyring gettext-doc make-doc libmail-box-perl
Recommended packages:
  gcc c-compiler build-essential libalgorithm-merge-perl libmail-sendmail-perl
The following NEW packages will be installed:
  binutils debhelper dh-apparmor dpkg-dev equivs fakeroot gettext html2text intltool-debian libdpkg-perl libgettextpo0 libunistring0 make
  po-debconf
0 upgraded, 14 newly installed, 0 to remove and 299 not upgraded.
Need to get 6,841 kB of archives.
After this operation, 17.6 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://es.archive.trisquel.info/trisquel/ toutatis/main libunistring0 i386 0.9.3-5 [432 kB]
Get:2 http://es.archive.trisquel.info/trisquel/ toutatis/main libgettextpo0 i386 0.18.1.1-5ubuntu3 [118 kB]
Get:3 http://es.archive.trisquel.info/trisquel/ toutatis-updates/main binutils i386 2.22-6ubuntu1.1 [2,387 kB]
Get:4 http://es.archive.trisquel.info/trisquel/ toutatis/main libdpkg-perl all 1.16.1.2ubuntu7.1+6.0trisquel2 [653 kB]
Get:5 http://es.archive.trisquel.info/trisquel/ toutatis-updates/main make i386 3.81-8.1ubuntu1.1 [116 kB]
Get:6 http://es.archive.trisquel.info/trisquel/ toutatis/main dpkg-dev all 1.16.1.2ubuntu7.1+6.0trisquel2 [939 kB]
Get:7 http://es.archive.trisquel.info/trisquel/ toutatis/main html2text i386 1.3.2a-15 [101 kB]
Get:8 http://es.archive.trisquel.info/trisquel/ toutatis/main gettext i386 0.18.1.1-5ubuntu3 [1,122 kB]
Get:9 http://es.archive.trisquel.info/trisquel/ toutatis/main intltool-debian all 0.35.0+20060710.1 [31.6 kB]
Get:10 http://es.archive.trisquel.info/trisquel/ toutatis/main po-debconf all 1.0.16+nmu2ubuntu1 [210 kB]
Get:11 http://es.archive.trisquel.info/trisquel/ toutatis-updates/main dh-apparmor all 2.7.102-0ubuntu3.9 [8,950 B]
Get:12 http://es.archive.trisquel.info/trisquel/ toutatis/main debhelper all 9.20120115ubuntu3 [616 kB]
Get:13 http://es.archive.trisquel.info/trisquel/ toutatis/main fakeroot i386 1.18.2-1 [87.9 kB]
Get:14 http://es.archive.trisquel.info/trisquel/ toutatis/main equivs all 2.0.9 [18.5 kB]
Fetched 6,841 kB in 2s (2,734 kB/s)
Selecting previously unselected package libunistring0.
(Reading database ... 131645 files and directories currently installed.)
Unpacking libunistring0 (from .../libunistring0_0.9.3-5_i386.deb) ...
Selecting previously unselected package libgettextpo0.
Unpacking libgettextpo0 (from .../libgettextpo0_0.18.1.1-5ubuntu3_i386.deb) ...
Selecting previously unselected package binutils.
Unpacking binutils (from .../binutils_2.22-6ubuntu1.1_i386.deb) ...
Selecting previously unselected package libdpkg-perl.
Unpacking libdpkg-perl (from .../libdpkg-perl_1.16.1.2ubuntu7.1+6.0trisquel2_all.deb) ...
Selecting previously unselected package make.
Unpacking make (from .../make_3.81-8.1ubuntu1.1_i386.deb) ...
Selecting previously unselected package dpkg-dev.
Unpacking dpkg-dev (from .../dpkg-dev_1.16.1.2ubuntu7.1+6.0trisquel2_all.deb) ...
Selecting previously unselected package html2text.
Unpacking html2text (from .../html2text_1.3.2a-15_i386.deb) ...
Selecting previously unselected package gettext.
Unpacking gettext (from .../gettext_0.18.1.1-5ubuntu3_i386.deb) ...
Selecting previously unselected package intltool-debian.
Unpacking intltool-debian (from .../intltool-debian_0.35.0+20060710.1_all.deb) ...
Selecting previously unselected package po-debconf.
Unpacking po-debconf (from .../po-debconf_1.0.16+nmu2ubuntu1_all.deb) ...
Selecting previously unselected package dh-apparmor.
Unpacking dh-apparmor (from .../dh-apparmor_2.7.102-0ubuntu3.9_all.deb) ...
Selecting previously unselected package debhelper.
Unpacking debhelper (from .../debhelper_9.20120115ubuntu3_all.deb) ...
Selecting previously unselected package fakeroot.
Unpacking fakeroot (from .../fakeroot_1.18.2-1_i386.deb) ...
Selecting previously unselected package equivs.
Unpacking equivs (from .../archives/equivs_2.0.9_all.deb) ...
Processing triggers for man-db ...
Processing triggers for install-info ...
Processing triggers for doc-base ...
Processing 1 added doc-base file...
Registering documents with scrollkeeper...
Setting up libunistring0 (0.9.3-5) ...
Setting up libgettextpo0 (0.18.1.1-5ubuntu3) ...
Setting up binutils (2.22-6ubuntu1.1) ...
Setting up libdpkg-perl (1.16.1.2ubuntu7.1+6.0trisquel2) ...
Setting up make (3.81-8.1ubuntu1.1) ...
Setting up dpkg-dev (1.16.1.2ubuntu7.1+6.0trisquel2) ...
Setting up html2text (1.3.2a-15) ...
Setting up gettext (0.18.1.1-5ubuntu3) ...
Setting up intltool-debian (0.35.0+20060710.1) ...
Setting up po-debconf (1.0.16+nmu2ubuntu1) ...
Setting up dh-apparmor (2.7.102-0ubuntu3.9) ...
Setting up debhelper (9.20120115ubuntu3) ...
Setting up fakeroot (1.18.2-1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode.
Setting up equivs (2.0.9) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

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

$ sudo apt-get remove equivs
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  equivs
0 upgraded, 0 newly installed, 1 to remove and 299 not upgraded.
After this operation, 87.0 kB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 132810 files and directories currently installed.)
Removing equivs ...
Processing triggers for man-db ...

$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 299 not upgraded.

Isso foi testado em "Trisquel 6.0 32-bit", "Ubuntu 12.04.3 32-bit" e "Debian 7.0 Gnome 32-bit". Todos eles não puderam cumprir a tarefa de remover os pacotes / dependências instalados automaticamente.

Minha pergunta é: onde está o problema?

    
por mYself 25.09.2013 / 05:24

1 resposta

1

O problema é que você ainda tem pacotes pendentes, o apt-get tenta remover a menor quantidade possível de pacotes também se algum outro pacote tiver dependências "indiretas" que não funcionará como você espera. Alguns deles podem até ter dependências circulares que os impedem de serem desinstalados. Também esse repo parece canino o suficiente para não confiar nele.

Se você usar o aptitude e perguntar why de cada pacote, você irá detectar onde está a dependência que contém o pacote.

Eu recomendo que você leia minha outra resposta sobre como o apt-get considera dependências conforme necessário. Você também pode usar apt-cache rdepends package para encontrar as dependências reversas, mas o aptitude parece mais simples e fácil de usar.

por Braiam 26.09.2013 / 14:28