这是我的第一个问题,我还是个新手,所以如果我遗漏或搞砸了某些东西,或者这是一个明显的解决方案,请原谅我。
我正在使用 CentOS 5.8(是的,我知道它很古老)并尝试测试一些鱿鱼配置
来自鱿鱼维基:
NP:在构建之前必须使用 --enable-http-violations 配置选项来构建 Squid。
我做了一些搜索,试图确定在哪里可以找到在包构建时指定的配置选项,但由于没有通读所有 CentOS 文档,我似乎无法找到在哪里可以找到这些配置选项。
我知道这个问题可能类似于这个,但在这种情况下,特定的鱿鱼包可能是定制的,我不确定我是否可以在不跳过一些麻烦的情况下访问源代码。
有没有办法可以在不提取规范文件的情况下使用 yum 或 rpm 列出配置标志?
答案1
您可以做的最接近的事情是查询%{OPTFLAGS}
变量,以便大致了解用于给定 RPM 的编译器标志。
$ rpm -q --queryformat="%{NAME}: %{OPTFLAGS}\n" <package>
然而,要获得实际的编译器选项,最好的办法是下载源 RPM (SRPM) 文件并查阅.spec
用于构建它的文件。这是唯一真正的来源,您可以在其中找到用于构建给定 RPM 集的实际编译器选项。
1.咨询%{OPTFLAGS}
$ rpm -q --queryformat="%{NAME}: %{OPTFLAGS}\n" firefox
firefox: -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic
怎么运行的
您可以查询 RPM 并指定您希望查询命令返回的结果的格式。在本例中,我们返回的是--queryformat="%{NAME}: %{OPTFLAGS}\n
包的名称以及该包的值%{OPTFLAGS}
。
您可以获得潜在查询标签的列表,如下所示:
$ rpm --querytags
例子
$ rpm --querytags | grep OPTFLAGS
OPTFLAGS
虽然该
optflags
条目不参与确定构建或安装平台,但它确实在多平台包构建中发挥作用。该optflags
条目用于定义可在构建过程中(特别是编译期间)使用的一组标准选项。如果 RPM 在 Intel 80386 兼容架构上运行,则该
optflags
值将设置为-O2 -m486 -fno-strength-reduce
。但是,如果 RPM 运行在基于 Sun SPARC 的系统上,optflags
则将设置为-O2
.此条目设置可在、和脚本
RPM_OPT_FLAGS
中使用的环境变量。%prep
%build
%install
2. 咨询SRPM
为此,您可以下载给定的 SRPM,如下所示:
$ sudo yumdownloader --source <package name>
然后您可以提取该.spec
文件:
$ mkdir somedir; cd somedir
$ rpm2cpio ../firefox-29.0.1-1.fc19.src.rpm | cpio -ivd
.spec
然后可以查阅该文件:
$ ls -l | grep spec
-rw-r--r--. 1 saml saml 31913 Jun 7 08:03 firefox.spec
笔记:即使查阅该.spec
文件也可能无法确定所使用的编译器选项,因为 RPM 规范宏%build
在其实际执行的操作中可能非常神秘,因此即使这种方法也可能不会显示编译器选项。
参考
答案2
问题是关于使用 RPM 元数据检索有关包特定编译时选项的信息。您要查找的信息不存在于 RPM 元数据中。您需要的不仅仅是一个 RPM(最好是包构建日志或构建目录中的一些文件),或者您需要使用特定于包的方式。
我不知道 CentOS 的构建信息的位置,对于 Fedora 来说它是:
http://koji.fedoraproject.org/
对于鱿鱼,封装的具体方式相当简单:
# squid -v
Squid Cache: Version 3.4.5
configure options: '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--exec_prefix=/usr' '--libexecdir=/usr/lib64/squid' '--localstatedir=/var' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--with-logdir=$(localstatedir)/log/squid' '--with-pidfile=$(localstatedir)/run/squid.pid' '--disable-dependency-tracking' '--enable-eui' '--enable-follow-x-forwarded-for' '--enable-auth' '--enable-auth-basic=DB,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB,getpwnam' '--enable-auth-ntlm=smb_lm,fake' '--enable-auth-digest=file,LDAP,eDirectory' '--enable-auth-negotiate=kerberos' '--enable-external-acl-helpers=LDAP_group,time_quota,session,unix_group,wbinfo_group' '--enable-storeid-rewrite-helpers=file' '--enable-cache-digests' '--enable-cachemgr-hostname=localhost' '--enable-delay-pools' '--enable-epoll' '--enable-icap-client' '--enable-ident-lookups' '--enable-linux-netfilter' '--enable-removal-policies=heap,lru' '--enable-snmp' '--enable-ssl' '--enable-ssl-crtd' '--enable-storeio=aufs,diskd,ufs' '--enable-wccpv2' '--enable-esi' '--enable-ecap' '--with-aio' '--with-default-user=squid' '--with-dl' '--with-openssl' '--with-pthreads' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fpie' 'LDFLAGS=-Wl,-z,relro -pie -Wl,-z,relro -Wl,-z,now' 'CXXFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fpie' 'PKG_CONFIG_PATH=%{_PKG_CONFIG_PATH}:/usr/lib64/pkgconfig:/usr/share/pkgconfig'
(以上输出是使用 Fedora rawhide 版本的鱿鱼制作的)
对于其他软件包,可能有也可能没有显示构建时配置的命令。要下载、提取和检查 SRPM 以猜测.spec
文件中编译的功能,请参阅另一个答案的末尾。
答案3
2023 年更新:)
您可以按照以下步骤找到有关 CentOS 软件包的更多信息:
- 访问 git.centos.org
- 搜索
rpms/squid
- 单击
Files
左侧导航窗格中的选项卡 - 单击
SPECS
主导航窗格中的目录 - 点击
squid.spec
- 向下滚动查看配置和构建步骤。
太长了;
https://git.centos.org/rpms/squid/blob/c8s-stream-4/f/SPECS/squid.spec