Como eu excluo pacotes específicos da instalação com o apt-get?

11

Eu gostaria de excluir pacotes específicos da instalação com apt-get , ou seja, instalar um metapacote sem a lista de pacotes específicos, de preferência com uma invocação de apt-get .

Por exemplo, na linha de comando do Ubuntu 14.04 LTS, estou instalando o ambiente de desktop MATE. Em 14.04 LTS MATE não é um sabor oficial, então estou adicionando um PPA:

sudo apt-get install software-properties-common # need them for 'apt-add-repository'
sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
sudo apt-get update

em seguida, instalando:

sudo apt-get install xorg mate-core --no-install-recommends

Mesmo sem os extras recomendados, mate-core instala 3 emuladores de terminal: xterm , uxterm e mate-terminal , este último sem fontes adequadas enquanto instalado nesta configuração mínima.

Suponha que eu decida que 3 programas de terminal seriam muitos e gostaria de instalar xorg e mate-core sem xterm e mate-terminal . Eu poderia fazer

sudo apt-get install xorg mate-core --no-install-recommends
sudo apt-get purge xterm mate-terminal

mas é possível fazer isso de uma só vez? Existe alguma sintaxe como

sudo apt-get install xorg mate-core --without xterm mate-terminal
    
por Nickolai Leschov 10.05.2015 / 22:30

3 respostas

6

Então, mate-core depende de mate-desktop-environment-core , que por sua vez depende de mate-terminal . Um depende não pode ser quebrado facilmente. Nem apt-get nem aptitude suporta uma opção --without ou --exclude e "manter" os pacotes não ajudará:

$ echo "mate-terminal hold" | sudo dpkg --set-selections
$ sudo apt-get install mate-core
[...]
Some packages could not be installed...
The following packages have unmet dependencies:

Claro, pode-se usar dpkg --force-depends para instalar um pacote, mas talvez não seja o que você deseja.

Uma possibilidade seria preencher o sinalizador Depends: com um pacote fictício:

$ sudo apt-get install equivs
$ equivs-control mate-terminal
$ vi mate-terminal
Section: misc
Priority: optional
Standards-Version: 3.9.2
Package: mate-terminal
Version: 1.8.0
Description: Dummy package for mate-terminal
:x

$ equivs-build mate-terminal
$ sudo dpkg -i mate-terminal_1.8.0_all.deb

Agora, o mate-core deve poder instalar sem o mate-terminal . Repita o mesmo para que outros pacotes sejam excluídos.

Evidentemente, este é um grande esforço e uma opção --without seria boa. Talvez um bug wishlist possa ser aberto para fornecer tal funcionalidade no futuro, mas eu duvido que isso seja implementado.

No entanto, uma opção mais realista seria pedir ao proprietário do PPA para fornecer outro pacote meta para o MATE com menor Depends packages set.

    
por ckujau 22.05.2015 / 11:42
3

Se você usa aptitude ou um gerenciador de pacotes gráfico (Synaptic, etc.), você pode desmarcar quais pacotes devem ser instalados desde que não cause problemas de dependência.

No caso de aptitude , antes de instalar um pacote (na visualização gráfica), ele mostrará por que um pacote dependente está sendo instalado. No meu caso, eu uso o KDE e, portanto, não tenho nenhum pacote MATE. Se eu disser para instalar o mate-core , recebo o seguinte:

Observequemate-coreestámarcadocomosendoinstaladomanualmenteemuitosoutrospacotesestãosendoinstalados.Paraopacotemate-terminal,naparteinferior,diz" mate-desktop-environment-core [universe] depende de mate-terminal (> = 1.0.0)". Indo para a entrada de mate-desktop-environment-core ,

" mate-core [universe] depende de mate-desktop-environment-core (> = 1.8.0 + 9)". É por isso que o mate-terminal está sendo instalado.

Se, em vez disso, um pacote recomendado estiver sendo instalado (em vez de algo que depende de outro pacote), aptitude dirá isso, e você poderá dizer a ele para não instalar esse pacote sem nenhuma dependência quebrada. Por exemplo:

    
por saiarcot895 24.05.2015 / 03:00
2

Outro método

Baixe o pacote principal que depende do outro. Extraia o pacote, remova as dependências indesejadas, reembale-o. Agora abra o novo pacote com o instalador de pacotes gdebi . Ele instalará novas dependências para você.

  • A lista de depósitos pode ser encontrada em DEBIAN / controle - > depende
  • Para ajuda sobre como reposicionar o deb, veja minha resposta em como criar um PPA
por totti 26.05.2015 / 08:02