Como saber se as dependências são resolvidas manualmente?


14

Digamos que exista um software pelo qual não queira instalar apt, mas manualmente. (TeXLive, porque eu quero usar o lançamento de 2011 e aptsó possui a versão de 2009.)

Digamos que exista outro software que eu gostaria de instalar apt, mas que depende do primeiro software. (Vim LaTeXSuite, pois é muito difícil instalar manualmente para uso em todo o sistema.)

Por padrão, aptnão "vê" o primeiro software e passa a instalar muitos itens desnecessários e indesejados (como o TeXLive 2009) apenas para satisfazer os metadados da dependência.

Como posso:

  • Diga aptque um determinado pacote (por exemplo texlive) está instalado para todos os fins práticos e que não deve ser instalado como dependência de outro pacote?

  • Diga aptpara instalar um determinado pacote (por exemplo vim-latexsuite) sem se preocupar com suas dependências?

Eu vasculhei várias aptpáginas de manual relacionadas e cheguei vazio, e também encontrei essa pergunta neste site, mas sinto que deve haver uma maneira menos burra de fazer isso, não?

(Nos meus tempos no Gentoo, eu me lembro emerge --injecte /etc/portage/package.provides, basicamente, estou procurando os aptequivalentes.)


O TeX Live 2011 foi adicionado recentemente ao Debian Sid; portanto, ele deve se propagar mais cedo ou mais tarde ao Mint (mas o Ubuntu 12.04 "perdeu", não antes do final de outubro com o Ubuntu 12.10). Se você é realmente aventureiro, talvez possa pegar os pacotes do Debian Sid, mas como nesse caso se trata de muitos pacotes, provavelmente não é uma boa solução. Existe um PPA em launchpad.net/~texlive-backports/+archive/ppa configurado (consulte este relatório de bug no Ubuntu ) que talvez você possa usar no Mint também.
Daniel Andersson


Nenhum comentário diminuiu três anos depois ... gostaria de explicar?
DevSolar

@ DevSolar: Parece que alguém votou em série na pergunta e nas duas respostas três anos depois do fato, sem esclarecer o porquê. Melhor apenas dar de ombros e seguir em frente, eu acho :-).
Daniel Andersson

Respostas:


13

Você deve usar o equivspacote para gerar meta-pacotes que fornecem essas dependências e, em seguida, usar dpkgpara instalar esses pacotes.

Instalar equivse ler sua documentação deve ser suficiente, mas este guia para o Ubuntu é bastante extenso e também se aplica a outros sistemas APT.


Além disso, se você acha que um pacote deve poder ser instalado sem a dependência especificada, você deve registrar um bug no pacote, explicando o caso em que a dependência não é necessária.

Nesse caso , texlive-base-binparece ser apenas "Recomendado" e não uma "Dependência" na distribuição básica do Debian pelo menos (provavelmente em parte porque texliveé um pacote tão grande), mas porque é comum instalar o TeX Live upstream no Debian desde o A versão de distribuição geralmente fica muito para trás (pelo fato de o pacote ser tão difícil que geralmente não pode ser empacotado sem um trabalho substancial, o que é feito principalmente por uma ou poucas pessoas, que afirmam ter vidas ao lado do Debian), o equivsO truque é frequentemente usado com o TeX Live (uau, essa frase ficou fora de controle :-)).


Adição : Para obter instruções mais detalhadas para quem deseja instalar o TeXLive fora do sistema de pacotes, essas instruções no TeX.SX são mais extensas e provavelmente continuarão sendo atualizadas. Eles também incluem instruções mais explícitas sobre a equivsetapa.


Não sei como isso aconteceu, mas o Linux Mint faz do texlive uma dependência "difícil" ... tentará o equivspacote.
precisa saber é o seguinte

equivsfuncionou muito bem. Criei a versão 9999 do texlive-base-bin, substituindo o pacote "fictício" original com o mesmo nome (fornecido por texlive-binaries) e instalei vim-latexsuitesem problemas.
precisa saber é o seguinte

1

Você pode usar o --nodepssinalizador no dpkg, que deve instalar o pacote sem dependências.

   --ignore-depends=package,...
          Ignore  dependency-checking for specified packages (actu-
          ally, checking is performed, but only warnings about con-
          flicts are given, nothing else)

Há uma pergunta muito semelhante no Serverfault que vale a pena examinar também


Uh ... não existe isso? (Pelo menos não na caixa de Linux Mint 12 que eu tenho aqui.)
DevSolar

1
hm, eu parecem ter feito um erro - o para dpkg, não apt-get - editado minha resposta para refletir isso
Journeyman Geek

Isso é algo que me confunde sem fim com os derivados do Debian: A multiplicidade de interfaces de gerenciador de pacotes. Eu suponho que não há tropeços envolvidos ao misturá-los? Ou eu teria que me ater a um deles?
precisa saber é o seguinte

tudo é baseado no dpkg, essencialmente, apt e aptitude são front-ends para isso, e há front-ends para apt e aptitude. O dpkg geralmente é usado quando você deseja instalar pacotes de um arquivo .deb. Eu costumo me apegar ao apt-get e ao dpkg na maior parte do tempo. Misturando os gestores de pacotes 'default' debian sabor geralmente deve ser reasonablys segura
Journeyman Geek

Isso faz da sua resposta minha solução preferida para o meu problema real , já que nada depende do vim-latexsuite. No entanto, essa solução não marca "texlive" como presente , apenas impede que o vim-latexsuite solicite. Como tal, a resposta de Daniel se encaixa melhor no título da pergunta. Marca de seleção vai para ele, parabéns vão para você. ;-)
DevSolar 25/04/12

1

A seguir, você removerá a dependência de um arquivo .deb, neste caso, removendo a dependência libperl5.20 do freeradius:

dpkg-deb -x freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius
dpkg-deb -e freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb freeradius/DEBIAN
sed -i  -e 's/, libperl5.20 (>= 5.20.2)//g' freeradius/DEBIAN/control
dpkg-deb -b freeradius freeradius_2.2.5+dfsg-0.2+deb8u1_amd64.deb

Isso permite que você instale o pacote sem saber se a dependência existe.

Se você estiver instalando manualmente versões específicas de pacotes, também poderá interromper a apt-get upgradeatualização do pacote no futuro:

apt-mark hold freeradius
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.