Al instalar aplicaciones de usuario, ¿dónde sugieren las "mejores prácticas" que estén ubicadas?


210

Ocasionalmente instalo aplicaciones manualmente, en lugar de usar aptu otro administrador de paquetes.

¿Con qué sitio ( /usr/, /usr/local/, /opt/, /home/, etc.) es sugerida por las "mejores prácticas" para la instalación de aplicaciones de usuario?


Me gusta instalar cosas desde la fuente de vez en cuando, escribí una pequeña herramienta para hacerlo que realiza los cambios en su archivo de inicio de shell por sí solo (y también modifica el prefijo de su biblioteca, si lo solicita, para programas que dependen de bibliotecas compartidas ) No tiene muchas funciones, pero funciona el 99% del tiempo.
nuevo123456


1
Gran discusión sobre la distinción entre /opty /usr/local: unix.stackexchange.com/q/11544/11917
blong

Respuestas:


184

Eso depende, de verdad. Si la aplicación tiene un archivo MAKE, o por ejemplo para aplicaciones de Python, si la aplicación usa distutils (por ejemplo, tiene un setup.pyarchivo), o un sistema similar de compilación / instalación, debe instalarlo /usr/local/. Este suele ser el comportamiento predeterminado.

Por lo que entiendo, /usr/local/tiene una jerarquía que es similar a /usr/. Sin embargo, los directorios como /usr/bin/y /usr/lib/generalmente están reservados para la instalación de paquetes a través de apt. Entonces, un programa que espera "instalarse" /usr/debería funcionar bien /usr/local/.

Si solo necesita extraer un tarball y ejecutarlo directamente (por ejemplo, Firefox), póngalo en /opt/. Un programa que solo necesita un directorio y obtendrá todos los archivos / bibliotecas en relación con ese directorio puede obtener un directorio para sí mismo /opt/.


24
Parece que mucha gente se olvida opt/: en mi opinión, has dado en el clavo por su propósito.
Marco Ceppi

3
Cree un enlace simbólico desde / usr / bin o agréguelo a PATH en ~ / .bashrc
Alex

1
¿Qué hay de ~/.local/share? @Marco
ultimatex

1
Puede instalar cosas dentro ~(su directorio de inicio), pero eso hará que una aplicación sea accesible solo para un usuario. Otros usuarios en su sistema tendrán que instalar y mantener sus propias instalaciones de ese software. En cuanto a las mejores prácticas para instalar aplicaciones instale su directorio de inicio, creo que no hay pautas tan sólidas porque no interferirá con los paquetes del sistema.
Umang

1
¿Está mal instalar aplicaciones que están 'descomprimidas de tar' en / home / ubuntu / myapp? ¿Qué diferencia hace esto en comparación con / opt / myapp?
JARC

116

Es bueno recordar que /usrno significa usuario sino recursos de sistema unix .

Como tal, tiendo a pensar que cualquier distribución tiene el derecho de pisotear todo el contenido /usr,y que mis adiciones específicas al sistema entran /usr/local, lo que conservo antes de realizar una actualización.

Mientras tanto, entran aplicaciones y otras cosas /opt.

Algunas personas se sienten cómodas colocando cosas /home, aunque rara vez sigo esa convención.

Dicho todo esto, dejo que el administrador de paquetes de distribución haga las cosas a su manera primero, y luego haga lo anterior cuando haga cosas a mano.


35
Vale la pena recordar que 'recursos del sistema unix' es un cambio de nombre realizado DESPUÉS de que se agregó '/ home'. En los viejos, viejos, viejos días (Unix Version 6 et.al.) vería directorios como / usr / jimmy, / usr / siobhan, / usr / ahmed, etc. porque los directorios de "usuario" estaban almacenados en / usr .
Mark Leighton Fisher

55
OK, voy a morder: ¿qué significa opt?
Septiembre

3
@Seth Creo que es 'opcional': originalmente era para software que no formaba parte de una instalación predeterminada.
Carl H

55
/ usr es User. Eso fue porque los usuarios de Linux eran desarrolladores. Primero, cuando comenzó a dividirse en desarrolladores y usuarios, /homese introdujo el directorio. Y entonces alguien tuvo la idea de decir que quiere decir Unix System Resources, que en realidad no tiene sentido, porque tenemos la Unix system Resourcesen/dev
Info-Screen

