RHEL Satellite Server 5.5 e problema de sincronia EPEL (gzip vs. bz2 com manifest.xml)

1

O cliente está preso no RHEL Satellite Server 5.5 (Way EOL) e executa o EPEL como um canal filho. Por muito tempo não atualizado. Outras variáveis, Python 2.6, Redhat 6.9

Mas ao tentar atualizar o repo EPEL (spacewalk-repo-sync) ele falha no final com um erro gzip (arquivo não um arquivo gzipado) O manifesto para epel é bz2 (updateinfo.xml.bz2). (Eu editei o manipulador de erro em gzip.py para despejar o nome do arquivo).

Veja referências ao googling, mas não há soluções limpas ou soluções. (ao lado de atualizar o Satellite, que não é uma opção no momento).

Alguma ideia? Um repositório diferente que usa o gzip, talvez? Apenas um pouco preso aqui e não ficaria surpreso se eu estivesse sendo míope.

Funciona bem com os canais padrão IUS e Redhats.

Obrigado.

    
por IGotAHeadache 09.08.2017 / 22:12

2 respostas

2

O repo EPEL contém alguns arquivos xml compactados. Sua versão envelhecida e cansada do Satellite não entende essas complexidades modernas.

Erro conhecido. Veja Bug 970315 - RFE: spacewalk-repo-sync não suporta repositórios yum contendo arquivos xml compactados bz2

Tente fazer o backport da correção para sua instância do Satellite como o colega referenciado no bugzilla fez? Aqui está o commit, de 4 anos atrás , parece muito fácil de atualizar.

    
por 09.08.2017 / 23:01
2

Eu executo o spacewalk 2.2 em um ambiente RHEL6 que consiste em ~ 700 vms. Eu precisava modificar o do ahmedsajid para trabalhar com os repositórios que eu precisava, incluindo o EPEL. Minha versão está disponível aqui .

Estou baixando todos os repositórios localmente para o meu servidor do Spacewalk e apontando o repositório do passeio espacial para um diretório público via Apache. Quando o reposync estiver completo, eu posso manipular o updateinfo.xml da EPEL conforme necessário, para que o passeio espacial reconheça o formato:

set -o pipefail
if ls $REPO_DIR/$REPO/*updateinfo.xml.gz 2>/dev/null | tail -n 1 ; then
  echo "updateinfo.xml.gz found"
  gunzip -c $(ls -rt $REPO_DIR/$REPO/*updateinfo.xml.gz | tail -n 1) > $REPO_DIR/$REPO/updateinfo.xml
else
  echo "updateinfo.xml.gz not found"
  file=$(curl -s https://dl.fedoraproject.org/pub/epel/6Server/x86_64/repodata/ | grep "updateinfo.xml.bz2" | cut -d'"' -f6)
  echo "Downloading EPEL $file"
  wget -q -P $REPO_DIR/$REPO/ https://dl.fedoraproject.org/pub/epel/6Server/x86_64/repodata/$file
  bunzip2 -c $(ls -rt $REPO_DIR/$REPO/*updateinfo.xml.bz2 | tail -n 1) > $REPO_DIR/$REPO/updateinfo.xml
fi

Depois disso, executo o spacewalk-repo-sync nos canais que preciso (apenas um para mim).

Está sujo (agora), mas funciona. Eu defini isso em crontab para executar todas as noites em torno de 01:00. A sincronização inicial pode demorar um pouco se você incluir todos os seus repositórios. Você poderia reduzir isso para lidar somente com EPEL, se necessário.

Espero que ajude.

    
por 09.08.2017 / 23:34