Como faço para o apt-get ignorar algumas dependências? Por exemplo, eu queria instalar o mailx para poder usá-lo para enviar email de scripts cron / ferramentas de geração de relatórios. No entanto, a instalação do mailx também instala o exim4 e um monte de dependências (eu já tenho o Postfix instalado) que eu realmente não preciso e que acho que o mailx também pode viver sem.
Como ignoro algumas dependências, mas ainda uso o apt-get, pois é uma boa ferramenta?
APT::Install-Recommends "false";
ao seuapt.conf
.Respostas:
Solução simples e fácil: basta especificar os pacotes indesejados com um extra
-
após cada um deles.Exemplo sem a
-
chave:Exemplo usando o switch para evitar a instalação
exim4-base
. Observe o-
no final:Como você pode ver,
apt-get
não tenta mais instalar oexim4-base
pacote, nem tenta instalar suas várias dependências (exim4-config
etc).E se você estava errado e precisava dessa
exim4-base
dependência, afinal, você pode justificá-apt-get install
la mais tarde!fonte
gnupg2
sempinentry-gtk2
a evitar deps X)Depends: xxx but it is not going to be installed
. Você pode pular todos os pacotes opcionais comapt-get install --no-install-recommends PACKAGE
Você pode alterar as dependências de um pacote deb como este:
ar x golden-linux.deb
(criará três arquivos: debian-binary control.tar.gz data.tar.gz)tar xzf control.tar.gz
(criará: postinst postrm preinst prerm md5sums control)control
(use um editor de texto)tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums control
ar rcs newpackage.deb debian-binary control.tar.gz data.tar.gz
(peça importante! Consulte [Nota])[Nota]: o dpkg não seria capaz de ler os metadados de um pacote rapidamente se tivesse que procurar onde a seção de dados terminava!
fonte
libmng1.so.1
mesmo que funcionasse perfeitamente com um link simbólico definido comolibmng1.so.2
.apt-get
simplesmente não podia ser amordaçado e ficava me irritando com dependências não atendidas (mesmo ao instalar algo totalmente não relacionado!). Que carga de conceito de lixo.gnome-settings-daemon
desejado,gnome-settings-daemon-schemas=3.8.6.1-0ubuntu11
mas eu já tenhognome-settings-daemon-schemas=3.8.6.1-0ubuntu11.2
(<- observe o ".2" no final). Este procedimento me permitiu editar o pacote e forçá-lo a usar a versão 11.2 mais recente. OBRIGADO!FILES=$(tar zxvf control.tar.gz)
para armazenar a lista de arquivos em uma variável. 4.tar zcf control.tar.gz $FILES
- crie o arquivo em uma única etapa, sem canais ou redirecionamentos, usando a lista de arquivos original (após a modificação).--ignore-failed-read
para quetar
ignore os arquivos ausentes do restante da linha de comando. (Por exemplo,prerm
,postrm
estão ausentes de muitos pacotes.) Além disso, os tarballs pode ser.xz
mais do que.gz
em versões mais recentes do formato de arquivo Debian (por exemplodata.tar.xz
).Depois de instalar o pacote com a
--ignore-depends
opção, edite o/var/lib/dpkg/status
arquivo e remova qualquer dependência que julgue desnecessária. Apenas tenha muito cuidado. Em ordem um dep. de ser necessário, é mais do que provável a SER necessáriofonte
/var/lib/dpkg/status
, pode ser necessário concluir a instalaçãosudo apt-get -f install
(não é necessário especificar um pacote).Você pode tentar a
--nodeps
bandeira comapt-get
.Ou baixar o pacote e instalá-lo usando
dpkg
a opção--ignore-depends
.Por exemplo, se você deseja instalar o pacote
foo
sem dependênciabar
:fonte
--no-install-recommends
trabalhou para mim.Desde que você instalou o postfix a partir da fonte, é necessário instalar um pacote "fictício" que satisfaça a dependência do agente de transporte de correio do mailx (ou bsd-mailx). O pacote "equivs" no debian existe para criar um pacote fictício que você pode instalar para informar ao dpkg "essa dependência é satisfeita"
O motivo pelo qual dizer ao dpkg para simplesmente ignorar dependências não é uma boa solução, é porque você está dizendo apenas ao dpkg / apt para ignorá-lo por uma única transação, não é possível dizer para ele ignorar as dependências para sempre. Sempre que você usa o apt, ele verifica as dependências de todos os pacotes
fonte
equivs-control <name>
, edite o arquivo produzido para fornecer a dependência correta e tenha um bom nome, depois executeequivs-build <name>
e, finalmente,dpkg -i
o arquivo .deb resultante.Eu estive procurando por esta opção em um servidor Ubuntu 12.04 executando o Xen. Nos meus domínios, uso o kernel -virtual, e o apt tentou persistentemente instalar o grub a cada atualização do pacote do kernel. Entretanto, o Grub não é necessário dentro do domU ao usar o p [yv] grub.
Eu estive procurando pela opção -nodeps para o apt-get também, mas ela não funcionou, então acabei desinstalando / limpando o grub * após cada atualização do kernel.
Afinal, realmente ler uma página de manual às vezes ajuda - acontece que uma opção semelhante ao apt-get na versão 12.04 parece ser --no-install-recommends, que realmente funciona nesse caso, pois o grub é listado como 'recomendado' no diretório informações do pacote (acho que não é uma dependência "real"?).
Estou adicionando isso aqui porque, no meu caso, ele resolveu um problema semelhante, e a dica para '--no-install-recommends' ainda não foi mencionada.
fonte
Você pode baixar o pacote com o apt-get e instalá-lo com o dpkg, listando manualmente a dependência que você gostaria de ser ignorada.
Por exemplo, se eu quiser fazer o download do mypackage, mas ele depende da libperl5.14 e não quero instalar a libperl5.14, pois tenho uma versão diferente, posso ignorar essa dependência da seguinte maneira:
fonte
Uma maneira alternativa de ajustar manualmente as dependências é:
fonte
No meu sistema debian, o bsd-mailx realmente depende
default-mta | mail-transport-agent
(você pode verificar o que um pacote dependeapt-cache show <pkg>
para qualquer coisa no arquivo oudpkg -s <pkg>
para os pacotes instalados.Pode ser que o seu pacote postfix não possua,
Provides: mail-transport-agent
portanto o apt não percebe que você possui um MTA instalado. Valeria a pena registrar um bug para isso, se for um pacote oficial.fonte
Para isso, você pode instalar unha, que eu acho que não tem essas dependências?
fonte
Bem - não.
Usar o trabalho de outras pessoas é muito importante no caminho para qualquer sucesso. Ao criar algum software a partir da fonte (tarball), você perde a oportunidade de usar o trabalho do gerenciador de pacotes da distribuição.
Você não receberá atualizações "gratuitas". Na maioria das vezes, nenhum deles atualiza os pacotes que eles instalaram da fonte. Como eles precisam rastrear o software para novas versões, reconstrua-o e todos os programas dependentes (tente se lembrar deles).
Você terá problemas com outros pacotes dos repositórios de distribuição da sua distribuição. Este é exatamente o caso indicado na pergunta: o ubuntu tem um ótimo gerenciador de pacotes e algumas pessoas muito legais mantendo os pacotes. E eles decidiram que, para o programa mailx funcionar, você precisa de um MTA. Portanto, se você instalou o postfix a partir de fontes, o ubuntu não solicitará a instalação do exim.
Se, por algum motivo, a manutenção do servidor for transferida para outra pessoa (por exemplo, seu projeto se tornar muito bem-sucedido e você decidir contratar outro gerente para gerenciar os servidores enquanto estiver ocupado com outras coisas), ele naturalmente esperará executar
dpkg --get-selections
para obter todas as informações necessárias. pacotes instalados.Tente usar o software de gerenciamento de pacotes da distribuição o máximo possível. Aprenda a criar seus próprios pacotes, se você não encontrar um pré-construído e se tornar um profissional melhor.
fonte