Qual é o equivalente do Linux a C: \ Arquivos de Programas?

64

Entendo que no Windows, assim como no Linux e Unix, um programa | aplicativo | software pode ser instalado em qualquer diretório. Além disso, se os pacotes forem instalados usando o sistema de empacotamento da distribuição, os arquivos serão colocados no local correto.

Mas, às vezes, uma instalação de software solicita um caminho para colocar arquivos. No caso de uma distribuição Linux, onde fica esse local padrão ( C:\Program Filesou C:\progra~1equivalente)? É diferente para várias distribuições? Se sim, onde isso seria para RHEL, Susee Ubuntu?

Thomas
fonte

Respostas:

60

O Projeto de Documentação do Linux tem uma descrição da hierarquia do sistema de arquivos do Linux, na qual eles explicam as diferentes pastas e seu significado (parcialmente histórico).

Como o xenoterracide já apontou /bine /optsão os diretórios padrão que podem ser comparados aos "Arquivos de Programas" no Windows.

/bincontém vários comandos úteis que são úteis tanto para o administrador do sistema quanto para usuários não privilegiados. Ele geralmente contém os escudos como bash, csh, etc .... e comandos como comumente usado cp, mv, rm, cat, ls.

( citado por TLDP )

/opté reservado para todos os pacotes de software e complementos que não fazem parte da instalação padrão. Por exemplo, os pacotes StarOffice, Kylix, Netscape Communicator e WordPerfect são normalmente encontrados aqui.

( citado por TLDP )

Axel Knauf
fonte
9
/ Opt não é usado apenas para pacotes que não estão contidos nos repositórios? As pastas de aplicativos do inkscape, gimp, rhythmbox etc. estão localizadas em / usr / share. Isso não seria o equivalente?
C76c3r8c42b347r8
5
Veja linuxfoundation.org/en/FHS para obter informações mais recentes sobre a hierarquia do sistema de arquivos (FHS). (Observação: o site está desativado no momento, mas deve voltar em breve).
Jw013
@ Toxicbits: Pelo menos no Gentoo no / opt existem pacotes binários - especialmente aqueles que não podem ser instalados no / usr devido à hierarquia fora do padrão do sistema de arquivos.
Maciej Piechotka
TLDP parece ótimo! Bem, em uma nota lateral; a primeira vez que vi o TLDP, pensei: "por muito tempo não ... atingiu o pico? o quê?"
Ege Özcan
3
Isto está incorreto. / bin contém apenas programas executáveis. O diretório Arquivos de Programas do Windows contém um subdiretório para cada aplicativo instalado, que contém todos os executáveis, dlls, arquivos de dados e tudo o mais necessário / enviado com o aplicativo.
Psr # 9/12
45

Não há equivalente direto. A estrutura de diretórios é muito diferente. No Windows, você tem um único diretório para cada pacote / software instalado que contém todos os arquivos relacionados a (por exemplo C:\Program Files\MyProgram). No Linux, cada software é "disperso" em muitos diretórios, de acordo com o tipo de arquivo e alguma outra regra.

Como exemplo, podemos examinar onde diferentes arquivos relacionados ao xscreensaverprograma estão instalados:

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

Não se preocupe, geralmente quando um instalador pergunta onde instalar para, a resposta correta é um dos seguintes: /, /opt, /usr,/usr/local

Como você pode ver, praticamente todos os arquivos de (1) xscreensaversão instalados de /usracordo com uma regra simples: executável em /usr/bin, páginas de manual em /usr/share/man, documentação em /usr/share/doc/packages/PROGRAMNAMEe assim por diante.

Quando um instalador solicita uma instalação prefix, geralmente ele deseja agora o caminho base sob o qual instalar o programa. No meu xscreensaverexemplo, é /usr.

Como regra simples: /deve conter apenas o programa necessário para inicializar o sistema (as C:\windows\system32), /usr/localdeve conter os programas necessários apenas nesse computador exclusivo, /opt(2) todos os programas opcionais que possuem estrutura de diretório não padrão e /usrtodo o software padrão .

De qualquer forma, existe um padrão que define todas essas regras em detalhes: Padrão de Hierarquia do Sistema de Arquivos

