/ usr / bin vs / usr / local / bin no Linux

Por que existem tantos lugares para colocar um binário no Linux? Existem pelo menos estes cinco:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /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

  • Você esqueceu /usr/sbin/ .
  • E ~/bin/ para coisas pessoais.
  • Existem menos lugares hoje em dia, desde /bin foi mesclado com /usr/bin e /sbin foi mesclado com /usr/sbin – consulte O caso da fusão / usr .
  • @Calmarius, O quê? você não deve ‘ usar /usr/local/bin?
  • @Pacerier ~ / bin é apenas para o usuário atual. Por exemplo, em servidores Linux multiusuário em que você não é um administrador que ‘ é a única maneira de ” instalar ” coisas para você.

Resposta

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

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

  3. /usr/bin é para programas de usuário normal gerenciados por distribuição.

  4. Há um /usr/sbin com a mesma relação com /usr/bin porque /sbin deve /bin.

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

  6. /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 e echo $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>/binem 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!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *