Entiendo que un paquete tiene dos componentes: config
y data
archivos. Durante la actualización del paquete (es decir, la actualización de seguridad), los data
archivos se pueden sobrescribir, pero los config
archivos siempre deben permanecer igual. También los config
archivos suelen estar adentro /etc
y data
adentro /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 Icedove
actualizació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.desktop
no es una buena idea, ya que produce un error durante la actualización del paquete.
fuente
$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_DIRS
para 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 .Respuestas:
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.desktop
no 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.desktop
se deben colocar en elapplications
subdirectorio para una ruta de búsqueda anterior/usr/share
en$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 debajousr/local/share
.Por otro lado, si la configuración tiene sangría para ser específica del usuario, el local
icedove.desktop
debe colocarse debajoapplications
en la ubicación indicada por$XDG_DATA_HOME
. Por lo general, el valor predeterminado$HOME/.local/share
es, es decir, la ubicación del archivo de configuración debe ser$HOME/.local/share/applications/icedove.desktop
.fuente
Quieres la
dpkg-divert
utilidad.fuente