(1) os arquivos de configuração em todo o sistema devem residir em /etc

(2) bastante obsoleto no Linux

andcoz
fonte
/opté preferido para software de terceiros em vez de /usr/localpor algum tempo.
Steve-o
7
Apenas uma explicação, /usr/shareé chamada "compartilhamento" porque é compartilhada entre diferentes arquiteturas (documentação, scripts, imagens), enquanto /usr/lib*é para arquivos dependentes da arquitetura (e não executáveis, quais /usr/bin).
Eudoxo
12

Ususually, /bin, /usr/bin, /usr/local/bin, ou /opt/bin. Penso /usr/bine /opt/binsou o mais próximo dos Arquivos de Programas, porque geralmente são para binários não críticos ao sistema que são instalados pelo administrador do sistema, embora, diferentemente do Windows, ambos contenham programas instalados com um gerenciador de pacotes. Onde /usr/local/biné para software não distribuído em pacote. /biné para binários críticos do sistema, como /bin/sh.

xenoterracida
fonte
por que quatro opções? /bin, /usr/bin, /usr/local/binOu /opt/bin. Não há um local padrão? O motivo pelo qual pergunto é porque estou instalando o software em algumas VMs e o local padrão leva para qual partição já possui o maior espaço. Desejo alterar o espaço da partição para o diretório em que o software costuma ir e não ter o software colocado de maneira diferente em todas as VMs.
Thomas
11
o padrão especifica vários locais idk por que o nome do caminho está inativo, mas aqui está um link para o FHS em cache, que entra em mais definição sobre o que são e realmente depende muito do que você está instalando. Também RHEL, Suse e Ubuntu são diferentes, portanto, eles podem colocar a mesma coisa em locais ligeiramente diferentes. /optpor exemplo, geralmente é usado para software proprietário.
Xenoterracide
Geralmente também ... normalmente esses estão todos na mesma partição ... às vezes /usr/é uma partição separada.
Xenoterracide
11
Algumas pessoas (por exemplo, o projeto Hurd) argumentam que a discriminação /bine /usr/biné obsoleta agora; historicamente, o material crítico de sistema estaria em /bin, /lib... (diretamente na raiz), enquanto /usr(com /usr/bin, /usr/lib...) seria montado mais tarde (talvez através da rede), não sendo necessário para a funcionalidade básica do sistema.
Eudoxo
11
@ Thomas, /optnão deve sair. Algumas pessoas pensavam no passado que era uma boa ideia ter alguns aplicativos em um local diferente de todos os outros aplicativos. /binestá na partição raiz. Como em algum sistema, o espaço na partição raiz é limitado, os binários não essenciais (ou seja, todos os aplicativos do usuário) foram movidos para /usr/bin.
Janeiro
8

Dê uma olhada na man hier"Descrição da hierarquia do sistema de arquivos".

vasily-vm
fonte
3

Como outros já apontaram, os programas instalados através do gerenciador de pacotes estão espalhados por vários diretórios. Enquanto o binário normalmente é encontrado /usr/bin, os arquivos de configuração em todo o sistema estão presentes /etce assim por diante.

Se um aplicativo não for instalado via gerenciador de pacotes, os arquivos deverão ser instalados em um local em que não interfiram no gerenciador de pacotes. Este lugar é /usr/local.

Se você for solicitado para um caminho de instalação, a escolha mais comum seria /usr/local/appname

Jan
fonte
3

Digite echo $PATHseu terminal para ver o (s) caminho (s) que o shell procurará para encontrar um comando. Ele procura um arquivo na ordem em que é impresso.

Jaseem
fonte
11
Isso não responde ao que o OP pediu.
Francesco Turco
1

Bem, você não encontrará todas as suas soluções /bine sbinporque elas contêm principalmente comandos do sistema (ou seja, os comandos usados ​​pelo sistema).

/usr/binpode ser idealmente chamado "Program Files"de mundo unix. Em relação a /optpouquíssimos pacotes optarem por usar esse local para instalação, o mesmo se aplica aos pacotes que usam /etc/ou /varcomo locais

pankajdoharey
fonte