121

Харитон пишет:

а чем оно должно отличаться?
и там и там файлы будут в дереве.
вам какая структура нужна? я просто не в курсе...
Вам нужны исходники перед компиляцией от производителя? могу подтарить tar.bz2 который использую для сборки rpm пакетов. и лежит в rpmbuild/SOURCES . Такое надо?

как раз речь об этом, что для сборки rpm мне надо tar.gz из src.rpm извлечь, а не от Debian

Харитон пишет:

Как в Спеках вставлять конфликтующие пакеты?

пишите название пакета с маленькой буквы, а в спеке добавляете
Provides: perl-Gedcomlite (в новой версии это уже будет не нужно)

Харитон пишет:

я собираю для Федоры, а там пакеты называются именно так.

нет, они называются так, как автор назовёт.

Консоль на мыло. Надо развивать графику.

122

Проверь, тут все лежит:
https://sourceforge.net/projects/rodovi … linux/tgz/
Надеюсь все так, только я не устанавливал новые рпм-пакеты в систему еще, счас не могу. (((
надо проверить...
Особенно интересно как оно установится если есть старый пакет...

123 (16.04.2014 23:54:41 отредактировано romkaromka)

Опять не так. На этот раз это преобразованные из архива формата src.rpm в другой формат архива - в tgz. Надо лишь извлечь архив! из src.rpm, и его выложить.

Консоль на мыло. Надо развивать графику.

124

а как его извлечь? какой командой? я не в курсе...

125

src.rpm - это обычный архив, его можно открыть в любом архиваторе типа file-roller или даже в mc.

Консоль на мыло. Надо развивать графику.

126

Это можно сделать утилитой rpm2cpio. Затем архиватором cpio извлечь из полученного файла всё необходимое (архивы, спек и т.п.).

127

ну залез в него архиватором. там cpio файл. внутри него тот же bz2 файл плюс спека, которые я ввиде 1-го tgz последний раз я давал. В чем разница?

128 (17.04.2014 09:30:13 отредактировано Vascom)

В спеках у тебя указаны архивы tar.bz2, а выложил ты архивы tgz.
Хочется видеть исходные архивы tar.bz2, как я понимаю.

Например, чтобы я мог доработать твой спек до стандартов Федоры и включить твои пакеты в репы russianfedora (а там может и в основную Федору).

129

так в тгз лежит бз2 + спека///)))

130

Ну вот так делать не следует. Спек, кому надо, вытянут из src.rpm. А вот архив с исходниками желательно чтобы был доступен по прямой ссылке.

Кстати, можно я спеки твои покритикую?

131

не можно спеки покритиковать, а нужно, я не писал до этого спек.
ну как бы сам архив без спеки может быть абсолютно бесполезен. например, для rodovid нет ни мэйкфайла, ничего другого, потому что это набор готовых компонентов - их надо только по нужным папкам пораскидывать...

В общем если надо только бз2 - могу его отдавать. Мне это даже проще. он у мен есть готовый. Все остальные согласны?

132

Да, так и должно быть.
Сейчас подготовлю список косяков, начнём с perl-gedcomlite.spec

133 (17.04.2014 10:47:06 отредактировано Vascom)

perl-gedcomlite.spec
1. Строку BuildRoot:     %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
удалить.
2. Удалить

Requires:  perl
Provides: perl-Gedcomlite

поскольку rpm сам прописывает эти зависимости.
3. При сборке появляется ошибка

'NAME_SYM' is not a known MakeMaker parameter name.

Так что это надо или убрать или поправить.
4. Убрать prefix=%{buildroot}%{_prefix}
5. Вместо make писать make %{?_smp_mflags}, это добавит многопоточную сборку. Тут не важно, но лучше чтобы было.
6. make test вынести в специальную отдельную секцию, вот так:

%check
make test

7. Вместо make install использовать макрос %make_install, либо (если дистрибутив не поддерживает этот макрос) make install DESTDIR=%{buildroot}
8. Вместо %{_prefix}/share/man использовать макрос %{_mandir}
9. Удалить секцию %clean и всё её содержимое
10. Удалить скрытый временный файл %{buildroot}%{_libdir}/perl5/vendor_perl/auto/Gedcomlite/.packlist

11. Самое главное! Вопрос, если пакет noarch, то зачем он устанавливает что-то в /usr/lib?
У тебя указано, что файлы устанавливаются в %{_prefix}/lib/* , но на 64-битной системе команда make install установит их в %{_prefix}/lib64/*. Таким образом пакет вообще не собирается на 64-битной системе.
Тут два пути решения - либо разбираться что делает программа, что она в lib пихает и переделывать её.
Либо убрать BuildArch: noarch и собирать пакеты архитектурозависимыми. Однако в этом случае проверка показывает, что там действительно нет бинарных файлов и тоже выдаёт ошибку.

Кажется я нашёл решение. Все остальные пакеты скорее всего устанавливают свои файлы в /usr/share/perl5/ и этот тоже должен. Тут надо видимо с Makefile похимичить.

В общем выглядеть должно примерно вот так http://paste.fedoraproject.org/94861/16755139
Но проблему с lib надо обязательно решать.

134

perl-Gedcomlite в провайдс нужен так как это старое название пакета(с большой буквой), который уже установлен у многих и если будет ставится новое название(с маленькой буквы), то будут конфликты...

135

%{buildroot}%{_libdir}/perl5/vendor_perl/auto/Gedcomlite/.packlist
а у меня без него кажисть модуль не работал...(((
потому и оставил если не путаю.

136

в либ ложится сам модуль...
в /usr/lib/perl или /usr/lib/perl5 папки модулей перла...

137

Вот гляди, что у меня rpm автоматически прописывает в провайдсы этому пакету:

Provides: perl(Gedcom) = 1.16 perl(Gedcom::Comparison) = 1.16 perl(Gedcom::Event) = 1.16 perl(Gedcom::Family) = 1.16 perl(Gedcom::Grammar) = 1.16 perl(Gedcom::Grammar_0_1) = 1.16 perl(Gedcom::Grammar_5_5) = 1.16 perl(Gedcom::Individual) = 1.16 perl(Gedcom::Item) = 1.16 perl(Gedcom::LifeLines) = 1.16 perl(Gedcom::Record) = 1.16 perl(Gedcomlite) = 1.16 perl(Gedcomlite::Comparison) = 1.16 perl(Gedcomlite::Event) = 1.16 perl(Gedcomlite::Family) = 1.16 perl(Gedcomlite::Grammar) = 1.16 perl(Gedcomlite::Grammar_0_1) = 1.16 perl(Gedcomlite::Grammar_5_5) = 1.16 perl(Gedcomlite::Individual) = 1.16 perl(Gedcomlite::Item) = 1.16 perl(Gedcomlite::LifeLines) = 1.16 perl(Gedcomlite::Record) = 1.16 perl-gedcomlite = 1.16-2.fc20.R

Вижу там в конце perl-gedcomlite = 1.16-2.fc20.R - ты это имеешь в виду?
Но если прописать Provides: perl-Gedcomlite, то лишь добавится эта зависимость, а perl-gedcomlite = 1.16-2.fc20.R всё равно останется - это же имя пакета.

138 (17.04.2014 10:56:28 отредактировано Vascom)

Харитон пишет:

в либ ложится сам модуль...
в /usr/lib/perl или /usr/lib/perl5 папки модулей перла...

Да, действительно, только на моей x86_64 это лежит в /usr/lib64/perl5/
Всё равно надо доработать.

139

Харитон пишет:

%{buildroot}%{_libdir}/perl5/vendor_perl/auto/Gedcomlite/.packlist
а у меня без него кажисть модуль не работал...(((
потому и оставил если не путаю.

Ну тогда можно наверное оставить, но это подозрительно. Скрытый файл, да ещё и определяемый как perl tmp.

140

ну попробую в /usr/share/perl5 положить модули(с мейкфайлом разбираться надо будет, а я не спец в этом, ели накрутил так чтоб под Магейю подошло, а то оно под нее не собиралось. В Федоре все ок было)...

141

Не, в /usr/share/perl5 не надо. Сейчас я поищу гайдлайн как делать правильно.

142

Дело в следующем. До вчерашнего дня я для Федоры называл пакет perl-Gedcomlite. Посмотрел, что все пакеты модулей перла имеют такое имя.  Вот уже несколько релизов я его так и создаю.
Подоспело предложение поменять большую букву в маленькую. Согласен, так удобнее, самого это удивляло и раздражало, хотя для модулей сие не критично, их как правило ручками никто не ставит, они сами подтягиваются из репозитария.
Поменял, но теперь надо удовлетворять конфликт, для тех, кто ставил ранее perl-Gedcomlite, так как теперь он будет совсем другим пакетом и старый пакет надо сносить, а ставить новый...

143

Тогда не меняй имя.

Вот нашёл гайд http://fedoraproject.org/wiki/Packaging:Perl
В нём написано, что noarch пакеты должны класть файлы в %{perl_vendorlib}, который в федоре /usr/share/perl5/vendor_perl
А архитектурозависимые в %{perl_vendorarch}, который в федоре /usr/lib64/perl5/vendor_perl

Так что да, надо переделать на /usr/share.

144 (17.04.2014 11:17:35 отредактировано romkaromka)

Да, тогда имя не меняй, иначе совсем запутаешься.

Консоль на мыло. Надо развивать графику.

145

Харитон пишет:

ну как бы сам архив без спеки может быть абсолютно бесполезен. например, для rodovid нет ни мэйкфайла, ничего другого, потому что это набор готовых компонентов - их надо только по нужным папкам пораскидывать...

В общем если надо только бз2 - могу его отдавать. Мне это даже проще. он у мен есть готовый. Все остальные согласны?

спеки хранятся в src.rpm, этого достаточно, а для сборки нужны архивы исходников, а спеки всё равно у всех дистрибутивов будут свои, ваш лишь образец.

Консоль на мыло. Надо развивать графику.

146

Значти буду делать так:
1. Строку BuildRoot:     %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
удалить.

Удалю

2. Удалить
Requires:  perl
Provides: perl-Gedcomlite
поскольку rpm сам прописывает эти зависимости.

Удалю и буду придерживаться старого названия с Большой буквой...

3. При сборке появляется ошибка
'NAME_SYM' is not a known MakeMaker parameter name.
Так что это надо или убрать или поправить.

Ранее не видел - посмотрю у себя.

4. Убрать prefix=%{buildroot}%{_prefix}

Уберу

5. Вместо make писать make %{?_smp_mflags}, это добавит многопоточную сборку. Тут не важно, но лучше чтобы было.

Исправлю

6. make test вынести в специальную отдельную секцию, вот так:

%check
make test

Сделаю

7. Вместо make install использовать макрос %make_install, либо (если дистрибутив не поддерживает этот макрос) make install DESTDIR=%{buildroot}

Поправлю

8. Вместо %{_prefix}/share/man использовать макрос %{_mandir}

Поправлю

9. Удалить секцию %clean и всё её содержимое

Могу сделать. А кто будет временные файлы чистить? Или оно само чистит если не указывать?

Самое больное перенастроить установку в share...В свое время долго копался с Makefile.PL. Придется опять покопаться...(((

147

Харитон пишет:

5. Вместо make писать make %{?_smp_mflags}, это добавит многопоточную сборку. Тут не важно, но лучше чтобы было.

оставить make, в магее для многопоточной сборки по другому - это макрос %make

Харитон пишет:

7. Вместо make install

в магее %makeinstall_std, поэтому оставь make install DESTDIR=%{buildroot}

Харитон пишет:

А кто будет временные файлы чистить?

удали в архиве и проверь если rodovid работает без них, то они явно лишние.

Консоль на мыло. Надо развивать графику.

148

Согласен с romkaromka. Сделай как он сказал по этим пунктам, для универсальности. А для Федоры я сам доделаю, если надо будет.

149

ну я как бы рпм для федоры 17 и делаю...))) учту рекомендации.
Не понял вот это:

Харитон пишет:
    А кто будет временные файлы чистить?
удали в архиве и проверь если rodovid работает без них, то они явно лишние.

Я так понимаю в clean чистят все то, что создано при сборке пакета. Если его не делать, то в buildroot останутся файлы, которые мне совсем не сдались при последующей сборке...

150 (17.04.2014 14:04:13 отредактировано Vascom)

Уже давно там всё автоматом чистится. Секция %clean нужна только EPEL 5, но под неё же ты не будешь собирать пакет. Вот и гайдлайн на это есть http://fedoraproject.org/wiki/Packaging … s#.25clean