¿Cómo sé dónde poner las cosas en Linux?


58

Instalar algo en Windows requiere un clic de un botón. Pero cada vez que intento instalar algo en Linux, que no se encuentra en APT, me confundo.

Descarga una carpeta comprimida, ¿y luego qué? Si tiene suerte, hay un archivo README, refiérase a alguna documentación que podría serle útil si tiene suerte.

¿Cuál es el truco de magia al "instalar" extensiones y aplicaciones que no se encuentran en APT?

Me encanta Linux, pero este problema me persigue todos los días.



8
Sin relación. Pero el truco simple es nunca instalar nada fuera del sistema de administración de paquetes.
Let_Me_Be

1
Si no es de APT, entonces probablemente no sea algo que pueda simplemente instalar: deberá compilarlo e instalarlo usted mismo. Y luego comenzará a confundirse con los paquetes basados ​​en APT. Es lo más simple encontrar APT / .debs para lo que sea necesario en la medida de lo posible.
Rup

2
@Rup Plus si un software no tiene un paquete deb, probablemente no debería instalarlo, ya que es algo obsoleto o de última generación o incompatible con las distribuciones basadas en apt.
Let_Me_Be

3
Una vez que tenga suficiente experiencia con la creación / instalación de software, puede crear sus propios paquetes. ¡Asegúrese de enviar comentarios al proveedor principal!
jsbillings

Respuestas:


32

Si se trata de un software que obedece al estándar de jerarquía del sistema de archivos que se debe colocar en /usr/localy los subdirectorios apropiados (como bin, lib, share, ...).

Otro software debe colocarse en su propio directorio bajo /opt. Luego, configure su PATHvariable para incluir el bindirectorio o el directorio que contenga los ejecutables, o cree enlaces simbólicos /usr/local/bin.


1
Buena respuesta, de verdad, pero uno no debería tener que hacerlo todos los días.
phunehehe

1
@phunehehe - ¿Tienes que hacerlo todos los días?
Rob

3
No, me refería al OP "este problema me persigue todos los días".
phunehehe

1
Además del enlace de Wikipedia a FHS, lea este también: pathname.com/fhs/pub/fhs-2.3.html . Lea la sección que dice "Propósito".
yasouser

27

No hay una respuesta simple a esta pregunta, pero puedo darle un resumen general de cómo funciona:

La mayoría del software de Linux es proporcionado por los autores (el "upstream") en forma de código fuente. Esto permite a todos los que tienen un compilador para su plataforma particular y configuración del sistema descargar el código fuente y compilarlo ellos mismos. Desafortunadamente para usted, muchos programas dependen de funciones proporcionadas por otros programas y bibliotecas de software (dependencias).

El software de Windows generalmente viene en forma precompilada. Eso significa que hay un archivo ejecutable genérico para todas las computadoras con Windows, y las dependencias a menudo vienen con él en el paquete de instalación.

Las distribuciones de Linux toman el código fuente, lo precompilan por usted y también se lo ofrecen como paquete. El paquete no incluye las dependencias, pero se refiere a ellas y obliga al sistema del paquete a instalarlas también (lo que a veces puede conducir a problemas que probablemente ya haya experimentado).

Si no hay un paquete precompilado, siempre puede descargar el código fuente y compilarlo usted mismo. La mayoría de las veces, lo siguiente funcionará:

./configure
make
(sudo) make install (or sudo checkinstall)

La línea ./configure establece el escenario para el proceso de compilación (y escupe errores si no se cumplen las dependencias). La línea make ejecutará el Makefile, un script que compila todas las partes del programa.

Tradicionalmente, usaría make install para luego instalar el software. Esto generalmente coloca los ejecutables en / usr / local / bin.

Como estás usando apt, te recomiendo que compruebes checkinstall. Puede usarlo en lugar de make install, y generará un paquete .deb para usted. Esto hace que sea mucho más fácil eliminar limpiamente el software más adelante.

Tenga en cuenta que hay un puñado de otros sistemas de compilación, por ejemplo cmake; y algún software viene precompilado pero sin empaquetar (en cuyo caso puede iniciarlo directamente desde la carpeta descomprimida); y algunos programas vienen como una colección de scripts que debes ejecutar tú mismo. El código nuevo de SVN a veces viene sin scripts de configuración, por lo que primero debe ejecutar la cadena de herramientas de autoconf ... etc, etc ... ve que hay muchas excepciones a la regla, pero con un poco de experiencia podrá diga qué hacer con la mayoría de esas descargas misteriosas. Configure-Make-Checkinstall es un buen primer comienzo.

PD. Pase un fin de semana o dos para aprender a programarse, y las cosas se volverán muy obvias :-)

PPS Quizás se pregunte por qué los autores de software de Linux no solo proporcionan paquetes precompilados en lugar del código fuente. Bueno, a veces lo hacen. Pero las diferentes plataformas y distribuciones de Linux tienen sus propios formatos de paquete y reglas de sistema de archivos, por lo que como desarrollador tendría que proporcionar paquetes para cada configuración posible, lo cual es una molestia. Sin embargo, los paquetes de Ubuntu son a menudo los más fáciles de encontrar: ¡debe averiguar qué es un PPA y cómo funciona!


1
"PD. Pasa un fin de semana o dos para aprender cómo programarte, y las cosas se volverán muy obvias :-)". Mal consejo en una excelente respuesta. Pedirle a la gente que programe para comprender Linux es como los pasajeros de una aerolínea para reparar aviones.
apoorv020

en lugar de programar simplemente cámbielo para compilar su propio Linux, como LFS (Linux desde cero) linuxfromscratch.org
jsolarski

@apoorv, punto tomado. :)
sebastian_k

4

Deberías revisar checkinstall . En lugar de

./configure
make
sudo make install

tú lo haces

./configure
make
sudo make checkinstall

y podrá administrar ese paquete como si lo hubiera instalado a través de apt.


Vaya, acabo de notar que @sebastian_k ya mencionó checkinstall ... ¡Oh, bueno!
mgalgs

1

Hay una razón válida y sensata que es tan confusa (también hay una razón molesta para los artefactos) ...

Unix tiene un historial de ser multiusuario y la mayoría de los usuarios no tenían acceso para instalar aplicaciones fuera de las áreas a las que se les había otorgado acceso específico.

Entonces, la teoría sería que construiría algo en su directorio de inicio y luego lo copiaría en un área sobre la que tenía control (su propia área de proyecto o un área compartida).

Las PC con Windows generalmente son sistemas de un solo usuario y no tienen esta restricción, todo va en Archivos de programa sin importar qué.

Luego está el hecho estúpido y molesto de que cada vez que salía una nueva versión de Unix, los creadores sentían que era necesario cambiar de ubicación, pero los antiguos aún tenían que estar allí para los scripts automatizados. Esto le brinda un montón de directorios vinculados que tienen el mismo propósito.

El sistema init es aún peor.

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.