MacOSX rpmbuild —target noarch не работает

#java #rpmbuild

#java #rpmbuild

Вопрос:

У меня есть Java-проект со сборкой rpm с помощью maven. Требуется создать пакеты noarch, но я вижу конкретную arch. Я устанавливаю rpm (4.4.9 или 5.2.0) через macports в MacOSX и запускаю команду из плагина maven rpm:

sudo rpmbuild -bb -v --buildroot / путь / к / проекту / buildroot --target noarch java-поиск-qt.spec
Построение целевых платформ: noarch
Выполнение (%install): /bin/bash -e /tmp/rpm-tmp.69257
  umask 022
  cd /opt /local/src/macports/BUILD
  /bin/rm -rf /путь /к/project /target/rpm /project/buildroot
  /bin/rm -rf /путь /к/project /target/rpm /project/buildroot
  '[' -e /path/to/project/target/rpm /project/buildroot ']'
  mv /путь /к / проекту / target/rpm /project/tmp-buildroot /путь / к / проекту / target/rpm /project /buildroot
  /opt/local/lib/rpm/brp-сжимать
  /opt/local/lib/rpm /brp-strip
  /opt/local/lib/rpm /brp-strip-статический-архив
  /opt/local/lib/rpm/brp-strip-комментарий-примечание
  /opt/local/lib/rpm/brp-nobuildroot path
Обработка файлов: java-search-qt-1.0.17-1
Поиск обеспечивает: /opt/local/lib/rpm/find-предоставляет
Для поиска требуется: /opt/local/lib/rpm/find-requires
Требуется (interp): /bin/bash /bin/bash /bin/bash /bin/bash
Требуется (проверить): /bin/bash
Требуется (предварительно): /bin/bash
Требуется (post): /bin/bash
Требуется (postun): /bin/bash
Проверка наличия неупакованных файлов: /opt/local/lib/rpm/check-files /путь /к/project/target/rpm /project/buildroot
Написал: /opt/local/src/macports/RPM/i386/project.i386.rpm

Плагин Maven использует опцию «—target noarch», но rpmbuild полностью игнорирует ее. Ожидаемый файл noarch.rpm, почему rpmbuild создает i386 в версии 4.4.9 и x86?

Обновить

Я нашел один рабочий вариант вызова rpmbuilder, создает файл *.noarch.rpm:

rpmbuild -bb --target noarch-linux-pc project.spec

Другие варианты, файл build *.i386.rpm:

rpmbuild -bb --buildroot / путь / к / buildroot --target noarch-linux-pc project.spec 
rpmbuild -bb --определяет '_topdir /path /to/topdir' --целевой noarch-linux-pc project.spec

Я не могу понять. Есть идеи?

P.S. Извините за мой английский, для меня это сложный язык.

Ответ №1:

У меня разные версии всего, но в OS X, используя RPM 5.4.14 и rpm-maven-plugin 2.1-alpha-3, я могу создать noarch RPM для Linux, указав:

 <needarch>noarch</needarch>
<targetOS>linux</targetOS>
  

rpm-maven-plugin говорит:

 [INFO] Building target platforms: noarch-apple-linux
  

Из командной строки проверяю пакет, все выглядит нормально:

 rpm -qp --qf 'Arch:%{ARCH} OS:%{OS}n' my-rpm-0.0.1-1.noarch.rpm 
Arch:noarch OS:linux
  

… и результат успешно устанавливается в Linux.

Ответ №2:

Я нашел ошибку!

Инструмент maven-rpm-plugin отстой. Этот пакет содержит класс RPMHelper и использует конструктор команд bash. Инструмент rpmbuild требует строгого упорядочения параметров, а этот класс игнорирует все правила. Я изменил порядок параметров, и теперь у меня правильно собран rpm-пакет. Из того, что я вижу, команда codehaus больше не поддерживается. Я думаю, что нам нужен форк на github.

Ответ №3:

У меня нет никакого опыта сборки на MacOSX, но я подумал, что опубликую наш pom.xml файл здесь в качестве ссылки:

http://pastebin.com/dHVA4yZ1

Командная строка maven, которую мы используем в CentOS Linux, является:

 mvn clean compile rpm:attached-rpm deploy
  

Это развертывает наши RPM, а также создает:

 target/rpm/mprew-behavior/RPMS/noarch/mprew-behavior-2.12.0s-19068.noarch.rpm
  

Надеюсь, это немного поможет.

Комментарии:

1. Спасибо, но с плагином проблем нет — бинарный инструмент rpmbuild странно ведет себя при опции ‘—target’

2. Согласно плагину RPM значение по умолчанию равно noarch . Какую версию rpmbuild вы используете? МЫ используем RPM версии 4.4.2. mojo.codehaus.org/rpm-maven-plugin/ident-params.html#needarch

3. И вы не указываете исходную архитектуру, верно? mojo.codehaus.org/rpm-maven-plugin /…

4. Текущая доступная версия macport rpm — 4.4.9, и я использую ее. Насколько я знаю, последняя версия 5.3.x. Да, я не указываю архитектуру, потому что мне нужен noarch! В Linux работает корректно, в результате я вижу файл *.noarch.rpm. Но только на mac rpmbuild создайте файл *.i386.rpm. Я пытаюсь установить targetArchitecture как noarch, но это игнорируется builder.

5. Похоже, вы все делаете правильно. Извините, что не смог помочь. Это интересная тема. Они используют: `—target ‘noarch-apple-mac os x’ с * с обеих сторон. Удачи. old.nabble.com /…