Quiero configurar una nueva máquina virtual con algunos paquetes específicos (nombre y versión) que se proporcionan.
Por ejemplo apache2 en versión 2.2.20-1ubuntu1
con todas las dependencias. Incluso si hay una nueva versión de este paquete en los servidores, este debería estar instalado.
La solución tiene que trabajar / escalar con múltiples (n) "configuraciones". Otra máquina virtual podría necesitar una versión anterior de apache2.
Actualmente conozco algunas posibilidades que instalan los paquetes exactos, pero no escalan tan bien:
- Copie todo lo requerido
*.deb
en cada máquina virtual manualmente e ingrese:dpkg -i
... -> Podría funcionar, pero es muy propenso a errores. (Guiones manuales, etc.) - Cree y use un nuevo repositorio de Ubuntu para cada configuración. -> No funciona porque necesitaría n repositorios.
- Configure la máquina una vez y copie la VM / cree una instantánea. -> No funciona porque necesitaría almacenar n máquinas virtuales.
Mi problema podría etiquetarse como gestión de parches, pero no quiero actualizar mis paquetes a la versión actual. Mi objetivo es instalar paquetes antiguos.
fuente
apt
"Para verificar qué versiones están disponibles, puede verificar a través de:
Si no funciona, considere ejecutar
sudo apt-get update
antes para actualizar la lista de paquetes.Luego copie la versión o use la siguiente sintaxis:
Para verificar qué versión ha instalado, ejecute:
fuente
=2.2\*
opción como una forma de usar un comodín para seleccionar cualquier subversión disponible. Eso es lo que quería saber pero no sabía cómo preguntar :)dpkg -l <packageName>
, el número de versión a veces se trunca. Para evitar esto, useCOLUMNS=100 dpkg -l <packageName>
N: Unable to locate package ^apache2
sudo apt-get update
primero. Asegúrese de tener las fuentes Apt correctas configuradas.Ampliaré las respuestas anteriores con otros comandos de control de versiones útiles en la
apt
familia. Para ver qué versiones están disponibles, ejecuteapt-cache policy
:Luego, como se menciona en otra parte, instale una versión específica con
apt-get
:Ahora puede ver qué versión ha instalado ejecutando
apt-cache policy
nuevamente:Si no desea que se instalen versiones más recientes en las actualizaciones, ancle el paquete con
apt-mark
:Digamos que se agrega una nueva versión de apache2 al índice del paquete y su máquina se sincroniza con
apt-get update
. Verás esto la próxima vez que corrasapt-get upgrade
:fuente
En términos prácticos, esto no es posible porque las versiones anteriores no se guardan en el archivo, por lo que, a menos que tenga una copia de la versión anterior en algún lugar, no puede instalarla. En primer lugar, debe preguntarse por qué desea instalar una versión anterior. En una versión estable, la razón principal para el lanzamiento de una nueva versión es corregir una vulnerabilidad de seguridad, y no desea ejecutar un servidor vulnerable, ¿verdad?
fuente
Como explica psusi, las versiones antiguas no se guardan en el repositorio de ubuntu, pero aparentemente todavía puedes encontrarlas en el launchpad. Entonces, vaya a (reemplace trusty y amd64 con su versión y arquitectura de ubuntu):
https://launchpad.net/ubuntu/trusty/amd64/apache2
y seleccione la versión que desee. Luego descarga el deb como un archivo e instala con:
Nuevamente, reemplace el nombre del archivo a su archivo. Esto se vuelve tedioso si tiene que degradar muchos paquetes, pero es mejor que nada si está desesperado.
fuente