rpm阶
这是一个按构建依赖顺序对RPM源包进行排序的工具。该代码最初派生自cabal-sort公司亨宁·泰勒曼(Henning Thielemann)。
用法
$rpmbuild-order--版本
0.4.11
$rpmbuild-order--帮助
按生成依赖项对包进行排序用法:rpmbuild-order[--version]COMMAND按生成依赖项顺序对包源(规范文件)进行排序可用选项:-h、 --help显示此帮助文本--版本显示版本可用命令:对排序包进行排序相邻包目录中的deps排序依赖项rdeps排序相邻包目录中的依赖项依赖层的层顺序输出适用于链式构建的链式输出leaves包图形顶部叶子的列表roots列出最低根包render使用graphviz显示图形
$rpmbuild-order排序mycore mylib myappmylib mycore myapp
传递的参数可以是包含包的目录或规范文件。
如果依存关系图有循环,则会输出错误循环和任何最短路径子循环的列表。
使用rpmbuild命令deps公司
和rdeps公司
命令已排序的可以获得包的依赖关系和反向依赖关系在当前已签出的包源集中。ie如果您有一个包含包的目录:
pkg1/pkg2/lib1/lib2/lib3/misc1/
然后输出rpm订单deps pkg1
可能是lib1 lib3 pkg1
例如。
这个提供
命令显示包依赖关系图使用graphviz和X11或可以将点格式打印到stdout。
图书馆
从0.4版开始,还提供了一个库。
有两个模块:
分发。每分钟转数。生成。订单
为提供更高级别的功能在生成依赖项顺序和输出中对包进行排序。它建立在:
分发。每分钟转数。生成。图表
提供用于生成RPM依赖关系图
有关更多详细信息,请参阅他们的文档。
注意事项和已知问题
-
处理.pc文件的grepping.spec提供的pkgconfig()
-
给定包A、B、C,其中C依赖于B,B依赖于A,然后你打电话
rpmbuild订单排序C.spec A.spec
如果C不直接依赖于a,那么输出可能是错误的。即使顺序正确,输出中也缺少B因此,在这种情况下,程序包列表不能可靠使用用于一系列构建。
然而deps公司
和订单
命令take考虑其他相邻的包目录。
-
repoquery不用于将元依赖关系或文件解析为包。因此,如果包BuildRequires是一个文件,那么它将不会解析为包。这可能有一天会得到解决,但对于BuildRequires与Requires的比较。
-
rpmspec用于解析规范文件(用于宏扩展等):因此,丢失宏包在某些情况下可能会导致错误的结果。
-
自版本0.4.6以来,现在支持使用动态buildrequires(在Fedora:golang、python、ruby和rust包中)。
-
由于版本0.4.8%{_isa}后缀Provides被x86_64过滤掉。
安装
rpmbuild-order打包在Fedora Linux中。
从源头构建
使用电缆rpm内置和电缆安装
或烟囱安装
.