Tengo un ejecutable para el cliente de control de versiones forzado ( p4). No puedo ubicarlo /opt/localporque no tengo privilegios de root. ¿Existe una ubicación estándar donde se debe colocar debajo $HOME?
¿La Jerarquía del sistema de archivos tiene una convención que dice que se deben colocar ejecutables / binarios locales $HOME/bin?
En general, si un binario que no está instalado y mantenido por el sistema necesita ser accesible en todo el sistema para múltiples usuarios, un administrador debe colocarlo en /usr/local/bin. Existe una jerarquía completa /usr/localque generalmente se usa para paquetes de software compilados e instalados localmente.
Si usted es el único usuario de un binario, la instalación $HOME/bines la ubicación adecuada, ya que puede instalarlo usted mismo y será el único consumidor. Si compila un paquete de software desde la fuente, también es apropiado crear una jerarquía local parcial o completa en su $HOMEdirectorio. La jerarquía local completa se vería así.
$HOME/bin Binarios locales
$HOME/etc Configuración del sistema específica del host para binarios locales
$HOME/games Binarios locales del juego
$HOME/include Archivos de encabezado C locales
$HOME/lib Bibliotecas locales
$HOME/lib64 Bibliotecas locales de 64 bits.
$HOME/man Manuales locales en línea
$HOME/sbin Binarios del sistema local
$HOME/share Jerarquía local independiente de la arquitectura
$HOME/src Código fuente local
Al ejecutar configure, debe definir su jerarquía local para la instalación especificando $HOMEcomo prefijo los valores predeterminados de instalación.
./configure --prefix=$HOME
Ahora, cuando make && make installse ejecutan, los binarios compilados, los paquetes, las páginas de manual y las bibliotecas se instalarán en su $HOMEjerarquía local. Si no ha creado manualmente una $HOMEjerarquía local, make installcreará los directorios que necesita el paquete de software.
Una vez instalado $HOME/bin, puede agregar $HOME/bina su $PATHo llamar al binario usando el absoluto $PATH. Algunas distribuciones se incluirán $HOME/binen su $PATHpor defecto. Puede probar esto ya sea echo $PATHy ver si $HOME/binestá allí, o poner el binario $HOME/biny ejecutarlo which binaryname. Si vuelve con $HOME/bin/binaryname, entonces está en su $ PATH por defecto.
No recomendaría usarlo $HOME. Esto inunda su directorio de inicio con numerosos directorios que no le interesan en absoluto. ¿Quién quiere tener man, libetc. en el directorio de su hogar? Prefiero crear la jerarquía a continuación $HOME/bino $HOME/local. Eso agrega solo un subdirectorio a su directorio de inicio, en lugar de diez. Se PATHpueden adaptar fácilmente para incluir $HOME/bin/bino $HOME/local/bin.
@janneb La especificación del directorio base XDG a la que se refiere solo menciona $HOME/.local/share(Versión 0.7, 24 de noviembre de 2010)
Piotr Dobrogost
28
Como se mencionó anteriormente , /usr/localestá pensado como un prefijo para, esencialmente, el software instalado por el administrador del sistema, mientras que /usrdebe usarse para el software instalado desde los paquetes de la distribución.
La idea detrás de esto es evitar conflictos con el software distribuido (como rpmy debpaquetes) y darle al administrador un dominio completo sobre el prefijo "local".
Esto significa que un administrador puede instalar software compilado personalizado mientras usa una distribución como debian.
El software colocado en / o / usr puede sobrescribirse por las actualizaciones del sistema (aunque recomendamos que las distribuciones no sobrescriban los datos en / etc en estas circunstancias). Por esta razón, el software local no debe colocarse fuera de / usr / local sin una buena razón.
Al instalar un software específico para el usuario, se sugiere usarlo $HOMEcomo prefijo, ya que esto garantiza que tenga permisos de escritura. Personalmente, creo $HOME/.localque es una solución más elegante, ¡ya que evita abarrotar su (con suerte) directorio de inicio agradable y ordenado!
Si realmente no desea que su prefijo sea un directorio oculto, también podría crear fácilmente un enlace simbólico, por ejemplo:
ln -s .local ~/local
Nota al margen
Vale la pena señalar que .config(no .local/etc) es el valor predeterminado $XDG_CONFIG_HOMEpara los archivos de configuración específicos del usuario. También debo señalar que, desafortunadamente, una gran parte del software ignora el XDG y crea archivos de configuración donde quieran (generalmente en la raíz de $HOME). También tenga en cuenta que $XDG_CONFIG_HOMEpuede desarmarse si $HOME/.configse desea el valor predeterminado .
Curiosamente, no hay un directorio reservado para los archivos de configuración predeterminados de una distribución, por lo que no hay forma de saber si un archivo /etcfue suministrado por la distribución o editado por el administrador del sistema.
Esa nota al margen /etces realmente molesta cuando se administra un servidor con múltiples administradores: es bastante difícil hacer un seguimiento de las ediciones personalizadas para conf conf files.
$HOME
. Esto inunda su directorio de inicio con numerosos directorios que no le interesan en absoluto. ¿Quién quiere tenerman
,lib
etc. en el directorio de su hogar? Prefiero crear la jerarquía a continuación$HOME/bin
o$HOME/local
. Eso agrega solo un subdirectorio a su directorio de inicio, en lugar de diez. SePATH
pueden adaptar fácilmente para incluir$HOME/bin/bin
o$HOME/local/bin
.$HOME/.local/share
(Versión 0.7, 24 de noviembre de 2010)Como se mencionó anteriormente ,
/usr/local
está pensado como un prefijo para, esencialmente, el software instalado por el administrador del sistema, mientras que/usr
debe usarse para el software instalado desde los paquetes de la distribución.La idea detrás de esto es evitar conflictos con el software distribuido (como
rpm
ydeb
paquetes) y darle al administrador un dominio completo sobre el prefijo "local".Esto significa que un administrador puede instalar software compilado personalizado mientras usa una distribución como debian.
Al instalar un software específico para el usuario, se sugiere usarlo
$HOME
como prefijo, ya que esto garantiza que tenga permisos de escritura. Personalmente, creo$HOME/.local
que es una solución más elegante, ¡ya que evita abarrotar su (con suerte) directorio de inicio agradable y ordenado!$HOME/.local/share
ya se usa en la especificación del directorio base XDG de freedesktop.org , por lo que no hace falta mucho para imaginar agregar un$HOME/.local/bin
a$PATH
y hacer un$HOME/.local/lib
, etc., mientras lo hace.Si realmente no desea que su prefijo sea un directorio oculto, también podría crear fácilmente un enlace simbólico, por ejemplo:
Nota al margen
Vale la pena señalar que
.config
(no.local/etc
) es el valor predeterminado$XDG_CONFIG_HOME
para los archivos de configuración específicos del usuario. También debo señalar que, desafortunadamente, una gran parte del software ignora el XDG y crea archivos de configuración donde quieran (generalmente en la raíz de$HOME
). También tenga en cuenta que$XDG_CONFIG_HOME
puede desarmarse si$HOME/.config
se desea el valor predeterminado .Curiosamente, no hay un directorio reservado para los archivos de configuración predeterminados de una distribución, por lo que no hay forma de saber si un archivo
/etc
fue suministrado por la distribución o editado por el administrador del sistema.fuente
.local
en el FHS/etc
es realmente molesta cuando se administra un servidor con múltiples administradores: es bastante difícil hacer un seguimiento de las ediciones personalizadas para conf conf files.