reconstrução simulada srpm calcula automaticamente dependências indesejadas

3

Ao construir uma srpm com mock e depois reconstruí-la para criar a simulação de rpm, gera automaticamente algumas dependências. Isso é perfeitamente aceitável na maioria dos casos, mas como o que eu estou tentando construir já traz tudo o que é necessário, eu não quero esse comportamento. O requisito automático que eu não consigo resolver é libffmpeg.so () (64 bits) - mas como eu disse, ele é incluído como um arquivo.

Eu já tentei (no arquivo spec)

  • % define __requires_exclude libffmpeg.so
  • AutoReq: no | 0
  • AutoReqProv: no | 0

tudo o que precede, com e sem especificar um requisito manualmente (por exemplo, coreutils).

Comandos usados:

mock -r epel-7-x86_64 --buildsrpm --no-clean --no-cleanup-after --spec="${RPM_NAME}.spec" --source="${WORKING_DIR}" --resultdir="${WORKING_DIR}" -v
mock -r epel-7-x86_64 --rebuild --no-clean --no-cleanup-after "${WORKING_DIR}"/${RPM_NAME}*.src.rpm --resultdir="${WORKING_DIR}" -v
    
por derdeagle 08.09.2016 / 08:50

1 resposta

2

Isto não é estritamente relegado a Mock. Mock usa internamente o rpmbuild e esta dependência automática é calculada pelo rpmbuild.

Se você colocar libffmpeg.so no caminho do sistema, você pode simplesmente (o que deve ser feito automaticamente btw):

Provides: libffmpeg.so()(64bit)

Mas se não estiver no caminho do sistema, você deve filtrar apenas o Exigir. Aqui está o guia completo: link

Eu quero apontar duas coisas em que você pode cometer erros:

1) Não é cumulativo. Apenas última macro é usada e substitui a anterior.

2) É uma expressão regular que precisa corresponder a string inteira. Ou seja libffmpeg.so não irá corresponder "libffmpeg.so () (64bit)". Então você deve:

%global __requires_exclude ^libffmpeg\.so.*$

Além disso, você deve adicionar:

Provides: bundled(<libname>) = <version>
    
por 14.09.2016 / 09:25