Principios de diseño en cuanto a cómo se actualizan los administradores de repositorios de Linux a sí mismos?

StackOverflow https://stackoverflow.com/questions/3944974

Pregunta

Sé que hay otras aplicaciones también, pero teniendo en cuenta yum / apt-get / aptitude / pacman estás administradores centrales paquetes para las distribuciones de Linux.

Hoy he visto en mis 13 fedora cuadro:

(7/7): yum-3.2.28-4.fc13_3.2.28-5.fc13.noarch.drpm       |  42 kB     00:00     

Y me empecé a preguntar cómo funciona la actualización tal un paquete en sí? Lo que el diseño es necesario para asegurar un programa puede actualizarse a sí mismo?

Tal vez esta pregunta es demasiado general, pero me sentí tan era más apropiado que programmers.SE para tal pregunta es que es de naturaleza más técnica. Si hay un lugar más apropiado para esta pregunta sienten libres de dejarme saber y puedo cerrar o un moderador puedo mover.

Gracias.

¿Fue útil?

Solución

No tengo idea de cómo funcionan estos sistemas particulares, pero ...

  • Los modernos sistemas Unix generalmente toleran sobrescribir un archivo ejecutable se ejecuta sin ningún problema, así que en teoría sólo podría hacerlo.
  • Usted podría hacerlo en una jaula chroot y luego mover o algo similar para reducir el tiempo durante el cual el sistema es vulnerable. Añadir un sistema de archivo transaccional y esto es todavía un poco más seguro.

Se me ocurre que el paquete-gerente necesita para mantener la base de datos de acceso de paquete en la memoria, así para asegurarse contra una condición de carrera allí. Una vez más, la raiz y sin copiar opción está disponible como una alternativa de menor riesgo.

Otros consejos

Y me empecé a preguntar cómo funciona la actualización tal un paquete en sí? Qué Se necesita diseño para asegurar un programa puede actualizarse a sí mismo?

Es como un montón de cosas, que no necesita de "diseñar" específicamente para resolver este problema ... pero sí es necesario tener en cuenta ciertas "trampas".

Por ejemplo Unix ayuda por ínodos conteo de referencia por lo que "se" puede eliminar un archivo que todavía está utilizando, y que está bien. Sin embargo, esto implica un par de cosas que hay que hacer, por ejemplo, si usted tiene plugins entonces usted necesita para cargar todos ellos antes que corren iniciar una transacción ... aunque el complemento sería sólo se ejecutan al final de la transacción (ya que es posible tener una versión diferente al final).

También hay algunas cosas que usted necesita hacer para asegurarse de que nada está actualizando obras, como: nuevos archivos dejó antes de extraer los archivos antiguos. Y no truncar los archivos de edad, acaba de desvincular. Pero estos también le ayudan a:.)

Uso de problemas externos, que se comunica, puede ser complicado (porque no se puede exec una nueva copia de la versión anterior después de que se ha actualizado). Pero esto no se hace a menudo, y cuando es que es para cosas como la descarga ... algo que puede hacerse fácilmente a suceder antes de las actualizaciones.

También hay cosas que no son una preocupación en los clientes de línea de cmd como yum / apto, por ejemplo, si usted tiene un programa que se va a ejecutar 2+ "actualizaciones", entonces puede tener problemas si la primera actualización se al gestor de paquetes. rebajas, esto es aún más divertido :). También demonio al igual que los procesos deben básicamente nunca se "carga" del gestor de paquetes, pero al igual que con otras trampas ... que tienden a querer seguir esto de todos modos, por otras razones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top