¿Dónde debo poner el software que compilo yo mismo?


Respuestas:


90

Regla de oro, al menos en los sistemas con sabor a Debian:

  • /usr/localpara la materia que es "de todo el sistema", es decir /usr/local, tiende a estar en mora de una distro $PATH, y sigue una jerarquía estándar directorio de UNIX con /usr/local/bin, /usr/local/lib, etc.

  • /optpara cosas en las que no confía para hacer todo el sistema, con prefijos por aplicación, es decir /opt/firefox-3.6.8, /opt/mono-2.6.7etc. Las cosas aquí requieren una administración más cuidadosa, pero también es menos probable que rompa su sistema, y ​​es más fácil de eliminar ya que simplemente elimina la carpeta y se ha ido.


Curiosamente, muchos programas / aplicaciones sugieren automáticamente que se instale /optsi lo hace sudo.
HongboZhu

50

Si realmente no quieres que interfiera en absoluto, no lo pongas en ningún lugar de tu $PATH.

Si lo desea $PATH, al menos asegúrese de no instalarlo /usr/local. Descubrí que una gran cantidad de software se ve allí incluso si está instalado por la distribución en /usr.

Mi forma favorita de instalar software compilado a medida es en mi $HOMEdirectorio. De esa manera no tiene que usar sudopara nada, y está muy bien separado del resto de su sistema. Por ejemplo:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

Y si lo desea, puede agregar /home/username/stage/bina su $PATH.


1
Definitivamente, usar su directorio personal es la mejor opción. OMI
bitek

1
+1 de acuerdo. Me gusta ~ / sbin para los scripts bash / ruby ​​/ python, y ~ / opt / ... para las instalaciones compiladas, con alias en ~ / bin.
Kris

44
+1 por usar su directorio personal ya que simplifica las cosas; -1 para la sugerencia de evitar $ PATH: en realidad hay directorios "reservados para instalaciones locales" de acuerdo con los estándares (por ejemplo, /usr/local).
Riccardo Murri

1
Mi sugerencia para evitar / usr / local se basó en el deseo original (algo vago) del póster de no interferir con el software empaquetado. Como hay un montón de software empaquetado que "ayudará" al buscar en / usr / local o en $ PATH, supuse que califica como interferencia. Pero realmente depende de las necesidades y objetivos individuales de una persona. / usr / local puede ser una elección perfecta en muchas situaciones.
Sandy

nadie notó el malentendido completo de la letra "s" en el comentario # 2. eso debería ser eliminado
meffect

20

FHS dice ponerlo en / usr / local donde las distribuciones no deberían tocarlo. /usr/local/binpara los binarios /usr/local/srcpara la fuente y /usr/local/libpara las bibliotecas. Consulte las especificaciones de FHS para obtener más información.


¿Qué pasa con la configuración? Digamos que instalé MySQL sin usar el administrador de paquetes, ¿debería seguir usando /etc/mysqlpara la configuración?
Hubro 01 de

Acabo de notar que hay una /usr/local/etccarpeta por defecto, creo que debería usar eso ... :-)
Hubro

10

La mayoría de las veces, me gusta colocar mis propias cosas compiladas /opt. Es una especie de lugar pseudo-estándar. También puedes considerarlo /usr/local, pero prefiero mantener mis cosas 100% aisladas.


1
las distribuciones tienden a poner bastantes cosas en / opt (generalmente paquetes propietarios) / opt no dice que la distribución no puede tocarlo. sin embargo, dice eso sobre / usr / local
xenoterracide

1
Nunca he visto una distribución poner cosas /opt, sin embargo, he visto muchas veces donde /usr/localestá lleno de basura que viene de la distribución
Scott Anderson

distro que uso como para poner java en / opt. También he visto acrobat reader allí. si están poniendo cosas en / usr / local, ignoran FHS, lo que dice que debe evitarse sobrescribirse en las actualizaciones del sistema.
xenoterracida

A cada uno lo suyo, supongo. FHS es bueno, pero creo que a veces se ignora.
Scott Anderson

Lo único que he visto en los paquetes de distribución es en /usr/localjerarquías de directorios que son paralelas a las del árbol estándar, y tal vez archivos de índice para cosas como TeX.
Phil Miller

