bashshellextractrpmcpio

Extract RPM to directory other than current directory


I am needing to run:

rpm2cpio mypackage.rpm | cpio -idmv

However, I need the output to be in a different directory. Is there a more elegant solution than doing

mv <output> <to/other/directory>

after performing the extraction?


Solution

  • Since cpio is just reading from standard input, you can change to another directory before running it:

    rpm2cpio mypackage.rpm | (cd /to/other/directory; cpio -idmv)
    

    This is a general solution that will work with a variety of tools. The cpio command has a --directory (-D) option that will accomplish the same thing:

    rpm2cpio mypackage.rpm | cpio -D /to/other/directory -idmv