Onde o software instalado é armazenado no Linux? [duplicado]

11

Possível duplicata:
Onde está instalado um programa Linux típico

Eu sou novo no Linux e quero perguntar um pouco mais sobre pacotes.

No Windows, faço o download de um .exearquivo e o instalo. Quando instalo, defino o caminho em que desejo que esse aplicativo seja armazenado. Nessa pasta, tenho todos os arquivos necessários para o aplicativo.

No entanto, quando instalo um pacote no Linux usando yumou apt-get, não sei para onde o pacote está instalado e onde estão armazenados os arquivos necessários para esse aplicativo. Vi que a maioria das configurações está no /etcdiretório Mas por que o Linux armazena os arquivos necessários para um aplicativo em diretórios diferentes?

Alguém pode me dizer como os pacotes são instalados e onde e como eles são armazenados? E se meu entendimento sobre gerenciamento de pacotes estiver errado, corrija-me.

Comunidade
fonte
Se a sua distribuição usar rpm, você poderá rpm -q --whatprovidesencontrar o nome do pacote para um arquivo específico e, em seguida, rpm -q -adescobrir quais arquivos o pacote instalou.
David Schwartz
Com apt-get, se o pacote estiver instalado dpkg -L PKGNAME, use , se não estiver em uso apt-file list.
Thor

Respostas:

14

Muitos programas (os binários / scripts) terminam em /binou /usr/bincom outras partes em vários diretórios de configuração (geralmente em / sob etc) como você já observou.

Para qualquer comando específico, você pode verificar onde

whereis prog_name

e fornecerá algumas informações sobre onde esse comando deve ser encontrado. Você também pode tentar quais

which prog_name

Além disso, este gráfico e explicação / exemplos podem ser úteis.

Levon
fonte
1
+1 para whereis - muito útil para aqueles que são novos para o Linux
mas por que apenas a configuração salva em um diretório separado?
@KOU Não sei o histórico disso, mas poderia ser para que os programas pudessem ser atualizados sem atrapalhar as informações de configuração, pois elas estariam em um diretório diferente. Desta forma, versões diferentes poderiam usar a mesma informação de configuração (assumindo que o formato etc não foi alterado, isto é, era compatível). Estou apenas supondo aqui. Você precisaria pesquisar o histórico do sistema de arquivos Unix / Linux para obter uma resposta definitiva.
Levon
1
Não tenho certeza do histórico da decisão de colocar todos os arquivos de configuração em todo o sistema /etc/, mas ter um local central para os arquivos de configuração facilita muito o backup deles. (Imagine o apoio para cima arquivos de configuração de todo o sistema no Windows, onde eles estão espalhados por todo o sistema de arquivos e registro ...)
Li-Aung Yip
@ Li-aungYip Bom ponto
Levon
5

No Windows, principalmente nas versões mais antigas, era comum os programas armazenarem arquivos de configuração e dados não constantes em seus C:\Program Filesdiretórios. Isso é derivado de como os programas eram geralmente instalados e executados no DOS de usuário único, sem rede e sem permissão de arquivo.

Do ponto de vista da segurança, essa é uma má ideia. Locais onde o código executável reside devem ser separados dos dados modificáveis. Dessa forma, é mais fácil aplicar permissões de arquivo apropriadas para impedir a modificação de binários instalados por usuários não autorizados. Da mesma forma, os diretórios da biblioteca que podem ser atualizados separadamente dos principais executáveis ​​também devem estar em um diretório separado.

Com o advento dos aborrecimentos do Vista e do UAC, essa tradição está finalmente começando a perder seriamente a tração.

O UNIX e o Linux, sendo um sistema multiusuário desde muito cedo, tinham a tendência de separar diretórios executáveis ​​de outros diretórios muito antes, pois havia a necessidade de impedir que outros usuários, além do root, modificassem os binários instalados. Também é por isso que, /usre /sbinàs vezes até são, partições separadas - um administrador particularmente consciente da segurança pode montar essas partições somente leitura e remontá-las para leitura / gravação quando uma instalação / desinstalação precisar acontecer.

Os pacotes geralmente são instalados a partir de um gerenciador de pacotes. Existem vários gerenciadores de pacotes, como aptitude(Debian e distribuições derivadas), yum(Redhat e distribuições derivadas), pacman(esqueça que distribuição é essa ...) e outros.

O gerenciador de pacotes permite procurar repositórios, baixar, instalar, consultar e remover software, como uma sofisticada (e gratuita) "loja de aplicativos". Ele assume a responsabilidade de garantir que as dependências sejam atendidas e rastrear o que está instalado no momento.

