Qual é o equivalente do Linux aos arquivos de programa do Windows?

179

No Windows, a maioria dos aplicativos e dados de aplicativos são armazenados em um diretório especial conhecido como C:\Program Files(e ocasionalmente C:\Program Files (x86)). Qual é o Ubuntu / Linux equivalente a esse caminho? Existe um?

Kaz Wolfe
fonte
2
Se você quiser saber onde estão os arquivos de um pacote específico, use o gerenciador de pacotes Synaptic. Basta procurar o pacote e ver seus arquivos instalados.
Asmerito
6
Penso que esta questão seria melhorada por uma razão para querer um equivalente. Há uma diferença entre, por exemplo, "vamos ver o que instalei e o que posso executar" e "estou tentando encontrar o jogo salvo deste / daquele software, para que eu possa mexer com ele" e talvez até "suspeito de algum arquivo de configuração / arquivo ini para este programa que possa ser ajustado". Todas podem ser perguntas sobre "Arquivos de programas", mas têm respostas diferentes aqui.
Nanne
4
Relacionado (mas provavelmente não deve ser considerado um duplicado): Como entender o layout do sistema de arquivos Ubuntu?
Eliah Kagan

Respostas:

104

/bine /usr/biné onde estão os scripts que iniciam os programas. O equivalente direto a "Arquivos de Programas" é provavelmente /usr/share( consulte Padrão de Hierarquia do Sistema de Arquivos ). Esse diretório contém os vários arquivos de suporte para a maioria dos programas.

Nautilus mostrando / usr / share

Provavelmente, no entanto, não há um equivalente direto, pois, por exemplo, os arquivos da biblioteca são compartilhados pelo sistema (in /lib) e as opções são especificadas pelo usuário (no diretório inicial do usuário) ou localizadas universalmente /etc.

Portanto, a instalação de um programa por meio de um arquivo deb, repositório ou compilação provavelmente colocará arquivos em todos esses locais.

[EDIT] E como outros observam, há também /sbine /usr/sbin. Além disso /usr/local/bin, /opt/bine até /usr/games/. Então definitivamente não é uma comparação direta com c:\program files!

Scaine
fonte
4
Que tal /opt? Já vi muitos programas (geralmente de código fechado ou baseados em aplicativos) antes, de maneira semelhante a Program Files.
Kupiakos
Parece estar indo assim, com o advento do Ubuntu Software Center entregando seus jogos lá, certamente. Mas mesmo assim, dificilmente uma comparação direta, realmente, é? Pode ser a coisa mais próxima hoje em dia.
Scaine
Veja askubuntu.com/a/294492/41499 para saber qual é o /optdiretório.
Gerhard Burger
/usr/local/biné um local semi-comum para software que pode não ser comumente usado por um usuário / empresa.
Mark Stewart
E como esse sistema operacional é melhor que o Windows? Eu mudei para ele para tentar é bette para desenvolvimento na web. Mas eu não consigo entender essas coisas de hierarquia ... Instalei o PhpStorm e agora está em 1238128 pastas ..
Toma Tomov
84

Resposta tardia - criei um roteiro para os iniciantes seguirem. Se eles estiverem procurando por um arquivo, mas não souberem onde procurar, poderão usar o mapa para navegar mais ou menos. Você pode baixar um PNG de alta resolução aqui . Você pode encontrar o post relacionado aqui . Continuarei atualizando o arquivo e a publicação quando o tempo permitir, incorporando comentários úteis.

d4nyll
fonte
6
esta resposta é ignorada e deve estar no topo.
Voldemort
83

EDIT: Veja também a resposta de d4nyll abaixo para um mapa excelente e fácil para iniciantes!

Leia minha resposta abaixo para obter mais informações sobre o que é a PATHvariável de ambiente, quais .desktoparquivos são e como encontrar um programa específico usando vários comandos linux.

Resposta original:


Não há uma resposta fácil.

/bin,, /usr/bine/usr/share

Conforme mencionado nas outras respostas, você pode encontrar a maioria dos executáveis ​​em /binou /usr/bin, e os arquivos de suporte estão instalados no /usr/share.

/usr/local e /opt

