¿Cómo decirle a Ubuntu dónde instalar un programa y cómo saber dónde se instaló un programa existente?

10

Soy totalmente nuevo en Ubuntu / Linux, usando Ubuntu Server en este momento. Solo trato de descubrir algo básico.

¿Cómo puede saber dónde está instalando un programa? Por ejemplo, acabo de instalar el motor de búsqueda Sphinx colocando el tarball que descargué de su sitio en mi:

/home/sphinx

directorio. Creé el directorio sphinx para colocar ese tarball. Luego ejecuté estos comandos:

tar xvzf sphinx-0.9.8.1.tar.gz
cd sphinx-0.9.8.1/
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql

y luego estos:

make
sudo make install

Ahora tengo muchos archivos en el directorio donde ejecuté estos comandos. ¿Es esta mi instalación de Spynx o se instaló en otro lugar?

En Windows, si ejecuta un instalador (archivo .exe) en cualquier lugar, el programa aún se instalará en su directorio C: \ Archivos de programa. ¿Se aplica algo similar a Linux donde todos los programas están instalados en un lugar central, o puede instalar programas en cualquier parte del sistema?

Preguntas

  1. Preferiría mantener todos mis programas instalados en un solo lugar, ¿cuál es el lugar adecuado para esto en términos de mejores prácticas? En otras palabras, ¿cuál es el equivalente de Linux de C: \ Archivos de programa?

  2. ¿Y cómo se instala siempre en esta ubicación, es solo una cuestión de colocar el tarball y ejecutar los comandos de instalación desde esta ubicación?

  3. ¿Qué pasa si uso sudo apt-get para instalar un paquete? ¿Cómo puedo señalar esta ubicación para indicarle a apt-get que siempre se instale allí?

JakeRow123
fuente

Respuestas:

15

¿Se aplica algo similar a Linux donde todos los programas están instalados en un lugar central?

Equivalentes aproximados de directorios de instalación de Windows en Linux

  • \Windows = /bin
  • \Windows\System32= /liby/sbin
  • \Program Files= /usr/biny/usr/lib

Preferiría mantener todos mis programas instalados en un solo lugar, ¿cuál es el lugar adecuado para esto en términos de mejores prácticas? En otras palabras, ¿cuál es el equivalente de Linux de C: \ Archivos de programa?

Eso sería los directorios debajo /usr, específicamente /usr/biny /usr/lib.

¿Y cómo se instala siempre en esta ubicación, es solo una cuestión de colocar el tarball y ejecutar los comandos de instalación desde esta ubicación?

  • No. Dónde estás cuando ejecutas los comandos de instalación casi nunca importa.

  • Los programas que instale a través de apt-get(o aptitude) casi siempre terminarán de manera adecuada /usr. PERO los programas que compila desde la fuente y make installcon mayor frecuencia terminarán en /usr/local/bin, /usr/local/libetc., y puede tener problemas con eso ya que la ruta instalada por el usuario en Debian / Ubuntu es /usry no /usr/local.

  • Al compilar desde las fuentes, añadir este conmutador configure: ./configure --prefix=/usr. De esta manera, cuando make installlos archivos terminen en el directorio correcto

  • También busque en el checkinstallprograma, que realiza un seguimiento de los archivos que un paquete compilado de las instalaciones de origen, crea un archivo deb y permite una fácil desinstalación / reinstalación.

¿Qué pasa si uso sudo apt-get para instalar un paquete? ¿Cómo puedo señalar esta ubicación para indicarle a apt-get que siempre se instale allí?

apt-get/ dpkgMe encargo de esto automáticamente. Puede usar dpkg -L name-of-packagepara ver todos los archivos instalados por un paquete y dónde se instalaron.

ish
fuente
gracias por la respuesta detallada, solo una pregunta. Ya que dijiste "No. Dónde estás cuando ejecutas los comandos de instalación casi nunca importa", ¿significa esto que ahora que he instalado el programa puedo eliminar de forma segura la carpeta Sphinx en / home / sphinx / que extraje del tarball y ejecuté la instalación e hice comandos? ¿Es ahora el equivalente de un instalador que ya ejecuté para instalar un programa y ahora no tiene uso?
JakeRow123
1
Sí, puede eliminar la carpeta extraída del tarball: es esencialmente como una carpeta "temporal" a la que se extrajo el instalador y ahora es inútil. Esa fue una gran pregunta, editaré la respuesta para incluir esta información.
ish
Podría, pero luego tendrá problemas para desinstalarlos con 'make uninstall'. En Debian / Ubuntu nunca debe instalar su software en el prefijo / o / usr, debe usar / usr / local. Por qué, porque / usr / local está creado para administradores locales, ese es usted JakeRow123, para instalar sus propios programas. / y / usr es solo para paquetes Debian. Si instala allí, las chases son grandes y tendrá problemas. Entonces use el interruptor '--prefix = / usr / local' para configurar el comando cuando compile el suyo. Entonces 'hacer; sudo make install 'instalará su programa allí.
Anders
@Anders, make uninstallNO es una característica estándar y no se encuentra en muchas fuentes de programas. Además, a /usr/localmenudo no se encuentra en la ruta en Ubuntu y puede causar problemas al intentar ejecutar programas o al compilar (debido a que incluye /usr/local).
ish
NO debe instalar el software en el lugar incorrecto, como debajo de / usr y no en el lugar correcto como / usr / local. Debería corregir la falla con la RUTA si el entorno de la computadora / usuarios no está configurado correctamente. Instalar bajo / o / usr lo meterá en problemas. Créeme en esto. He estado allí y hecho eso. No fue nada divertido. En absoluto. Algunos programas, todos con autoconfig, donde se configuró con el comando configure se desinstalaron. Otros que no tienen eso no son útiles, y deberían informar de un error ...
Anders
4