9

Ponlos a /usr/local/src.

Lo que hago es extraer la fuente en este directorio. Creará un camino como

/usr/local/src/postgresql-8.3.7

Luego creo un enlace simbólico:

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

Haz todo tu edificio adentro /usr/local/src/postgresql.

Hacer las cosas de esta manera ayuda cuando necesita desplazarse entre versiones y documentos de la versión que está utilizando.


1
+1 para indicar su justificación y cómo la OP puede aplicarla, incluidas las versiones.
samt

6

Esto me recuerda que necesito usar checkinstall con más frecuencia. De esa manera solo hago lo usual

 ./configure
 make

seguido por

 sudo checkinstall

para crear un archivo .deb ...


2
No responde la pregunta.
JBentley

5

Si existe la posibilidad, sugeriría compilar su software y luego crear el paquete FC (creo que está usando yum para instalar paquetes de software). Luego puede instalar ese paquete de su propio software compilado y eliminarlo sin estropear todo el sistema.


5

Si desea instalar y eliminar fácilmente varias aplicaciones que ha creado usted mismo, puede usar Stow como un simple administrador de paquetes.


5

Según el FHS , /usr/local/se usa para aplicaciones compiladas desde el origen, mientras que /opt/se usa para aplicaciones de terceros que no son compatibles con el proveedor de su sistema operativo.


4

Dos cosas que recomendaría:

Todo el sistema: use stow e instálelo en / usr / local / stow / package-version. Entonces puedes cambiar fácilmente entre versiones.

En mi casa, o si no tengo permisos de escritura / usr / local, personalmente instalo programas bajo ~ / .local, que está insinuado por el estándar XDG .

También puedes usar stow localmente, aunque nunca lo hice :)


3

Tengo una configuración un poco diferente a la de la mayoría de las personas porque desarrollo mucho. Tengo un directorio / home / jackson / bin / en el que instalo cosas y he editado mi .bashrc agregando esto:

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

No haría esto por todo, pero es bueno durante el desarrollo.


3

En realidad, no es tan difícil crear deb o rpm a partir de un tarball fuente. De esa manera, puede usar las instalaciones del administrador de paquetes de su distribución para mantener limpio su sistema. Esto es lo que hago, la mayoría de las veces: solo crea un poco de rpm.


2

Si está compilando una aplicación, puede agregar su ruta ejecutable en su variable PATH env. Esto no afectará a otros usuarios.


Me pregunto por qué los votos negativos? +1 a una especie de "equilibrio"
phunehehe

También me pregunto por qué :-). He usado la misma solución para usar cscope donde no tengo permisos de instalación.
Hemant

@phunehehe Probablemente porque ni siquiera intenta responder la pregunta. La pregunta pregunta dónde colocar el software. Esta respuesta da un consejo sobre lo que podría hacer después de haberlo colocado en algún lugar. Podría mejorarse dando algunas sugerencias sobre qué carpetas usar.
JBentley

2

Siempre existe la opción de "ponerlo donde corresponde", pero primero escriba un rpm simple.


1

Si desea que su aplicación esté disponible para todos los usuarios del sistema y tiene los permisos necesarios, use / opt. Si desea que la aplicación esté disponible solo para usted (y root), use / home / username


0

La forma más fácil de hacer esto es tomar el paquete fuente ( .src.rpmpara RPMites), descomprimirlo, piratear la nueva fuente / configuración / lo que sea, cambiar la versión de manera apropiada y compilar. Instalar esto hace que su administrador de paquetes conozca el nuevo paquete, le permite considerarlo para las dependencias y desinstalarlo / actualizarlo.

Esta es una tarea rutinaria la primera vez, pero si sale una nueva versión (o algún parche crítico), es más fácil de actualizar. Otro beneficio es que puede crear su propio repositorio con software local, para ser compartido, por ejemplo, por las máquinas en un laboratorio.


0

Escribir un RPM, no es difícil, tiene pautas sobre dónde colocar las cosas y facilita la desinstalación.

Si hace esto, instale los archivos debajo /usry no debajo /usr/local, como todos los demás archivos que vienen a través del sistema de empaquetado.

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.