No entanto, existem mais diretórios nos quais o Ubuntu instala aplicativos. A PATHvariável, que determina onde procurar um comando digitado, pode fornecer uma pista, a minha se parece ( echo $PATHem um 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 você pode ver, alguns softwares estão instalados /usr/locale têm seu próprio diretório e bin. Outro lugar onde muitos programas estão instalados é /opt. As propriedades desses locais são explicadas pelo Padrão de Hierarquia do Sistema de Arquivos , que é uma leitura muito boa. Infelizmente, a diferença entre /opte /usr/localnão está muito bem explicada, alguém no unix stackexchange teve uma explicação mais elaborada:

  • /usr/localé um local para instalar arquivos criados pelo administrador, geralmente usando o comando make. A idéia é evitar conflitos com arquivos que fazem parte dos sistemas operacionais que seriam substituídos ou sobrescritos pelos locais de outra forma. por exemplo. /usr/bin/foofaz parte do sistema operacional e /usr/local/bin/fooé uma alternativa local,
  • /opté um diretório para instalar pacotes desmembrados, cada um em seu próprio subdiretório. Eles já são pacotes completos construídos, fornecidos por um distribuidor independente de software de terceiros. Por exemplo, someappseria instalado em /opt/someapp, um de seus comandos estaria em /opt/someapp/bin/foo[e, geralmente, um link simbólico é feito em um dos bindiretórios do diretório PATH, ou o programa é chamado a partir de um arquivo da área de trabalho (veja abaixo)].

Localizando um programa ou comando específico

.desktop arquivos

Para descobrir onde um programa específico está instalado, você pode executar várias etapas. Primeiro você precisa localizar o .desktoparquivo. Os arquivos da área de trabalho são semelhantes aos atalhos do Windows e para os aplicativos do sistema em que estão localizados /usr/share/applications. Os arquivos da área de trabalho para aplicativos disponíveis apenas para o usuário atual estão ~/.local/share/applications. Tomemos, por exemplo, o Google Chrome, que possui o arquivo da área de trabalho /usr/share/applications/google-chrome.desktope procure a linha que começa com Exec=, isso determina como iniciar o Google Chrome. Diz:

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

Então você sabe Google Chrome está em /opt.

Agora para o Mozilla Firefox, que está localizado em /usr/share/applications/firefox.desktop. Simplesmente diz

Exec=firefox %u

No começo, isso não parece ajudar muito, mas você percebe que firefoxdeve estar em um diretório que esteja na PATHvariável (provavelmente a bin), e podemos procurá-lo (veja abaixo).

Procurando comandos

Para procurar comandos que você pode usar um ou mais dos seguintes: type, whiche whereis(eu incluí um link para suas páginas de manual on-line).

  • tipo : descreve um comando e indica como seria interpretado se usado como um nome de comando. Os tipos possíveis para um comando são:

    1. alias (alias do shell)
    2. função (função shell)
    3. builtin (shell embutido)
    4. arquivo (arquivo de disco)
    5. palavra-chave (palavra reservada do shell)

    (o próprio tipo é um shell embutido, tente com type type: P)

    Executar type firefoxnos dá

    firefox is /usr/bin/firefox
    

    que é o que queríamos saber

Se um comando for um arquivo (que você verificou type), também poderá usar:

  • qual : mostra o caminho completo do comando,

    Executar which firefoxnos dá

     /usr/bin/firefox
    
  • whereis : localize os arquivos de página binário, de origem e manual de um comando.

    Executar whereis firefoxnos dá

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

Bônus

Você pode inspecionar /usr/bin/firefoxmais de perto ls -l /usr/bin/firefoxe isso fornece:

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

Parece que /usr/bin/firefoxé 'apenas' um link simbólico para o script /usr/lib/firefox/firefox.sh. Se você inspecionar o script, descobrirá que o script chama /usr/lib/firefox/firefox.
Você pode descansar em paz agora :)

Gerhard Burger
fonte
Resposta bem legal. Uma pergunta, o que é o link simbólico? É equivalente ao atalho do Windows?
Quazi Irfan
@iamcreasy thanks! Sim, eles são uma espécie de atalho, mas com a principal intenção de evitar cópias de arquivos. Os atalhos do Windows são mais comparáveis ​​a. arquivos da área de trabalho, que podem ser usados ​​para criar, por exemplo, itens do menu iniciar.
Gerhard Burger
Por que alguém usaria o arquivo .desktop em links simbólicos e vice-versa?
Quazi Irfan
1
@iamcreasy Nos arquivos .desktop, você pode adicionar informações extras, como uma descrição e um ícone (veja um exemplo aqui: standards.freedesktop.org/desktop-entry-spec/latest/apa.html ), é um arquivo 'regular' . Um link simbólico é um arquivo 'especial' que vincula apenas a outro arquivo. Eu acho isso difícil de explicar corretamente, mas talvez você possa encontrar uma resposta melhor aqui: superuser.com/questions/253935/...
Gerhard Burger
18

Não existe um diretório único equivalente exatamente à pasta Arquivos de Programas . A maneira como o Linux organiza as coisas é muito diferente do Windows.

No Windows, todo programa que instalamos recebe seu próprio diretório dentro do diretório Arquivos de Programas. Nesse diretório, outros subdiretórios são criados para diferentes tipos de arquivos. Não há estrutura fixa para subdiretórios. Os programas decidem por si mesmos como querem chamar cada diretório e onde querem colocar o quê.

Mas no Linux, quando um programa é instalado, diferentes tipos de arquivos são copiados para diferentes locais. Os executáveis ​​são copiados para / usr / bin , arquivos de biblioteca para / usr / lib , documentação para um ou mais de / usr / man , / usr / info e / usr / doc . Se houver arquivos de configuração, eles são geralmente no diretório home do usuário ou em / etc .

