¿Cómo decirle a apt que las dependencias se resuelven manualmente?


14

Digamos que hay un software que no quiero instalar apt, pero de forma manual. (TeXLive, porque quiero usar la versión 2011 y aptsolo tengo la versión 2009).

Digamos que hay otro software que me gustaría instalar apt, pero que depende del primer software. (Vim LaTeXSuite, ya que es difícil instalarlo manualmente para uso en todo el sistema).

Por defecto, aptno "ve" el primer software y procede a instalar muchos cruft innecesarios y no deseados (es decir, TeXLive 2009) solo para satisfacer los metadatos de dependencia.

¿Cómo puedo:

  • ¿Dice aptque un paquete dado (por ejemplo texlive) está instalado para todos los fines prácticos y que no debe instalarse como dependencia de otro paquete?

  • ¿Le dice apta instalar un paquete dado (por ejemplo vim-latexsuite) sin preocuparse por sus dependencias?

aptRevisé varias páginas de manual relacionadas y llegué vacía, y también encontré esta pregunta en este sitio, pero siento que tiene que haber una manera menos hack de hacerlo, ¿no?

(De mis tiempos en Gentoo, recuerdo emerge --injecty /etc/portage/package.providesbásicamente busco los aptequivalentes).


TeX Live 2011 se ha agregado recientemente a Debian Sid, por lo que debería propagarse tarde o temprano también a Mint (pero Ubuntu 12.04 lo "perdió", así que no antes de finales de octubre con Ubuntu 12.10). Si eres realmente aventurero, quizás puedas tomar los paquetes de Debian Sid, pero como en este caso se trata de muchos paquetes, probablemente no sea una buena solución. Hay un PPA en launchpad.net/~texlive-backports/+archive/ppa configurado (vea este informe de error en Ubuntu ) que quizás también pueda usar en Mint.
Daniel Andersson


Voto negativo sin comentarios tres años después ... ¿te importaría explicarlo?
DevSolar

@DevSolar: Parece que alguien rechazó la pregunta en serie y ambas responden tres años después del hecho, sin aclarar por qué. Supongo que es mejor encogerse de hombros y seguir adelante :-).
Daniel Andersson

Respuestas:


13

Debe usar el equivspaquete para generar metapaquetes que proporcionen estas dependencias, y luego usarlo dpkgpara instalar estos paquetes.

Instalar equivsy leer su documentación debería ser suficiente, pero esta guía para Ubuntu es bastante extensa y debería aplicarse también a otros sistemas APT.


Además, si considera que un paquete debería poder instalarse sin la dependencia especificada, debe presentar un error contra el paquete, explicando el caso en el que la dependencia no es necesaria.

En este caso , texlive-base-binparece ser solo "Recomendado" y no una "Dependencia" en la distribución base de Debian al menos (probablemente en parte porque texlivees un paquete tan enorme), pero porque es común instalar TeX Live en Debian desde arriba la versión de distribución a menudo se queda muy rezagada (por la razón de que el paquete es una bestia que a menudo no se puede empaquetar sin un trabajo sustancial, que es realizado principalmente por una o unas pocas personas, que afirman que tienen vidas al lado de Debian), el equivsEl truco se usa a menudo con TeX Live (wow, esa oración se salió de control :-)).


Adición : para obtener instrucciones más detalladas para aquellos que buscan instalar TeXLive fuera del sistema de paquetes, estas instrucciones en TeX.SX son más extensas y probablemente continuarán actualizándose. También incluyen instrucciones más explícitas sobre el equivspaso.


No sé cómo sucedió esto, pero Linux Mint hace que texlive sea una dependencia "difícil" ... probará el equivspaquete.
DevSolar

equivsfuncionó muy bien Creé la versión 9999 de texlive-base-bin, anulando el paquete original "ficticio" del mismo nombre (proporcionado por texlive-binaries), e instalé vim-latexsuitesin ningún problema.
DevSolar

1

Puede usar el --nodepsindicador en dpkg, que debería instalar el paquete sin ninguna dependencia.

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

Hay una pregunta muy similar sobre Serverfault que vale la pena ver también


Uh ... no hay tal cosa? (Al menos no en el cuadro Linux Mint 12 que tengo aquí.)
DevSolar

1
hm, parece que he cometido un error - es para dpkg, no apto para obtener - editó mi respuesta para reflejar esto
Journeyman Geek

Eso es algo que me confunde con los derivados de Debian: la multitud de interfaces del administrador de paquetes. ¿Asumo que no hay tropiezos involucrados al mezclarlos? ¿O tendría que apegarme a uno de ellos?
DevSolar

todo se basa en dpkg, esencialmente, apt y aptitude son front-end para eso, y hay front-end para apt y aptitude. dpkg se usa generalmente cuando desea instalar paquetes desde un archivo .deb. Tiendo a apegarme a apt-get y dpkg en mi mayor parte. Por lo general, mezclar los administradores de paquetes con sabor a Debian 'predeterminados' debería ser razonablemente seguro
Journeyman Geek

Eso hace que su respuesta sea mi solución preferida para mi problema real , ya que nada depende de vim-latexsuite a su vez. Sin embargo, esta solución no marca "texlive" como presente , simplemente evita que vim-latexsuite lo solicite. Como tal, la respuesta de Daniel se ajusta mejor al título de la pregunta. La marca de verificación va para él, las felicitaciones para ti. ;-)
DevSolar

1

Lo siguiente eliminará la dependencia de un archivo .deb, en este caso eliminando la dependencia de libperl5.20 de 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

Esto le permite instalar el paquete sin saber que existe la dependencia.

Si está instalando manualmente versiones específicas de paquetes, es posible que también desee dejar apt-get upgradede actualizar el paquete en el futuro:

apt-mark hold freeradius
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.