Precisa evitar que um pacote seja instalado [duplicado]

15

Eu tenho um pacote que não quero que seja instalado, mesmo se outro precisar dele.

Existe alguma maneira de "bloquear" a instalação de um pacote, mesmo como uma dependência de outro?

Posso superar o fato de que é uma dependência e ainda ser capaz de atualizar meu sistema?

Estou pensando em particular sobre o indicador de mensagens da Unity. Se eu removê-lo e adicionar o Unity novamente por algum motivo, não quero que o applet seja instalado novamente. Como posso evitar que ele seja instalado? (ou o menu global, versões do java removendo o meu personalizado instalado, etc ... você começa a idéia).

    
por Bruno Pereira 27.01.2012 / 20:00

2 respostas

17

  • Existe alguma maneira de "bloquear" a instalação de um pacote, mesmo como uma dependência de outro?

Para evitar que o apt instale um pacote foo , inclua uma sub-rotina para esse pacote no arquivo / etc / apt / preferences que se parece com o seguinte.

Package: foo
Pin: release *
Pin-Priority: -1

Isso impedirá que o apt instale o foo e também evitará que o apt instale qualquer coisa que Depende do foo.

A próxima coisa mais próxima que posso pensar é colocar um hold em foo em sua versão atual que impede que foo seja atualizado (a menos que o dpkg receba a opção --force-hold ou a menos que o apt substitua o foo aguarde). Para segurar o pacote foo, faça o seguinte.

echo foo hold | sudo dpkg --set-selections
  • Posso superar o fato de que é uma dependência e ainda ser capaz de atualizar meu sistema?

Você pode instalar pacotes individuais apesar das violações de dependência usando dpkg --force-depends . Você não poderá usar apt para fazer isso, a menos que você use apt-get source do pacote Depende de foo e reconstrua-o sem depender de foo.

    
por jdthood 30.01.2013 / 17:35
2

Se um pacote precisa (depende de) outro pacote, então ele não deve funcionar corretamente sem ele. Se puder, é um erro, deve ser uma recomendação e não uma dependência.

Para evitar instalar uma dependência:

  1. faça o download dos pacotes necessários:

    sudo apt-get --download-only install pkg-name
    
  2. remova pacotes indesejados

    sudo rm /var/cache/apt/archive/bad-pkg_*.deb
    
  3. instale todos os outros pacotes

    sudo apt-get --no-download --ignore-missing install pkg-name
    

Por outro lado, para instalar um pacote sem recomendar:

sudo apt-get --no-install-recommends install pkg-name
    
por enzotib 27.01.2012 / 21:05

Tags