rpm.spec 隐藏 %post 之后的警告

rpm.spec hide warning that comes after %post

我已经尝试解决这个问题几天了,但仍然没有...

比方说这是我的 upgrade.sh:

Finished upgrading...

这是我的 rpm.spec 文件:

Name: Hi
Summary:  Discover Server
Source: %{name}-%{version}.%{release}.tar.gz
Version:    %{version}
Release:    %{release}
Group:   Discover Server
License: Commercial
Vendor:  Software
BuildRoot: %{_tmppath}/%{name}-%{version}-root
Obsoletes: %{name}

%description
 Discover Server

%prep

%setup -n %{name} -q

%install
something that is not relevant

%post
sh ./upgrade.sh
echo "finished post"

%pre

%preun

%clean
echo "cleaning"
rm -rf ($RPM_BUILD_ROOT) &> /dev/null

%files -f %{name}-%{version}-filelist

现在我得到了 example.rpm 文件。 在我 运行 命令 rpm -U example.rpm 这是我得到的输出:

Finished upgrading
Finished post

warning: XYXYXY: remove failed: No such file or directory
warning: XXXX: remove failed: No such file or directory

升级后一切正常,我唯一的问题是我不想显示 post 命令完成后出现的警告。 我该怎么做?每次我们发布新的升级时,文件的名称都不同,因为它们上面有版本名称,所以这可能就是问题所在。

有没有一种简单的方法可以让这些警告消息只转到 dev/null 之类的? 看到 "Finished upgrading..." 消息也很重要。

该警告意味着 rpm 正在尝试从旧包中删除文件,但它们已不在文件系统中。所以你应该问问自己为什么会这样,以及如何处理:

  • 您要手动删除它们吗?不要,让 rpm 为您删除它们。
  • 他们不能保证在系统上吗?在这种情况下,您可以将它们制作成 %ghost 个文件。这些文件存在时将被删除,但如果它们不存在,您将不会收到任何警告。 (more on %ghost files here)
%files
%ghost /path/to/file-that-might-or-not-be-there

如果您想知道为什么在执行 %post 部分后会出现此错误,那么这里有一本适合您的好书,其中清楚地显示了升级期间所有 scriptlet 的顺序:https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#ordering