¿Dónde se almacena el software instalado en Linux? [duplicar]

11

Posible duplicado:
dónde está instalado un programa típico de Linux

Soy nuevo en Linux y quiero preguntar un poco más sobre los paquetes.

En Windows, descargo un .exearchivo y lo instalo. Cuando instalo, defino la ruta donde quiero que se almacene esa aplicación. En esa carpeta, tengo todos los archivos necesarios para la aplicación.

Sin embargo, cuando instalo un paquete en Linux usando yumo apt-get, no sé dónde está instalado el paquete y dónde se almacenan los archivos necesarios para esa aplicación. He visto que la mayoría de las configuraciones están en el /etcdirectorio. Pero, ¿por qué Linux almacena los archivos necesarios para una aplicación en diferentes directorios?

¿Alguien puede decirme cómo se instalan los paquetes y dónde y cómo se almacenan? Y si mi comprensión sobre la gestión de paquetes es incorrecta, corríjame.

Comunidad
fuente
Si su distribución usa rpm, puede usar rpm -q --whatprovidespara encontrar el nombre del paquete para un archivo en particular y luego rpm -q -aaveriguar qué archivos instaló un paquete.
David Schwartz
Con apt-get, si el paquete está instalado dpkg -L PKGNAME, use , si no lo está apt-file list.
Thor

Respuestas:

14

Muchos programas (los binarios / scripts) terminan en /bino /usr/bincon otras partes en varios directorios de configuración (a menudo en / debajo etc) como ya lo señaló.

Para cualquier comando específico, puede consultar whereis

whereis prog_name

y le dará información sobre dónde se encuentra este comando. También puedes probar qué

which prog_name

Además, este gráfico y explicación / ejemplos pueden ser útiles.

Levon
fuente
1
+1 para whereis - muy útil para los nuevos en Linux
pero ¿por qué solo la configuración guardada en un directorio separado?
@KOU No conozco el historial de esto, pero podría ser así para que los programas puedan actualizarse sin alterar la información de configuración, ya que estaría en un directorio diferente. De esta forma, diferentes versiones podrían usar la misma información de configuración (suponiendo que el formato, etc., no haya cambiado, es decir, que fuera compatible). Solo estoy suponiendo aquí. Tendría que investigar la historia del sistema de archivos Unix / Linux para obtener una respuesta definitiva.
Levon
1
No estoy seguro del historial de la decisión de colocar todos los archivos de configuración de todo el sistema /etc/, pero tener una ubicación central para los archivos de configuración hace que sea muy fácil hacer una copia de seguridad. (Imagine hacer una copia de seguridad de los archivos de configuración de todo el sistema en Windows, donde están dispersos por todo el sistema de archivos y el registro ...)
Li-aung Yip
@ Li-aungYip Buen punto
Levon
5

En Windows, particularmente en versiones anteriores, era común que los programas almacenaran archivos de configuración y datos no constantes en su C:\Program Filesdirectorio. Esto se deriva de cómo los programas generalmente se instalaron y se ejecutaron bajo DOS de usuario único, sin red y sin permiso de archivo.

Desde el punto de vista de la seguridad, esta es una mala idea. Los lugares donde vive el código ejecutable deben estar separados de los datos modificables. De esa manera, es más fácil aplicar los permisos de archivo apropiados para evitar la modificación de los archivos binarios instalados por usuarios no autorizados. Del mismo modo, los directorios de la biblioteca que se pueden actualizar por separado de los ejecutables principales también deben estar en un directorio separado.

Con el advenimiento de las molestias de Vista y UAC, esta tradición finalmente está empezando a perder la tracción.

UNIX y Linux, al ser un sistema multiusuario desde mucho antes, tenían la tendencia de separar los directorios ejecutables de otros directorios mucho antes, ya que era necesario evitar que otros usuarios además de root modificaran los binarios instalados. También es por qué /usre incluso a /sbinveces son particiones separadas: un administrador especialmente consciente de la seguridad puede montar esas particiones de solo lectura y volver a montarlas para leer / escribir cuando sea necesario realizar una instalación / desinstalación.

Los paquetes generalmente se instalan desde un administrador de paquetes. Hay varios gestores de paquetes, como aptitude(Debian y distribuciones derivadas), yum(Redhat y distribuciones derivadas), pacman(olvide qué distribución es esta ...) y otros.

El administrador de paquetes le permite explorar repositorios, descargar, instalar, consultar y eliminar software, como una "tienda de aplicaciones" sofisticada (y gratuita). Asume la responsabilidad de garantizar que se atiendan las dependencias y de rastrear lo que está instalado actualmente.

