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

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 300
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Как создать .src.rpm файл?
« Ответ #60 : 18.11.2015 09:36:01 »
%{name} в некоторых строках отсутствует
%{name} - это просто макрос имени вашего пакета. Это, что-бы не менять при любой смене имени весь спек.

файлы частично заменятся на новые
Все заменятся.

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 673
Re: Как создать .src.rpm файл?
« Ответ #61 : 18.11.2015 14:35:02 »
Макрос имени создает подкаталоги? Я думал по версиям пакета установка будет в разные каталоги (%name-%version или как-то так). А как вы составляете спеки? "Официальный" образец используете? У меня с "официальным" половина файлов не запаковывается.

Оффлайн Koi

  • alt linux team
  • ***
  • Сообщений: 1 893
  • валар дохаэрис
    • Канал на youtube
Re: Как создать .src.rpm файл?
« Ответ #62 : 18.11.2015 17:13:10 »
А как вы составляете спеки? "Официальный" образец используете?
Я тоже в этом совсем новичок, не мне советы давать но рекомендуемые образцы есть на вики.
https://www.altlinux.org/Spec
Это по работе с Etersoft-build-utils
https://www.altlinux.org/Etersoft-build-utils_howto
Краткая инструкция по сборке пакетов с помощью etersoft-build-utils
https://www.altlinux.org/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2_%28etersoft-build-utils%29
Примеры оформления спецификаций.
https://www.altlinux.org/SampleSpecs

Вот недавно собирал программу, получился такой спек.
Name: trojita
Version: 0.5
Release: alt1.koi

License: (GPLv2 or GPLv3) and BSD and LGPLv2 and (LGPLv2.1 or GPLv3) and LGPLv2+ and GPLv2
Group: Networking/Mail
Url: http://trojita.flaska.net
Packager: Koi <eg.--- at gmail.com>
Source0: %name-%version.tar.gz
Source1: trojita_common_ru.po.tar.gz

# Automatically added by buildreq on Wed Nov 11 2015
# optimized out: automoc cmake cmake-modules fontconfig-devel kde4libs kde4libs-devel libICE-devel libSM-devel libX11-devel libXScrnSaver-devel libXau-devel libXcomposite-devel libXcursor-devel libXdamage-devel libXdmcp-devel libXext-devel libXfixes-devel libXft-devel libXi-devel libXinerama-devel libXpm-devel libXrandr-devel libXrender-devel libXt-devel libXtst-devel libXv-devel libXxf86vm-devel libakonadi4-calendar libakonadi4-contact libakonadi4-kabc libakonadi4-kcal libakonadi4-kde libakonadi4-kmime libakonadi4-notes libakonadi4-socialutils libakonadi4-xml libdbus-devel libfreetype-devel libgpgmexx4-pthread libpng-devel libqt4-core libqt4-dbus libqt4-devel libqt4-gui libqt4-network libqt4-opengl libqt4-qt3support libqt4-script libqt4-sql libqt4-sql-sqlite libqt4-svg libqt4-webkit libqt4-xml libsoprano-devel libstdc++-devel libxkbfile-devel phonon-devel pkg-config xorg-kbproto-devel xorg-xf86miscproto-devel xorg-xproto-devel zlib-devel
BuildRequires: gcc-c++         
BuildRequires: git-core
BuildRequires: glib2-devel
BuildRequires: glibc-devel-static
BuildRequires: kde4pimlibs-devel
BuildRequires: libXxf86misc-devel
BuildRequires: libqt4-sql-mysql
BuildRequires: libqtkeychain-devel
BuildRequires: qt4-designer
BuildRequires: ragel

Summary: Qt IMAP e-mail client
Summary(ru_RU.UTF-8): Qt IMAP клиент электронной почты

%description
Trojita is a Qt IMAP e-mail client which:
  * Enables you to access your mail anytime, anywhere.
  * Does not slow you down. If we can improve the productivity of an e-mail user, we better do.
  * Respects open standards and facilitates modern technologies. We value the vendor-neutrality that IMAP provides and are committed to be as interoperable as possible.
  * Is efficient — be it at conserving the network bandwidth, keeping memory use at a reasonable level or not hogging the system's CPU.
  * Can be used on many platforms. One UI is not enough for everyone, but our IMAP core works fine on anything from desktop computers to cell phones and big ERP systems.
  * Plays well with the rest of the ecosystem. We don't like reinventing wheels, but when the existing wheels quite don't fit the tracks, we're not afraid of making them work.

%description -l ru_RU.UTF8
Trojitá - программа для работы с электронной почтой («клиент»), специализирующаяся на предоставлении быстрого и эффективного доступа к почтовым ящикам с помощью протокола IMAP.
Сама электронная почта хранятся на почтовом сервере IMAP, клиентская программа получает сообщение на локальном компьютере, когда в этом возникает необходимость.
Trojitá экономит трафик канала обмена данными, ресурсов памяти и процессора.
Trojitá не занимает много оперативной памяти и легок в освоении.
В рабочей среде KDE не требует сервера akonadi.
Программа имеет интерфейс QT и официально поддерживается проектом KDE.

%prep
%setup

pushd po
tar -xvzf %{SOURCE1}
popd

echo 'add_definitions(-fvisibility=default)' >>CMakeLists.txt

%build
cmake \
        -DWITH_TESTS=ON \
