Como remover um pacote em um sistema baseado no Debian sem remover dependências? [fechadas]

5

Estou executando o Linux Mint, uma distro baseada no Debian, e quero remover um pacote sem remover suas dependências reversas; ou quero segmentar a remoção de um pacote sem remover mais nada.

Por exemplo: Desejo remover PACKAGE_A, mas (PACKAGE_X, PACKAGE_Y, PACKAGE_Z) dependem de PACKAGE_A e seriam automaticamente removidos. Eu preciso manter X, Y, Z instalado e remover apenas A. Infelizmente, se eu fosse reinstalar X, Y, Z, ele também reinstalaria PACKAGE_A.

Para o pacote específico que eu gostaria de remover, há cerca de 20 dependências e algumas dependências parecem ser críticas para a funcionalidade adequada da GUI.

No Arch Linux, a documentação do pacman diz:

To remove a package, which is required by another package, without removing the dependent package:

pacman -Rdd package_name

Como minha distribuição baseada no Debian não usa o pacman, como posso obter a mesma funcionalidade com o apt-get, o Aptitude ou o Mint Software Manager?

EDIT: A resposta de Faheem Mitha foi exatamente o que eu estava procurando.

dpkg -r --force-depends foo

Isso removeu o pacote em questão sem remover as dependências do apt-get e do Mint Software Manager. Obrigada!

    
por CauselessEffect 05.02.2015 / 00:17

1 resposta

12

Se eu entendi corretamente, você deseja remover um pacote que outros pacotes dependem, sem remover os outros pacotes também. Tendo em conta que isto pode não ser uma boa ideia, pode fazê-lo com.

dpkg -r --force-depends foo

para remoção de um pacote (os arquivos conf não são removidos).

dpkg -P --force-depends foo

para limpeza de um pacote (os arquivos conf são removidos).

Exemplo de uso:

root@orwell:/home/faheem# dpkg -P --force-depends gcc-4.6-base:amd64
dpkg: gcc-4.6-base:amd64: dependency problems, but removing anyway as you requested:
 gcc-4.6 depends on gcc-4.6-base (= 4.6.3-14).
 libstdc++6-4.6-dev depends on gcc-4.6-base (= 4.6.3-14).
 g++-4.6 depends on gcc-4.6-base (= 4.6.3-14).
 cpp-4.6 depends on gcc-4.6-base (= 4.6.3-14).

(Reading database ... 454279 files and directories currently installed.)
Removing gcc-4.6-base:amd64 ...
Processing triggers for ccache ...
Updating symlinks in /usr/lib/ccache ...

Às vezes, é útil realizar essa ação. Naturalmente, deixar o sistema nesse estado quebrado / inconsistente por qualquer período de tempo é altamente indesejável. No entanto, dada uma chance, o apt irá restaurar o equilíbrio para o seu universo da seguinte forma:

root@orwell:/home/faheem# apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  libavdevice53 libavfilter2 libglade2-dev python-cairo-dbg python-cairo-dev python-gnupginterface python-gobject-2-dev
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  gcc-4.6-base
The following NEW packages will be installed:
  gcc-4.6-base
0 upgraded, 1 newly installed, 0 to remove and 62 not upgraded.
Need to get 142 kB of archives.
After this operation, 159 kB of additional disk space will be used.
Do you want to continue [Y/n]? 
Get:1 http://debian.lcs.mit.edu/debian/ wheezy/main gcc-4.6-base amd64 4.6.3-14 [142 kB]
Fetched 142 kB in 7s (19.1 kB/s)                   
Selecting previously unselected package gcc-4.6-base:amd64.
(Reading database ... 454274 files and directories currently installed.)
Unpacking gcc-4.6-base:amd64 (from .../gcc-4.6-base_4.6.3-14_amd64.deb) ...
Processing triggers for ccache ...
Updating symlinks in /usr/lib/ccache ...
Setting up gcc-4.6-base:amd64 (4.6.3-14) ...
    
por 05.02.2015 / 00:46