¿Cuál es la ubicación de instalación convencional para aplicaciones en Linux?

73

Actualmente estoy instalando NetBeans, y el directorio de instalación predeterminado es /home/thomasowens/netbeans-6.8. No soy un fan de esa ubicación, por lo que estoy viendo /etc, /bin, /usr/bin, y /sbin. ¿Tiene Linux un lugar que, por convención, es el mismo que el C:\Program Filesdirectorio de Windows ?

Thomas Owens
fuente

Respuestas:

99

De acuerdo con el Estándar de jerarquía del sistema de archivos , hay varios lugares que son aceptables, dependiendo de la aplicación. Estoy citando ampliamente aquí.

  • bin es la abreviatura de "binario", por supuesto
  • sbin es la abreviatura de "servidor binario", de lo contrario se define como:

    Utilidades utilizadas para la administración del sistema (y otros comandos solo de root)

  • /usr es para datos compartibles de solo lectura, y debe poder compartirse entre varios hosts compatibles con FHS (si tiene muchas máquinas en su red y todas tienen la misma arquitectura, debería poder compartir una sola carpeta / usr con cada máquina en la red)

  • /usr/local es para uso del administrador del sistema al instalar software localmente (es decir, para aplicaciones instaladas solo en esta máquina, no en todas las máquinas de la red).

Tomando estos juntos:

  • /usr/bin es el directorio principal de comandos ejecutables en el sistema.
  • /usr/sbin es para cualquier binario no esencial utilizado exclusivamente por el administrador del sistema.
  • Los programas de administración del sistema que se requieren para la reparación del sistema, la recuperación del sistema, el montaje / usr u otras funciones esenciales deben colocarse en su /sbinlugar (es decir, las cosas a las que necesita acceder para montar /usr/sbinentran /sbin)
  • Del mismo modo, los comandos de usuario esenciales que pueden ser necesarios antes de /usrmontarlos entran/bin
  • Cualquier cosa instalada solo en la máquina local debe entrar /usr/local/bino/usr/local/sbin

Sin embargo, hay otro uso para / usr / local. La mayoría de las cosas que instale a través del administrador de paquetes de su distribución se colocarán en / usr; muchas personas ponen cosas que han compilado a mano en / usr / local en su lugar. Esto los mantiene fuera del camino del sistema de administración de paquetes y le permite detectar lo que instaló desde la distribución (y no necesita hacer una copia de seguridad porque puede tomarlo nuevamente) y lo que compiló a mano; También le permite ejecutar diferentes versiones al mismo tiempo (por ejemplo, / usr / bin / firefox vs / usr / local / bin / firefox).


Justo cuando pensaba que las cosas se resolvieron, hay otro lugar, que es probablemente el equivalente más cercano de c:\Program Files- /opt:

