如果将二进制文件捆绑到自己的RPM中,那么获取它们的名称和安装位置的列表很简单。
例
$ rpm -ql httpd| head -10
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
/etc/httpd/conf.modules.d/00-base.conf
我建议将可执行文件放入/usr/bin
或中,/usr/local/bin
然后滚动自己的RPM。做到这一点非常简单,通过使用RPM管理软件部署,您将能够使用版本号标记捆绑软件,从而进一步简化了软件在部署时的配置管理。
确定哪些RPM是“我的”?
您可以使用一些已知信息来构建RPM,然后在进行构建之前就可以达成共识。我经常在我的域所拥有的系统上构建软件包,因此仅通过搜索在主机X.mydom.com上构建的所有RPM来查找RPM都是很简单的。
例
$ rpm -qi httpd
Name : httpd
Version : 2.4.7
Release : 1.fc19
Architecture: x86_64
Install Date: Mon 17 Feb 2014 01:53:15 AM EST
Group : System Environment/Daemons
Size : 3865725
License : ASL 2.0
Signature : RSA/SHA256, Mon 27 Jan 2014 11:00:08 AM EST, Key ID 07477e65fb4b18e6
Source RPM : httpd-2.4.7-1.fc19.src.rpm
Build Date : Mon 27 Jan 2014 08:39:13 AM EST
Build Host : buildvm-20.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager : Fedora Project
Vendor : Fedora Project
URL : http://httpd.apache.org/
Summary : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.
这就是Build Host
RPM中的界限。
使用/ usr / bin / company?
我可能不鼓励使用这样的位置。主要是因为它要求您的所有系统都进行$PATH
扩充以包括它,因此是非标准的。定制事物一直是每个wannabee Unix管理员的“通过权利”,但是除非绝对必要,否则我始终不鼓励这样做。
这样的定制最大的问题是,它们既成为维护您的环境,又使新的人们快速了解如何使用您的环境的负担。
我可以从RPM中获取文件列表吗?
是的,您可以实现这一点,但是需要两次调用RPM。第一个将构建在主机X.mydom.com上构建的软件包的列表。获取此列表后,您需要重新调用RPM查询以获取每个软件包所拥有的文件。您可以使用这种衬板实现此目的:
$ rpm -ql $(rpm -qa --queryformat "%-30{NAME}%{BUILDHOST}\n" | \
grep X.mydom.com | awk '{print $1}') | head -10
/etc/pam.d/run_init
/etc/sestatus.conf
/usr/bin/secon
/usr/bin/semodule_deps
/usr/bin/semodule_expand
/usr/bin/semodule_link
/usr/bin/semodule_package
/usr/bin/semodule_unpackage
/usr/sbin/fixfiles
/usr/sbin/genhomedircon