Quando você usaria o apt-get remove sobre o apt-get autoremove?

16

Entendo que apt-get remove remove pacotes e apt-get autoremove é remover todos os pacotes que foram instalados para preencher uma dependência para um determinado pacote. Então, por exemplo, se eu instalei o LibreOffice e ele dependia do Java e o instalei como parte da instalação quando eu executar o comando apt-get libreoffice , por que eu rodaria o comando apt-get remove libreoffice seguido de apt-get autoremove ? Não consigo simplesmente executar o comando apt-get autoremove libreoffice ? Ou a combinação de apt-get remove e apt-get autoremove para um propósito diferente?

    
por PeanutsMonkey 09.03.2012 / 01:49

4 respostas

11

Depende de quanto você confia no rastreador de dependência. Embora quase sempre esteja correto, há momentos em que você deseja que uma dependência permaneça, particularmente quando você é um desenvolvedor ou usuário experiente instalando software que não está no repositório.

Se você sempre instala o software através do apt-get, sem exceção, e confia que todas as dependências estejam corretas (o que geralmente são), então você pode usar apt-get autoremove e ganhar uma pequena quantidade de espaço em disco e uma exposição reduzida a possíveis brechas de segurança, fazendo com que ele remova pacotes que não tenham mais nenhum pacote que precise deles.

Mas se você instalar o software manualmente, ou desenvolver um software, ou não quiser lidar com um possível erro de dependência, então não usar o autoremove para limpar pacotes potencialmente não utilizados é provavelmente a escolha mais segura. Independentemente de você usar apt-get autoremove de vez em quando ou não, você sempre removerá o software usando apt-get remove Package

Por exemplo, se eu instalar AwesomePackage , pode depender de AwesomeLibrary e, portanto, AwesomeLibrary será automaticamente instalado como uma dependência . Quando eu removo AwesomePackage usando autoremove, desde que nenhum outro pacote tenha AwesomeLibrary como uma dependência, ele será desinstalado também. Mas se SuperPackage também exigir AwesomeLibrary , ou se eu tivesse instalado AwesomeLibrary explicitamente, em vez de tê-lo automaticamente como uma dependência ( apt-get install AwesomeLibrary ), então o autoremove não se livraria dele.

A razão pela qual não é o padrão é que ter AwesomeLibrary no sistema, não utilizado, é um problema muito pequeno. Quase nunca causará problemas, e a maioria das dependências não ocupa muito espaço. Há exceções, mas os momentos em que a remoção de uma dependência causará problemas superam os tempos em que ela resolverá ou evitará um problema.

    
por 09.03.2012 / 02:18
10

Você pode encontrar a descrição de remove , autoremove , eliminação , clean e autoclean , bem como a sintaxe nas páginas de manual do apt-get: man apt-get .

Se você ainda não tiver certeza depois de lê-lo (eu era), a melhor maneira de esclarecê-lo é experimentá-lo.

Abaixo está um exemplo de uma árvore de dependências completa para vim :

Vocêpodeobtê-locom:

apt-rdepends-dvim>vim.dotdottyvim.dot

Vocêtambémpodeobterumalistadasdependênciasimediatasusandoapt-cachedepends(consulte Declarando as relações entre pacotes para mais informações):

$ apt-cache depends vim
vim
  Depends: vim-common
  Depends: vim-runtime
  Depends: libacl1
  Depends: libc6
  Depends: libgpm2
  Depends: libselinux1
  Depends: libtinfo5
  Suggests: <ctags>
    exuberant-ctags
  Suggests: vim-doc
  Suggests: vim-scripts

Então parece que vim depende de vários pacotes, vamos tentar instalá-lo com apt-get install e ver o que acontece:

$ sudo apt-get install vim
...
The following extra packages will be installed:
  vim-common vim-runtime
Suggested packages:
  ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim vim-common vim-runtime
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
After this operation, 25.1 MB of additional disk space will be used.
Do you want to continue [Y/n]? n

Para que o vim funcione, precisamos dos pacotes vim-common e vim-runtime e apt-get cuidará disso . Podemos verificar com dpkg -s pkg... (veja man dpkg para mais informações sobre status):

$ sudo dpkg -s libc6
Package: libc6
Status: install ok installed        // we already have it, no need to install

$ sudo dpkg -s vim-common
Package: vim-common
Status: deinstall ok config-files   // we don't have it, have to install

Assim como verificamos o que vim depende, também podemos verificar quais outras coisas dependem dos mesmos pacotes que o vim usando apt-cache rdepends . Devemos ver vim entre (possivelmente) outras coisas:

$ apt-cache rdepends vim-common
vim-common
Reverse Depends:
  vim-latexsuite
  vim-addon-manager
  vim-tiny
  vim-nox
  vim-gtk
  vim-gnome
 |vim-dbg
  vim-athena
  vim                               // there it is

Vamos continuar com a instalação. Depois de instalarmos vim , podemos experimentar a diferença entre remove e autoremove . Vamos tentar remover primeiro:

$ sudo apt-get remove vim
...
The following packages will be REMOVED:
  vim
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,922 kB disk space will be freed.
Do you want to continue [Y/n]? n

apt-get remove então removeria vim mas não suas dependências deixando-os para trás . Vamos agora tentar remover uma das dependências do vim :

$ sudo apt-get remove vim-runtime
...
The following packages will be REMOVED:
  vim vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 24.8 MB disk space will be freed.
Do you want to continue [Y/n]? n

Isso removeria a dependência vim-runtime , bem como o pacote que depende dela , ou seja vim . Por curiosidade, vamos ver o que aconteceria se removêssemos uma dependência que é menor na árvore de dependência do vim :

$ sudo apt-get remove libgpm2
...
The following packages were automatically installed and are no longer required:
  libgtkglext1 libqtassistantclient4 libtiff-tools libtiff5 python-qt4
  python-sip python-sqlalchemy python-sqlalchemy-ext
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  anki cheese gimp gimp-gmic gimp-plugin-registry gnome-control-center      // !
  gnome-media gnome-video-effects gstreamer0.10-plugins-good libaa1         // !
  libcheese-gtk21 libcheese3 libgpm2 mplayer quodlibet vim vlc w3m          // !
0 upgraded, 0 newly installed, 18 to remove and 0 not upgraded.
After this operation, 63.1 MB disk space will be freed.
Do you want to continue [Y/n]? n

Isso removeria o vim e muitas coisas boas!

Vamos continuar com apt-get remove vim . Uma vez que tenhamos feito, devemos ter algumas sobras. Se agora tentarmos autoremove , podemos ver:

$ sudo apt-get autoremove
...
The following packages will be REMOVED:
  vim-common vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 23.2 MB disk space will be freed.
Do you want to continue [Y/n]? y

Estes são os dois pacotes que apt-get remove deixou para trás, mesmo que nada mais precise deles.

Experimentado com o apt-get 0.9.7.9.

    
por 01.11.2013 / 17:40
4

De acordo com isso: o link autoremove removerá todos os pacotes que outros programas não precisarem. Você faria 'apt-get autoremove', não 'apt-get autoremove libreoffice'. Também remover pacotes desnecessários não apenas libera um pouco de espaço em disco, mas também reduz a 'superfície de ataque' do seu sistema.

    
por 09.03.2012 / 14:52
3

remove excluirá o programa especificado, enquanto autoremove incluirá dependências que, de outra forma, não serão mais usadas.

Além disso, se você quiser liberar espaço em disco, um comando útil e seguro é ...

sudo apt-get clean

Isso remove o cache do aptitude em / var / cache / apt / archives

    
por 09.03.2012 / 02:10