Isso ajuda a entender um pouco sobre como o RPM funciona aqui.
O RPM adicionará automaticamente requisitos para classificações específicas de arquivo que ele conhece (por exemplo, bibliotecas compartilhadas ELF, #! scripts, etc):
O que está acontecendo aqui é que alguns dos conteúdos da carga foram coletados com requisitos que não são empacotados:
/home/rpmbuild/python/Python-2.6.4-root/usr/bin/python2.6
/usr/local/bin/python2.6
Podemos verificar isso executando rpmbuild -bi Python.spec
para executar o build até o estágio de instalação. Com base nas informações fornecidas acima, você pode pesquisar arquivos:
find /home/rpmbuild/python/Python-2.6.4-root/ -type f -exec grep \ /home/rpmbuild/python/Python-2.6.4-root/usr/bin/python2.6
Eu diria que você está olhando:
/home/rpmbuild/Python-2.6.4-root/usr/bin/python2.6-config
para o arquivo que tem um shebang que se refere ao buildroot completo e um monte de scripts que se referem a /usr/local/bin/python2.6
O RPM não está fazendo nada de errado aqui, e os detalhes do caminho certo para consertar isso geralmente serão específicos para a compilação do pacote que você está construindo.
Uma abordagem para corrigir isso seria definir AutoProvReq: no
no preâmbulo do arquivo SPEC, por exemplo, diretamente após Group: Python
. Isso deve dar a você um RPM instalável, mas você poderia argumentar que não está aproveitando ao máximo o modelo de dependência do RPM e que você teria caminhos incorretos em alguns dos seus arquivos de pacote Python.
Vamos ver especificamente a compilação do Python e tentar entender o que poderíamos fazer para corrigir isso de uma maneira mais abrangente.
Sua seção% install usa a macro% makeinstall que se expande por padrão como:
[pnasrat@centos5 ~]$ rpm -E '%makeinstall'
/usr/bin/make \
prefix=/usr \
exec_prefix=/usr \
bindir=/usr/bin \
sbindir=/usr/sbin \
sysconfdir=/etc \
datadir=/usr/share \
includedir=/usr/include \
libdir=/usr/lib64 \
libexecdir=/usr/libexec \
localstatedir=/var \
sharedstatedir=/usr/com \
mandir=/usr/share/man \
infodir=/usr/share/info \
install
Para referência, eu costumo consultar o Fedora upstream SPEC , que é muito mais complicado, mas pode ser feito para construir (com alguma modificação e um patch para versões de autotools IIRC) um pacote python26 paralelo. Eu não vou entrar em detalhes sobre isso agora, mas se olharmos como eles instalam a linha chave é:
make install DESTDIR=%{buildroot}
Eu recomendo strongmente que você faça isso em vez de desabilitar o AutoProvReq. Como Python é uma compilação baseada em libtool que provavelmente é melhor que a macro% makeinstall como você já configurou o prefixo. Isso parece fazer a coisa certa inspecionando aqui. Observe que, se você estiver reconstruindo com essa alteração, também desejará adicionar:
%clean
rm -rf $RPM_BUILD_ROOT
E deseja uma linha de rm semelhante no início da seção %install
. Isso tudo parece funcionar para mim:
[pnasrat@centos5 RPMS]$ rpm --test -ivh x86_64/Python-2.6.4-1.x86_64.rpm
Preparing... ########################################### [100%]
Pode valer a pena usar um pacote python2.6 fornecido em outro lugar, acredito que o IUSCommunity forneça pacotes, como documentado aqui - link . Estes são provavelmente muito mais próximos dos pacotes do fedora.