¿Cuál es el equivalente de Linux a los archivos de programa de Windows?

179

En Windows, la mayoría de las aplicaciones y los datos de las aplicaciones se almacenan en un directorio especial conocido como C:\Program Files(y ocasionalmente C:\Program Files (x86)). ¿Cuál es el equivalente de Ubuntu / Linux a esta ruta? ¿Hay incluso uno?

Kaz Wolfe
fuente
2
Si desea saber dónde están los archivos de un paquete específico, puede usar el administrador de paquetes Synaptic. Simplemente busque el paquete y vea sus archivos instalados.
Asmerito
66
Creo que esta pregunta se mejoraría por una razón para querer un equivalente. Hay una diferencia entre, por ejemplo, "veamos lo que he instalado y lo que puedo ejecutar", y "estoy tratando de encontrar el juego guardado de este / ese software, para que pueda jugar con él" y tal vez incluso "sospecho algún archivo de configuración / ini-file para este programa que pueda modificar". Esas podrían ser todas preguntas de "Archivos de programa", pero tienen diferentes respuestas aquí.
Nanne
44
Relacionado (pero probablemente no debería considerarse un duplicado): ¿Cómo entender el diseño del sistema de archivos de Ubuntu?
Eliah Kagan

Respuestas:

104

/biny /usr/bines donde están los scripts que inician los programas. Sin embargo, el equivalente directo de "Archivos de programa" es probablemente /usr/share( ver Estándar de jerarquía del sistema de archivos ). Ese directorio contiene los diversos archivos de soporte para la mayoría de los programas.

Nautilus mostrando / usr / share

Sin embargo, probablemente no haya un equivalente directo, ya que, por ejemplo, los archivos de la biblioteca se comparten en todo el sistema (en /lib) y las opciones están especificadas por el usuario (en el directorio de inicio del usuario) o ubicadas universalmente /etc.

Por lo tanto, la instalación de un programa a través de un archivo deb, repositorio o compilación probablemente colocará archivos en todas estas ubicaciones.

[EDITAR] Y como otros señalan, también hay /sbiny /usr/sbin. Además /usr/local/bin, /opt/bine incluso /usr/games/. Así que definitivamente no es una comparación directa con c:\program files!

Scaine
fuente
44
¿Qué tal /opt? He visto que contienen muchos programas (generalmente de código cerrado o basados ​​en aplicaciones) antes de una manera similar a Program Files.
Kupiakos
Parece que va por ese camino, con la llegada del Centro de software de Ubuntu que entrega sus juegos allí, sin duda. Pero incluso entonces, difícilmente una comparación directa, ¿verdad? Sin embargo, podría ser lo más cercano en estos días.
Scaine
Consulte askubuntu.com/a/294492/41499 para saber para qué sirve el /optdirectorio.
Gerhard Burger
/usr/local/bines una ubicación semi-común para software que un usuario / empresa no puede usar comúnmente
Mark Stewart el
¿Y cómo es este sistema operativo mejor que Windows? Lo cambié para probar si es mejor para el desarrollo web. Pero no puedo entender esas cosas jerárquicas ... He instalado PhpStorm y ahora está en 1238128 carpetas ...
Toma Tomov
84

Respuesta tardía : he creado una hoja de ruta para que la sigan los principiantes. Si están buscando un archivo pero no saben dónde buscar, pueden usar el mapa para navegar de manera aproximada. Puede descargar un PNG de alta resolución aquí . Puedes encontrar la publicación relacionada aquí . Seguiré actualizando tanto el archivo como la publicación cuando el tiempo lo permita, incorporando comentarios útiles.

d4nyll
fuente
66
esta respuesta se ignora, debería estar en la parte superior.
voldemort
83

EDITAR: ¡Vea también la respuesta de d4nyll a continuación para obtener un excelente mapa para principiantes!

Lea mi respuesta a continuación para obtener más información sobre cuál es la PATHvariable de entorno, qué .desktoparchivos son y cómo encontrar un programa específico utilizando varios comandos de Linux.

Respuesta original:


No hay una respuesta fácil.

/bin` /usr/bin` y/usr/share

Como se menciona en las otras respuestas, puede encontrar la mayoría de los ejecutables en /bino /usr/bin, y los archivos de soporte están instalados /usr/share.

/usr/local y /opt

Sin embargo, hay más directorios en los que Ubuntu instala aplicaciones. La PATHvariable, que determina dónde buscar un comando ingresado, puede darle una pista, la mía se ve ( echo $PATHen una terminal):

