onde colocar binários para que eles estejam sempre no caminho e possam ser encontrados facilmente

9

Estou fazendo alguns binários, scripts, etc, que quero instalar facilmente (usando meu próprio rpms). Desde que eu os quero acessíveis para todos, minha intuição seria colocá-los em / usr / bin;

  • não há necessidade de alterar o PATH

no entanto; meus executáveis agora desaparecem em um conjunto de todos os outros; Como posso encontrar de volta todos os executáveis que eu coloquei lá de uma maneira fácil? Eu estava pensando em:

  • um subdiretório em / usr / bin (sei que não posso fazer isso; só para ilustrar meu pensamento)
  • outro diretório (/ opt / myself / bin) e vinculando cada executável a / usr / bin (muito trabalho)
  • outro diretório (/ opt / myself / bin) e vinculando o diretório a / usr / bin (isso é possível?)

qual seria a "melhor maneira, mais compatível com linux" para fazer isso?

EDIT: tivemos uma discussão sobre isso na empresa e criamos essa opção abaixo do ideal: colocar binários em / usr / bin / company com um link simbólico de / usr / bin. Eu não estou muito feliz com essa solução (continuação da discussão)

    
por Chris Maes 02.04.2014 / 14:26

3 respostas

7

Se você agrupar seus binários em seus próprios RPMs, será fácil obter uma lista do que eles são e de onde eles foram instalados.

Exemplo

$ rpm -ql httpd| head -10
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
/etc/httpd/conf.modules.d/00-base.conf

Eu gostaria de sugerir colocar seus executáveis em /usr/bin ou /usr/local/bin e criar seu próprio RPM. É bastante trivial fazer isso e, ao gerenciar sua implantação de software usando um RPM, você poderá rotular um pacote com um número de versão, facilitando ainda mais o gerenciamento de configuração de seu software à medida que você o implanta.

Determinando quais RPMs são "meus"?

Você pode construir seus RPMs usando algumas informações conhecidas que poderiam ser acordadas antes de fazer o prédio. Eu costumo construir pacotes em sistemas que são de propriedade de meu domínio, então é trivial encontrar RPMs simplesmente pesquisando através de todos os RPMs que foram construídos no host X.mydom.com.

Exemplo

$ rpm -qi httpd
Name        : httpd
Version     : 2.4.7
Release     : 1.fc19
Architecture: x86_64
Install Date: Mon 17 Feb 2014 01:53:15 AM EST
Group       : System Environment/Daemons
Size        : 3865725
License     : ASL 2.0
Signature   : RSA/SHA256, Mon 27 Jan 2014 11:00:08 AM EST, Key ID 07477e65fb4b18e6
Source RPM  : httpd-2.4.7-1.fc19.src.rpm
Build Date  : Mon 27 Jan 2014 08:39:13 AM EST
Build Host  : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

Esta seria a linha Build Host dentro dos RPMs.

O uso de / usr / bin / company?

Eu provavelmente desestimularia o uso de um local como esse. Principalmente porque requer que todos os seus sistemas tenham seu $PATH aumentado para incluí-lo e não é padrão. Personalizar as coisas sempre foi um "direito de passagem" para todos os administradores wannabee do Unix, mas eu sempre desanimo, a menos que seja absolutamente necessário.

O maior problema com as personalizações é que elas se tornam um fardo para a manutenção do ambiente e para a apresentação de novas pessoas sobre como usar seu ambiente.

Posso apenas obter uma lista de arquivos do RPM?

Sim, você pode conseguir isso, mas será necessário duas chamadas para o RPM. O primeiro irá construir uma lista de pacotes que foram construídos no host X.mydom.com. Depois de obter essa lista, você precisará chamar novamente o RPM consultando os arquivos pertencentes a cada um desses pacotes. Você pode conseguir isso usando este forro:

$ rpm -ql $(rpm -qa --queryformat "%-30{NAME}%{BUILDHOST}\n" | \
    grep X.mydom.com | awk '{print $1}') | head -10
/etc/pam.d/run_init
/etc/sestatus.conf
/usr/bin/secon
/usr/bin/semodule_deps
/usr/bin/semodule_expand
/usr/bin/semodule_link
/usr/bin/semodule_package
/usr/bin/semodule_unpackage
/usr/sbin/fixfiles
/usr/sbin/genhomedircon
    
por 02.04.2014 / 18:15
4

Uma sugestão óbvia é nomear seus binários ou seus pacotes de uma maneira especial. Então, por exemplo, você poderia prefixar com cm- , por suas iniciais, conforme determinado neste post. Se você estiver instalando o rpms, será necessário entrar em /usr/bin (se eles forem executáveis no nível do usuário), de acordo com o FHS. Eles não devem entrar em /usr/local/bin , por exemplo. Isso é apenas para instalações locais.

Para registro, não acho a idéia de colocar binários em um diretório especial e vinculá-los de maneira alguma atraente, embora eu suponha que essas coisas sejam feitas às vezes. Tenha em mente também que, se você precisa descobrir quais binários pertencem a qual pacote, basta consultar o sistema de empacotamento.

    
por 02.04.2014 / 17:23
2

Binários que não fazem parte do sistema ou distribuição geralmente estão em

/usr/local/bin

o diretório geralmente está no padrão $PATH , para que seus binários sejam encontrados.

    
por 02.04.2014 / 14:37