¿Cómo falsificar una versión de paquete instalada?

20

Al ser uno de los primeros en adoptar y usar 11.04 compilaciones diarias, a veces encuentro una situación en la que algunos paquetes requieren versiones anteriores de otros paquetes distintos de los que he instalado. Por lo general, las versiones más recientes (pero rechazadas) de los paquetes necesarios brindan 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 pretenda que hay una versión de paquete específica instalada cuando hay un nuevo? ¿O hay una clave --force-depends-version equivalente para apt-get ?

    
pregunta Ivan 20.12.2010 - 01:44

2 respuestas

15

Puede usar los equivs paquete para crear un paquete ficticio para simular que se está instalando un paquete determinado. Algunas instrucciones aquí .

    
respondido por el frabjous 20.12.2010 - 01:49
17

A pesar de que ya se acepta una respuesta, incluir el mejor aceptado transmite el proceso:

Hay un paquete de Debian llamado equivs que puede crear paquetes ficticios. Instálelo ejecutando sudo apt-get install -y equivs

Una vez instalado, genera un archivo de "control" de plantilla con el siguiente comando: equivs-control postfix (reemplace postfix con el nombre de su paquete). En mi caso, podría usar un nombre de paquete alternativo, p. postfix-custom o lo que sea, pero mi paquete personalizado cumple o Provides la dependencia de instalación de postfix (reemplazando de nuevo postfix por el paquete que desee.

Una vez que se genera el archivo de control de plantilla, generalmente eliminaré muchas de las declaraciones comentadas (declaraciones que comienzan con # ). Una que me gusta mantener específicamente es la declaración Provides: donde puedo decir que mi paquete proporciona la capacidad ofrecida por el otro paquete que estoy tratando de falsificar, p. Provides: postfix le dice al mecanismo de resolución de dependencias Debian / Ubuntu que mi paquete -de cualquier nombre- proporciona las mismas capacidades del paquete objetivo, de nuevo postfix o lo que sea. Esto me permite nombrar mi paquete independientemente del paquete objetivo para evitar confusiones. Erlang Factory hace esto con sus cosas, p. esl-erlang proporciona erlang .

Finalmente, una vez que se crea el archivo de control de plantilla, utiliza equivs-build para generar el paquete falso, p. %código%. Tarda unos segundos para compilar el paquete y luego puede ejecutar equivs-build /path/to/generated/control/file

Para los usuarios avanzados, si su archivo de control de plantilla tiene una línea de dependencia sudo dpkg -i my_package_name*.deb , puede usar una herramienta como Requires: para instalar su paquete, así como los diversos paquetes que declara como dependencias.

    
respondido por el Jonathan Oliver 03.08.2015 - 18:41

Lea otras preguntas en las etiquetas