/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Como puede ver, algunos programas están instalados /usr/localy tienen su propio directorio y bin. Otro lugar donde se instalan muchos programas es /opt. Las propiedades de estas ubicaciones se explican en el Estándar de jerarquía del sistema de archivos , que es una muy buena lectura. Desafortunadamente, la diferencia entre /opty /usr/localno está muy bien explicada, alguien en el intercambio de pila de Unix tenía una explicación más elaborada:

  • /usr/locales un lugar para instalar archivos creados por el administrador, generalmente mediante el comando make. La idea es evitar conflictos con los archivos que forman parte de los sistemas operativos que se sobrescribirán o sobrescribirán los locales de lo contrario. p.ej. /usr/bin/fooes parte del sistema operativo mientras que /usr/local/bin/fooes una alternativa local,
  • /optes un directorio para instalar paquetes desagregados cada uno en su propio subdirectorio. Ya están construidos paquetes completos proporcionados por un distribuidor de software independiente de terceros. Por ejemplo someapp, se instalaría en /opt/someapp, uno de sus comandos estaría en /opt/someapp/bin/foo[y luego generalmente se crea un enlace simbólico en uno de los bindirectorios en el PATH, o se llama al programa desde un archivo de escritorio (ver más abajo)].

Encontrar un programa o comando específico

.desktop archivos

Para saber dónde está instalado un programa específico, puede realizar varios pasos. Primero necesitas localizar su .desktoparchivo. Los archivos de escritorio son similares a los accesos directos en Windows, y para las aplicaciones del sistema en los que se encuentran /usr/share/applications. Se encuentran los archivos de escritorio para aplicaciones que solo están disponibles para el usuario actual ~/.local/share/applications. Tomemos, por ejemplo, Google Chrome, que tiene el archivo de escritorio /usr/share/applications/google-chrome.desktopy busque la línea que comienza Exec=, esto determina cómo iniciar Google Chrome. Dice:

Exec=/opt/google/chrome/google-chrome

Entonces sabes que Google Chrome está dentro /opt.

Ahora para Mozilla Firefox que se encuentra en /usr/share/applications/firefox.desktop. Simplemente dice

Exec=firefox %u

Al principio, esto no parece ayudar mucho, pero luego te das cuenta de que firefoxdebe estar en un directorio que está en la PATHvariable (muy probablemente a bin), y podemos buscarlo (ver más abajo).

Buscar comandos

Para buscar los comandos que se pueden utilizar uno o más de los siguientes: type, whichy whereis(he incluido un enlace a sus páginas de manual en línea).

  • tipo : describe un comando e indica cómo se interpretaría si se usara como un nombre de comando. Los tipos posibles para un comando son:

    1. alias (alias de shell)
    2. función (función de shell)
    3. incorporado (caparazón incorporado)
    4. archivo (archivo de disco)
    5. palabra clave (palabra reservada de shell)

    (el tipo en sí es un shell incorporado, pruébelo con type type: P)

    Ejecutar type firefoxnos da

    firefox is /usr/bin/firefox
    

    que es lo que queríamos saber

Si un comando es un archivo (con el que verificó type), también puede usar:

  • que : muestra la ruta completa del comando,

    Ejecutar which firefoxnos da

     /usr/bin/firefox
    
  • whereis : localice los archivos binarios, de origen y de página de manual para un comando.

    Ejecutar whereis firefoxnos da

    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
    

Prima

Puede inspeccionar /usr/bin/firefoxmás de cerca ls -l /usr/bin/firefoxy esto da:

/usr/bin/firefox -> ../lib/firefox/firefox.sh*

Parece que /usr/bin/firefoxes "solo" un enlace simbólico a la secuencia de comandos /usr/lib/firefox/firefox.sh. Si inspecciona el script, descubre que el script llama /usr/lib/firefox/firefox.
Puedes descansar en paz ahora :)

Gerhard Burger
fuente
Muy buena respuesta. Una pregunta, ¿qué es el enlace simbólico? ¿Es el acceso directo de Windows equivalente?
Quazi Irfan
@iamcreasy gracias! Sí, son una especie de acceso directo, pero con la intención principal de evitar copias de archivos. Los accesos directos de Windows son más comparables a. archivos de escritorio, que se pueden usar para crear, por ejemplo, elementos de menú de inicio.
Gerhard Burger
¿Por qué alguien usaría el archivo .desktop sobre enlaces simbólicos y viceversa?
Quazi Irfan
1
@iamcreasy En los archivos .desktop puede agregar información adicional, como una descripción y un ícono (vea un ejemplo aquí: standards.freedesktop.org/desktop-entry-spec/latest/apa.html ), es un archivo 'regular' . Un enlace simbólico es un archivo 'especial' que solo se vincula a otro archivo. Esto me resulta difícil de explicar correctamente, pero tal vez pueda encontrar una mejor respuesta aquí: superuser.com/questions/253935/…
Gerhard Burger
18

No hay un directorio único que sea el equivalente exacto de la carpeta Archivos de programa . La forma en que Linux organiza las cosas es muy diferente a la de Windows.

En Windows, cada programa que instalamos obtiene su propio directorio dentro del directorio Archivos de programa. En ese directorio, se crean subdirectorios adicionales para diferentes tipos de archivos. No hay una estructura fija para subdirectorios. Los programas deciden por sí mismos cómo quieren llamar a cada directorio y dónde quieren poner qué.

