saída de piping de curl para rpm2cpio

0

Eu baixo um monte de srpms para vasculhar, eu costumava passar por uma abordagem longa,

root@server$ curl rpm -o file.rpm
root@server$ rpm2cpio file.rpm | cpio -id

mas isso deixa para trás um file.rpm feio, então eu tentei um único pipeline

root@server$ curl rpm | rpm2cpio - | cpio -id

De acordo com as saídas curl manpage curl para stdout por padrão e a página man rpm2cpio diz que, se o único argumento for '-', ele lerá de stdin.

No entanto, continuo recebendo erros:

error: rpm2cpio: headerRead failed: hdr blob(23176): BAD, read returned 2696
error reading header from package
cpio: premature end of archive
  0 5468k    0 13257    0     0  21912      0  0:04:15 --:--:--  0:04:15 29791
curl: (23) Failed writing body (379 != 1348)

se eu tentar colocar o arquivo baixado no pipeline, em vez de usar o curl, ele funciona.

Agora eu sei que há várias maneiras de contornar isso, e quando eu posso ser incomodado, eu provavelmente escreverei isso. Eu estava curioso para saber por que o rpm não gosta do rpm produzido pela curvatura.

Alguma idéia?

    
por peteches 21.01.2013 / 10:06

1 resposta

-1

Acontece que tanto o curl quanto o wget enviam um monte de outras coisas para o stdout, bem como o arquivo que está sendo recuperado, daí os erros quando o rpm2cpio é chamado no fluxo.

Usar explicitamente o sinalizador -o - remove esse material extra e funciona bem agora.

    
por 11.02.2013 / 10:32

Tags