![Rpmlint“use-tmp-in-%postun”错误](https://linux22.com/image/12966/Rpmlint%E2%80%9Cuse-tmp-in-%25postun%E2%80%9D%E9%94%99%E8%AF%AF.png)
rpmlint 输出:
E: use-tmp-in-%postun
规格文件:
%postun
rm -r /var/aci /tmp/aci_tmp 2> /dev/null
另外,我无法删除包
在卸载此软件包之后或之前,如何删除 /tmp 中的目录?
答案1
如果可能的话,总是尽量避免%post
编写%postun
脚本。你可以做那些阿奇文件或文件夹属于您的包。
为了示例起见,我们假设它/var/aci
是一个文件夹并且/tmp/aci_tmp
是一个文件。然后你就可以:
%install
mkdir -p $PPM_BUILD_ROOT/var/aci
%files
/var/aci
%ghost /var/aci/* # not sure this is necessary...
%ghost /tmp/aci_tmp
这些%ghost
指令的意思是:如果这个文件/文件夹出现,它就属于我。这也意味着当您删除软件包时它们将被删除。
答案2
这是因为/tmp
通常挂载为 tmpfs。如果你的软件包在那里放了一些东西,它会在重新启动时被擦除。
您的情况可能没问题,因为您忽略了该错误。
你最好使用 tmpfiles.d(5)。即创建一个文件/etc/tmpfiles.d/aci.conf
其中一些行(不确定您是否正在创建文件或目录):
#Type Path Mode User Group Age Argument
f /file/to/create mode user group - content
F /file/to/create-or-truncate mode user group - content
w /file/to/write-to - - - - content
d /directory/to/create-and-cleanup mode user group cleanup-age -
D /directory/to/create-and-remove mode user group cleanup-age -