Estoy desarrollando un demonio que necesita almacenar muchos datos de aplicaciones, y noté que en mi sistema (Fedora 15), hay un /usr/local/etc
directorio.
He decidido instalar mi demonio /usr/local/bin
y necesito un lugar para mis archivos de configuración.
No vi esto en Wikipedia . ¿Esto no es estándar o es, de hecho, el lugar estándar para los programas instalados /usr/local/bin
para almacenar archivos de configuración?
La razón es que quiero comercializar esto para los administradores de sistemas, y obtener algo así no es un gran punto de venta ...
directory-structure
fhs
beatgammit
fuente
fuente
/etc/myapp
? Si estuviera buscando cambiar una configuración, sería el primer lugar donde buscaría./usr/local/bin
->/usr/local/etc
), pero las convenciones ganan en este caso.Respuestas:
/usr/local
usualmente es para aplicaciones construidas desde la fuente. es decir, instalo la mayoría de mis paquetes usando algo comoapt
, pero si descargo una versión más nueva de algo o un software que no forma parte de mi distribución, lo construiría desde la fuente y lo pondría todo en la jerarquía '/ usr / local'.Esto permite la separación del resto de la distribución.
Si está desarrollando una pieza de software para los demás, debe diseñar de tal manera que se puede instalar en cualquier lugar que la gente quiere, pero debe por defecto a los regulares FHS especificados directorios del sistema cuando especifican el prefijo para que sea
/usr
(/etc
,/usr/bin
, etc.)/usr/local
es decir, es para su uso personal, no debería ser el único lugar para instalar su software.Tenga una buena lectura del FHS y use las herramientas estándar de Linux para permitir que su fuente se construya e instale en cualquier lugar para que los creadores de paquetes para las diversas distribuciones puedan configurarlas según sea necesario para su distribución, y los usuarios pueden ponerla
/usr/local
si lo desean o los directorios regulares del sistema si lo desean.fuente
/usr/local/etc
es estándar para los archivos de configuración para ese tipo de programas.Una respuesta muy corta
/ etc es utilizado por su sistema operativo para sus archivos de configuración
/ usr / local / etc puede ser utilizado para sus archivos de configuración por usted y su software adicionalmente instalado
fuente
/usr/local/etc
rara vez se usa en el mundo de Linux. Pero la decisión de almacenar archivos de configuración en/etc
,/usr/local/etc
o en algún otro lugar se hace generalmente en tiempo de compilación (y, a menudo puede ser anulado a través de una opción de línea de comandos o variable de entorno). Realmente no importa cuál sea el valor predeterminado al compilar, solo asegúrese de que sea fácil de configurar (generalmente una opción--sysconfdir
, después de autoconf). Si su demonio está empaquetado para una distribución, el ejecutable entrará en/usr/sbin
(la configuración predeterminada al compilar desde la fuente debería ser/usr/local/sbin
) y la configuración en/etc
.Tenga en cuenta que
/etc
no es el lugar para "muchos datos de la aplicación". Eso entra/var
. El valor predeterminado al construir desde la fuente podría ser/var/local/mydaemon
o/var/lib/mydaemon
; una vez más, no existe una convención fuerte para el valor predeterminado cuando se construye desde la fuente. Debe haber una manera de cambiar tanto el valor predeterminado de tiempo de compilación (generalmente conconfigure --localstatedir
) como el valor predeterminado de tiempo de ejecución (con una configuración en un archivo de configuración, posiblemente con una opción de línea de comando o variable de entorno).fuente
/usr/local/etc
que no se usa con mucha frecuencia? Me gusta la idea de mantener los archivos de configuración al mismo nivel del sistema de archivos que el binario.bin
ylib
, etcétera, que pueden volver a instalar) en vivo en el mismo lugar.Como usuario de Arch, evitaría / usr / local en conjunto y usaría solo / etc para la configuración. Al instalar desde la fuente, prefiero escribir un pequeño archivo PKGBUILD mientras estoy en él, y posiblemente subirlo al Arch User Repository (AUR), tanto para otros como para mí en otra computadora en el futuro. A juzgar por la cantidad de paquetes en AUR y la velocidad con la que se crean, no estoy solo pensando de esta manera. Esto aumenta las posibilidades para todos de que un paquete estará disponible en lugar de tener que instalarlo desde el origen y poder evitar ubicaciones obsoletas como / usr / local.
A Debian también parece gustarle la idea de construir un paquete de la fuente en lugar de instalar cualquier cosa en / usr / local, por lo tanto, utilidades como checkinstall .
Crear un paquete de la fuente que desea instalar sería una buena manera de realizar un seguimiento de dónde están los archivos y asegurarse de que ninguno de ellos sobrescriba de manera inconsistente otro paquete u otro "make install". Desinstalar con "make uninstall" no es una buena solución. La información sobre qué versión está instalada es otra cosa que los administradores de paquetes modernos son buenos para realizar un seguimiento.
Simplemente renunciaría / usr / local por completo. No es un buen lugar para poner nada, no para instalar paquetes (los directorios de todo el sistema son más adecuados) y no para usuarios.
fuente