
Tengo un ejecutable para el cliente de control de versiones forzado ( p4
). No puedo colocarlo /opt/local
porque no tengo privilegios de root. ¿Existe una ubicación estándar donde deba colocarse $HOME
?
¿Tiene la jerarquía del sistema de archivos una convención que diga que los ejecutables/binarios locales deben colocarse en $HOME/bin
?
No pude encontrar tal convención mencionada en elArtículo de Wikipedia para la FHS.
Además, si realmente existe una convención, ¿tendría que incluir explícitamente la ruta al $HOME/bin
directorio o cualquiera que sea la ubicación del bin
directorio?
Respuesta1
En general, si es necesario que varios usuarios puedan acceder a un binario que no está instalado y mantenido en el sistema en todo el sistema, un administrador debe colocarlo en /usr/local/bin
. Existe una jerarquía completa /usr/local
que generalmente se usa para paquetes de software compilados e instalados localmente.
Si es el único usuario de un binario, instalarlo en $HOME/bin
o$HOME/.local/bin
es la ubicación adecuada ya que podrás instalarlo tú mismo y serás el único consumidor. Si compila un paquete de software desde el código fuente, también es apropiado crear una jerarquía local parcial o completa en su directorio $HOME
o $HOME/.local
. Usando $HOME
, 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 de juegos locales$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 independiente de la arquitectura local$HOME/src
Código fuente local
Al ejecutar configure
, debe definir su jerarquía local para la instalación especificando $HOME
como prefijo los valores predeterminados de instalación.
./configure --prefix=$HOME
Ahora, cuando make && make install
se ejecuten, los archivos binarios, paquetes, páginas de manual y bibliotecas compilados se instalarán en su $HOME
jerarquía local. Si no ha creado manualmente una $HOME
jerarquía local, make install
creará los directorios que necesita el paquete de software.
Una vez instalado $HOME/bin
, puede agregarlo $HOME/bin
o $PATH
llamarlo usando el método absoluto $PATH
. Algunas distribuciones se incluirán $HOME/bin
de $PATH
forma predeterminada. Puede probar esto echo $PATH
y ver si $HOME/bin
está allí, o colocar el binario $HOME/bin
y ejecutarlo which binaryname
. Si vuelve con $HOME/bin/binaryname
, entonces está en su $PATH
configuración predeterminada.
Respuesta2
Comou otro mencionado,/usr/local
está pensado como un prefijo, esencialmente, para 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 los paquetes rpm
y deb
) y darle al administrador control total sobre el prefijo "local".
Esto significa que un administrador puede instalar software compilado personalizado mientras sigue usando una distribución como Debian.
De la FHS
El software colocado en / o /usr puede ser sobrescrito por actualizaciones del sistema (aunque recomendamos que las distribuciones no sobrescriban datos en /etc bajo estas circunstancias). Por esta razón, el software local no debe colocarse fuera de /usr/local sin una buena razón.
Al instalar software específico del usuario,otro sugiereutilizándolo $HOME
como prefijo ya que esto garantiza que tenga permisos de escritura. Personalmente, creo que usar $HOME/.local
es una solución más elegante, ya que evita saturar su (con suerte) directorio de inicio agradable y ordenado.
$HOME/.local/share
y $HOME/.local/bin
ya se utilizan en elEspecificación del directorio base XDG de freedesktop.org, y se solicita que las distribuciones se agreguen $HOME/.local/bin
al $PATH
, por lo que no hace falta mucho para imaginar la creación de un $HOME/.local/lib
, etc., mientras lo hace.
Si realmente no desea que su prefijo sea un directorio oculto, también puede crear fácilmente un enlace simbólico, por ejemplo:
ln -s .local ~/local
Nota al margen
Vale la pena señalar que .config
(not .local/etc
) es el valor predeterminado para$XDG_CONFIG_HOME
Se utiliza para 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 quiera (generalmente en la raíz de $HOME
). También tenga en cuenta que $XDG_CONFIG_HOME
se puede desarmar si $HOME/.config
se desea el valor predeterminado.
Curiosamente, no hay ningún 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 proporcionado por la distribución o editado por el administrador del sistema.
Respuesta3
La especificación del directorio base XDGLa versión 0.8 establece que los ejecutables locales deben colocarse en~/.local/bin:
Los archivos ejecutables específicos del usuario se pueden almacenar en $HOME/.local/bin. Las distribuciones deben garantizar que este directorio aparezca en la variable de entorno $PATH de UNIX, en un lugar apropiado.
Si su distribución sigue la especificación, no debería tener que "incluir explícitamente la ruta". EstePregunta anteriorintenta determinar qué distribuciones hacen esto.
Respuesta4
Parece que /usr/local/bin
segúnel sitio web de Internet Wikitechy.
Información sobre /usr/bin
desdeEstándar de jerarquía del sistema de archivos, definen la carpeta como el directorio principal de comandos ejecutables en el sistema.
Información adicional entre /usr/bin
vs. /usr/local/bin
dela Wikitecnología:
/usr/bin
es la ubicación de los ejecutables proporcionados por el sistema operativo que utilizan los usuarios comunes. Por ejemplo, normalmente no se requieren archivos del sistema operativo principal ni archivos a los que accede el usuario root, pero pueden serlo.
/usr/local/bin
es la ubicación de todos los ejecutables complementarios que agrega al sistema para que todos los usuarios los utilicen como archivos comunes del sistema, pero no son archivos oficiales compatibles con el sistema operativo.
En general, /usr/bin
es donde se encuentran los binarios proporcionados por el sistema operativo. /usr/local/bin
es donde el usuario descarga los binarios.