¿Cuál es el equivalente de Linux a C: \ Archivos de programa?

64

Entiendo que tanto en Windows como en Linux y Unix, se puede instalar un programa | aplicación | software en cualquier directorio. Además, si los paquetes se instalan utilizando el sistema de empaquetado de la distribución, colocará los archivos en la ubicación correcta.

Pero a veces, una instalación de software solicita una ruta para colocar archivos. En caso de una distribución de Linux, ¿dónde está este lugar predeterminado ( C:\Program Fileso C:\progra~1equivalente)? ¿Es diferente para varias distribuciones? Si es así, ¿dónde estaría presente para ser RHEL, Susey Ubuntu?

Thomas
fuente

Respuestas:

60

El Proyecto de documentación de Linux tiene una descripción de la jerarquía del sistema de archivos de Linux donde explican las diferentes carpetas y su significado (en parte histórico).

Como xenoterracide ya señaló /biny /optson los directorios estándar que se pueden comparar con "Archivos de programa" en Windows.

/bincontiene varios comandos útiles que son de utilidad tanto para el administrador del sistema como para los usuarios sin privilegios. Por lo general, contiene las conchas como bash, csh, etc .... y comandos como comúnmente utilizada cp, mv, rm, cat, ls.

( citado de TLDP )

/optestá reservado para todos los paquetes de software y complementos que no forman parte de la instalación predeterminada. Por ejemplo, los paquetes StarOffice, Kylix, Netscape Communicator y WordPerfect normalmente se encuentran aquí.

( citado de TLDP )

Axel Knauf
fuente
99
¿No se usa / opt solo para paquetes que no están contenidos en los repositorios? Las carpetas de aplicaciones para inkscape, gimp, rhythmbox, etc. se encuentran en / usr / share. ¿No sería eso el equivalente?
c76c3r8c42b347r8
55
Consulte linuxfoundation.org/en/FHS para obtener información más reciente sobre la jerarquía del sistema de archivos (FHS). (Nota: el sitio está inactivo en este momento, pero debería volver a funcionar en breve)
jw013
@Toxicbits: al menos en Gentoo en / opt hay paquetes binarios, especialmente aquellos que no pueden instalarse en / usr debido a una jerarquía de sistema de archivos no estándar.
Maciej Piechotka
¡TLDP parece genial! Bueno, en una nota al margen; la primera vez que vi TLDP, pensé: "demasiado tiempo no ... ¿pico? ¿qué?"
Ege Özcan
3
Esto es incorrecto. / bin contiene solo programas ejecutables. El directorio de archivos de programa de Windows contiene un subdirectorio para cada aplicación instalada, que contiene todos los ejecutables, archivos dlls, archivos de datos y todo lo que necesita / enviado con la aplicación.
psusi
45

No hay equivalente directo. La estructura del directorio es muy diferente. En Windows, tiene un único directorio para cada paquete / software instalado que contiene todos los archivos relacionados (p C:\Program Files\MyProgram. Ej .). En Linux, cada software está "disperso" en muchos directorios según el tipo de archivo y alguna otra regla.

Como ejemplo, podemos examinar dónde xscreensaverestán instalados los diferentes archivos relacionados con el programa:

/etc/pam.d/xscreensaver
/etc/xscreensaver
/etc/xscreensaver/README
/usr/bin/xscreensaver
/usr/bin/xscreensaver-command
/usr/bin/xscreensaver-demo
/usr/bin/xscreensaver-gl-helper
/usr/share/X11/app-defaults/XScreenSaver
/usr/share/applications/xscreensaver-properties.desktop
/usr/share/doc/packages/xscreensaver
/usr/share/doc/packages/xscreensaver/README
/usr/share/locale/ca/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/da/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/de/LC_MESSAGES/xscreensaver.mo
[ ... ]
/usr/share/locale/zh_TW/LC_MESSAGES/xscreensaver.mo
/usr/share/man/man1/xscreensaver-command.1.gz
/usr/share/man/man1/xscreensaver-demo.1.gz
/usr/share/man/man1/xscreensaver.1.gz
/usr/share/man/man6/xscreensaver-gl-helper.6x.gz
/usr/share/pixmaps/xscreensaver.xpm
/usr/share/xscreensaver
/usr/share/xscreensaver/glade
/usr/share/xscreensaver/glade/screensaver-cmndln.png
/usr/share/xscreensaver/glade/screensaver-colorselector.png
[ ... ]

No se preocupe, por lo general cuando un instalador le pregunta dónde instalar a, la respuesta correcta es uno de los siguientes: /, /opt, /usr,/usr/local

Como puede ver, casi todos los (1) archivos xscreensaverse instalan de /usracuerdo con alguna regla simple: ejecutables /usr/bin, páginas de manual /usr/share/man, documentación, /usr/share/doc/packages/PROGRAMNAMEetc.

