Как я определяю, с какими параметрами конфигурации RPM-пакет создается?

/var не является временным, таким образом, можно использовать его. Необходимо будет остановить весь доступ к /home в течение нескольких минут, в то время как данные перемещаются, так как это, вероятно, различные физические разделы. Т.е., остановите сервер! Это не займет много времени. Также: сделайте это как корень, не через sudo.Далее:

cd /
mv home home_mnt

Я использую другое и уникальное имя в случае, если существует реальное /var/home или что-то. Сохраняет вещи опрятными и надо надеяться более ясными. Теперь:

mv home_mnt var

Что было /home теперь /var/home_mnt. Но Вы собираетесь использовать его через символьную ссылку:

ln -s /var/home_mnt /home

Престо. Попробовать cd /home проверять. "Домой" хороший каталог для перемещения, потому что это несущественно к основной системе. Не пробуйте это, например, /usr - это причинит боль, много.

Ничего не перемещайте в /tmp или /var/tmp также. Они исчезнут.

6
13.04.2017, 15:36
2 ответа

Вопрос заключается в использовании метаданных RPM для получения информации о времени компиляции пакета. Информация, которую вы ищете, отсутствует в метаданных RPM. Либо вам нужно иметь нечто большее, чем просто RPM (в идеале - журнал сборки пакета или некоторые файлы из каталога сборки), либо вам нужно использовать способ, специфичный для конкретного пакета.

Я не знаю, где находится информация о сборке для CentOS, для Fedora это будет:

http://koji.fedoraproject.org/

Для squid, специфический для пакета способ довольно прост:

# 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 версии squid)

Для других пакетов может быть, а может и не быть команды, показывающей конфигурацию времени сборки. Для загрузки, извлечения и изучения SRPM, чтобы угадать, что он скомпилирован в возможностях из файла .spec, см. конец другого ответа.

1
27.01.2020, 20:27

Ближе всего к переменной %{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 не играет роли в определении платформы сборки или установки, она играет роль в сборке многоплатформенных пакетов. Запись 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 spec %build может быть довольно загадочным в том, что они на самом деле делают, поэтому даже этот подход, скорее всего, не покажет опции компилятора.

Ссылки

6
27.01.2020, 20:27

Теги

Похожие вопросы