Antes de que estuvieran todos los archivos de la unidad /etc/systemd/system/
pero ahora algunos aparecen en /usr/lib/systemd/system
(<- en CentOS, o /lib/systemd/system
<- en Debian / Ubuntu), ¿cuál es la diferencia entre estas carpetas?
Esta pregunta ya está respondida en la man 7 file-hierarchy
que viene con systemd (también hay una versión en línea ):
/etc
System-specific configuration.
(…)
VENDOR-SUPPLIED OPERATING SYSTEM RESOURCES
/usr
Vendor-supplied operating system resources.
Usually read-only, but this is not required. Possibly
shared between multiple hosts. This directory should not
be modified by the administrator, except when installing
or removing vendor-supplied packages.
Básicamente, entran los archivos que se envían en paquetes descargados del repositorio de distribución /usr/lib/systemd/
. Las modificaciones realizadas por el administrador del sistema (usuario) entran /etc/systemd/system/
.
Las unidades específicas del sistema anulan las unidades suministradas por los proveedores. Con los complementos, puede anular solo partes específicas de los archivos de la unidad, dejando el resto al proveedor (los complementos están disponibles desde el comienzo de systemd, pero se documentaron correctamente solo en v219; ver man systemd.unit
).
Si nos fijamos en la página del manual man systemd.unit
, tiene una tabla que explica las diferencias. Esto es de un sistema CentOS 7.x.
UNIT LOAD PATH Unit files are loaded from a set of paths determined during compilation, described in the two tables below. Unit files found in directories listed earlier override files with the same name in directories lower in the list. Table 1. Load path when running in system mode (--system). ┌────────────────────────┬─────────────────────────────┐ │Path │ Description │ ├────────────────────────┼─────────────────────────────┤ │/etc/systemd/system │ Local configuration │ ├────────────────────────┼─────────────────────────────┤ │/run/systemd/system │ Runtime units │ ├────────────────────────┼─────────────────────────────┤ │/usr/lib/systemd/system │ Units of installed packages │ └────────────────────────┴─────────────────────────────┘
Cuando dicen "paquetes instalados" se refieren a todo lo que se instaló a través de un RPM. Lo mismo puede suponerse para Debian / Ubuntu también donde un archivo DEB sería el "paquete instalado".
NOTA: la tabla anterior de un sistema Debian / Ubuntu es ligeramente diferente.
Table 1. Load path when running in system mode (--system). ┌────────────────────┬─────────────────────────────┐ │Path │ Description │ ├────────────────────┼─────────────────────────────┤ │/etc/systemd/system │ Local configuration │ ├────────────────────┼─────────────────────────────┤ │/run/systemd/system │ Runtime units │ ├────────────────────┼─────────────────────────────┤ │/lib/systemd/system │ Units of installed packages │ └────────────────────┴─────────────────────────────┘
/usr/lib/systemd/system
Puede saber qué paquetes poseen los archivos de unidad /usr/lib/systemd/system
como este en un sistema CentOS / Fedora / RHEL:
$ rpm -qf /usr/lib/systemd/system/* |sort -u | head
abrt-2.1.11-50.el7.centos.x86_64
abrt-addon-ccpp-2.1.11-50.el7.centos.x86_64
abrt-addon-kerneloops-2.1.11-50.el7.centos.x86_64
abrt-addon-pstoreoops-2.1.11-50.el7.centos.x86_64
abrt-addon-vmcore-2.1.11-50.el7.centos.x86_64
abrt-addon-xorg-2.1.11-50.el7.centos.x86_64
accountsservice-0.6.45-7.el7.x86_64
acpid-2.0.19-8.el7.x86_64
alsa-utils-1.1.3-2.el7.x86_64
anaconda-core-21.48.22.134-1.el7.centos.x86_64
/etc/systemd/system
Si hacemos lo mismo en contra /etc/systemd/system
, esperaríamos no encontrar archivos propiedad de un RPM (que de hecho es el caso en mi sistema CentOS 7.x):
$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$
Tenga en cuenta que puede encontrar archivos extraviados ocasionales /usr/lib/systemd/system
, como con Virtualbox (vboxadd *):
$ rpm -qf /usr/lib/systemd/system/* |sort -u | grep 'not owned'
file /usr/lib/systemd/system/initrd.target.wants is not owned by any package
file /usr/lib/systemd/system/shutdown.target.wants is not owned by any package
file /usr/lib/systemd/system/vboxadd.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-service.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-x11.service is not owned by any package
Hay otros.
La expectativa es que /usr/lib/systemd/system
es un directorio que solo debe contener archivos de unidad systemd que fueron colocados allí por el administrador de paquetes (YUM / DNF / RPM / APT / etc).
El /etc/systemd/system
operador del sistema coloca los archivos aquí manualmente para las instalaciones de software ad-hoc que no tienen la forma de un paquete. Esto incluiría instalaciones de software de tipo tarball o scripts propios.
/lib/systemd/system
vs/usr/lib/systemd/system
. Me alegro de haber encontrado esta respuesta./etc/systemd/system
genera un error si lo enmascaraFailed to execute operation: Invalid argument
:; systemd intenta reemplazar el archivo con un enlace simbólico a / dev / null. No decir que esta respuesta es incorrecta, solo algo para recordar./lib/systemd/system
y/usr/lib/systemd/system
, por lo tanto, hice la pregunta por separado unix.stackexchange.com/questions/550001/…