Я загружаю много srpms, чтобы порыться, я обычно проходил долгий путь,

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

но это оставляет после уродливого file.rpm, поэтому я попробовал один конвейер

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

В соответствии с man-страницей curl curl по умолчанию выводит в stdout, а в man-странице rpm2cpio говорится, что если единственным аргументом является '-', то он будет читать из stdin.

Однако я продолжаю получать ошибки:

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)

если я попытаюсь загрузить загруженный файл в конвейер, вместо использования curl, это сработает.

Теперь я знаю, что есть несколько способов обойти это, и когда я буду обеспокоен, я, вероятно, напишу это. Мне было просто любопытно, почему rpm не нравится rpm, выводимый curl.

Есть идеи?

1 ответ1

-1

Оказывается, что как curl, так и wget отправляют кучу других вещей в stdout, а также извлекаемый файл, отсюда и ошибки при вызове rpm2cpio в потоке.

Явно используя флаг -o - удаляет этот лишний материал, и теперь он работает нормально.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .