Al ser uno de los primeros en adoptar y usar las compilaciones diarias de 11.04, a veces encuentro una situación en la que algunos paquetes requieren versiones anteriores de otros paquetes que los que he instalado. Por lo general, las versiones más nuevas (pero rechazadas) de los paquetes necesarios proporcionan toda la funcionalidad de sus versiones anteriores.
Si uso dpkg -i --force-depends-version
para instalar paquetes dependientes, todo funciona bien, nunca he visto un problema.
En lugar de descargar e instalar manualmente cada paquete, ¿puedo hacer que el sistema finja que hay una versión de paquete específica instalada cuando hay una nueva? ¿O hay un --force-depends-version
equivalente clave para apt-get
?
A pesar de que ya se ha aceptado una respuesta, la inclusión de lo aceptado transmite mejor el proceso:
Hay un paquete Debian llamado
equivs
que puede crear paquetes ficticios. Instálelo ejecutandosudo apt-get install -y equivs
Una vez instalado, genera un archivo de "control" de plantilla utilizando el siguiente comando:
equivs-control postfix
(reemplacepostfix
con el nombre de su paquete). En mi caso, podría usar un nombre de paquete alternativo, por ejemplo,postfix-custom
o lo que sea, pero hacer que mi paquete personalizado se complete oProvides
la dependencia de instalación depostfix
(nuevamente reemplazandopostfix
por el paquete que desee.Una vez que se genera el archivo de control de plantilla, normalmente eliminaré muchas de las declaraciones comentadas (declaraciones que comienzan con
#
). Una que me gusta mantener específicamente es laProvides:
declaración donde puedo decir que mi paquete proporciona la capacidad ofrecida por el otro paquete que estoy tratando de falsificar, por ejemplo,Provides: postfix
le dice al mecanismo de resolución de dependencia de Debian / Ubuntu que mi paquete, de cualquier nombre, proporciona las mismas capacidades del paquete de destino, nuevamentepostfix
o lo que sea. Esto me permite nombrar mi paquete independientemente del paquete de destino para evitar confusiones. Erlang Factory hace esto con sus cosas, por ejemplo,esl-erlang
proporcionaerlang
.Finalmente, una vez que se crea el archivo de control de plantilla, se usa
equivs-build
para generar el paquete falso, por ejemploequivs-build /path/to/generated/control/file
.Se tarda unos segundos en compilar el paquete y luego puede ejecutar
sudo dpkg -i my_package_name*.deb
Para usuarios avanzados, si su archivo de control de plantilla tiene una
Requires:
línea de dependencia, es posible que desee utilizar una herramienta comogdebi
instalar su paquete, así como los diversos paquetes que declara como dependencias.fuente