31 (23.05.2013 22:16:18 отредактировано romkaromka)

Ставить 64битную.
/usr/local используется неверно
http://i5.pixs.ru/thumbs/3/3/6/asdd1png_4628949_8041336.jpg
rodovid.spec:

+ открыть спойлер

Name: rodovid
Version: 0.3.8
Release: %mkrel 1
Summary: Genealogy visual editor
Group: Office/Utilities
License: GPLv2
URL: http://%{name}.sourceforge.net/
Source0: %{name}.tar.bz2
Requires:  perl-Archive-Tar, graphviz, perl-Tk, ImageMagick-perl, perl-Gedcom-lite
BuildArch: noarch

%description
Genealogy visual editor

%prep
%setup -q

%build

%install
mkdir -p %{buildroot}%{_datadir}
mkdir -p %{buildroot}%{_datadir}/%{name}
mkdir -p %{buildroot}%{_datadir}/%{name}/graphics
mkdir -p %{buildroot}%{_datadir}/%{name}/locales
cp -r ./graphics/* %{buildroot}%{_datadir}/%{name}/graphics/
cp -r ./locales/* %{buildroot}%{_datadir}/%{name}/locales/
mkdir -p %{buildroot}%{_datadir}/%{name}/projects
cp -r ./projects/* %{buildroot}%{_datadir}/%{name}/projects/
cp ./version %{buildroot}%{_datadir}/%{name}/
mkdir -p %{buildroot}%{_datadir}/icons
cp ./graphics/%{name}48.png %{buildroot}%{_datadir}/icons/
mkdir -p %{buildroot}%{_bindir}
install -m 777 ./%{name} %{buildroot}%{_bindir}/
mkdir -p %{buildroot}%{_datadir}/applications
install -m 0644 ./%{name}.desktop %{buildroot}%{_datadir}/applications/

%files
%doc README* about readme
%{_bindir}/*
%{_datadir}/*

%changelog
* Wed May 22 2013 Oleksandr Mishchenko
- initial building for Mageia

Не собирается только perl-Gedcom-lite из-за перепутанных путей.

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

32

прозевал, что оно почему-то в локал сложило...(((
надо будет порыться...

33

странно. сейчас просто перекомпилил(точнее из изменений поставил ремарку в секции %clean на команду rm ..., чтоб посмотреть что у меня в буилдруте собирается) - вроди все ок. Проверяю в убунте, потому пишет ошибки на базу:

rpm -qlp perl-Gedcom-lite-1.16-1.fc16.i386.rpm
помилка: помилка db5 (-30969) з dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch
помилка: не вдалося відкрити покажчик Packages за допомогою db5 —  (-30969)
помилка: не вдалося відкрити базу даних Packages у /home/asm/.rpmdb
/usr/lib/perl5
/usr/lib/perl5/auto
/usr/lib/perl5/auto/Gedcom
/usr/lib/perl5/auto/Gedcom/.packlist
/usr/lib/perl5/perllocal.pod
/usr/share/doc/perl-Gedcom-lite-1.16
/usr/share/doc/perl-Gedcom-lite-1.16/README
/usr/share/man/man3
/usr/share/man/man3/Gedcom.3pm
/usr/share/man/man3/Gedcom::Comparison.3pm
/usr/share/man/man3/Gedcom::Event.3pm
/usr/share/man/man3/Gedcom::Family.3pm
/usr/share/man/man3/Gedcom::Grammar.3pm
/usr/share/man/man3/Gedcom::Individual.3pm
/usr/share/man/man3/Gedcom::Item.3pm
/usr/share/man/man3/Gedcom::LifeLines.3pm
/usr/share/man/man3/Gedcom::Record.3pm
/usr/share/perl5/Gedcom
/usr/share/perl5/Gedcom.pm
/usr/share/perl5/Gedcom/Comparison.pm
/usr/share/perl5/Gedcom/Event.pm
/usr/share/perl5/Gedcom/Family.pm
/usr/share/perl5/Gedcom/Grammar.pm
/usr/share/perl5/Gedcom/Grammar_0_1.pm
/usr/share/perl5/Gedcom/Grammar_5_5.pm
/usr/share/perl5/Gedcom/Individual.pm
/usr/share/perl5/Gedcom/Item.pm
/usr/share/perl5/Gedcom/LifeLines.pm
/usr/share/perl5/Gedcom/Record.pm

в буилдруте тоже все ок.

Кстати это не проблема если архитектура не указана в спеке? оно при сборке само подстроится? Просто по своей сути и там и там - чистый перл. вот только пакеты по зависимостяммогут быть другие. А что там сборщик модуля Гедком крутит я не разбирался. но скорее всего не на Си же компилит...)))
Может ему прописать noarch и инсталить где угодно?

Может кто-то проверить сборку на 64битах? а то у меня аппаратного ускорения виртуализации нет на ноуте и я 64 бита в вирте запустить не могу...
А дома буду послезавтра, но не думаю что в субботу будет время...(((

Вот пересобранные пакеты:
www.mishchenko.org.ua/rpm/gedcom.tar.gz

34 (23.05.2013 23:12:32 отредактировано romkaromka)

Никаких изменений. Архив не перезалит.

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

35

странно у меня вон же отображает что нет local...(((
/usr/share/man/man3/*

А если у себя пересобрать сырец?

36 (23.05.2013 23:24:28 отредактировано romkaromka)

Тут не только маны, нет и /usr/share/perl5/* . Я у себя и пересобираю.

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

37

а.. да кстати... шара-перл5 пропала у тебя...((

я вот пересобрал в ноарч с твоими поправками для родовид...
выложил туда же...
Может сие оживет?

38 (23.05.2013 23:43:59 отредактировано romkaromka)

checking for Roman.pm.............. not found
В каком он пакете? Ещё не хватало perl-Parse-RecDescent.

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

39

Это Makefile.PL генерит Makefile.
попробую завтра убрать то, что я не пользую еще более тщательно. Оно его чекает, но если его нет, то не пользует. Но я его тоже не пользую.

40

А, что для работы gedcom нужен make? Зачем он в Requires:  добавлен?
Спек должен выглядеть вот так:

Name:       perl-Gedcom-lite
Version:    1.16
Release:    1%{?dist}
Summary:    Genealogy perl modile

License:    GPLv2
URL:        http://rodovid.sourceforge.net/
Source0:    gedcom.tar.bz2

BuildRequires:  make
BuildRequires:  perl
BuildRequires:  perl-ExtUtils-MakeMaker
BuildRequires:  perl-Test-Simple
Requires:   make
Requires:   perl
Requires:   perl-ExtUtils-MakeMaker
Requires:   perl-Test-Simple

BuildArch: noarch

%description
This is my Soft.

%prep
%setup -q


%build
perl Makefile.PL prefix=%{buildroot}/usr
make %{?_smp_mflags}
make test
%{make_install}


%files
%doc README
%{_mandir}/*
%{_libdir}/*
%{_datadir}/perl5/*

%changelog 
* Wed May 22 2013 Oleksandr Mishchenko
- Thats All

Исправь ошибки

    Файл не найден: /home/vascom/rpmbuild/BUILDROOT/perl-Gedcom-lite-1.16-1.fc18.R.x86_64/usr/share/man/*
    Файл не найден: /home/vascom/rpmbuild/BUILDROOT/perl-Gedcom-lite-1.16-1.fc18.R.x86_64/usr/lib64/*
    Файл не найден: /home/vascom/rpmbuild/BUILDROOT/perl-Gedcom-lite-1.16-1.fc18.R.x86_64/usr/share/perl5/*

41

И второй спек.
Должен выглядеть примерно так:

Name:       rodovid
Version:    0.3.8
Release:    1%{?dist}
Summary:    Genealogy visual editor

License:    GPLv2
URL:        http://%{name}.sourceforge.net/
Source0:    %{name}.tar.bz2

Requires:   perl-Archive-Tar
Requires:   graphviz
Requires:   perl-Tk
Requires:   ImageMagick-perl
Requires:   perl-Gedcom-lite

BuildArch: noarch

%description
Genealogy visual editor

%prep
%setup -q

%build

%install
mkdir -p %{buildroot}%{_datadir}
mkdir -p %{buildroot}%{_datadir}/%{name}
mkdir -p %{buildroot}%{_datadir}/%{name}/graphics
mkdir -p %{buildroot}%{_datadir}/%{name}/locales
cp -r ./graphics/* %{buildroot}%{_datadir}/%{name}/graphics/
cp -r ./locales/* %{buildroot}%{_datadir}/%{name}/locales/
mkdir -p %{buildroot}%{_datadir}/%{name}/projects
cp -r ./projects/* %{buildroot}%{_datadir}/%{name}/projects/
cp ./version %{buildroot}%{_datadir}/%{name}/
mkdir -p %{buildroot}%{_datadir}/icons
cp ./graphics/%{name}48.png %{buildroot}%{_datadir}/icons/
mkdir -p %{buildroot}%{_bindir}
install -m 777 ./%{name} %{buildroot}%{_bindir}/
mkdir -p %{buildroot}%{_datadir}/applications
install -m 0644 ./%{name}.desktop %{buildroot}%{_datadir}/applications/

%files
%doc README* about readme
%{_bindir}/*
%{_datadir}/*

%changelog
* Wed May 22 2013 Oleksandr Mishchenko
- Fedora 16 test noarch

И так же надо исправить эти ошибки:

rodovid.noarch: E: standard-dir-owned-by-package /usr/share/icons
rodovid.noarch: E: world-writable /usr/bin/rodovid 0777L
rodovid.noarch: E: non-standard-executable-perm /usr/bin/rodovid 0777L
rodovid.noarch: W: no-manual-page-for-binary rodovid

То есть стандартный путь /usr/share/icons не должен принадлежать этому пакету. Иначе, при удалении пакета удалится вся эта папка.
Ну и сменить права на бинарник.

42

Я уже во спек для Родовид поправки типа %{name} внес...
А что там изменилось? я то могу сей спек скопировать, но хотелось бы понять что там ключевого, чтоб научиться и в будущем создавать правильно.

43

Что конкретно ты имеешь в виду?
Просто прогоняй получаемый спек, srpm и все получаемые пакеты через утилиту rpmlint и исправляй ошибки. Ну и читай рекомендации https://fedoraproject.org/wiki/How_to_c … PM_package

44

Вот пытаюсь все еггоги от rpmlint поправить.
Не понимаю как можно победить ошибку типа Standard dir owned by package
в определенных пакетах он у меня ругается на /usr/share/{doc,icons,application}
єто появляется из-за того что мне надо создать каталог, в которій я буду копировать файл, но я его создаю от имени владельца пакета. Можно поменять права через chown но я пакет собираю под простым пользователем(так вы рекомендовали) и поменять владельца не смогу...
Как быть?
Особенно пугает то, что оно ругается на doc!
Я сию папку не создаю, а просто указываю перечень файлов в %doc

45

Просто расписать вместо %{_datadir}/* директории и файлы более подробно.
Владельца менять не надо - у всех файлов пакета владельцем станет root автоматом. Права доступа только регулируйте, но лучше не в спеке, а в исходниках.

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

46

Более-менее причесал рпм-ки. Остались только мелкие(по моему скудному разумению) варнинги. Что смог убрал.
Качать с http://78.27.165.18/rpm/rodovid.tar.gz

Если кто хочет переводить в другие пакетные наборы (Слака, Деб, Генту), а так же в подвиды каждого из данных дистрибутивов, то я всеми руками за и хотелось бы настроить более менее надежную связь для обновления пакетной базы.
Т.е. я выпускаю новую версию. Нужно чтоб я смог разослать ссылку на нее для всех подписавшихся на сей труд. Я ее например буду выкладывать в виде рпм-ки для Ф16(как сейчас). После Вы делаете новый пакет(не забыв в пакете указать свое авторство пакетосборщика) и передаете его мне, я его выкладываю у себя на сайте так же, как и вы в дистрибутиве или на своих репозитариях. Могу так же добавить ссылки на репозитарии на сайте. Будут какие-то другие идеи - пишите.

47

Харитон, Попытался собрать пакет для Msgeia 3, но программа при запуске выдает портянку. Я так понимаю он ругается на gedcom

Can't locate Gedcom.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.16.3/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.16.3 /usr/lib/perl5/vendor_perl/5.16.3/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.16.3 /usr/lib/perl5/5.16.3/x86_64-linux-thread-multi /usr/lib/perl5/5.16.3 /usr/lib/perl5/site_perl/5.16.3 /usr/lib/perl5/site_perl/5.16.3/x86_64-linux-thread-multi /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.16.3 /usr/lib/perl5/vendor_perl/5.16.3/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.16.2 /usr/lib/perl5/vendor_perl/5.16.2/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl .) at /usr/bin/rodovid line 16.
BEGIN failed--compilation aborted at /usr/bin/rodovid line 16.
MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

48 (27.05.2013 01:32:09 отредактировано romkaromka)

XliN, баг подтверждаю - пути установки неверные (/usr/lib содержит в пакете пустые папки без файлов, а сами файлы не в той директории).

rm -f %{buildroot}%{_prefix}/lib/perl5/auto/Gedcom/.packlist
rm -f %{buildroot}%{_prefix}/lib/perl5/perllocal.pod
надо писать rm -f, а не просто rm, иначе если файла нет, то сборка прерывается.

вместо %{_libdir} использовать %{_prefix}/lib, так как пути в 64битной архитектуре не /usr/lib64, а /usr/lib.

в desktop файле отсутствует Categories=чему_равно (http://standards.freedesktop.org/menu-s … y-registry)
MimeType= убрать, так как пустое значение не во всех DE обработается.

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

49

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

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

50 (27.05.2013 02:55:08 отредактировано XliN)

Короче. Вот такой получился спек рабочий для Mageia3. Но нужно придумать как избавиться к жесткой привязке версии Perl. Сейчас он сделан для perl-5.16.3

%define name perl-Gedcom-lite                                                                                                                       
%define version 1.16                                                                                                                                 
%define debug_package %{nil}                                                                                                                         

Name:           %{name}                                                                                                                             
Version:        %{version}                                                                                                                           
Release:        %mkrel 1                                                                                                                             
Summary:        Genealogy perl modile                                                                                                               

Group:          Development/Libraries                                                                                                               
License:        GPLv2                                                                                                                               
URL:            http://search.cpan.org/~pjcj/                                                                                                       
Source0:        %{name}.tar.bz2                                                                                                                     

#BuildRoot:     %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)                                                                       

BuildRequires:  make                                                                                                                                 
BuildRequires:  perl                                                                                                                                 
BuildRequires:  perl-ExtUtils-MakeMaker                                                                                                             
BuildRequires:  perl-Test-Simple                                                                                                                     

Requires:  perl                                                                                                                                     
BuildArch: noarch                                                                                                                                   

%description                                                                                                                                         
Provides GEDCOM format for Perl.                                                                                                                     
Lite version of Gedcom.pm by Paul Johnson.                                                                                                           

%prep                                                                                                                                               
%setup -q                                                                                                                                           

%build                                                                                                                                               
perl Makefile.PL prefix=%{buildroot}/usr LDDLFLAGS='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -L%{buildroot}/usr/lib' LDFLAGS='-fstack-protector -L%{buildroot}/usr/lib' SITELIBEXP=%{buildroot}/usr/lib/perl5/5.16.3 SITEARCHEXP=%{buildroot}/usr/lib/perl5/5.16.3 SITEPREFIX=%{buildroot}/usr INSTALLSITELIB=%{buildroot}/usr/lib/perl5/5.16.3 INSTALLSITEARCH=%{buildroot}/usr/lib/perl5/5.16.3 INSTALLSITEBIN=%{buildroot}/usr/bin INSTALLSITESCRIPT=%{buildroot}/usr/bin INSTALLSITEMAN1DIR=%{buildroot}/usr/share/man/man1 INSTALLSITEMAN3DIR=%{buildroot}/usr/share/man/man3                                                         
make                                                                                                                                                 
make test                                                                                                                                           

%install
make install
cd %{buildroot}/usr/share/man/man3
gzip *
cd -
rm -f %{buildroot}%{_prefix}/lib/perl5/5.16.3/auto/Gedcom/.packlist
rm -f %{buildroot}%{_prefix}/lib/perl5/5.16.3/perllocal.pod

%files
%doc README

%{_prefix}/lib/perl5/5.16.3/Gedcom/*.pm
%{_prefix}/lib/perl5/5.16.3/Gedcom.pm
%{_mandir}/man3/*.xz

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

51

XliN пишет:

Короче. Вот такой получился спек рабочий для Mageia3. Но нужно придумать как избавиться к жесткой привязке версии Perl.
...

%{_prefix}/lib/perl5/5.16.3/Gedcom/*.pm
%{_prefix}/lib/perl5/5.16.3/Gedcom.pm
%{_mandir}/man3/*.xz

А у вас перл-дибы что в /usr/lib/perl5 становятся? ві правили что-то или оно само так ставится? или в магейе работает только в этих папках?
Просто у меня ставится в /usr/share/perl5/Gedcom...
и все ок...

52

romkaromka пишет:

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

это да!
Но пока полной версии нет и наврядли будет так как автор придерживается идеи CPAN  и только там публикует свою библиотеку. И вообще я думал что он уже не поддерживает ее. а тут на разродился 1.18 версией. надо будет ее посмотреть может там и по сборке что-то улучшилось. по функционалу мне и 1.16 с головой хватало, но все таки новое...

Вот как сие побороть чтоб глобально? проверять при установке нет ли установленной вручную библиотеки CPAN::Gedcom и если есть писать сообщенте и делать exit 1?

Просто я при установке программы данную библиотеку качал с сайта CPAN и собирал локально. Так могли делать и другие, но нам так не особо годится, так как скачивать файл во время установки не есть хорошо. А вдруг клиент будет за прокси? рпм знает где прокси а cpan нет ему надо ручками указывать прокси. wget тоже...

53

Харитон, А вот в Магее надо ставить как написал XliN и надо как-то исправлять исходники.
Переименовать просто все свои перловые файлы, которые могут пересекаться. По сути у Вас ее форк.

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

54

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

А у вас перл-дибы что в /usr/lib/perl5 становятся?

Только если либы лежат в  /usr/lib/perl5/5.16.3 программа стартует и подцепляет либы.

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

ві правили что-то или оно само так ставится?

Это по дефолту. не знаю. Может Perl еще от куда может подтянуть libs. =(

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

55

Я разобрался почти со всем и могу поставить гедком в /usr/lib/perl5/5.16.3/Gedcom/*.pm если надо...
Но у меня в Федоре16 сие не работает. там нет папки с версией перла, а там сразу лежат модули...
Собираю через vendor_perl метод в папку /usr/share/perl5. Может у вас этот вариант заработает в Мигее. Если нет, то дальше есть решение.
Вот переделанное:
http://www.mishchenko.org.ua/rpm/rodovid.tar.gz
В Ubuntu перл библиотеки ложит еще(кроме /usr/share/perl5) и в /usr/lib/perl5 а с версией то еще и в /usr/lib/perl/версия
Видать у магеи свои настроены папки по умолчанию для перла(или от версии перла зависит). Их конечно можно поправить, добавив свои пути при инсталляции пакета, но наверно это будет не совсем по пути дистростроителя. Так что под конкретный дистр прийдется переписывать спеку. Имена пакетов тоже отличаться могут. Например в деб-базе все зависимости кроме графвиза имеют другие имена...(((
Сделал заготовку под Мегею (ставить либы перла в %{_prefix}/lib/perl5/5.16.3/ причем версия перла автоопределяется) в спеке, там только надо закоментить или раскоментить кое-что(я подписал).

Имя Модуля поменял(долго мучался чтоб потом оно собралось и установилось). Теперь модуль звется perl-Gedcomlite. Тире пришлось убрать ибо оно потом не устанавливается, видать какие-то особенности перла и рпмбилдера в именах пакета и папок... Там похоже при сборке вместо "-" подсовывается "_". Вот имя и не соответствует и он при попытке установки сам требует в зависимостях себя...))) Ну это не критично - без тире работает. Причем изменено без ковыряния оригинального Makefile.PL...

56

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

А у вас перл-дибы что в /usr/lib/perl5 становятся?

Только если либы лежат в  /usr/lib/perl5/5.16.3 программа стартует и подцепляет либы.

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

ві правили что-то или оно само так ставится?

Это по дефолту. не знаю. Может Perl еще от куда может подтянуть libs. =(

Их вообще может быть много где. хоть локально.
Но основные это /usr/{lib,share}/perl5 дополнительно могут быть /usr/{lib,share}/perl Но в федоре16 их нет.
посмотрите в мегее есть в /usr/share/perl5 или нет.

57 (29.05.2013 18:27:38 отредактировано romkaromka)

Нет, не собирается. Можете сами попробовать собрать для Магеи прямо в Федоре.
Пакеты, которых нет в оф. репозитории, но которые потребуются:
ftp://ftp.mageialinux.ru/
Ну и сама сборка:
http://wiki.mageialinux.ru/index.php?title=Aum (если еще и ошибки найдете в перловом aum, то будет вообще здорово, так как его никто еще не проверял дальше Магеи)
Спек, конечно, портянка, он должен быть коротким и одинаковым (по возможности) для rpm дистрибутивов. Изменения надо вносить в исходники, а не в спек - в спек лишь в порядке исключения.

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

58

ну я с mageia не знаком...(((
Я ее даже в глаза не видел.
В Федора16 RPM собирается на ура и устанавливается потом на голую систему без проблем.

Это я уже костылей напихал подстраиваясь под магею...
Как устроено оно в магейе я не знаю, а о aum узнал от Вас и даже не представляю что оно такое.
Может я соберу пакет для Федоры. А под магею пусть магееводы подгоняют? А то мы так точно ничего не сделаем. А то получается убунтовод делает rpm в федоре где не очень умеет собирать рпм, а надо сделать для магеи которую он даже не видел...((( Я конечно не против поучиться в данном направлении, но как-то делать то чего не можешь пощупать сложновато...(((
Федора все-таки более-менее стандарт дистрибутива. я так думаю. если не ошибаюсь...

59 (29.05.2013 22:24:34 отредактировано romkaromka)

Харитон, наплевать тогда на костыли - только переименование файлов в исходниках сделайте, и хотя бы через aum добейтесь самого факта удачной сборки пакетов. Я думаю, что Вы сможете осилить перловый скрипт aum. Если придется патчить его, потому что его только в Магее мы проверяли, то просто выложить патч, исправим, но я думаю, что в Федоре он отработает нормально.

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

60

а аум есть в федоре?