Por lo general, los programas se instalan en un par de directorios en un directorio superior , llamado prefijo . El directorio principal que se utilizará dependerá de quién esté instalando, para qué bruja y quién administrará el software.

El prefijo /usres un software usado empaquetado por su distribución. Usted debe no instalar ningún otro software allí, ya que se confunda la distribución al instalar y actualizar software embalado por la distribución. Por lo tanto , no instale su propio software compilado allí. Esa no es una buena idea, a menos que realmente sepas lo que haces. Y a menos que sea un desarrollador de Debian o Ubunut, generalmente no lo hace. No haría eso de todos modos.

Para el software comercial, /optse usa el prefijo . Está reservado para que interfieran menos con las distribuciones y el administrador del sistema local.

Para el software que el administrador del sistema instala para todos los usuarios, /usr/localse utiliza el prefijo . Está fuera del camino de la instalación comercial o de distribución y no interferirá con ellos. Entonces, como administrador del sistema, usted usa eso (si tiene privilegios de root, es administrador del sistema).

Si usted es un usuario común que instala software para usted, puede usar su directorio de inicio como prefijo, utilizando la --prefixopción configurecon el directorio de prefijo " ~/" o $HOME/. Lo usaba mucho cuando era estudiante. :-)

Por lo general, el software hace lo correcto cuando ejecuta configurecon la opción --prefixcon el valor correcto y luego make; make install.

Bajo cualquiera de estos prefijos, generalmente encuentra estos directorios en una instalación estándar.

  • bin - los programas ejecutables, binarios.
  • sbin - binarios del sistema, que generalmente no deberían ser ejecutados por usuarios comunes.
  • man - páginas de manual para programas, bibliotecas y archivos de configuración, etc.
  • etc - archivos de configuración con valores predeterminados para el software.
  • lib - bibliotecas de programas y archivos de datos que dependen de la arquitectura (como la CPU) en su computadora.
  • share - archivos de datos que no son diferentes en diferentes arquitecturas y que pueden compartirse entre diferentes computadoras.
  • var- directorios con datos que cambian durante la ejecución del programa. Al igual que los archivos de registro, etc.

La mayoría de esos directorios se pueden usar con sistemas de archivos protegidos contra escritura para aumentar la seguridad. El único en el que los usuarios necesitan escribir es en el var/directorio. Cuando el software se actualiza, estos directorios obviamente (?) Necesitan tener privilegios de escritura. Eso se puede hacer con un remontaje con privilegios de escritura durante la instalación y luego remontar con lectura solo después de la instalación. Pero esto es avanzado, y solo lo doy como un ejemplo de gestión avanzada de paquetes.

Hay también algunos directorios directamente bajo /(el directorio raíz) que no existe en ningún otro prefijo, como /dev, /tmp, /procy /srv(para los directorios de datos de servidor, pero son por lo general bajo /var/libo /var/wwwy directorios así, por lo que necesita para cambiar la configuración de use este directorio. Le recomiendo que lo haga cuando esté ejecutando un servidor. Solo use /var/para probar una instalación estándar).

  1. Linux no es MS Windows. Hay muchos lugares para colocar programas que instale. Depende de quién instala y para quién. Léelo en mi post. Aviso. RedHat usa /usrcomo Debian / Ubuntu usa /usr/local. Aprende tu distribución.
  2. Los diferentes programas tienen diferentes métodos de instalación. --prefixson útiles para los programas que usan configure. La mejor manera de saberlo es probablemente leer el README.txtarchivo o algo así, que probablemente se le proporciona en el archivo tar. El archivo tar se puede extraer en cualquier lugar, como su directorio de inicio. Una vez finalizados los pasos de instalación, puede eliminar el archivo tar extraído, si tiene poco almacenamiento. Pero no lo haga tan pronto, a menos que haya probado su instalación correctamente.
  3. Los programas instalados con apt-geto aptitudesiempre se instalan en el lugar adecuado para la distribución. No puedes cambiar ese lugar.
Anders
fuente
2

Cuando instala programas desde un repositorio utilizando la instalación normal, se instalará en el lugar correcto, creará archivos de configuración en el lugar correcto (funcionalmente similar al registro de Windows) y creará entradas de menú automáticamente.

Cuando descarga un archivo (no preferido, pero a menudo necesario cuando la aplicación no está en un repositorio), lo primero que hizo fue ejecutar tar, equivalente a descomprimir en Windows. Esto crea los archivos que probablemente veas.

Luego, cuando ejecute make install, eso generalmente colocará los resultados en el lugar correcto, tal vez cree menús, pero no borrará los archivos no alquilados. Lo más probable es que pueda hacer eso, pero es posible que desee guardarlos temporalmente por si acaso.

Aquí hay un artículo interesante sobre la estructura de directorios de Debian .

Marty Fried
fuente
Buen artículo, excepto que no tenía ninguna referencia a / usr / local donde instala su propio software para no entrar en conflicto con el software instalado por el sistema y sus paquetes de distribución (como Ubuntu). Instalar su propio software bajo / o / usr es solicitar problemas, problemas que probablemente solo resuelvan es instalar el sistema desde cero nuevamente ...
Anders