TIP dispatch-conf
De Gentoo Linux Wiki
| Terminales / Shells • X Windows • Portage • Sistema • Sistema de Archivos • Kernel • Otros |
Tabla de contenidos |
[editar] Introducción
dispatch-conf es un script diseñado para facilitar las actualizaciones de /etc y otros.
dispatch-conf is a script designed to ease /etc and other config file updates. Ésto quiere decir que puede actualizar automáticamente cualquier script que tenga cambios fáciles a comentarios, o que no han tenido cambios entre versiones. A diferencia de etc-update éste crea copias de seguridad y tiene más opciones avanzadas para el manejo de archivos de configuración.
Si quieres saber más sobre lo que dispatch-conf y etc-update pueden hacer, lee emerge --help --config.
[editar] Setup
No es necesaria ninguna instalación, viene con portage, asi que ¡ya tienes ésta gran herramienta instalada!. Todo lo que tienes que hacer es configurarla:
| Archivo: /etc/dispatch-conf.conf |
# Directorio para guardar las configuraciones cambiadas archive-dir=/etc/config-archive # ¿Usar rcs para guardar las configuraciones en el directorio? # (yes o no) use-rcs=yes # Comando diff a usar # %s old file # %s new file diff="diff -Nu %s %s" # Autoactualizar archivos comparando solo las interpolaciones en el CVS (Cabeceras oo Id) # (yes o no) replace-cvs=yes # Autoactualizar archivos comparando sólo los espacios en blanco y/o los comentarios # (yes o no) replace-wscomments=yes |
[editar] Directorio de Copia de Seguridad
dispatch-conf guarda copias de los archivos cambiados en un directorio que se especifica en la configuración (mira arriba). Por defecto éste es /etc/config-archive
| Nota: Si tienes otra partición o otro disco duro, quizás deberías considerar el poner el config-archive allí, ya que sí se corrompe el disco duro donde tienes /etc, podrías usar los registros de dispatch-conf para rehacer tu configuración. |
[editar] Copias de Seguridad Avanzadas
dispatch-conf también tiene la habilidad de usar el rcs (sistema de control de versiones), similar a, y precursor de cvs o subversion, para crear un log de todos los cambios hechos en los archivos de configuración.
Para activar las copias rcs, setea use-rcs=yes, y ejecuta emerge -av rcs.
rcs básicamente crea diffs de los cambios hechos entre dos archivos. Puedes encontrar más información sobre diff en Wikipedia.
[editar] Usar colordiff para ver los cambio
Leer los cambios en texto todo gris puede ser un poco confuso. Afortunadamente, tenemos una alternativa llamada colordiff que muestra los diferentes tipos de cambios en colores diferentes. La configuración es fácil, primero ejecuta emerge -av colordiff. Ahora cambia la linea del diff en el archivo de configuración diff="colordiff -Nu %s %s | less --no-init --QUIT-AT-EOF".
[editar] Usar (g)vimdiff para actualizar los cambios
Actualizar los archivos no es algo precisamente amigable en las configuraciones por defecto. Si añades merge="vimdiff -c 'saveas %s' -c next -c 'setlocal nomodifiable readonly' -c prev %s %s" a /etc/dispatch-conf.conf, entonces podrás usar vimdiff (para gvimdiff usa el flag -f) para actualizar los cambios.
| Nota: La parte de la izquierda tendrás el archivo original guardado y la salida de la actualización, así que haz los cambios en la parte de la izquierda y guarda ésta parte. Para ayudarte recuerda que la parte de la izquierda (contiene el nuevo archivo de configuración) se marcará como no-modificable y sólo-lectura. |
Usa ":wqa" para guardar y salir.
[editar] Uso
[editar] Actualizar Automáticamente
Ejecuta dispatch-conf. Si tienes algún archivo que necesite actualizar, el script irá a él y mirará si puede autoactualizarlo por tí. Podrás ver un diff de la primera configuración que encuentro si no puede autoactualizarlo.
[editar] Actualizar Manualmente
Si hay arhivos que no pueden ser auto actualizados, verás una salida como ésta:
| Código: dispatch-conf |
--- /etc/portage/package.keywords 2006-01-23 16:10:44.000000000 -0600 +++ /etc/portage/._cfg0000_package.keywords 2006-01-22 13:52:51.000000000 -0600 @@ -7,4 +7,4 @@ dev-util/intltool ~x86 -# sys-block/gparted ~x86 +sys-block/gparted ~x86 www-client/prozilla ~x86 www-client/mozilla-firefox ~x86 @@ -41,3 +41,3 @@ x11-libs/pango ~x86 -gnome-extra/libgtkhtml ~x86 +gnome-extra/gtkhtml ~x86 mail-client/evolution ~x86 >> (1 of 1) -- /etc/portage/package.keywords >> q quit, h help, n next, e edit-new, z zap-new, u use-new m merge, t toggle-merge, l look-merge: |
| Nota: Usa las flechas de Arriba y Abajo así como AvPag y RePag para moverte si la salida es más larga y no puede ver la parte de abajo de las opciones. |
En el ejemplo de antes, el archivo a configurar es /etc/portage/package.keywords.
- Las primeras 2 lineas son los nombre del nuevo y viejo archivos. La linea que empieza por
+++ es el archivo nuevo y la linea empezando por {{Codeline|---} es el nombre del archivo viejo.
- Las lineas que empiezan por
@@ muestran un cambio en el archivo. Arriba, @@ -7,4 quiere decir que hay un cambio que empieza en la linea 7 del archivo original y tiene 4 lineas de longitud. Igualmente, +7,4 @@ quiqere decir que éste mismo cambio empieza en la linea 7 del archivo nuevo y tiene 4 lineas de longitud.
- Con un cambio, las lineas que empiezan por
- o + se refieren sólo al archivo original o al nuevo respectivamente. En éste momento puedes:
- No decidir nada por ahora (n next)
- abrir el archivo nuevo con el editor definido por la variable de entorno
EDITOR (e edit-new)
- borrar el archivo nuevo y usar el viejo (z zap-new)
- usar el archivo nuevo y guardar el viejo (u use-new)
- actualizar manualmente los archivos (m merge)
- cambiar entre las dos copias (t toggle-merge)
- ver las diferencias entre el archivo nuevo y el viejo (l look-merge)
Las opciones t y l no se usan realmente hasta que uses la opción m.
Si eliges actualizar los archivos, pulsando m compararás las diferencias poco a poco, con el archivo original a la izquierda y el nuevo a la derecha. En el prompt ( %) presiona l para elegir la parte de la izquierda como la selección para dejarla como está o r para dejar la parte de la derecha (el nuevo archivo).
Los cambios aparecerán en un archivo nuevo actualizado. Si sales de los cambios o presionas q en el prompt volverás a la pantalla de muestra de las diferencias, sólo en éste momento el archivo actualizado que creaste se comparará con el original. Presionando t comparas el original con el archivo pre-actualizado de nuevo. Ésto significa que la opción use-new elegirá entre el archivo actualizado o el pre-actualizado (el nuevo) dependiendo de cuál esté mostrado en la pantalla.
Trabajando con dispatch-conf
La primera vez que actualices un archivo de configuración con el nuevo archivo, dispatch-conf lo copiará en tu directorio de guardado en su correspondiente localización con un '.dist'. Desde éste punto, comparará 'actual' y 'archivo.dist'. Si los archivos son lo mismo, se auto-actualizará.
[editar] Ejemplo de Sesión
Un usuario está actualizado el sistema, un nuevo archivo /etc/bash/._cfg0000_bashrc aparece y el usuario necesita actualizado en su propio /etc/bash/bashrc. Ahora el usuario ejecuta dispatch-conf, el cual busca el nuevo archivo para actualizarlo y mostrar las diferencias.
El primer objecto mostrado en los archivos se comparará:
--- /etc/bash/bashrc 2005-08-11 22:29:36.000000000 +0200 +++ /etc/bash/._cfg0000_bashrc 2006-09-24 15:29:13.000000000 +0200
El usuario decide seleccionar m para cambiar interactivamente su configuración. Los usuarios seleccionan éste método y hacen sus cambios deseados, los cuales se guardan en /etc/bash/._mrg000_bashrc, el cual se consedera ahora la nueva versión. dispatch-conf mostrará ahora las nuevas diferencias:
--- /etc/bash/bashrc 2005-08-11 22:29:36.000000000 +0200 +++ /etc/bash/._mrg0000_bashrc 2006-09-24 15:58:54.000000000 +0200
El usuario decideo que quiere dejar los cambios que hizo y volver al archivo original, asi que selecciona la opción t. dispatch-conf olvidará los cambios de ._mrg* y considerará a ._cfg* como el nuevo archivo de nuevo.
Una vez que el usuario esté contento con los cambios, seleccionará la opción u (use-new) para actualizar /etc/bash/bashrc. Todos los archivos temporales se borrarán y se guardará una copia de los cambios en /etc/config-archive (una copia del viejo archivo). Si instaló y activó rcs como se dijo en éste artículo, sólo las diferencias.
Como la colección crece, dispatch-conf lo hace más elegante; tendrá que preguntarte sobre cada vez menos y menos archivos cada vez que lo ejecutes.
[editar] Articulos relacionados
- dispatch-conf MAN page]
- HOWTO etc-update - una alternativa más simple.
