De la FHS

De la FHS

Tengo un ejecutable para el cliente de control de versiones forzado ( p4). No puedo colocarlo /opt/localporque 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/bindirectorio o cualquiera que sea la ubicación del bindirectorio?

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/localque generalmente se usa para paquetes de software compilados e instalados localmente.

Si es el único usuario de un binario, instalarlo en $HOME/bino$HOME/.local/bines 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 $HOMEo $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/gamesBinarios de juegos locales
  • $HOME/include Archivos de encabezado C locales
  • $HOME/lib Bibliotecas locales
  • $HOME/lib64Bibliotecas locales de 64 bits
  • $HOME/man Manuales locales en línea
  • $HOME/sbin Binarios del sistema local
  • $HOME/shareJerarquí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 $HOMEcomo prefijo los valores predeterminados de instalación.

./configure --prefix=$HOME

Ahora, cuando make && make installse ejecuten, los archivos binarios, paquetes, páginas de manual y bibliotecas compilados 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 agregarlo $HOME/bino $PATHllamarlo usando el método absoluto $PATH. Algunas distribuciones se incluirán $HOME/binde $PATHforma predeterminada. Puede probar esto echo $PATHy ver si $HOME/binestá allí, o colocar el binario $HOME/biny ejecutarlo which binaryname. Si vuelve con $HOME/bin/binaryname, entonces está en su $PATHconfiguración predeterminada.

Respuesta2

Comou otro mencionado,/usr/localestá pensado como un prefijo, esencialmente, para 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 los paquetes rpmy 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 $HOMEcomo prefijo ya que esto garantiza que tenga permisos de escritura. Personalmente, creo que usar $HOME/.locales una solución más elegante, ya que evita saturar su (con suerte) directorio de inicio agradable y ordenado.

$HOME/.local/sharey $HOME/.local/binya se utilizan en elEspecificación del directorio base XDG de freedesktop.org, y se solicita que las distribuciones se agreguen $HOME/.local/binal $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_HOMESe 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_HOMEse puede desarmar si $HOME/.configse 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 /etcfue 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/binsegúnel sitio web de Internet Wikitechy.

Información sobre /usr/bindesdeEstá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/binvs. /usr/local/bindela Wikitecnología:

  /usr/bines 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/bines 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/bines donde se encuentran los binarios proporcionados por el sistema operativo. /usr/local/bines donde el usuario descarga los binarios.

información relacionada