Quiero administrar las actualizaciones de mi sistema Linux de manera similar a como lo hace Git , al poder moverme hacia adelante y hacia atrás dentro de las "revisiones". ¿Cómo podría hacer eso?
Quiero administrar las actualizaciones de mi sistema Linux de manera similar a como lo hace Git , al poder moverme hacia adelante y hacia atrás dentro de las "revisiones". ¿Cómo podría hacer eso?
Respuestas:
Probablemente deberías mirar NixOS , que usa el administrador de paquetes Nix .
NixOS es una distribución de GNU / Linux que tiene como objetivo mejorar el estado del arte en la gestión de la configuración del sistema. En las distribuciones existentes, las acciones como las actualizaciones son peligrosas: actualizar un paquete puede provocar que otros paquetes se rompan, actualizar un sistema completo es mucho menos confiable que reinstalar desde cero, no puede probar con seguridad cuáles serán los resultados de un cambio de configuración, no puede deshacer fácilmente los cambios en el sistema, etc.
Lo que probablemente esté buscando se llaman herramientas de administración de configuración . Hay varios para elegir, pero es muy subjetivo cuál es el mejor en cualquier situación.
Personalmente, encontré que Puppet es bastante fácil de comenzar, pero otras opciones populares son Salt y Ansible .
Es probable que esto sea excesivo para su pregunta, pero la forma más fácil de revertir los cambios masivos / a nivel del sistema es la captura de imágenes:
https://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29
No ha mencionado los detalles de su plataforma, pero dado que está familiarizado con git, no sería demasiado difícil imaginar que podría estar interesado en usar un sistema de archivos más complejo. Si usara un sistema de archivos de última generación (ignore el nombre de click-bait-y), podría "rebobinar" por completo su sistema con un simple comando insertado en su terminal. Todos los cambios realizados se revertirán con muy poco retraso / esfuerzo. ZFS sería su mejor opción y podría consultar este increíble artículo de Ars para ver si puede ser algo que valga la pena para usted (también hay muchas otras muchas funciones excelentes):
Dependiendo de lo que quiera decir con "actualizaciones", puede estar interesado en herramientas de administración de configuración como etckeeper , que le permiten registrar cambios en la configuración del sistema automáticamente y volver a las configuraciones anteriores.
Si Git es una herramienta familiar, y si por "actualizaciones" quiere decir "actualizaciones de la configuración del sistema" en lugar de "actualizaciones de los paquetes del sistema" o "actualizaciones de todos los archivos almacenados en el servidor", entonces esto puede ser lo que está buscando para.
Vale la pena considerar que si está utilizando herramientas como Puppet, Ansible, Etckeeper, etc., no siempre es posible "retroceder" limpiamente sin pérdida de datos, a menos que haga todo el trabajo (por ejemplo, instantáneas, como se menciona en otra respuesta). El enfoque correcto dependerá de su situación (por ejemplo, las instantáneas no serían apropiadas para un sistema de producción en el que podría perder los pedidos de los clientes al retroceder).
He usado OpenVMS en el pasado, viene por defecto con un sistema de archivos de versiones .
Si las herramientas como la marioneta no llegan lo suficientemente lejos, tal vez esté buscando un sistema de archivos de versiones.
Si realmente desea administrar todo su sistema (incluida la versión del kernel) como git, está buscando NixOS .
Para una versión menos complicada, puede usar el administrador de paquetes de NixOS, nix, de casi cualquier Unix. Nix se puede instalar como un usuario simple, aunque es más fácil instalarlo como root. Una vez que se instala nix, puede usarlo para instalar paquetes como usuario sin privilegios, y funciona bien junto con su administrador de paquetes existente, sin conflictos. También es muy fácil eliminar completamente nix de su sistema, por lo que realmente no hay excusa para no probarlo. ;-)
Para abordar directamente su pregunta, Nix define su sistema completo instalado como un entorno, que es, como un git commit, un puntero a un conjunto de punteros a versiones muy específicas de todos los paquetes instalados.
Cuando Nix actualiza un paquete, crea un nuevo entorno, que apunta a un nuevo conjunto de punteros a paquetes (principalmente a los existentes, para paquetes que no se han actualizado; nuevamente, esto es muy similar a un nuevo git commit, que principalmente apunta a archivos anteriores sin cambios y algunas nuevas versiones de archivos modificados).
Es, por supuesto, trivial cambiar a una versión anterior del entorno y, en mi opinión, bifurcar (es decir, crear un nuevo entorno basado en uno anterior). Se puede cargar un entorno para un shell específico (de hecho, es el conjunto de variables de entorno disponibles para un shell, de ahí el nombre), por lo que también puede tener fácilmente diferentes entornos para diferentes proyectos en la misma máquina. ¡No más problemas de dependencia porque un proyecto no relacionado necesita otra versión de una biblioteca!
NixOS lleva eso al siguiente nivel y administra toda su computadora, incluido el kernel, de manera similar, permitiendo actualizaciones de muy bajo riesgo de toda la máquina.
No he terminado de leerlos todos, pero recomiendo las pastillas Nix de Lethalman como introducción a Nix.
Si eres del tipo experimental, puedes intentar simplemente registrar todo tu sistema de archivos en un repositorio git local. Esto sería ... interesante, creo.
git init
en el directorio raíz /
git add -A .
git commit -m "Initial Snapshot"
git commit -Am "Snapshot X"
o similaresAlgunos beneficios serían:
gitk
ygit diff
Algunas rarezas pueden incluir:
git
esperamos que funcione como se espera cuando se encuentra en un directorio de código fuente anidado en el git
contenedor raíz .