Possível duplicata:
Onde está instalado um programa Linux típico
Sou novo no Linux e quero perguntar um pouco mais sobre pacotes.
No Windows, faço o download de um .exe
arquivo e o instalo. Quando instalo, defino o caminho onde quero 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 yum
ou apt-get
, não sei onde o pacote está instalado e onde os arquivos necessários para esse aplicativo estão armazenados. Vi que a maioria das configurações está no /etc
diretó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 são armazenados? E se meu entendimento sobre gerenciamento de pacotes estiver errado, corrija-me.
Responder1
Muitos programas (os binários/scripts) terminam em /bin
ou /usr/bin
com outras partes em vários diretórios de configuração (geralmente em/under etc
), como você já observou.
Para qualquer comando específico, você pode fazer o checkoutOnde é
whereis prog_name
e lhe dará algumas informações sobre onde esse comando pode ser encontrado. Você também pode tentarqual
which prog_name
Além disso, issográfico e explicação/exemplospode ser útil.
Responder2
Você pode obter uma lista dos arquivos que um determinado yum
pacote 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
Responder3
No Windows, principalmente nas versões mais antigas, era comum que os programas armazenassem arquivos de configuração e dados não constantes em seus C:\Program Files
diretórios. Isso é derivado de como os programas geralmente eram instalados e executados em DOS de usuário único, sem rede e sem permissão de arquivo.
Do ponto de vista da segurança, esta é uma má ideia. Os locais onde reside o código executável devem ser separados dos dados modificáveis. Dessa forma, é mais fácil aplicar permissões de arquivo apropriadas para evitar a modificação de binários instalados por usuários não autorizados. Da mesma forma, os diretórios de bibliotecas que podem ser atualizados separadamente dos executáveis principais 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 força.
UNIX e Linux, sendo um sistema multiusuário desde muito antes, tiveram a tendência de separar diretórios executáveis de outros diretórios muito antes, uma vez que havia a necessidade de evitar que outros usuários além do root modificassem os binários instalados. É também por isso que /usr
às /sbin
vezes são partições separadas - um administrador particularmente preocupado com a 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 qual distro é essa...), e outros.
O gerenciador de pacotes permite navegar em repositórios, baixar, instalar, consultar e remover software, como uma "loja de aplicativos" sofisticada (e gratuita). Ele assume a responsabilidade de garantir que as dependências sejam atendidas e rastrear o que está instalado atualmente.
Normalmente, o gerenciador de pacotes também permitirá as mesmas operações em um pacote que você baixou manualmente fora de qualquer repositório. Ferramentas também estão disponíveis se você quiser criar o seu próprio software a partir de software que você mesmo 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 que você realmente não sabe o que faz. (O Windows está finalmente chegando com atualizações distribuindo .msu
's em vez de .exe
's - mas .msi
já existe há algum tempo...)
Responder4
No Linux/Unix a maioria dos programas geralmente não termina em um único diretório, mas diferentes partes dele (executáveis, arquivos de configuração, arquivos de log, documentação, outros recursos) estão espalhadas pelo sistema de arquivos — geralmente por meio de links simbólicos. OArtigo da Wikipédiadescreve com mais detalhes a estrutura de diretórios padrão em uma hierarquia normal de sistema de arquivos, mostrando os diferentes diretórios e o que você pode esperar encontrar em cada um.