Para garantir que as bibliotecas necessárias estejam presentes, use um sistema de compilação para empacotar o software (por exemplo, como rpm). O pacote deve conter informações sobre os requisitos (incluindo versões) e pode ser instalado por meio de um comando simples (yum no caso em questão), possivelmente por meio de um shell paralelo ou de uma ferramenta como Puppet ou CFengine.
Para o software Open Source, você pode usar o Open Build Service ( link ; apesar do URL, ele também faz RH e Debian). O próprio OBS é o Open Source, portanto você pode até executá-lo em seu site (mas a configuração pode ser complexa - nunca tentei).
O princípio básico é escrever um arquivo de especificação de RPM que contenha uma receita geral para construir o software. Se o software trouxer um sistema de criação decente (por exemplo, autotools), o arquivo de especificações consiste principalmente em uma lista de bibliotecas necessárias (geralmente sem números de versão ou apenas com requisitos mínimos) e uma chamada ao sistema de criação do software. No caso de autotools, isso seria configurado (com opções para habilitar a funcionalidade desejada) / make / make install.
Uma lista de arquivos também é necessária, mas isso pode ser mantido curto usando shell globs.
O sistema de compilação irá então instalar os pacotes necessários (digamos, libfoo-devel) e todas as suas dependências, executar a receita e criar um pacote rpm das suas listas de arquivos. As bibliotecas compartilhadas às quais o software de pacotes se vincula serão detectadas automaticamente e um requisito correspondente será inserido no rpm. Ao instalar, o yum usará esses requisitos para adicionar as bibliotecas quando você instalar o software. Um sistema de compilação adequado pode também executar muitas verificações em pacotes construídos, e. procure por avisos sérios sobre o compilador, violações da hierarquia de arquivos, permissões de arquivos suspeitos, etc.
Escrever um arquivo de especificação que será construído sem modificações em várias versões de uma distribuição (ou distribuições relacionadas, como RH e Fedora) é normalmente um pequeno trabalho extra. Com um pouco mais de trabalho, até mesmo especificações de distribuição cruzada (por exemplo, Opensuse / Fedora) podem ser feitas.