Como informar ao apt que as dependências são resolvidas manualmente?

14

Digamos que existe um software que não quero instalar através de apt , mas manualmente. (TeXLive, porque eu quero usar o lançamento de 2011 e apt só tem a versão de 2009).

Digamos que haja outro software que eu gostaria de instalar por meio do apt , que, no entanto, depende do primeiro software. (Vim LaTeXSuite, como é difícil instalar manualmente para uso em todo o sistema).

Por padrão, apt não "vê" o primeiro software e continua instalando lotes desnecessários e não desejados (isto é, TeXLive 2009) apenas para satisfazer os metadados de dependência.

Como eu posso:

  • Diga a apt que um determinado pacote (ex. texlive ) é instalado para todos os propósitos práticos, e que ele não deve ser instalado como dependência de algum outro pacote? / p>

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

Eu pesquisei várias páginas de manual relacionadas a apt e cheguei vazio, e também encontrei esta questão neste site, mas acha que tem uma maneira menos agressiva de fazer isso, não?

(Dos meus tempos do Gentoo, eu me lembro de emerge --inject e /etc/portage/package.provides e estou basicamente procurando os apt equivalentes.)

    
por DevSolar 25.04.2012 / 10:03

3 respostas

12

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

Instalar equivs e ler a documentação dele deve ser suficiente, mas este guia para o Ubuntu é bastante extenso e deve aplicar-se a outros sistemas APT também.

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

Nesse caso , texlive-base-bin parece ser apenas "Recomendado" e não uma "Dependência" em a distribuição Debian básica pelo menos (provavelmente em parte porque texlive é um pacote tão grande), mas porque é comum instalar o TeX Live no Debian já que a versão de distribuição geralmente fica muito atrás (porque o pacote é tal uma fera que muitas vezes não pode ser empacotada sem trabalho substancial, que é feito principalmente por uma ou algumas pessoas, que afirmam ter vidas ao lado do Debian), o truque equivs é frequentemente usado com TeX Live (wow, aquela sentença saiu do controle :-)).

Adição : Para instruções mais detalhadas para quem quer 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 em relação à etapa equivs .

    
por 25.04.2012 / 10:24
1

Você pode usar o --nodeps flag 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 olhar também

    
por 25.04.2012 / 10:28
0

O seguinte removerá a dependência de um arquivo .deb, neste caso, removendo a dependência do 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 que a dependência existe.

Se você estiver instalando manualmente versões específicas de pacotes, talvez também queira impedir que apt-get upgrade atualize o pacote no futuro:

apt-mark hold freeradius
    
por 23.03.2018 / 11:30