Автор Тема: Как создать .src.rpm файл?  (Прочитано 4901 раз)

Оффлайн hasculdr

  • Участник
  • *
  • Сообщений: 682
Re: Как создать .src.rpm файл?
« Ответ #45 : 16.10.2015 14:13:29 »
./configure --help показывает наличие такого параметра ?
Не показывает).

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 368
Re: Как создать .src.rpm файл?
« Ответ #46 : 16.10.2015 14:54:01 »
./configure --help показывает наличие такого параметра ?
Не показывает).
Значит, надо искать другие способы убрать rpath.

Оффлайн hasculdr

  • Участник
  • *
  • Сообщений: 682
Re: Как создать .src.rpm файл?
« Ответ #47 : 15.11.2015 22:25:04 »
Добавил в секцию %install строку
chrpath --delete $RPM_BUILD_ROOT%{_bindir}/%{name}Во время сборки такая ошибка:
Цитировать
Executing(%install): /bin/sh -e /usr/src/tmp/rpm-tmp.5270
+ umask 022
+ /bin/mkdir -p /usr/src/RPM/BUILD
+ cd /usr/src/RPM/BUILD
+ /bin/chmod -Rf u+rwX -- /usr/src/tmp/geany-buildroot
+ :
+ /bin/rm -rf -- /usr/src/tmp/geany-buildroot
+ cd geany-1.26
+ chrpath --delete /usr/src/tmp/geany-buildroot/usr/bin/geany
open: No such file or directory
elf_open: Invalid argument
error: Bad exit status from /usr/src/tmp/rpm-tmp.5270 (%install)
Как здесь нужно изменить $RPM_BUILD_ROOT%{_bindir}/%{name}, чтобы скрипт отработал дальше? Или проблема в другом?

upd.
После редактирования до вот такого вида
Цитировать
%install
%makeinstall_std --silent --no-print-directory
chrpath --delete /usr/src/tmp/geany-buildroot/usr/bin/geany
chrpath --delete /usr/src/tmp/geany-buildroot/usr/lib64/geany/htmlchars.so
chrpath --delete /usr/src/tmp/geany-buildroot/usr/lib64/geany/classbuilder.so
chrpath --delete /usr/src/tmp/geany-buildroot/usr/lib64/geany/splitwindow.so
chrpath --delete /usr/src/tmp/geany-buildroot/usr/lib64/geany/export.so
chrpath --delete /usr/src/tmp/geany-buildroot/usr/lib64/geany/filebrowser.so
chrpath --delete /usr/src/tmp/geany-buildroot/usr/lib64/geany/saveactions.so
%find_lang %name
сборка таки завершилась. Конец вывода такой:
Цитировать
warning: Installed (but unpackaged) file(s) found:
    /usr/lib64/libgeany.so
    /usr/lib64/libgeany.so.0
    /usr/lib64/libgeany.so.0.0.0
Wrote: /usr/src/RPM/SRPMS/geany-1.26-alt1.src.rpm
Wrote: /usr/src/RPM/RPMS/x86_64/geany-1.26-alt1.x86_64.rpm
Wrote: /usr/src/RPM/RPMS/noarch/geany-data-1.26-alt1.noarch.rpm
Wrote: /usr/src/RPM/RPMS/x86_64/geany-devel-1.26-alt1.x86_64.rpm
Wrote: /usr/src/RPM/RPMS/x86_64/geany-debuginfo-1.26-alt1.x86_64.rpm
Но в ~/hasher больше нет директорий /usr*, куда пропал собранный .rpm?)