binW
fonte
Existe alguma razão para esse agrupamento de arquivos com base em sua finalidade e não no aplicativo ao qual os arquivos pertencem? O "estilo de agrupamento de arquivos Unix" geralmente é mais conveniente do ponto de vista do administrador do sistema?
jojman
1
Na verdade não. É uma escolha de design que eles fizeram, eu acho. Embora ele permita criar utilitários como "man", "info" ou muitos outros que dependem dessa estrutura de arquivos. Por exemplo, "man" sabe onde procurar documentação para cada comando. Se não houver uma localização padrão dos documentos, o homem não pode trabalhar.
binW
10

A C:\Program Filespasta estaria /usr/binno Ubuntu. /binparece mais C:\windows.

Na página de manual da hierarquia do sistema de arquivos :

/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.

O Ubuntu tem uma estrutura diferente do Windows. O Ubuntu coloca quase todos os aplicativos em um diretório, digamos /usr/bin. O Windows criaria uma nova pasta, por exemplo Mozilla Firefox, e acrescentaria nela configurações, executáveis, DLLs, imagens etc. O Ubuntu os divide, os executáveis ​​entram /usr/bin, a configuração em todo o sistema /etc, os objetos compartilhados /usr/lib, as imagens /usr/share, ...

Lekensteyn
fonte
5

Os 'Arquivos de Programas' do Linux estão em toda a hierarquia. Poderia ser em /usr/bin, /bin, /opt/..., ou em outros diretórios.

Acho que você encontrará algum arquivo relacionado ao seu aplicativo. Então, eu tenho uma idéia de como procurar arquivos que estão instalados na instalação do programa.

  1. Instale synapticemitindo sudo apt-get install synapticno terminal.
  2. Procure o pacote que você deseja, pesquise na entrada de texto de pesquisa.
  3. Clique com o botão direito do mouse no pacote e selecione Properties.
  4. Mover para a Installed Fileguia. O resultado é o mesmo que dpkg -L package_name.
  5. Lá você encontrará todos os arquivos instalados para o pacote.

Isso ocorre porque o linux move o arquivo instalado para os diretórios separadamente, com base em seu tipo.

  • O executável vai para /usr/binou /bin.
  • O ícone é ativado /usr/share/iconsou desativado ~/.local/share/iconspara local.
  • Aplicativo inteiro (portátil) ativado /opt.
  • Atalho geralmente ativado /usr/share/applicationsou desativado~/.local/share/applications
  • Documentação em /usr/share/doc
  • Biblioteca / módulo ativado /usr/lib

E muitos outros diretórios. (CMIIW, aceitando correção)

Abdillah
fonte
3

Nesta resposta, quando digo Unix, quero dizer Unix, assim como sistemas operacionais Unix-like.

O Ubuntu realmente não tem uma pasta de programas contendo todos os dados para cada programa. Nos sistemas operacionais Unix e Unix-like, TUDO é um arquivo, mesmo os comandos do terminal. Eles são arquivos também. A maneira como o Unix lida com programas pode ser bastante caótica e organizada ao mesmo tempo.

Os ícones dos programas são armazenados em / usr / share / icons / *, os executáveis ​​do programa geralmente são armazenados em / usr / bin, / bin e outros locais com diretórios bin (bin é obv, abreviação de binário). As bibliotecas das quais os programas dependem estão em / lib.

Portanto, você acaba não com um diretório que contém todos os dados de um programa, mas os dados do programa se espalham. Embora a princípio isso pareça muito desorganizado, ele permite o compartilhamento de itens padrão, como bibliotecas e ícones.

Graças às permissões para cada arquivo, a idéia de tudo ser um arquivo é muito brilhante para ser honesto. Isso torna o Unix MUITO mais seguro que outros sistemas operacionais.

Thomas Boxley
fonte
3

A maneira como os programas Linux e Windows são instalados é bem diferente.

O padrão comum no Windows é para um programa; ou vários programas, de um fornecedor, entre em seu próprio subdiretório em C: \ programs \ vendor ou algo semelhante.

No Linux, seus arquivos são divididos entre subdiretórios específicos, dependendo de sua função. Existem diretórios para bibliotecas, ícones, páginas de manual, arquivos de log, configuração e assim por diante. Você pode usar alguns deles, mas o sistema irá gerenciar todos eles. Eles não são acoplados, mas existem junto com arquivos semelhantes de outros programas.

Portanto, não há um equivalente real à estrutura de diretórios do Windows em uma implementação regular do Linux.

Usuário desconhecido
fonte
2

Se você instalar programas próprios, recomendo 1 pasta:

Timo
fonte
-2

Olhe nos /bin, /usr/bine qualquer outra coisa que diz bin.

cpu2
fonte