Как сделать спецификацию rpm, которая устанавливает библиотеки в /usr/lib xor /usr/lib64 на основе арки?

Я работаю над спецификацией RPM для Centos, и мне нужно установить общие библиотеки в /usr/lib64, если арка 64-битная, и /usr/lib в противном случае?


person Arthur Ulfeldt    schedule 24.06.2010    source источник


Ответы (3)


Это не так, как это должно работать. Не тип ядра должен определять, куда идут ваши библиотеки, а сами типы библиотек — 64-битные .so идут в /usr/lib64, 32-битные — в /usr/lib.

У вас не может быть одного RPM, содержащего обе архитектуры, результатом должно быть 2 разных RPM, и, если я не ошибаюсь, макросы RPM должны решить эту проблему, если вы используете %_libdir.

person m1tk4    schedule 25.07.2010
comment
Кажется очевидным, когда вы так говорите :) %_libdir yay! - person Arthur Ulfeldt; 26.07.2010
comment
Я делаю это на Centos 6, и %{_libdir} разрешается в /usr/lib - person Chris Cleeland; 09.02.2013

Путь, по которому устанавливается библиотека, будет определяться типом создаваемого вами пакета.

person JadziaMD    schedule 03.07.2010
comment
Мне нужно написать файл .spec, чтобы это произошло, и в файле .spec мне нужно добавить места установки для каждого файла. Как это указать? - person Arthur Ulfeldt; 04.07.2010
comment
Есть макросы для стандартных мест установки. Общий список: rpm.org/api/4.4.2.2/config_macros.html. . Ваш целевой дистрибутив может добавить больше. - person JadziaMD; 06.07.2010

Похоже, что для Redhat (и CentOS) 6 макрос RPM уже внедряет —libdir=/usr/lib64.

Вот как RH/CentOS 6 устанавливает lib64 через файл RPM SPEC.

В RH/CentOS 6 выполнение automake/configure не приводит (и, согласно RH, не будет) префикс библиотеки к /usr/lib64 в случае типа архитектуры x86_64.

Все это исправлено для RH/CentOS 7 и выше.

person John Greene    schedule 04.11.2017