Debian: evita que se sobrescriba un archivo en particular durante la actualización del paquete


9

Entiendo que un paquete tiene dos componentes: configy dataarchivos. Durante la actualización del paquete (es decir, la actualización de seguridad), los dataarchivos se pueden sobrescribir, pero los configarchivos siempre deben permanecer igual. También los configarchivos suelen estar adentro /etcy dataadentro /usr. A veces, sin embargo, la distinción es borrosa.

En mi caso, he modificado el archivo de icono para Icedove(Thunderbird):

/usr/share/applications/icedove.desktop

Ahora, cada vez que hay una Icedoveactualización (Thunderbird), mis cambios se sobrescriben con el archivo predeterminado (incluso si no ha cambiado entre actualizaciones).

¿Hay alguna manera de evitar que este archivo en particular se sobrescriba?

Establecerlo como inmutable chattr +i icedove.desktopno es una buena idea, ya que produce un error durante la actualización del paquete.


2
@don_crissti Técnicamente, la ubicación correcta es $XDG_DATA_HOME/applications/icedove.desktop, aunque esto generalmente es la ruta de búsqueda que mencionas. La especificación del directorio base de XDG también proporciona una ruta de búsqueda $XDG_DATA_DIRSpara anulaciones de todo el sistema. Una explicación más detallada de cómo se aplican los directorios base XDG en este caso está en mi respuesta .
Thomas Nyman

Respuestas:


7

Si bien la respuesta de wurtel responde la pregunta como está redactada, teniendo en cuenta los antecedentes de la pregunta, revela que este es otro caso más de un problema XY .

En este caso particular, /usr/share/applications/icedove.desktopno debe modificarse en primer lugar, pero un archivo de configuración local que anula la configuración predeterminada debe colocarse en una ubicación adecuada. Los sistemas que cumplen con freedesktop.org cumplen con la Especificación de Directorio Base de XDG , cuyo propósito es precisamente eliminar la necesidad de modificar los archivos de configuraciones que se sobrescriben durante las actualizaciones de paquetes.

Si la configuración se pretende que sea en todo el sistema, lo local icedove.desktopse deben colocar en el applicationssubdirectorio para una ruta de búsqueda anterior /usr/shareen $XDG_DATA_DIRS. El valor de esta variable de entorno está predeterminado /usr/local/share/:/usr/share/, pero el valor real varía entre distribuciones. Debido a que en este caso la configuración está destinada a ser local, la ubicación correcta es /usr/local/share/applications/icedove.desktop, aunque tenga en cuenta que pueden ser reemplazos de distribución específicos en el lugar que podrían tener preferencia sobre las configuraciones que se encuentran debajo usr/local/share.

Por otro lado, si la configuración tiene sangría para ser específica del usuario, el local icedove.desktopdebe colocarse debajo applicationsen la ubicación indicada por $XDG_DATA_HOME. Por lo general, el valor predeterminado $HOME/.local/sharees, es decir, la ubicación del archivo de configuración debe ser $HOME/.local/share/applications/icedove.desktop.


10

Quieres la dpkg-divertutilidad.

dpkg-divert --divert /usr/share/applications/icedove.desktop.packaged --rename /usr/share/applications/icedove.desktop

1
Esto podría ayudar a otros: "No intente desviar un archivo que es de vital importancia para el funcionamiento del sistema: cuando se usa dpkg-divert hay un tiempo, después de que se ha desviado, pero antes de que dpkg haya instalado la nueva versión, cuando el archivo sí lo hace no existe. "de debian.org/doc/debian-policy/ap-pkg-diversions.html
2rs2ts
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.