Задача: извлечь файл из архива в текущий каталог. В архиве файл находится в подкаталоге (например, ./bin/cpio в пакете cpio) Пишем: $ cat cpio*rpm | rpm2cpio | cpio --no-absolute-filenames -i "*cpio" cpio: ./bin/cpio: open: No such file or directory 484 blocks Такое впечатление что он этот параметр игнорирует.
должно помочь: cat cpio*rpm | rpm2cpio | cpio --no-absolute-filenames -id "*cpio" Но извлечения "без полных" путей от --no-absolute-filenames ожидать не стоит. Делов в том, что: `--no-absolute-filenames' Create all files relative to the current directory in copy-in mode, even if they have an absolute file name in the archive. То есть оно поможет извлечь файлы с полными путями в некоторый каталог в том случае, когда, внутри cpio, они расположены по абсолютным путям. При этом смену пути извлечения, cpio рассматривает, как смену имени файла, для чего помогает опция -r, но при это требуется интерактивный ввод нового имени файла.
sin@ прав, опции --no-absolute-filenames и --absolute-filenames предназначены для решения другой задачи. В cpio >= 2.6-alt6 я включил опцию --no-absolute-filenames по умолчанию и добавил опцию --absolute-filenames. Использование --absolute-filenames применительно к untrusted input опасно и категорически не рекомендуется.
Понял. Принял желаемое за действительное. То есть распаковывать, а дальше своими силами... Всем спасибо.