upd. Нашел find'ом в ~/hasher/repo/x86_64/RPMS.hasher). Сейчас хочу уточнить, как происходит сборка .rpm:
сначала, как и при установке из исходных текстов, выполняется цикл "configure-make-install", и если он успешно завершен - собирается .rpm? Я думаю, ошибки с rpath были уже на стадии install, и пришлось вручную натравить chrpath на каждый проблемный файл. Мне это видится костылем, может быть, есть еще способы собирать уже без rpath? (./configure --disable-rpath отсутствует у этих исходников, а sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool и
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool мне не помогли, на федоровской вики было уточнение
Цитировать
If the application uses a local copy of libtool
).
« Последнее редактирование: 16.11.2015 00:50:10 от hasculdr »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Как создать .src.rpm файл?
« Ответ #48 : 16.11.2015 06:04:44 »
Сейчас хочу уточнить, как происходит сборка .rpm:
сначала, как и при установке из исходных текстов, выполняется цикл "configure-make-install", и если он успешно завершен - собирается .rpm?
Выполняется только то, что прописано в spec файле. Прописан цикл "configure-make-install" - выполнится он, прописано что-то другое, выполнится это "что-то другое".

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Re: Как создать .src.rpm файл?
« Ответ #49 : 16.11.2015 06:19:24 »
Как здесь нужно изменить $RPM_BUILD_ROOT%{_bindir}/%{name}, чтобы скрипт отработал дальше? Или проблема в другом?
Проблема в порядке. Надо или на собранном в %build запускать в конце или на установленном в конце секции %install. А так не установили ничего, а уже убирать RPATH собираетесь.
Цитировать
Но в ~/hasher больше нет директорий /usr*, куда пропал собранный .rpm?)
В %buildroot же (~/tmp/geany*). С точки зрения RPM для него пути начинаются оттуда.
Цитировать
Сейчас хочу уточнить, как происходит сборка .rpm:
сначала, как и при установке из исходных текстов, выполняется цикл "configure-make-install", и если он успешно завершен - собирается .rpm?
В принципе — да.
Цитировать
Я думаю, ошибки с rpath были уже на стадии install, и пришлось вручную натравить chrpath на каждый проблемный файл.
Ошибкой было не исправить непраивльный rpath во время сборки. chrpath — это костыль, когда система сборки настолько сурова, что не позволяет исправить однострочным патчем.
Цитировать
Мне это видится костылем, может быть, есть еще способы собирать уже без rpath? (./configure --disable-rpath отсутствует у этих исходников, а sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool и
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool мне не помогли, на федоровской вики было уточнение
Цитировать
If the application uses a local copy of libtool
).
Избегайте использования забандленных библиотек и средств сборки. Попробуйте с системными. И погрепайте rpath по коду.
Андрей Черепанов (cas@)

Оффлайн hasculdr

  • Участник
  • *
  • Сообщений: 682
Re: Как создать .src.rpm файл?
« Ответ #50 : 16.11.2015 11:41:06 »
Избегайте использования забандленных библиотек и средств сборки. Попробуйте с системными. И погрепайте rpath по коду.
rpath я грепал по исходникам - совпадения были только в комментариях для убунты. Можно уточнить что такое "забандленные библиотеки и средства сборки", а также привести в пример "системные"?

Тему, наверное, следует разделить на две - все, начиная со 2 страницы переместить в "Сборка geany в hasher" или как-нибудь похоже.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Re: Как создать .src.rpm файл?
« Ответ #51 : 16.11.2015 12:16:50 »
Избегайте использования забандленных библиотек и средств сборки. Попробуйте с системными. И погрепайте rpath по коду.
rpath я грепал по исходникам - совпадения были только в комментариях для убунты. Можно уточнить что такое "забандленные библиотеки и средства сборки", а также привести в пример "системные"?
«Забандленные» (bundled) — идущие с исходным кодом. В отличие от системных, присутствующих в системе и собираемых отдельно.
Андрей Черепанов (cas@)

Оффлайн hasculdr

  • Участник
  • *
  • Сообщений: 682
