Por que existem tantos lugares para colocar um binário no Linux? Existem pelo menos estes cinco:
-
/bin/
-
/sbin/
-
/usr/bin/
-
/usr/local/bin/
-
/usr/local/sbin/
E na minha caixa do escritório, não tenho permissão de gravação para alguns deles.
Que tipo de binário vai para qual destes bin
s?
Comentários
Resposta
-
/bin
(e/sbin
) eram destinados a programas que precisavam estar em uma partição/
pequena antes da maior/usr
, etc. as partições foram montadas. Atualmente, ele serve principalmente como um local padrão para programas importantes como/bin/sh
, embora a intenção original ainda possa ser relevante para, por exemplo, instalações em pequenos dispositivos incorporados. -
/sbin
, diferente de/bin
, é para programas de gerenciamento de sistema (normalmente não usados por usuários comuns) necessários antes de/usr
ser montado. -
/usr/bin
é para programas de usuário normal gerenciados por distribuição. -
Há um
/usr/sbin
com a mesma relação com/usr/bin
porque/sbin
deve/bin
. -
/usr/local/bin
é para programas de usuário normais não gerenciados pelo gerenciador de pacotes de distribuição, por exemplo pacotes compilados localmente. Você não deve instalá-los em/usr/bin
porque futuras atualizações de distribuição podem modificá-los ou excluí-los sem aviso. -
/usr/local/sbin
, como você provavelmente pode adivinhar neste momento, é/usr/local/bin
como/usr/sbin
para/usr/bin
.
Além disso, há também /opt
que é para pacotes monolíticos de não distribuição, embora antes de serem devidamente integradas, várias distribuições colocaram o Gnome e o KDE lá. Geralmente você deve reservá-lo para pacotes de terceiros grandes e mal-comportados, como o Oracle.
Comentários
- Acho que esta resposta é um ótimo esclarecimento um conjunto comum de convenções, mas esta postagem de Rob Landley é realmente uma ótima leitura se você quiser uma visão sobre o absurdo … lists.busybox.net/pipermail/busybox/2010 -Dezembro / 074114.html
- refspecs.linuxfoundation.org/fhs.shtml para a referência canônica atual. O link de @kojiro está desatualizado e não ‘ não tem as novas especificações.
- Onde coloco uma lixeira que baixei da internet? Pela sua descrição, parece que deve ir para / usr / local / bin ou / usr / bin. / Usr / bin é algo que eu nunca devo tocar manualmente, e deixar apenas o gerenciador de pacotes brincar?
- @DidierA. coloque-o em
~/bin
e adicione esse diretório ao seu PATH como um usuário … Obrigado pela nota, excluí meu comentário seriamente desatualizado. - Encontrei o responda à primeira parte da minha pergunta aqui: superuser.com/a/238993/425838 . A precedência é baseada na ordem na variável
PATH
do sistema eecho $PATH
para mim mostra/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
, o que significa que os executáveis em/usr/local/bin
têm precedência sobre aqueles em/usr/bin
que têm precedência sobre os em/bin
.
Resposta
Eu recomendo dar uma olhada na página de manual da hierarquia do sistema de arquivos:
man hier
que também está disponível online, por exemplo: http://linux.die.net/man/7/hier . As partes relevantes foram copiadas abaixo. Dependendo do seu sistema, ele pode dizer algo diferente.
Nome
hier – descrição da hierarquia do sistema de arquivos
Descrição
Um sistema Linux típico tem, entre outros, os seguintes diretórios:
/bin
Este diretório contém programas executáveis que são necessários em um único usuário modo e para ativar ou reparar o sistema.
/sbin
Como
/bin
, este diretório contém comandos necessários para inicializar o sistema, mas que geralmente não são executados por usuários normais.
/usr/bin
Este é o diretório principal para programas executáveis. A maioria dos programas executados por usuários normais que não são necessários para inicializar ou reparar o sistema e que não são instalados localmente devem ser colocados neste diretório.
/usr/local/bin
Binários para programas locais no site.
/usr/local/sbin
Programas instalados localmente para administração do sistema.
/usr/sbin
Este diretório contém binários do programa para administração do sistema que não são essenciais para o processo de inicialização, para montagem
/usr
ou para reparo do sistema .
Comentários
- Isso não ‘ t responda à ‘ pergunta do usuário.
- A página do manual contém uma entrada para cada um dos diretórios bin, explicando o que vai para eles, que era uma das perguntas.
Resposta
O Sistema de arquivos Hierar A entrada chy Standard na Wikipedia me ajudou a responder à mesma pergunta quando eu a tinha, além de ter uma tabela muito explicativa.
Trecho dessa página 1 :
/bin Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp. /usr/bin Non-essential command binaries (not needed in single user mode); for all users. /usr/local Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share /usr/sbin Non-essential system binaries, e.g., daemons for various network-services. /sbin Essential system binaries, e.g., fsck, init, route.
1 Recuperado em 19 de junho de 2019; link permanente .
Resposta
O Os diretórios sbin
contêm programas que geralmente são apenas para administração do sistema. Programas para usuários regulares nunca devem ir para eles.
Alguns programas são necessários durante a inicialização e terminam em /bin/
ou /sbin/
. Eles devem estar disponíveis antes que os sistemas de arquivos sejam montados. Coisas como mount
e fsck
que são necessários para verificar e montar sistemas de arquivos devem estar lá.
Mais empacotados programas terminam em /usr/bin/
e /usr/sbin/
. Eles podem estar em um sistema de arquivos diferente do sistema de arquivos raiz. Em alguns casos, eles podem estar em uma unidade montada em rede.
Os programas e scripts locais pertencem a /usr/local/bin/
e /usr/local/sbin/
. Isso os identifica como claramente fora do padrão e possivelmente disponíveis apenas no local.
Para obter mais explicações, tente executar o comando man hier
que deve fornecer uma descrição da hierarquia do sistema de arquivos recomendada para sua distribuição. Você também pode querer ler sobre a Hierarquia do sistema de arquivos na Wikipedia
Comentários
- +1 Uma explicação realmente concisa se top for um pouco demais.
- ” Programas e scripts locais pertencem a / usr / local / bin / e / usr / local / sbin / ” – Você quer dizer programas locais como ” nem um pouco parte do sistema operacional, mas decidi instalar e deseja usá-los “?
Resposta
Na década de 1970, o UNIX tinha todos os executáveis oficiais em /bin
e /usr/bin
era um local abaixo dos diretórios iniciais dos usuários (por exemplo, /usr/dmr
) que estava disponível para qualquer usuário armazenar seus próprios binários que poderiam ser do interesse de outros também.
O resultado disso aberto /usr/bin
era um depósito de lixo de software não documentado e, portanto, Stephen Bourne foi te um script cron que verifica se há novos binários todas as noites e remove todos os binários que não têm uma documentação ou que foram atualizados sem atualizar sua documentação também.
No final dos anos 1970, /usr/bin
foi integrado à distribuição de base do sistema operacional e as pessoas começaram a usar /usr/local/bin
para o propósito da abertura anterior /usr/bin
.
Depois de um tempo, os administradores de sistemas usaram /usr/local/bin
para armazenar software não local importado da rede (por exemplo, a USENET) e como as empresas UNIX não gostavam de repetir o mesmo erro com /usr/bin
novamente, houve uma conferência de hierarquia de sistema de arquivos por volta de 1987, onde todas as empresas UNIX concordaram em desistir id = “5dd614bde0”>
e usar/opt/<vendor>/bin
em seu lugar.
Infelizmente, as distros do Linux não seguiram essa decisão …
Comentários
- Embora muito interessante, nada disso até tenta responder à pergunta feita, que não era sobre
/opt
e não sobre UNIX, mas sobre Linux. É como responder ” Por que os carros têm 4 rodas? ” com ” As bicicletas têm 2! Infelizmente, os carros não ‘ t. ” o que não ‘ ajuda o OP a entender por quê os carros têm 4. - Se você não conseguir usar a explicação dada como uma explicação para o background do Linux e o fato de que o Linux gosta de imitar o UNIX, pode estar faltando o background necessário.
- Interessante, mas algo que me confunde e que talvez também seja apenas histórico. Hoje, fazer download de um bin online e de um bin da empresa não ‘ é muito diferente. Se Joe Blow faz um programa e eu faço download dele, por que não colocá-lo em / opt / JowBlow / bin em vez de / usr / local / bin. É uma questão de provedor confiável versus não confiável? Não ‘ não parece fazer sentido para mim.
- Eu gostaria de ter sabido disso ‘ exato ‘ história alguns anos atrás. a) Eu me perguntei por que o AIX evitou / usr / local, usa / opt / IBM e / opt / ibm e a bullfreeware usa / opt / freeware – e por que DEVERIA ter usado um caminho diferente (não apenas / opt / * sbin). Quanto à semirrelevância com Linux – melhores ferramentas GNU – o padrão –prefix nas ferramentas automáticas é / usr / local. É uma pena que autotools (automake, autoconf, etc. não seguem …). Mas todos nós sobrevivemos e aprendemos onde os distribuidores. Só desta vez, TODOS OUÇAM!
/usr/sbin/
.~/bin/
para coisas pessoais./bin
foi mesclado com/usr/bin
e/sbin
foi mesclado com/usr/sbin
– consulte O caso da fusão / usr ./usr/local/bin
?