Por lo general, el administrador de paquetes también permitirá las mismas operaciones en un paquete que descargó manualmente fuera de cualquier repositorio. Las herramientas también están disponibles si desea crear el suyo a partir del software que creó o compiló usted mismo.

Dado que el paquete en sí NO es un archivo ejecutable, no tiene que ejecutar un ejecutable no confiable que realmente no sabe lo que hace. (Windows finalmente está llegando con actualizaciones distribuyendo .msu's en lugar de .exe' s, pero .msihan existido por un tiempo ...)

LawrenceC
fuente
1
Re. Pacman, es para Arch Linux .
2

Puede obtener una lista de los archivos que yuminstala un paquete dado haciendo:

yum install yum-utils

Entonces puedes ejecutarlo así:

repoquery --list yum-utils

(Obviamente, reemplace "yum-utils" en ese segundo con el nombre de ese paquete cuya lista de archivos le gustaría ver).

Para apt-get, puedes usar:

dpkg -L package-name
sblom
fuente
1

Normalmente debajo /usr/bin, aunque depende de la aplicación o biblioteca particular que esté instalando.

kprobst
fuente
1

En Linux / Unix, la mayoría de los programas generalmente no terminan en un solo directorio, pero diferentes partes del mismo (ejecutables, archivos de configuración, archivos de registro, documentación, otros recursos) se encuentran dispersos a través del sistema de archivos, generalmente a través de enlaces simbólicos. El artículo de Wikipedia describe con más detalle la estructura de directorios estándar bajo una jerarquía de sistema de archivos normal, mostrando los diferentes directorios y lo que puede esperar encontrar en cada uno.

mgibsonbr
fuente
0

El /optdirectorio está reservado para instalaciones similares a Windows donde cada paquete tiene su propio árbol de directorios. Nadie lo usa. No estoy seguro de por qué; podría ser que la adición /opt/PACKAGE/bina su $PATHcada vez que instale un paquete es demasiado molesto.

Alan Curry
fuente
/optparece ser utilizado principalmente por paquetes de software comerciales / no libres, como MATLAB.
Li-aung Yip
En mi Ubuntu 12.04, Google Chrome se instala /optpero también lo hizo LibreOffice 3.5 que instalé directamente desde aquí .
0

El software en Linux es un poco diferente en paradigma de Windows o Mac. En ellos, un archivo ejecutable y todos sus archivos de soporte se instalan en una sola carpeta: Windows normalmente los mantiene adentro c:\Program Files\program name, Apple adentro /Applications/program.app. Bajo Linux, hay una estructura más ... comunitaria. Los archivos binarios generalmente están en /usr/bin, la configuración de todo el sistema está en /etc, la configuración específica del usuario generalmente está en ~/.program. Las bibliotecas están dentro /usr/lib, los archivos de soporte (por ejemplo, ilustraciones) a menudo están dentro /usr/share/program, etc. Incluso hay un estándar que sugiere dónde deben ir las cosas.

Los programas se instalan generalmente por los gestores de paquetes, rpmy dpkg; son buscados y recuperados automáticamente (incluida la gestión de dependencias) por yumy aptitude/ apt-get, respectivamente. En un nivel más técnico, los paquetes son simples archivos comprimidos (creo que rpm y deb son ambos .tar.gz). Estos archivos contienen un espejo de las piezas del sistema de archivos desde la raíz donde van los archivos (por ejemplo, un archivo que se supone que se instalará /usr/bin/programestará usr/bin/programdebajo de la carpeta correspondiente dentro del paquete.

Para encontrar información sobre un paquete en particular, use el administrador de paquetes para su sistema, como han explicado otros aquí.

Kevin
fuente
0

La página de manual de hier puede proporcionar algunas ideas

AnonymousLurker
fuente
2
Si bien este enlace puede responder la pregunta, es mejor incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia.
MaQleod
@MaQleod Si le preocupa que el enlace se vuelva inválido, lo he hecho por conveniencia. Simplemente podría escribir "man hier" en texto plano, ya que puede encontrar esta página de manual en cualquier distribución de Linux convencional, supongo.
AnonymousLurker
2
"ver el manual" tampoco es una respuesta apropiada, es un comentario. Las respuestas deberían responder la pregunta. ¿Cómo responde esto a la pregunta planteada? ¿Cómo es significativa la lista jerárquica? ¿Por qué el OP (o cualquier otra persona) debe considerar esta respuesta como notable? Copie las partes relevantes del enlace (o página de manual) y explique por qué son importantes en el contexto de la pregunta, entonces habrá respondido la pregunta y no simplemente hizo un comentario.
MaQleod