-DWITH_QT5=OFF \
-DWITH_ZLIB=ON \
-DWITH_RAGEL=ON \
-DWITH_SHARED_PLUGINS=ON \
-DWITH_QTKEYCHAIN_PLUGIN=ON \
        -DCMAKE_INSTALL_PREFIX:PATH=%_prefix \
        -DCMAKE_INSTALL_LIBDIR:PATH=%_libdir \
        -DSHARE_INSTALL_PREFIX:PATH=%_datadir \
        -DBIN_INSTALL_PREFIX:PATH=%_bindir

%install
%makeinstall_std

%files
%{_bindir}/%{name}
%{_bindir}/be.contacts
%{_datadir}/appdata/*xml
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/32x32/apps/%{name}.png
%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg
%{_datadir}/%{name}/locale/*.qm
%{_libdir}/*.so

%changelog
* Wed Nov 11 2015 Koi <eg.---@gmail.com> 0.5-alt1.koi
- initial build
- added russian description (Name, Keywords, GenericName) file "trojita-0.5/src/Gui/trojita.desktop"
- translated descriptions spec (Summary, description)
- russian localization added (Source1: trojita_common_ru.po.tar.gz)
- repaired the installation path "/usr"

* Tue Nov 10 2015 Koi <eg.---@gmail.com> 0.5-alt1.koi
- initial build

После тестовой сборки в папке ~/tmp Можно посмотреть куда распихиваются файлы программы и расписать их пути в %files, в данном случае был полный бардак и я указал свои пути, но так можно делать не всегда, иногда исполняющие файлы жестко привязаны к путям, тут либо исправлять исходники если это по силам, либо мириться с тем что есть, других способов я пока не знаю.

Много данных берется из инструкций разработчика в архиве с исходниками или на сайте о тех же зависимостях. Пакеты у дистрибутивов называются иногда настолько по разному, что даже не догадаешься. Сравнить названия пакетов можно поиском тут: http://pkgs.org/
Например если разработчик дал список нужных библиотек для убунту, то на этом сайте можно посмотреть как те же пакеты называются у нас.

Но тоже надо быть внимательным, поиск может не найти из-за очень разных названий, если библиотеки называются сильно по разному смотрю их описания.
Авто поиск зависимостей работает хорошо, но все надо проверять.
Параметры сборки или в исходниках инструкция или как в примере выше взял в CMakeLists.

Когда только начинал, приходилось гуглить почти каждую строчку, с опытом становится проще. Ну экспертом мне конечно не стать, однако какие-то свои базовые потребности в большинстве случаев собрать могу.
« Последнее редактирование: 18.11.2015 17:26:44 от Koi »

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 673
Re: Как создать .src.rpm файл?
« Ответ #63 : 18.11.2015 17:47:46 »
Эти инструкции я раньше читал, но тогда ничего не понял). Сейчас начинает появляться минимальное понимание.

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 673
Re: Как создать .src.rpm файл?
« Ответ #64 : 19.11.2015 19:59:50 »
Собрал и установил пакет geany-1.26, работает. Пытаюсь собрать geany-plugins-1.26, все заканчивается такой ошибкой:
Цитировать
checking for GEANY... no
configure: error: Package requirements (geany >= 1.25) were not met:

No package 'geany' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables GEANY_CFLAGS
and GEANY_LIBS to avoid the need to call pkg-config.
В репозиториях пакета geany >= 1.25 нет. Но у меня есть собранный ранее пакет - как мне его подсунуть hasher'у?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 300
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Как создать .src.rpm файл?
« Ответ #65 : 19.11.2015 21:22:56 »
Ну, если он лежит в repo хэшера, то он должен сам подсовываться.

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 673
Re: Как создать .src.rpm файл?
« Ответ #66 : 19.11.2015 21:30:02 »
Цитировать
ls -l /home/hasculdr/hasher/repo/x86_64/RPMS.hasher/
итого 7800
-rw-r--r-- 1 hasculdr_b hasculdr_b 3232915 ноя 18 21:59 geany-1.26-alt1.x86_64.rpm
-rw-r--r-- 1 hasculdr_b hasculdr_b 4652596 ноя 18 21:59 geany-debuginfo-1.26-alt1.x86_64.rpm
-rw-r--r-- 1 hasculdr_b hasculdr_b   94699 ноя 18 21:59 geany-devel-1.26-alt1.x86_64.rpm
Не подхватывается. repo хешера находится вне его chroot-окружения - все равно должен подхватываться? В спек дополнительно ничего дописывать не нужно в таких случаях?

upd.
Цитировать
При удачной сборке полученные пакеты будут лежать в ~/hasher/repo/<платформа>/RPMS.hasher/, в противном случае на stdout будет выведена информация об ошибках сборки.

Создаваемый hasher репозиторий является обычным APT-репозиторием и может быть использован в sources.list
Цитировать
cat /home/hasculdr/hasher/aptbox/etc/apt/sources.list
rpm-dir file:/home/hasculdr/hasher/repo x86_64 hasher
Так настроено с самого начала. Не работает.
« Последнее редактирование: 19.11.2015 22:23:16 от hasculdr »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 957
    • Домашняя страница
    • Email
Re: Как создать .src.rpm файл?
« Ответ #67 : 19.11.2015 22:21:39 »
BuildRequires: geany-devel
в спеке.
Андрей Черепанов (cas@)