gpt4 book ai didi

centos - 安装新包时如何让RPM不覆盖文件?

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:53 26 4
gpt4 key购买 nike

OpenSuSE 11-sp4 狂热用户 Engelbert 工程师拥有两个内容相同的 RPM 包:

rpm -qlp ~/onemy_ls_0.0.1_x86_64.rpm | tee a
/.osc/_apiurl
/.osc/_files
/.osc/_meta
/.osc/_osclib_version
/.osc/_package
/.osc/_project
/my_ls/my_ls.sh

rpm -qlp ~/my_ls_0.0.1_x86_64.rpm | tee b
/.osc/_apiurl
/.osc/_files
/.osc/_meta
/.osc/_osclib_version
/.osc/_package
/.osc/_project
/my_ls/my_ls.sh

diff a b | wc
0 0 0

工程师 Engelbert 意识到他可以在没有 RPM 警告的情况下安装这两个包:

rpm -e my_ls-0.0.1-1 ; rpm -i ~/my_ls_0.0.1_x86_64.rpm
rpm -e onemy_ls-0.0.1-1 ; rpm -i ~/onemy_ls_0.0.1_x86_64.rpm

工程师 Engelbert 对自己的选择充满信心。他知道这可能是 rpm 开发人员的一个不错的设计选择。因此,他检查了手册页,确定会有一个选项不允许 rpm 包覆盖系统中的文件。但他找到的所有安装选项都是:

install-options
[--aid] [--allfiles] [--badreloc] [--excludepath OLDPATH]
[--excludedocs] [--force] [-h,--hash]
[--ignoresize] [--ignorearch] [--ignoreos]
[--includedocs] [--justdb] [--nodeps]
[--nodigest] [--nosignature] [--nosuggest]
[--noorder] [--noscripts] [--notriggers]
[--oldpackage] [--percent] [--prefix NEWPATH]
[--relocate OLDPATH=NEWPATH]
[--repackage] [--replacefiles] [--replacepkgs]
[--test]

他犹豫了一下,奇怪的是有--replacefiles,没有--keepfiles。这表明他保留将是默认行为。因此,他创建了一个脚本:

 rpm -e onemy_ls-0.0.1-1
rpm -e my_ls-0.0.1-1
rm -rf /my_ls/
rpm -i ~/my_ls_0.0.1_x86_64.rpm
ls -lh /my_ls -d
sleep 120
rpm -i ~/onemy_ls_0.0.1_x86_64.rpm
ls -lh /my_ls -d

这表明文件实际上被覆盖了:

 drwxr-xr-x 2 root root 4.0K Aug 16 17:07 /my_ls
drwxr-xr-x 2 root root 4.0K Aug 16 17:09 /my_ls

经过研究,Engelbert 工程师仍然找不到答案。现在他正处于包装系统的争论之中,而且,正如某人所问,他需要你的帮助:

如何让rpm安装新包时不覆盖文件?

注意 - 工程师 Engelbert 知道他应该创建更好的带有冲突管理的 rpm 包,你不需要向他解释。他最担心的是确保他的包不会与系统中争夺相同路径的其他专有未发布包发生冲突。

注意 - 使用 fpm,您可以重新生成工程师 Engelbert 的 RPM:

mkdir -p first_pkg/my_ls/
echo ls > first_pkg/my_ls/my_ls.sh
fpm -s dir -t rpm -n onemy_ls -v 0.0.1 -C first_pkg/ -p onemy_ls_VERSION_ARCH.rpm
fpm -s dir -t rpm -n my_ls -v 0.0.1 -C first_pkg/ -p my_ls_VERSION_ARCH.rpm

最佳答案

是的:rpm 将覆盖 *.rpm 中包含的所有未标记 %config 的文件,并且没有禁用该行为的选项。

关于centos - 安装新包时如何让RPM不覆盖文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38978563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com