2
Correcto, / usr es un backronym. El propósito ha cambiado desde los días en que Unix se estaba ejecutando en un PDP-7 en 1969.
Walt Stoneburner

34

Instalar programas inestables como firefox devel en / home / user / opt / hace que sea mucho más fácil de eliminar, y no hay confusión para otros usuarios sobre qué versión deberían usar ... Entonces, si no es un programa para uso global, instale en una subcarpeta en su directorio de inicio.

Nunca instale programas en / usr /, es probable que cause caos, las cosas instaladas en / usr / están destinadas solo a paquetes de distribución. / usr / local / es para paquetes compilados localmente. ¡Y la estructura funciona exactamente de la misma manera! los archivos en / usr / local / tendrán prioridad sobre los archivos en / usr /

/ opt / debe usarse para la instalación de paquetes precompilados (binarios) (Thunderbird, Eclipse, Netbeans, IBM NetSphere, etc.) y similares. Pero si son solo para un solo usuario, deben colocarse en su directorio de inicio.

Si desea poder ejecutar un programa instalado en una ubicación "extraña" (como / home / user / opt / firefox /) sin escribir la ruta completa, debe agregarlo a su variable $ PATH, puede hacerlo agregando una línea como esta en su /home/user/.profile

export PATH=/home/user/opt/firefox:$PATH

El nombre de la carpeta debe ser aquel donde se encuentra el archivo ejecutable que necesita ejecutar.


26

El estándar de jerarquía del sistema de archivos de Linux indica /usr/local.

De http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html :

La idea original detrás de '/ usr / local' era tener un directorio separado ('local') '/ usr' en cada máquina además de '/ usr', que podría montarse solo como lectura desde otro lugar. Copia la estructura de '/ usr'. En estos días, '/ usr / local' es ampliamente considerado como un buen lugar para mantener programas autocompilados o de terceros. La jerarquía / usr / local es para uso del administrador del sistema al instalar software localmente. Es necesario evitar que se sobrescriba cuando se actualiza el software del sistema. Se puede usar para programas y datos que se pueden compartir entre un grupo de hosts, pero que no se encuentran en / usr. El software instalado localmente debe colocarse dentro de / usr / local en lugar de / usr a menos que se instale para reemplazar o actualizar el software en / usr.


1
Parece contradecir esta información / usr / local con la información en la página opt: tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html "" Este directorio está reservado para todo el software y los paquetes de complementos que no son parte de la instalación predeterminada. Por ejemplo, los paquetes StarOffice, Kylix, Netscape Communicator y WordPerfect normalmente se encuentran aquí. Para cumplir con el FSSTND, todas las aplicaciones de terceros deben instalarse en este directorio "..." (similar a la forma en que Windows instalará un nuevo software en su propio árbol de directorios C: \ Windows \ Progam Files \ "Nombre del programa ")"
Pod

6

Por lo general, tengo una carpeta llamada "Programas" en mi casa donde instalo esos programas, lo suficientemente extraño (o no) son todas cosas de Java en este momento.

Tiene una gran ventaja para mí, cuando reinstalo o cambio las computadoras se trasladan con el resto de mi hogar. Tiene una clara desventaja, esas aplicaciones solo están disponibles para mi usuario.


¿Cómo puedo reinstalar Ubuntu 16.04 sin perder datos en la carpeta de inicio? Intenté hacerlo formateando el /directorio solo y luego escribí el mismo nombre de usuario y contraseña anteriores, pero descubrí que Ubuntu crea otra carpeta de inicio.
Ibrahim Disouki

1

Use "checkinstall" para convertir su paquete alienígena en un deb para que sea desinstalable usando el administrador de paquetes.

Tenga en cuenta que los archivos de configuración a menudo no se manejarán como archivos de configuración (tal vez ignorados o tal vez tratados como parte de la aplicación), y que los scripts previos y posteriores a la instalación a veces se estropean, aunque generalmente le avisará cuando piense que deb tendrá una secuencia de comandos incorrecta previa o posterior a la instalación.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.