Provavelmente, é melhor determinar em que pacotes essas bibliotecas compartilhadas correspondem e usar essa lista de pacotes para instalar via yum na segunda máquina. Ao fazer isso, você receberá atualizações quando o yum as encontrar.
De improviso, você pode não querer fazer isso se:
- a segunda máquina não tem acesso à rede ou
- para fins de teste, você deseja duplicar a configuração de uma máquina um pouco desatualizada (onde o yum não tem mais essas versões de pacote específicas disponíveis).
A coleta das informações do pacote é feita usando rpm -qf
para cada arquivo, por exemplo,
rpm -qf /usr/lib64/libfreebl3.so
que lhe dará o pacote e sua versão - informações suficientes para instalar o mesmo pacote usando o yum em outra máquina.
Se você distribuir bibliotecas compartilhadas, também deve estar ciente de que elas podem depender de arquivos de configuração (incluindo aqueles que seriam instalados em /etc/ld.so.conf.d
). Você pode encontrar os arquivos que fazem parte do mesmo pacote usando rpm -ql
, por exemplo,
rpm -ql $(rpm -qf /usr/lib64/libfreebl3.so)
Claro que você terá alguns duplicados. Além disso, essas bibliotecas podem depender de outros pacotes (com seus próprios arquivos de configuração) que não são aparentes. Nesse caso, rpm -qR
ajuda , mas é necessário algum trabalho para ver que você tem os arquivos necessários.
Trabalhando na lista de bibliotecas:
ldd Xvfb | grep '/usr/lib64/'
você pode fazer uma lista dos pacotes por
ldd Xvfb | grep '/usr/lib64/' | xargs rpm -qf
e obtenha uma lista correspondente de arquivos
ldd Xvfb | grep '/usr/lib64/' | xargs -n 1 rpm -qf | xargs -n 1 rpm -ql
e tar :
tar czf /tmp/blob.tar.gz $(ldd Xvfb | grep '/usr/lib64/' | xargs -n 1 rpm -qf | xargs -n 1 rpm -ql)
embora você queira lançar em um estágio com sort -u
para filtrar pacotes duplicados. rpm
aceitará vários pacotes em algumas linhas, mas não em outras, por isso usei a opção -n 1
apenas para estar seguro (r).
Se, como sugerido, você quer apenas os arquivos da biblioteca, isso pode ser feito assim:
#!/bin/sh
mkdir /tmp/xvfb
cd /usr/lib64
tar czf /tmp/xvfb/Xvfb.tar.gz $(ldd /usr/bin/Xvfb | grep '/usr/lib64/' | cut -d '=' -f1 | awk '{print $1}' | while read IN; do OUT='readlink $IN'; cp -rf $OUT /tmp/xvfb/$IN; echo /tmp/xvfb/$IN; done)
enquanto a abordagem que sugeri usando rpm -q
fornecerá os links simbólicos para os arquivos. (Em uma verificação rápida com o CentOS6, não há arquivos ldconfig, mas sim muitos arquivos /usr/share
que você filtraria).