jay*_*ren 5 fhs rpm rpmbuild rpmlint
我正在构建一些 rpm 包并使用rpmlint. 这些软件包特定于我工作场所的系统,它们不会被推到上游。我们的软件包包括各种软件,包括内部软件、存储库中软件的修补版本以及官方存储库中未提供的软件。我们安装本地包的/usr/local原因有很多:
yum update破坏本地包bin,lib,include,share,等)但是,rpmlint在将文件安装到/usr/local. 例如,在 GNU Hello World 的自定义构建中,这就是rpmlint -i必须说的:
hello.x86_64: E: dir-or-file-in-usr-local /usr/local/hello-2.8/bin/hello
A file in the package is located in /usr/local. It's not permitted for
packages to install files in this directory.
Run Code Online (Sandbox Code Playgroud)
我知道文件系统层次结构标准,根据该标准:
'/usr/local' 背后的最初想法是在除了 '/usr' 之外的每台机器上都有一个单独的('local')'/usr' 目录,它可能只是从其他地方以只读方式挂载。它复制“/usr”的结构。现在,'/usr/local' 被广泛认为是保存自编译或第三方程序的好地方。/usr/local 层次结构供系统管理员在本地安装软件时使用。它需要在系统软件更新时不会被覆盖。它可用于可在一组主机之间共享但在 /usr 中找不到的程序和数据。本地安装的软件必须放在 /usr/local 而不是 /usr 中,除非安装它是为了替换或升级 /usr 中的软件。
事实上,我们正在遵循这些标准并/usr/local出于这些原因安装我们的本地软件,所以我不明白为什么使用包管理器将包安装到/usr/local. 但是,我也希望我们的包符合标准,如果不是因为我们本地包之间的一致性没有其他原因。那么为什么会rpmlint为 中的文件抛出错误/usr/local呢?这不应该由包装商决定吗?我可以忽略这个错误或者至少让rpmlint打印一个警告吗?
rpmlint是一种根据某种打包策略检查 RPM 的工具。它的配置通常依赖于分发,它会根据特定的分发策略检查包。只要这是你想要的,检查你自己的包就可以了。
如果您的策略与分发策略不同,您必须相应地进行配置rpmlint、避免使用它或忽略特定错误。
添加到/etc/rpmlint/config或~/.config/rpmlint(未测试)时,以下内容应该可以解决问题:
addFilter("E: dir-or-file-in-usr-local")
Run Code Online (Sandbox Code Playgroud)
资料来源: