¿Cómo actualizar el software instalado desde la fuente?

10

Instalo NGinx desde la fuente ya que los paquetes del repositorio de ubuntu son bastante antiguos. Me preguntaba cuál es el mejor método para actualizar este tipo de instalaciones.

Mi flujo de trabajo actual implica.

  • Descargando la nueva fuente
  • Instale el software con las mismas rutas.
  • Reiniciando el software.

Algo me dice que esta no es la mejor ruta.

Sugerencias?

El desarrollador de píxeles
fuente

Respuestas:

9

Tienes razón al pensar que esta no es la mejor ruta. Esta ruta requiere muchos pasos manuales, es muy propensa a errores y no escala bien.

Al trabajar con distribuciones de Linux, debe atenerse a la gestión de paquetes tanto como sea posible.

Las ventajas de usar la gestión de paquetes:

  • Apoyo de dependencia
  • Fácil instalación / remoción
  • Inventario de software
  • Soporte de actualización / degradación, incluido el manejo de archivos de configuración
  • El paquete fuente básicamente documenta su proceso de compilación y lo automatiza una vez que está escrito.
  • Firma del paquete
  • y más.

Cuando comienzas a trabajar solo desde la fuente, pierdes todas estas excelentes funciones y las cosas comienzan a complicarse bastante rápido.

Para resolver su problema específico, debe consultar el repositorio de backports de ubuntu , tal vez tengan una versión actualizada para NGinx que pueda usar.

Si no tienen una versión adecuada, entonces la mejor solución sería crear un paquete ubuntu con respaldo. Realmente no es tan difícil, y es menos trabajo que compilarlo desde la fuente manualmente cada vez. El backport requiere, básicamente, tomar el paquete fuente de ubuntu, reemplazar el antiguo archivo tar.gz upsteam con el último que desee y reconstruir el paquete.

Puede usar esta guía para ayudarlo a realizar una copia de seguridad del paquete.

Tom Feiner
fuente
8

Me pareció bastante conveniente instalar diferentes versiones en ubicaciones separadas y simplemente vincular a la versión que desea usar, como:

lrwxr-xr-x  1 root  wheel     7B Jun  7 18:26 /usr/local/foo -> foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.0
drwxr-xr-x  2 root  wheel   512B Jun  7 18:26 /usr/local/foo-1.1

Los beneficios son:

  • tiempo de inactividad de servicio minimizado durante una actualización
  • fácil reversión
  • todavía puedes usar el mismo camino, como /usr/local/foo/bin/bar

Por supuesto, aún debe volver a aplicar cualquier cambio de configuración que haya realizado a la versión anterior, pero para eso puede usar algún sistema de control de versiones (RCS / SVN / GIT) o una herramienta de administración de configuración como Bcfg2 .

Y, por supuesto, esto es adecuado solo para un puñado o menos hosts.

ahi
fuente
Esto es lo que hago en los pocos casos en que construir paquetes no es una respuesta adecuada, excepto que generalmente uso / opt en lugar de / usr / local.
Freiheit
2

La próxima vez ... ¿qué tal compilarlo en un * .rpm o * .deb?

elcuco
fuente
1

Si vas a instalar esto en una sola máquina, hacerlo desde la fuente siempre es un problema de la mejor manera. Si va a instalar esto en varias máquinas y quiere asegurarse de que sea consistente, probablemente valga la pena aprender a hacer paquetes de Debian. Probablemente podría usar el paquete en Ubuntu como base.

David Pashley
fuente
1

No hay una buena manera La razón por la que se creó una administración de paquetes efectiva fue para resolver este mismo problema. Actualizar y desinstalar cosas compiladas en código fuente es difícil.

Estoy de acuerdo con Tom y David.

Si este es un caso único, entonces la mejor opción es volver a compilar desde la fuente. Si está en una variedad de máquinas, definitivamente es hora de pasar a la administración de paquetes compatible.

Matt Simmons
fuente
0

Me temo que esta es la única manera. si tiene más servidores que mantener, considere tener un entorno de prueba separado donde compile y posiblemente empaquete el resultado de su compilación.

esto estandarizará ligeramente sus configuraciones y facilitará la implementación en muchos servidores. tampoco necesitará gcc en máquinas de producción [que muchos considerarán como un beneficio de seguridad].

pQd
fuente