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


23

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-versionpara 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-versionequivalente clave para apt-get?

Respuestas:


16

Puede usar el paquete equivs Instalar equivs para crear un paquete ficticio que simule la instalación de un paquete determinado. Algunas instrucciones aquí .


Si bien esto es suficiente. Pero el enlace puede romperse tarde o temprano. Es mejor tener al menos reanudado la instrucción dentro de la respuesta. Mi respuesta puede ayudar aquí askubuntu.com/a/1181415/26246 . Por lo tanto, podemos hacer referencia a esta pregunta que tiene el voto más alto con respecto a equivs.
user.dz

23

A pesar de que ya se ha aceptado una respuesta, la inclusión de lo aceptado transmite mejor el proceso:

  1. Hay un paquete Debian llamado equivsque puede crear paquetes ficticios. Instálelo ejecutandosudo apt-get install -y equivs

  2. Una vez instalado, genera un archivo de "control" de plantilla utilizando el siguiente comando: equivs-control postfix(reemplace postfixcon el nombre de su paquete). En mi caso, podría usar un nombre de paquete alternativo, por ejemplo, postfix-customo lo que sea, pero hacer que mi paquete personalizado se complete o Providesla dependencia de instalación de postfix(nuevamente reemplazando postfixpor el paquete que desee.

  3. 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 la Provides:declaración donde puedo decir que mi paquete proporciona la capacidad ofrecida por el otro paquete que estoy tratando de falsificar, por ejemplo, Provides: postfixle 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, nuevamente postfixo 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-erlangproporciona erlang.

  4. Finalmente, una vez que se crea el archivo de control de plantilla, se usa equivs-buildpara generar el paquete falso, por ejemplo equivs-build /path/to/generated/control/file.

  5. 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 como gdebiinstalar su paquete, así como los diversos paquetes que declara como dependencias.

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.