Cuando un instalador solicita una instalación prefix, generalmente quiere ahora la ruta de acceso básica bajo la cual instalar el programa. En mi xscreensaverejemplo, lo es /usr.

Como regla simple: /debe contener solo el programa que se necesita para iniciar el sistema (como C:\windows\system32), /usr/localdebe contener los programas que se necesitan solo en esa computadora única, /opt(2) todos los programas opcionales que tienen una estructura de directorio no estándar y /usrtodo el software estándar .

En cualquier caso, existe un estándar que define todas estas reglas en detalle: Estándar de jerarquía del sistema de archivos

(1) los archivos de configuración de todo el sistema deben residir en /etc

(2) bastante obsoleto bajo Linux

andcoz
fuente
/optse prefiere para software de terceros durante /usr/localbastante tiempo.
Steve-o
77
Solo una explicación, /usr/sharese llama "compartir" porque se comparte entre diferentes arquitecturas (documentación, scripts, imágenes), mientras que /usr/lib*es para archivos dependientes de la arquitectura (y no ejecutables, a los cuales /usr/bin).
eudoxos
12

USusually, /bin, /usr/bin, /usr/local/bin, o /opt/bin. Creo /usr/biny /opt/binson los archivos de programa más cercanos, porque generalmente son para archivos binarios no críticos del sistema instalados por el administrador del sistema, aunque a diferencia de Windows, ambos contienen programas instalados con un administrador de paquetes. Dónde /usr/local/binestá para el software empaquetado no distribuido. /bines para binarios críticos del sistema como /bin/sh.

xenoterracida
fuente
¿Por qué cuatro opciones? /bin, /usr/bin, /usr/local/binO /opt/bin. ¿No hay una ubicación estándar? La razón por la que pregunto es porque estoy instalando software en algunas máquinas virtuales y la ubicación predeterminada toma cualquier partición que tenga el mayor espacio. Quiero cambiar el espacio de partición al directorio donde suele ir el software y no tener el software colocado de manera diferente en todas las máquinas virtuales.
Thomas
1
el estándar especifica múltiples ubicaciones idk por qué pathname está inactivo, pero aquí hay un enlace al FHS en caché que entra en más definición sobre cuáles son, y realmente depende mucho de lo que esté instalando. También RHEL, Suse y Ubuntu son diferentes, por lo que pueden colocar lo mismo en ubicaciones ligeramente diferentes. /optpor ejemplo, generalmente se usa para software propietario.
xenoterracide
También generalmente ... típicamente todos están en la misma partición ... a veces /usr/es una partición separada.
xenoterracide
1
Algunas personas (por ejemplo, el proyecto Hurd) argumentan que la discriminación /biny /usr/binahora es obsoleta; Históricamente, las cosas crítico del sistema estaría en /bin, /lib, ... (directamente en la raíz), mientras que /usr(con /usr/bin, /usr/lib, ...) se montaría más adelante (tal vez a través de red), no siendo necesario para la funcionalidad básica del sistema.
eudoxos
1
@Thomas, /optno debería salir. Algunas personas solían pensar en el pasado que era una buena idea tener algunas aplicaciones en una ubicación diferente de todas las demás aplicaciones. /binestá en la partición raíz. Como en algunos sistemas, el espacio en la partición raíz es limitado, se movieron archivos binarios no esenciales (es decir, todas las aplicaciones de usuario) /usr/bin.
Jan
8

Eche un vistazo a man hiersu "Descripción de la jerarquía del sistema de archivos".

vasily-vm
fuente
3

Como otros han señalado, los programas instalados a través del administrador de paquetes están dispersos en varios directorios. Aunque normalmente se encuentra el binario /usr/bin, los archivos de configuración de todo el sistema están en /etc, y así sucesivamente.

Si no se instala una aplicación a través del administrador de paquetes, los archivos deben instalarse en un lugar donde no interfieran con el administrador de paquetes. Este lugar es /usr/local.

Si se le solicita una ruta de instalación, la opción más común sería /usr/local/appname

ene
fuente
3

Escriba echo $PATHsu terminal para ver la (s) ruta (s) que buscará el shell para encontrar un comando. Se va a buscar un archivo en el orden en que se imprime.

Jaseem
fuente
1
Esto no responde a lo que ha pedido el OP.
Francesco Turco
1

Bueno, no encontrará todas sus soluciones en /biny sbinporque contienen principalmente comandos del sistema (es decir, los comandos utilizados por el sistema).

/usr/binidealmente se le puede llamar el "Program Files"mundo de Unix. Con respecto a que /optmuy pocos paquetes optan por usar esa ubicación para la instalación, lo mismo se aplica a los paquetes que usan /etc/o /varcomo ubicaciones

pankajdoharey
fuente