/opt está reservado para la instalación de paquetes de software de aplicación complementarios.`

/optes probablemente el equivalente más cercano a c:\program files, en la que es el único lugar donde uno esperaría encontrar una aplicación con todos sus archivos juntos en una carpeta, en lugar de repartidos por todo /usr/bin, /vary /etc. Por lo general, solo se usa en paquetes muy grandes, pero en este caso, dado que Netbeans quiere tener su propia carpeta, probablemente tenga más sentido ponerlo en / opt / netbeans

James Polley
fuente
3
interesante. si hubiera diseñado Linux, habría puesto las aplicaciones compartidas de red en / usr / shared y luego habría puesto las aplicaciones de host privadas locales en / usr. de esa manera podría compartir / usr / shared sin también, a través de la herencia, compartir / usr.
djangofan
1
Muy buena respuesta. También me gusta el comentario sobre mantener las cosas fuera del camino del sistema de administración de paquetes.
DaveParillo
1
Definitivamente / opte por "paquetes completos de terceros". La mayoría de las instalaciones dividirán los diversos binarios, bibliotecas, archivos, etc. en diferentes directorios, pero cuando tiene un directorio "todo en uno", / opt hace que sea más fácil tratar con ellos.
Avery Payne
Un par de preguntas rápidas: 1) Si se supone que / usr se puede compartir entre todas las máquinas de una red, ¿eso no significa que todos los directorios secundarios también se puedan compartir, haciendo que / usr / local sea visible para otras máquinas de la red? 2) ¿Qué es FHS? 3) Cuando habla de los comandos necesarios para montar / usr, ¿habla de cómo se inicia el sistema operativo desde, por ejemplo, un apagado? Pido disculpas por el bombardeo de preguntas 7 años después, pero soy nuevo en Linux y tuve la misma pregunta después de ver que las guías de instalación decían dónde colocar las cosas, pero no POR QUÉ ponerlas allí. +1 por cierto
Ungeheuer
5

Realmente se trata de preferencias personales. Explicaré lo mío por lo que vale.

/ usr, / usr / bin son generalmente lugares para instalar el software instalado por el sistema. Cuando instalo cosas yo mismo, las instalo en uno de varios lugares:

  1. Si es un script o un programa pequeño que solo usaré, lo instalo en ~ / bin, aquí es donde termina la mayoría de mis cosas.
  2. Si es algo como lo describió (NetBeans) con un árbol de archivos completo propio, lo instalo en / opt
  3. Si es un solo ejecutable, lo instalo en / usr / local / bin

¿Por qué distingo entre # 2 y # 3? No tengo idea, es solo un hábito que he desarrollado con el tiempo. Resulta que / opt generalmente termina convirtiéndose en un árbol profundo de archivos, pero solo tiene 2 o 3 'cosas' instaladas. En este momento, tengo notas lampp y lotus instaladas en opt, 2 directorios que tienen árboles bastante grandes debajo de ellos. En / usr / local / bin, tengo 20 o 30 entradas, pero no subdirectorio.

No instalo cosas en / usr / bin o / usr / sbin porque me gusta mantener separadas las cosas que agrego manualmente (no es parte de la simple instalación desde el repositorio estándar).

DaveParillo
fuente
1

Mientras que el Estándar de Jerarquía del Sistema de Archivos proporciona alguna orientación. Descubrí que a la mayoría de las distribuciones les gusta instalar paquetes /usr/share.

Debido a esto, he adoptado la práctica de instalar cualquier aplicación que no esté instalada a través del administrador de paquetes (rpm / apt-get / emerge) en /usr/local. Esto me permite mantener las aplicaciones y bibliotecas que no se administran a través de la administración de paquetes separadas de las que sí.

Es una técnica que me ha ayudado a administrar mi sistema tanto en Fedora Core como en Gentoo.

Adam Luchjenbroers
fuente
0

Pensé que la ubicación predeterminada es /bin, es donde casi todo se instala por defecto si se usa apt-get o similar ...

... Sin embargo, cuando se trata de programas más modernos (o sin un instalador) que tienen muchos archivos adicionales, me gusta colocarlos en su propio directorio /bin.

William Hilsum
fuente
3
¿Cuál es la diferencia entre / bin, / usr / bin y / sbin? / bin tiene más sentido, ya que es para archivos BINary.
Thomas Owens
0

Por lo general, se instalan en varias carpetas, principalmente / usr, / local, / bin, etc. Puede averiguar dónde se instala el programa desde el instalador de GDebi (en la pestaña de archivos). Si vas a mover Netbeans, te sugiero que lo muevas a / opt, porque ahí es donde Google parece instalar sus cosas.

digitxp
fuente
0

Estoy de acuerdo con la respuesta de James Polley, pero de hecho el directorio predeterminado tiene mucho sentido a menos que necesite compartir la aplicación entre varias cuentas. Yo, por ejemplo, necesitaba instalar Eclipse 3.0 (obsoleto) para hacer el trabajo de Flex en Linux, y lo puse en $ HOME / eclipse3.

CarlF
fuente
0

Me gusta usar / apps para la mayoría de las aplicaciones complementarias que instalo en varios servidores. Guardo una copia de la carpeta en / installs / apps en mi servidor nfs. Cuando creo cualquier servidor Linux nuevo, monte la carpeta de instalación y copio / aplicaciones y tengo muchas aplicaciones comunes diferentes en el nuevo servidor. Elimino las entradas que no necesito para este nuevo servidor y he terminado. Bueno, tal vez necesito ejecutar un script o tres para configurar variables de entorno o instrucciones de ruta, pero eso es más o menos lo que se necesita para configurar muchos servidores nuevos.

Vengo de un fondo de Windows y .net. Una de las promesas de .net era que la mayoría de las aplicaciones podían instalarse usando Windows xcopy. Busco lo mismo en Linux. Donde esté disponible, elijo el tarball sobre el RPM o yum, etc. para poder implementar en / apps con cp -r y agregar la aplicación a mi servidor nfs para futuras implementaciones.

Valle
fuente
2
La pregunta pide la convención. Describiste lo que haces, personalmente. ¿Al menos puedes relacionar esto con una convención?
Fixer1234