ubicación estándar para archivos de origen de software de retención

16

¿Existe una ubicación estándar en Linux para contener archivos de origen, por ejemplo OpenSSL ? Estoy construyendo Nginx desde la fuente con una versión no predeterminada de OpenSSL. Necesito descargar y descomprimir OpenSSL y lo hice en el directorio de inicio. Ahora, me pregunto si hay una ubicación estándar en Linux /opt.

user3448600
fuente
1
Como terdon escribió / usr / src es la ubicación estándar, y aquí puede encontrar directorios para la fuente del núcleo (/ usr / src / linux vinculado a / usr / src / linux-version) y, por ejemplo, X11. El código fuente de los paquetes instalados localmente (/ usr / local) se ajusta mejor en / usr / local / src. Si desea construir paquetes "manualmente" usted mismo, crear un directorio src en su homedir probablemente sea una buena idea ... Recuerde que no debe descargar, desempaquetar ni construir como root, ¡solo instale como! Si compila paquetes deb / rpm, los directorios de compilación temporales (por ejemplo, bajo / var / tmp) se utilizan normalmente en su lugar. TBC
Baard Kopperud
Si se construye e instala un paquete - o crear un paquete (rpm / DEM) - a ti mismo, por lo general, no es necesario el código fuente más después de que se haya instalado. La razón por la que pueda tener el código fuente de algunos paquetes - al igual que el núcleo o X11 - en / usr / src (o / usr / local / src local si se crea localmente), es sobre todo porque puede necesitarlas si' re y la construcción (o escribir) algunos paquetes de software usted mismo (por ejemplo. algunas header-oscuros archivos del núcleo, que coinciden con la puesta a punto del sistema real). (Por supuesto, lo necesitará si usted quiere construir su propio núcleo también ...) Pero esto se aplica a algunos paquetes.
Baard Kopperud

Respuestas:

20

Siempre que se pregunte algo como esto, consulte el Estándar de jerarquía del sistema de archivos (FHS). Allí encontrará la siguiente entrada:

usr / src: código fuente (opcional)

Propósito

El código fuente se puede colocar en este subdirectorio, solo con fines de referencia

Para que pueda poner sus archivos de origen en subdirectorios de /usr/src. Dicho esto, este es un directorio opcional, por lo que realmente puedes guardarlos donde quieras. El código fuente no es relevante después de haberlo compilado en un ejecutable, por lo que el sistema nunca requerirá que se pueda acceder a la fuente de algo en una ubicación específica.

En conclusión: /usr/srces una ubicación bastante estándar, pero siéntase libre de elegir la suya propia.

terdon
fuente
66
Solo tenga en cuenta que realmente no desea meterse con /usr/srcun sistema que no sea Linux. Los BSD mantienen sus fuentes de sistema base allí de forma predeterminada y no desea mezclarlos con software de terceros. Simplemente construya en su $HOMElugar ...
Kusalananda
1
Lo mismo se aplica a algunos subdirectorios de /usr/srcderivados de Debian, si tiene ciertos paquetes instalados ( gcc-6-source, binutils-sourcepaquetes DKMS, los encabezados del núcleo, etc.). En Debian, hay una buena característica en la que puede agregarse al srcgrupo que posee /usr/srcy luego simplemente escribir allí como usted mismo (sin necesidad de hacerlo sudoo lo que sea).
Stephen Kitt
Y en Fedora, no debes tocar /usr/src/debugy /usr/src/kernels(AFAICS).
Stephen Kitt
"El código fuente puede ser colocado". ¿"Place place" es un error tipográfico o me falta algo?
Faheem Mitha
3
Iré más allá y diré que realmente no deberías tocar /usrningún sistema. Deberías poner cosas adentro /usr/local. ¿Los BSD te importan usar /usr/local/src?
Muzer
13

/usr/local/srces un lugar seguro para guardar el código fuente y también construirlo. El FHS dice :

Directory   Description  
src         Local source code

y también

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.

No está claro qué significa "código fuente local", pero está claro que el sistema no va a tratar de colocar nada /usr/local/src, a diferencia /usr/src, por lo que parece haber pocas desventajas al colocar el código allí.

De hecho, tengo el mío en un sistema de archivos separado:

Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/data-local_src     79G   46G   30G  61% /usr/local/src

Nota: al menos en Debian, su usuario debe ser agregado al staffgrupo para poder escribir /usr/local.

Faheem Mitha
fuente
+1 por señalar /usr/local/srcmientras las otras respuestas solo discuten/usr/src
MattSturgeon
En cuanto a lo que significa "código fuente local", en general significa controlado por el administrador del sistema local en lugar de por una distribución . Lo mismo que todo lo demás bajo /usr/local(en teoría). Así que esencialmente significa exactamente lo que describiste.
MattSturgeon
9

Si por "estándar" quiere decir convencional, entonces el lugar para descomprimir y construir el código fuente es su directorio de inicio. Se espera que dichos archivos sean transitorios, se eliminen cuando haya terminado o se mantengan si lo desea, organizados como quiera. Su directorio de inicio es su área para jugar con todo este tipo de cosas.

Si desea conservarlos luego, como referencia , se recomienda el " Estándar de jerarquía del sistema de archivos " /usr/src. Sin embargo, esta es una guía, no una ley; y, si tuviera que adquirir este hábito y luego aventurarse en un sistema que no sea Linux, es probable que cause problemas al seguirlo. Por ejemplo, en un sistema BSD, las fuentes del sistema base se mantienen allí y realmente no desea meterse con ellas. Incluso en Linux puede correr el riesgo de mezclarse con cualquier fuente almacenada por los administradores de paquetes, lo que no es deseable.

Recomendaría evitar en /usr/srcgeneral. No hay ningún beneficio obvio en mantener algo allí, y existe un riesgo potencial si confunde su significado previsto.

La ligereza corre con Mónica
fuente
5

Puede usar /usr/srceste lugar como un sonido razonable y las distribuciones basadas en rpm lo usan para almacenar el contenido de los paquetes srpm. Pero cualquier otro lugar como /opt, /usr/local, ~/srces bueno

Romeo Ninov
fuente
"Las distribuciones basadas en rpm lo usan para almacenar el contenido de los paquetes srpm". Esa es exactamente la razón por la que no debe almacenar sus propias fuentes que no sean de distribución allí y usar / usr / local. - "Ese debe ser un buen lugar para almacenar cosas, con todos estos montacargas que parecen ser de la misma opinión ..."
rackandboneman