我想备份系统中安装有关键字内核的所有RPM .

到目前为止,这就是我所拥有的:

RPMS=$(rpm -qa | grep kernel-firmware)

echo "$RPMS" | xargs -I '{}' rpm -ql '{}' | xargs tar cfz "$RPMS".tgz

这仅适用于一个包,效果很好 . 当我grep内核时,事情不能按预期工作 .

我希望每个档案都包含原始包裹的名称 .

EDIT

我没有试图备份已安装的软件包 . 我没有RPM src文件也没有原始包 . 我希望这样做能够在内核更新后回滚一些旧机器,或者只是简单地能够在另一台机器上移动软件包 .

我知道这不是正确的方法,一旦它们被提取出来,它们不再是包,而是简单的tarball . 但是,这应该足以满足我的目标 .

从上面的命令可以看出,我正在使用 rpm -qa | grep kernel 来查询RPM DB,查找名称中包含内核的所有软件包 . 然后,我希望使用 rpm -ql pacakge-name 列出系统上的所有文件,并将它们传递给 tar ,以便能够轻松地将它们移动到另一台机器上 .