我有一个脚本,用于在我的 docker 镜像中安装一些 rpm,如下所示。
yumdownloader common-jars-${RELEASE_VERSION} \
test-jars-${RELEASE_VERSION} \
rpm -ivh --force --nodeps --prefix /usr/local/integrations *rpm && \
rm -rf *.rpm && \
rm -rf /var/lib/yum/yumdb
这会导致每个 rpm 文件的内容被加载到 中/usr/local/integrations
。
我稍后将内容复制/usr/local/integrations
到另一个目录并在那里使用它们会有什么问题吗?我担心该rpm -i
命令可能会在幕后做一些常规命令cp
无法解释的事情。
我现在无法更改脚本,因为它是部署过程的一部分,而且已经实施了很长时间。我只是想了解这些文件中的一个cp
或几个是否mv
仍能使它们正常运行。
答案1
这样做会抵消使用包的大部分优势。
- 修复软件包以将其文件放在您想要的位置。这样,如果您使用 rpm 来验证文件,它将对正在使用的文件进行校验。
- 仅使用 yum 安装。它在多个方面都更安全,包括安装依赖项。
- 不要删除 yumdb 或 rpmdb。也许你想减小容器的大小,但我认为删除软件包列表毫无意义。
- 不要使用 --nodeps。要么这些是合法的依赖项,会破坏您的系统,要么它们对您没有任何作用,最好在没有它们的情况下重建软件包。
这些的一个副作用是,您无法通过在安装时更改前缀来重新定位打包程序的位置,只能在构建包时更改。很少有发行版或包使用此功能,所以我认为您损失不大。