Pero en Linux cuando se instala un programa, se copian diferentes tipos de archivos en diferentes ubicaciones. Los archivos ejecutables se copian a / usr / bin , los archivos de la biblioteca a / usr / lib , la documentación a uno o más de / usr / man , / usr / info y / usr / doc . Si hay archivos de configuración, que son por lo general en el directorio personal del usuario o en / etc .

binW
fuente
¿Hay alguna razón para esta agrupación de archivos en función de su propósito en lugar de en función de la aplicación a la que pertenecen los archivos? ¿Es el "estilo de agrupación de archivos Unix" generalmente más conveniente desde la perspectiva del administrador del sistema?
jojman
1
realmente no. Es una elección de diseño que hicieron, creo. Aunque sí permite hacer utilidades como "man", "info" o muchas otras que dependen de esta estructura de archivos. Por ejemplo, "man" sabe dónde buscar documentación para cada comando. Si no hay una ubicación estándar de documentos, el hombre no puede trabajar.
binW
10

La C:\Program Filescarpeta estaría /usr/binen Ubuntu. /binse parece más C:\windows.

Desde la página del manual de la jerarquía del sistema de archivos :

/bin      This directory contains executable programs which are needed  in
          single user mode and to bring the system up or repair it.
/usr/bin
          This is the primary directory  for  executable  programs.   Most
          programs  executed  by  normal  users  which  are not needed for
          booting or for repairing the system and which are not  installed
          locally should be placed in this directory.

Ubuntu tiene una estructura diferente a la de Windows. Ubuntu coloca casi todas las aplicaciones en un directorio, por ejemplo /usr/bin. Windows crearía una nueva carpeta, por ejemplo Mozilla Firefox, y agregaría configuración, ejecutables, DLL, imágenes, etc. Ubuntu los divide, los ejecutables entran /usr/bin, la configuración de todo el sistema /etc, los objetos compartidos /usr/lib, las imágenes /usr/share, ...

Lekensteyn
fuente
5

Los 'archivos de programa' de Linux están en toda la jerarquía. Podría estar en /usr/bin, /bin, /opt/..., o en otros directorios.

Creo que vas a encontrar algún archivo relacionado con tu aplicación. Entonces, tengo una idea sobre cómo buscar archivos que están instalados en la instalación del programa.

  1. Instalar synapticemitiendo sudo apt-get install synapticen la terminal.
  2. Busque el paquete que desea, busque en la entrada de texto de búsqueda.
  3. Haga clic derecho en el paquete y seleccione Properties.
  4. Mover a la Installed Filepestaña. El resultado es el mismo que dpkg -L package_name.
  5. Allí encontrará todos los archivos instalados para el paquete.

Esto se debe a que Linux mueve el archivo instalado a directorios por separado según su tipo.

  • El ejecutable va a /usr/bino /bin.
  • El ícono va a /usr/share/iconso ~/.local/share/iconspara local.
  • Toda la aplicación (portátil) en /opt.
  • Atajo usualmente encendido /usr/share/applicationso encendido~/.local/share/applications
  • Documentación sobre /usr/share/doc
  • Biblioteca / módulo en /usr/lib

Y muchos otros directorios. (CMIIW, aceptando corrección)

Abdillah
fuente
3

En esta respuesta, cuando digo Unix, me refiero a Unix así como a los sistemas operativos similares a Unix.

Ubuntu realmente no tiene una carpeta de programas que contenga todos los datos para cada programa. En los sistemas operativos Unix y similares a Unix, TODO es un archivo, incluso los comandos del terminal. Son archivos también. La forma en que Unix maneja los programas puede ser bastante caótica y organizada al mismo tiempo.

Los iconos para los programas se almacenan en / usr / share / icons / *, los ejecutables del programa generalmente se almacenan en / usr / bin, / bin y en otros lugares con directorios bin (bin es obviamente abreviatura de binario). Las bibliotecas de las que dependen los programas están en / lib.

Entonces terminas sin un directorio que contenga todos los datos para un programa, pero los datos para el programa se extienden. Si bien al principio esto parece muy desorganizado, permite compartir cosas estándar como bibliotecas e íconos.

Gracias a los permisos para cada archivo, la idea de que todo sea un archivo es muy brillante para ser honesto. Hace que Unix MUCHO más seguro que otros sistemas operativos.

Thomas Boxley
fuente
3

La forma en que se instalan los programas Linux y Windows es bastante diferente.

El patrón común en Windows es para un programa; o un montón de programas, de un proveedor, vaya a su propio subdirectorio en C: \ programas \ proveedor o algo similar.

En Linux, sus archivos se dividen en subdirectorios específicos según su función. Hay directorios para bibliotecas, iconos, páginas man, archivos de registro, configuración, etc. Puede usar algunos de ellos, pero el sistema los administrará a todos. No están acoplados, pero existen junto con archivos similares de otros programas.

Por lo tanto, no hay un equivalente real a esa estructura de directorios de Windows en una implementación regular de Linux.

usuario desconocido
fuente
2

Si instala sus propios programas, le recomiendo 1 carpeta:

Timo
fuente
-2

Mira adentro /bin, /usr/biny cualquier otra cosa que diga bin.

cpu2
fuente