Normalmente, o gerenciador de pacotes também permitirá as mesmas operações em um pacote baixado manualmente fora de qualquer repositório. As ferramentas também estão disponíveis se você quiser criar o seu próprio a partir do software que você criou ou compilou.

Como o pacote em si NÃO é um arquivo executável, você não precisa executar um executável não confiável, o que realmente não sabe o que faz. (O Windows finalmente está disponibilizando atualizações distribuindo .msu's em vez de .exe' - mas .msijá existem há algum tempo ...)

LawrenceC
fonte
1
Ré. pacman, é para o Arch Linux .
2

Você pode obter uma lista dos arquivos que um determinado yumpacote instala fazendo:

yum install yum-utils

Então você pode executá-lo assim:

repoquery --list yum-utils

(Obviamente, substitua "yum-utils" nesse segundo pelo nome do pacote cuja lista de arquivos você gostaria de ver.)

Para apt-get, você pode usar:

dpkg -L package-name
sblom
fonte
1

Normalmente /usr/bin, apesar de depender do aplicativo ou biblioteca específico que você está instalando.

kprobst
fonte
1

No Linux / Unix, a maioria dos programas geralmente não termina em um único diretório, mas diferentes partes dele (arquivos executáveis, arquivos de configuração, arquivos de log, documentação e outros recursos) estão espalhados pelo sistema de arquivos - geralmente por meio de ligação simbólica. O artigo da Wikipedia descreve com mais detalhes a estrutura de diretórios padrão sob uma hierarquia normal do sistema de arquivos, mostrando os diferentes diretórios e o que você pode esperar encontrar em cada um.

mgibsonbr
fonte
0

O /optdiretório é reservado para instalações do tipo Windows, onde cada pacote possui sua própria árvore de diretórios. Ninguém usa. Não sei por que; pode ser que acrescentar /opt/PACKAGE/binao seu $PATHtoda vez que você instala um pacote seja muito irritante.

Alan Curry
fonte
/optparece ser usado principalmente por pacotes de software comerciais / não livres, como o MATLAB.
Li-aung Yip
No meu Ubuntu 12.04, o Google Chrome é instalado, /optmas também o LibreOffice 3.5, que eu instalei diretamente daqui .
0

O software no Linux é um pouco diferente em paradigma do Windows ou Mac. Nesses, um executável e todos os seus arquivos de suporte são instalados em uma única pasta: o Windows normalmente os mantém c:\Program Files\program name, a Apple entra /Applications/program.app. No Linux, há uma estrutura comunitária mais ... Os binários geralmente estão dentro /usr/bin, a configuração em todo o sistema está dentro /etc, a configuração específica do usuário geralmente está em ~/.program. As bibliotecas estão disponíveis /usr/lib, os arquivos de suporte (por exemplo, obras de arte) estão frequentemente disponíveis /usr/share/program, etc. Existe até um padrão sugerindo para onde as coisas devem ir.

Os programas são geralmente instalados pelos gerenciadores de pacotes rpme dpkg; eles são pesquisados ​​e recuperados automaticamente (incluindo gerenciamento de dependências) por yume aptitude/ apt-get, respectivamente. Em um nível mais técnico, os pacotes são arquivos compactados simples (acredito que rpm e deb são ambos .tar.gz). Esses arquivos contêm um espelho das partes do sistema de arquivos da raiz para onde os arquivos vão (por exemplo, um arquivo que deveria ser instalado /usr/bin/programestará na usr/bin/programpasta apropriada dentro do pacote.

Para encontrar informações sobre um pacote específico, use o gerenciador de pacotes do seu sistema, como outros explicaram aqui.

Kevin
fonte
0

A página de hier hier pode fornecer algumas informações

AnonymousLurker
fonte
2
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada.
precisa saber é
@MaQleod Se você está preocupado que o link possa se tornar inválido, eu o vinculei apenas por conveniência. Eu poderia simplesmente escrever "man hier" em texto simples, já que você pode encontrar esta página de manual em qualquer distribuição Linux convencional, eu acho.
AnonymousLurker
2
"consulte o manual" também não é uma resposta apropriada, é um comentário. As respostas devem realmente responder à pergunta. Como isso responde à pergunta colocada? como a listagem da hierarquia é significativa? Por que o OP (ou qualquer outra pessoa) deve considerar esta resposta digna de nota? Copie as partes relevantes do link (ou página de manual) e explique por que elas são significativas no contexto da pergunta, então você terá respondido à pergunta e não feito apenas um comentário.
precisa saber é