TIP dispatch-conf

De Gentoo Linux Wiki

Este artículo es parte de las series Consejos y Trucos.
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

[editar] Créditos

Traducido de la version original en Ingles por gekito

Herramientas personales
Otros idiomas