UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

111 lines (63 loc) 8.91 kB
## Contents * [1 Introducción](#Introducci.C3.B3n) * [2 Cuando Archivos .pac* Son Creados](#Cuando_Archivos_.pac.2A_Son_Creados) * [2.1 .pacnew](#.pacnew) * [2.2 .pacsave](#.pacsave) * [2.3 .pacorig](#.pacorig) * [3 Manejando Archivos .pac*](#Manejando_Archivos_.pac.2A) * [4 Vínculos Externos](#V.C3.ADnculos_Externos) ## Introducción Durante la actualización o remoción de paquetes, `pacman` a veces advierte que ciertos archivos — usualmente configuraciones en `/etc` — están siendo instalados con una extensión `.pacnew` o resguradados con una extensión `.pacsave`. Un archivo `**.pacnew**` es creado durante la actualización de un paquete (`pacman -U` o `pacman -Su`) para evitar sobreescribir un archivo que ya existe y que fue previamente modificado por el usuario. Cuando esto pasa, un mensaje como el siguiente aparecerá en la salida de `pacman`: ``` advertencia: /etc/pam.d/usermod instalado como /etc/pam.d/usermod.pacnew ``` Un archivo `**.pacsave**` es creado durante la eliminación de un paquete (`pacman -R`, el cual es también llamado automáticamente por `pacman -U` and `pacman -Su`) cuando la base de datos de `pacman` indica que cierto archivo perteneciente al paquete debe ser renombrado con una extensión `.pacsave` si fue previamente modificado por el usuario. Cuando esto pasa, `pacman` escribe un mensaje como el siguiente: ``` advertencia: /etc/pam.d/usermod guardado como /etc/pam.d/usermod.pacsave ``` Estos archivos requieren intervención manual del usuario y es una buena práctica manejarlos inmediatamente después de cada invocación de `pacman`. Si se deja sin manejar ellos acumularán y recargarán el sistema de archivos, y el software instalado puede volverse mal configurado, causando comportamiento indeseado que puede ser dificil de resolver. ## Cuando Archivos .pac* Son Creados ### .pacnew Por cada archivo en un paquete que se actualiza, `pacman` compara tres [sumas MD5](https://es.wikipedia.org/wiki/Md5) generadas del contenido del archivo: una suma por la versión instalada por el paquete, una para la versión actual en el sistema de archivos, y una para la versión en el nuevo paquete. Si la versión del archivo actualmente en el sistema de archivos fue modificada de la versión originalmente instalada del paquete, `pacman` no puede saber como mezclar esos cambios con la versión nueva del archivo. Por lo tanto, en vez de sobreescribir el archivo modificado cuando actualiza, `pacman` guarda la nueva versión con una extensión `.pacnew` y deja la versión modificada intacta. Yendo a más detalles, el resultado de la comparación de tres vías de sumas MD5 resulta en lo siguiente: original = *X*, actual = *X*, nuevo = *X*  Todos las tres versiones del archivo tienen contenido idéntico, así que sobreescribir no es un problema. Sobreescribir la versión actual con la nueva versión y no notificar al usuario. (Aunque el contenido del archivo es el mismo, sobreescribir actualizará la información del sistema del archivo acerca del archivo instalado, su fecha de modificación y acceso, y también se asegura que cualquier cambio de permisos de archivo sea aplicada.) original = *X*, actual = *X*, nuevo = *Y*  El contenido de la versión actual es idéntivo al original, pero la nueva versión es diferente. Ya que el usuario no ha modificado la versión actual y la nueva versión puede contener mejoras o corregir errores, sobreescribe la versión actual con la nueva versión y no notifica al usuario. Este es la única auto-mezcla de nuevos cambios que `pacman` puede realizar. original = *X*, actual = *Y*, nuevo = *X*  El paquete original y el nuevo contienen exactamente la misma versión del archivom pero la versión actual en el sistema de archivos ha sido modificada. Deja la versión actual en su lugar y descarta la nueva versión sin notificar al usuario. original = *X*, actual = *Y*, nuevo = *Y*  La nueva versión es idéntica a la actual. Sobreescribe la versión actual con la nueva versión y no notifica al usuario. (Aunque el contenido de los archivos es el mismo, esta sobreescritura actualizará la información del sistema de archivo acerca de la fecha de instalación, modificación y acceso del archivo, así como se asegura que cualquier cambio de permisos sea aplicado.) original = *X*, actual = *Y*, nuevo = *Z*  Todas las versiones son diferentes, así que deja la versión actual en lugar, instala la versión nueva con una extensión `.pacnew` y advierte al suario acerca de la nueva versión. El usuario se espera que manualmente mezcle cualquier cambio necesario de la nueva versión a la actual. ### .pacsave Un archivo `PKGBUILD` de un paquete especifica que archivos deben ser guardar una copia de seguridad cuando el paquete es actualizado o removido.Por ejemplo, el `PKGBUILD` del `pulseaudio` contiene la siguiente línea: ``` backup=('etc/pulse/client.conf' 'etc/pulse/daemon.conf' 'etc/pulse/default.pa') ``` Si el usuario ha modificado uno de los archivos especificados en `backup` entonces ese archivo será renombrado a la extensión `.pacsave` y permanecerá en el sistema de archivos después de que el resto del paquete sea actualizado o removido. **Note:** El uso de la opción `-n` con `pacman -R` resultará en una completa eliminación de *todos* los archivos en el paquete especificado, así que ningún archivo `.pacsave` será creado. ### .pacorig Cuando un archivo (usualmente una configuración ubicada en `/etc`) que es encontrado durante la instalación o actualización de un paquete no pertenece a ningún paquete instalado, pero es listado en `backup` (vea la sección `.pacsave` arriba) por el paquete en la operación actual, será guardado con una extensión `**.pacorig**` y reemplazado con la versión del archivo del paquete. Usualmente eso ocurre cuando un archivo de configuración ha sido movido de un paquete a otro. Si tal archivo no es listado en `backup`, `pacman` abortará con un error de conflicto de archivos. **Note:** Ya que los archivos `.pacorig` tienden a ser creados para circunstancias especiales no hay una forma universal para manejarlos. Puede ser útil consultar las [Noticias de Arch](https://www.archlinux.org/news/) por instrucciones de manejo si es un caso conocido. ## Manejando Archivos .pac* Siempre pon atención a la salida de `pacman`. Cuando actualizando o removiendo un gran número de paquetes, mensajes importantes pueden pasar de largo muy rápidamente o más allá del almacenamiento de la terminal; afortunadamente existen otras formas de descubrir si una operación de `pacman` creó algún archivo `.pac*`. Si el usuario o un trabajo `cron` ha ejecutado `updatedb` para actualizar la base de datos de `locate` ya que `pacman` fue ejecutado recientemente, los archivos pueden ser encontrados con: ``` locate .pac ``` Un método más lento (a menos que el usuario manualmente ejecute `updatedb` antes de `locate`) que siempre devuelve resultados actualizados a la fecha es el comando `find`: ``` find / -name "*.pac*" ``` Buscando el historial de `pacman` con `egrep` puede ser tan rápido como el método `locate` anterior y siempre mostrará resultados actualizados a la fecha; sin embargo el historial no mantiene rastro de que archivos están actualmente en el sistema de archivos o cuales ya fueron removidos: ``` egrep "pac(new|orig|save)" /var/log/pacman.log ``` Una vez que todos los archivos `.pac*` existentes han sido localizados, el usuario puede manejarlos manualmente usando herramientas de mezcla — como `vimdiff` (parte de [`vim`](/index.php/Vim "Vim")), `ediff` (parte de [`emacs`](/index.php/Emacs "Emacs")), `meld` (GTK+ GUI), o `kompare` (Qt GUI) — y borrando los archivos `.pac*` que el usuario esté seguro que no necesita más. Unas pocas utilidades de terceros proveen varios niveles de acceso de automatización de estas tareas están disponibles en el repositorio `[comunitario](/index.php/Community_repository "Community repository")` y en [Arch User Repository](/index.php/Arch_User_Repository "Arch User Repository") (Arch no provee utilidades oficiales para el manejo de archivos `.pac*`): * [Dotpac](/index.php/Dotpac "Dotpac") — Programa básico e interactivo, con una interfaz de texto basado en "ncurses" y una útil guía. Sin características de mezcla o automezcla. * `pacdiff` — Programa de cliente mínimo y no documentado. Parte del paquete de [pacman](https://www.archlinux.org/packages/?name=pacman) en el repositorio `comunitario`. * [pacdiffviewer](https://aur.archlinux.org/packages.php?ID=5863) — Programa de cliente interactivo lleno de características con capacidad de auto-mezcla. Parte del paquete [`yaourt`](/index.php/Yaourt "Yaourt"). ## Vínculos Externos * Foros de Arch Linux: [Dealing With .pacnew Files](https://bbs.archlinux.org/viewtopic.php?id=53532)