Re: Как создать .src.rpm файл?
« Ответ #52 : 16.11.2015 17:39:24 »
При попытке установить собранный .rpm такая ошибка:
Цитировать
Reading Package Lists...
Building Dependency Tree...
Selecting geany for '/home/hasculdr/hasher/repo/x86_64/RPMS.hasher/geany-1.26-alt1.x86_64.rpm'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following packages have unmet dependencies:
  geany: Depends: libgeany.so.0()(64bit) (>= set:mffYlV4uBckZvGDHGtImmHVMV0fjN5h0ZxF4BG4wCB5Zy0Gabj5I5BbBQpj3wW0uC34uUeGFM2EomdDIXjbSy3l8Z29BKQP0o2YEyFwboyO4CvV3koT6Z24KGrtIwzudyZJijhYZkET4hRpOHcnGIKJjA7I0crqvyzyZm4) but it is not installable
E: Broken packages
Сборка завершалась с такими сообщениями:
Цитировать
warning: Installed (but unpackaged) file(s) found:
    /usr/lib64/libgeany.so
    /usr/lib64/libgeany.so.0
    /usr/lib64/libgeany.so.0.0.0
Что пошло не так? Как можно исправить?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Как создать .src.rpm файл?
« Ответ #53 : 16.11.2015 18:02:47 »
Ну вы библиотеки не поместили ни в один rpm, а они нужны для работы программы.

Оффлайн hasculdr

  • Участник
  • *
  • Сообщений: 682
Re: Как создать .src.rpm файл?
« Ответ #54 : 16.11.2015 18:32:23 »
Как это не поместил? Исходные тексты я не менял, а на оф. сайте отдельно библиотеки не выкладывали. Скачал один единственный архив, с ним и работал.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Как создать .src.rpm файл?
« Ответ #55 : 16.11.2015 18:33:52 »
Смотрите секцию file в своём спеке

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Re: Как создать .src.rpm файл?
« Ответ #56 : 16.11.2015 19:00:11 »
Секция %files
Андрей Черепанов (cas@)

Оффлайн hasculdr

  • Участник
  • *
  • Сообщений: 682
Re: Как создать .src.rpm файл?
« Ответ #57 : 17.11.2015 23:21:30 »
Цитировать
Adjusting library links in /usr/src/tmp/geany-buildroot
./usr/lib64:
   libgeany.so.0 -> libgeany.so.0.0.0
Цитировать
%files
%defattr(-, root, root, -)
%_defaultdocdir/%name-%version/
%doc %{_mandir}/man1/%{name}.1.gz

%{_bindir}/%{name}
%{_datadir}/%{name}
%{_libdir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/locale/*/LC_MESSAGES/%{name}.mo
%{_datadir}/icons/hicolor/16x16/apps/*.png
%{_datadir}/icons/hicolor/48x48/apps/*.png
%{_datadir}/icons/hicolor/scalable/apps/*.svg
Цитировать
warning: Installed (but unpackaged) file(s) found:
    /usr/lib64/libgeany.so
    /usr/lib64/libgeany.so.0
    /usr/lib64/libgeany.so.0.0.0
В секции %files присутствует libdir, именно там находятся те самые баблиотеки, из которых я удалял rpath. Но libgeany.so туда не попадает, какие еще могут быть варианты для этой библиотеки?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Re: Как создать .src.rpm файл?
« Ответ #58 : 18.11.2015 06:10:27 »
%{_libdir}/%{name} - это
/usr/lib64/geany , но никак не  /usr/lib64/libgeany.so

должно быть :
%{_libdir}/*.so.*

Оффлайн hasculdr

  • Участник
  • *
  • Сообщений: 682
Re: Как создать .src.rpm файл?
« Ответ #59 : 18.11.2015 09:21:06 »
Окончательно изуродовав %files таки собрал.
Цитировать
%files
%doc %{_mandir}/man1/%{name}.1.gz
%_bindir/%{name}
%_libdir/%{name}
%_libdir/*.*
%_libdir/pkgconfig/
%_datadir/%{name}
%_datadir/*
%_desktopdir/%name.desktop
/usr/include/%{name}
У меня уже установлен geany из p7-репозитория. Если я установлю своего кадавра - он не угробит нормальный пакет? %{name} в некоторых строках отсутствует, значит, файлы частично заменятся на новые?