Автор Тема: Малко помощ за .spec файл - за build на prm  (Прочетена 5732 пъти)

Nik123

  • Напреднали
  • *****
  • Публикации: 3217
  • Distribution: Mageia, Q4OS
    • Профил
Здравейте! Опитвам се да си направя рпм от .tar.bz2- за sim-0.9.4.2 става въпрос. В момента пиша .spec файла, водейки се от това ръководство, но зациклих на две места: Първо, на секцията
%build -там в ръководството е така:
%build
make
Само че като пробвах да стартирам "правенето" на рпм-а, ми изплю нещо от рода на "No Makefile found". Не знам доколко е правилно, но се оправи, като добавих и ./configure - t.e. стана така:
%build
./configure
make
Мисля, че това реши проблема, в момента билдвам рпм-а и е на етап "маке". Притеснява ме друго - секцията %files. За тая секция в ръководството пише това:
"At present, the best way to create the file list is to read the makefile to see what files it installs, verify this against the files installed on the build system, and create the list."
Само че в сорса на сим не намерих точно makefile, а makefile.am и makefile.in, но като ги отворих, не можах да намеря никакъв списък с файлове, къде кое отива, в коя папка, и т.н. - молбата ми е, някой ако може да ми обясни къде точно в тия makefiles да гледам за тоя file list.. Благодаря предварително. Ето .spec файла, който съм сътворил досега, и който в момента тествам:

#Simple Instant Messenger spec file
Summary:A Simple Instant multiprotocol messenger
Name: sim
Version: 0.9.4.2
Release: 1
Copyright: GPL
Group: Applications/Internet/Instant messaging
Source: http://download.berlios.de/sim-0.9.4.2.tar.bz2
URL: http://developer.berlios.de/projects/sim-im/
Distribution: Mandriva Linux 2007 "sunna" RC2 (my distro)
Vendor: BerliOS Developer
Packager: Nik123 <nikbp@yahoo.com>
%description
My favourite ICQ instant messenger - check it!
%prep
#rm -rf $RPM_BUILD_DIR/sim-0.9.4.2
#zcat $RPM_SOURCE_DIR/sim-0.9.4.2.tar.bz2 | tar -xvf -
%setup
%build
./configure
make
%install
make install
%files
%doc README
/usr/bin/sim

Приемам идеи за "доодялване" на spec файла
 '<img'>
Активен

Nik123

  • Напреднали
  • *****
  • Публикации: 3217
  • Distribution: Mageia, Q4OS
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #1 -: Jan 30, 2007, 19:57 »
Явно доста ще има за дялане, това ми изплю сега терминала (мисля, че целият процес беше вече на make install) -
........
extracting debug info from ./plugins/homedir.soT
extracting debug info from ./plugins/_core/.libs/_core.so
extracting debug info from ./plugins/_core/.libs/_core.soT
extracting debug info from ./sim/.libs/libsim.so.0.0.0
extracting debug info from ./sim/.libs/sim
0 blocks
+ '[' -n '' ']'
+ /usr/share/spec-helper/clean_files
+ '[' -n '' ']'
+ /usr/share/spec-helper/compress_files
+ '[' -n '' ']'
+ /usr/share/spec-helper/strip_files
invalid top directory at /usr/lib/perl5/5.8.8/File/Find.pm line 592.
error: Bad exit status from /var/tmp/rpm-tmp.37389 (%install)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.37389 (%install)
[root@localhost SOURCES]#

И както очаквах, няма никакъв създаден рпм пакет. Но за сметка на това, като напиша в терминал sim и програмата си тръгва- а я деинсталирах, преди да почна това с рпм-а - май вместо да направя рпм, съм си инсталирал сим-а , и то като root- и ./configure, и make, освен make install? Съвсем се обърках вече. Някакви идеи?



Активен

winman

  • Напреднали
  • *****
  • Публикации: 311
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #2 -: Jan 30, 2007, 20:05 »
Hi,

Значи първо не спазваш конвенцията на Mandriva за rpm пакети. Виж и разучи това:

http://qa.mandriva.com/twiki/bin/view/Main/RpmHowTo

Относно files, няма как, трябва да ги опишеш един по един на ръка. За целта използвай опшъните на rpmbuild да спреш процеса в нужния момент и да видиш къде какво се инсталира. Също разгледай spec file от няkoй от srpm пакетите за SIM тук:

http://rpmfind.net/linux/rpm2html/search.php?query=sim



Активен

The more you know about Linux the less likely girls will want to know about you!

Nik123

  • Напреднали
  • *****
  • Публикации: 3217
  • Distribution: Mageia, Q4OS
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #3 -: Jan 30, 2007, 20:33 »
Благодаря за информацията. Ще прочета за какво става въпрос, а за конвенцията- сигурно си прав, макар че аз си правя рпм-а за собствено ползване, едва ли е фатално

Едит: А за листа с файлове, няма ли някакъв начин да го взема от тоя makefile, и от кой по-точно?



Активен

Nikolavp

  • Напреднали
  • *****
  • Публикации: 408
    • Профил
    • WWW
Малко помощ за .spec файл - за build на prm
« Отговор #4 -: Jan 30, 2007, 21:02 »
Цитат (Nik123 @ Ян. 30 2007,21:33)
Благодаря за информацията. Ще прочета за какво става въпрос, а за конвенцията- сигурно си прав, макар че аз си правя рпм-а за собствено ползване, едва ли е фатално

Едит: А за листа с файлове, няма ли някакъв начин да го взема от тоя makefile, и от кой по-точно?

Ако мислиш да не си утежняваш живота и искаш да разбереш как се работи с make, защото повярвай ми рано или късно ще ти потрябва '<img'> ето ти нещо приятно за четене(малко е дългичко ама какво пък) тук

EDIT:Чак сега видях, че използваш automake '<img'> опа ':ok:'



Активен

http://blog-nikolavp.rhcloud.com - простотиите, с които се занимавам в свободното време

Nik123

  • Напреднали
  • *****
  • Публикации: 3217
  • Distribution: Mageia, Q4OS
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #5 -: Jan 30, 2007, 22:52 »
Благодаря и на двама ви, надявам се, че ще успея да се справя :-)
Активен

Nik123

  • Напреднали
  • *****
  • Публикации: 3217
  • Distribution: Mageia, Q4OS
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #6 -: Jan 31, 2007, 15:49 »
Стигнах до едно положение, и кораво зациклих, ето грешката:
[nik@localhost SOURCES]$ rpm -bi sim-0.9.4.2.spec
error: File $nik/rpm/SOURCES/sim-0.9.4.2.tar.bz2: No such file or directory

Файлът с архивирания сорс си е точно в тази папка- /home/nik/rpm/SOURCES/ и се казва точно така- sim-0.9.4.2.tar.bz2
Изчетох цялата документация на мандрива по въпроса, от горните линкове в темата, и пак нищо не разбирам. Ето целия spec файл (секцията %files е в процес на писане все-още, имах намерение да прекъсна процеса веднага след make install и да добавя файловете във %files):
%define name      sim
%define version      0.9.4.2
%define release      %mkrel 1


Name:      %{name}
Version:   %{version}
Release:   %{release}

Summary:   Multiprotocol instant messenger
Source0:   http://download.berlios.de/%{name}-%{version}.tar.bz2
URL:      http://developer.berlios.de/projects/sim-im/
Group:      Applications/Internet/Instant messaging
BuildRoot:   %{_tmppath}/%{name}-%{version}-%{release}-buildroot
License:   GPL
%description
A simple user-friendly multiprotocol instant messenger

%prep
%setup -q -a 1

%build
%configure
%make
%install
rm -rf $RPM_BUILD_ROOT
%makeinstall
%clean
rm -rf $RPM_BUILD_ROOT
%files



%defattr(0755,root,root)
%doc README NEWS COPYING AUTHORS
%{_mandir}/man1/*
%{_bindir}/sim

Всяка помощ е добре дошла, благодаря предварително

Edit: Редактирах файла .rpmmacros така:
%_topdir                /home/nik/rpm
%_tmppath               /home/nik/rpm/tmp

%_signature             gpg
%_gpg_name              Mandrivalinux
%_gpg_path              ~/.gnupg

%distribution           Mandriva Linux
%vendor                 Mandriva

И сега вади следната грешка:
[nik@localhost SOURCES]$ rpm -bi sim-0.9.4.2.spec
error: No source number 1
Ако сложа Source1, ми дава No source number 0. Ако оставя само Source, дава пак това:
[nik@localhost SOURCES]$ rpm -bi sim-0.9.4.2.spec
error: No source number 1
Откъде да му взема повече от един сорс, като сорса си е само един'<img'>



Активен

Nik123

  • Напреднали
  • *****
  • Публикации: 3217
  • Distribution: Mageia, Q4OS
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #7 -: Feb 01, 2007, 00:45 »
И така, стигнах до следното положение: Зададох му, в спек файла, и сорс нула, и сорс едно, като и двата сорса бяха с една и съща стойност, т.е.
Source0:   http://download.berlios.de/%{name}-%{version}.tar.bz2
Source1:   http://download.berlios.de/%{name}-%{version}.tar.bz2
и прекомпилацията тръгна, проблемът в момента е, че след маке  стъпката make install се опитва да инсталира в системните директории- /usr/bin/, /usr/share/ и т.н. и ми вади error-и (permission denied)  и целият процес прекъсва, а всичко в .spec файла е написано и проверено 100 пъти съгласно ръководството за правене на rpm-и, което winman постна по-горе. Ако някой може да помогне, пък било и с просто предположения, моля да постне
Активен

winman

  • Напреднали
  • *****
  • Публикации: 311
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #8 -: Feb 01, 2007, 02:19 »
Сто пъти си проверил, но явно трябвало и сто и първи... Първо за това, че ти иска два сорс файла. Ти така му казваш в реда:

%setup -q -a 1

щом имаш един сорс файл, то махни опшъните: Правилното ще е:
Source: http://download.berlios.de/%{name}-%{version}.tar.bz2
.....
%setup -q

и няма да ти търси втори файл. А за директориите... ами пропуснал си да дефинираш BuildRoot:

BuildRoot:   %{_tmppath}/%{name}-%{version}-%{release}

Прочети пак ръководството на Мандрива, което ти изпратих. Първо изпълни указанията за директории и т.н. После разгледай примера. Там всичко е обяснено.



Активен

The more you know about Linux the less likely girls will want to know about you!

Nik123

  • Напреднали
  • *****
  • Публикации: 3217
  • Distribution: Mageia, Q4OS
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #9 -: Feb 01, 2007, 03:23 »
Благодаря за отговора! Значи, по въпроса за сорса, оправих го, благодаря много за съвета. Относно BuildRoot- дефинирал съм го-
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot

 Проблемът е - не знам защо, но при стъпката make install се опитва да инсталира /копира файловете в системните директории /например /usr/share/icons - за .png файловете забелязах/  и после дава ерори и толкова- ще постна след малко подробностите, в момента пак съм на маке. Аз доколкото разбрах от ХауТу-то, това не би трябвало да се случва.. Всички директории, които трябва да се създадат, според указанието съм ги създал



Активен

winman

  • Напреднали
  • *****
  • Публикации: 311
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #10 -: Feb 01, 2007, 11:11 »
Тогава провери пак това как си го направил:

.rpmmacros

%_topdir                $HOME/rpm
%_tmppath               $HOME/rpm/tmp

%_signature             gpg
%_gpg_name              Mandrivalinux
%_gpg_path              ~/.gnupg

%distribution           Mandriva Linux
%vendor                 Mandriva

Файла .rpmmacros трябва да ти е в хоум директорията и задължително да изпишеш целия път. Тоест да замениш навсякъде $HOME, например:
%_tmppath               $HOME/rpm/tmp   се променя на
%_tmppath               /home/Ник123/rpm/tmp
и т.н.
Активен

The more you know about Linux the less likely girls will want to know about you!

Nik123

  • Напреднали
  • *****
  • Публикации: 3217
  • Distribution: Mageia, Q4OS
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #11 -: Feb 01, 2007, 13:19 »
Не става- вече не знам какво не му е наред. Като чета инфото от терминала, успешно създава "фалшивите" системни папки, но не може да създаде някакъв "regular file" макар че би следвало да може да чете и да пише без проблеми в тия папки- ето грешката:

+ make prefix=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr exec_prefix=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr bindir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr/bin sbindir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr/sbin sysconfdir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/etc datadir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr/share includedir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr/include libdir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr/lib libexecdir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr/lib localstatedir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/var/lib sharedstatedir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr/com mandir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr/share/man infodir=/home/nik/rpm/tmp/sim-0.9.4.2-1mdv2007.0-buildroot/usr/share/info install
Makefile:897: warning: overriding commands for target `clean-bcheck'
Makefile:860: warning: ignoring old commands for target `clean-bcheck'
Makefile:902: warning: overriding commands for target `bcheck-am'
Makefile:865: warning: ignoring old commands for target `bcheck-am'
Making install in sim
make[1]: Entering directory `/home/nik/rpm/BUILD/sim-0.9.4.2/sim'
Making install in png
make[2]: Entering directory `/home/nik/rpm/BUILD/sim-0.9.4.2/sim/png'
make[3]: Entering directory `/home/nik/rpm/BUILD/sim-0.9.4.2/sim/png'
make[3]: Nothing to be done for `install-exec-am'.
/bin/sh ../../admin/mkinstalldirs /usr/share/icons/hicolor/32x32/apps
/usr/bin/install -c -p -m 644 ./hi32-app-sim.png /usr/share/icons/hicolor/32x32/apps/sim.png
/usr/bin/install: cannot create regular file `/usr/share/icons/hicolor/32x32/apps/sim.png': Permission denied
make[3]: *** [install-kde-icons] Error 1
make[3]: Leaving directory `/home/nik/rpm/BUILD/sim-0.9.4.2/sim/png'
make[2]: *** [install-am] Error 2
make[2]: Leaving directory `/home/nik/rpm/BUILD/sim-0.9.4.2/sim/png'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/home/nik/rpm/BUILD/sim-0.9.4.2/sim'
make: *** [install-recursive] Error 1
error: Bad exit status from /home/nik/rpm/tmp/rpm-tmp.10471 (%install)


RPM build errors:
    Bad exit status from /home/nik/rpm/tmp/rpm-tmp.10471 (%install)
[nik@localhost SOURCES]$



Ето и .rpmmacros ( в хоум директорията е):
%_topdir                /home/nik/rpm
%_tmppath               /home/nik/rpm/tmp

%_signature             gpg
%_gpg_name              Mandrivalinux
%_gpg_path              ~/.gnupg

%distribution           Mandriva Linux
%vendor                 Mandriva

Ето и sim-0.9.4.2.spec :
%define name      sim
%define version      0.9.4.2
%define release      %mkrel 1
   

Name:      %{name}
Version:   %{version}
Release:   %{release}

Summary:   Multiprotocol instant messenger
Source:      http://download.berlios.de/%{name}-%{version}.tar.bz2

URL:      http://developer.berlios.de/projects/sim-im/
Group:      Applications/Internet/Instant messaging
BuildRoot:   %{_tmppath}/%{name}-%{version}-%{release}-buildroot
License:   GPL
%description
A simple user-friendly multiprotocol instant messenger

%prep
%setup -q  

%build
%configure
%make
%install
rm -rf $RPM_BUILD_ROOT
%makeinstall
#%clean
#rm -rf $RPM_BUILD_ROOT
%files



%defattr(0755,root,root)
%doc README NEWS COPYING AUTHORS
%{_mandir}/man1/*
%{_bindir}/sim


Едит: Секцията %files още не съм я довършил



Активен

winman

  • Напреднали
  • *****
  • Публикации: 311
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #12 -: Feb 01, 2007, 14:03 »
Все пак SIM е и по-сложен за направа на rpm. Избери си нещо по-лесно за начало. А ако целта ти не е учебна, а непременно искаш да си направиш sim rpm пакет за твоята дистрибуция, тогава свали някой SRPM пакет на SIM. Например този:

<a href="" target="_blank">ftp://rpmfind.net/linux....src.rpm</a>

След това както си обикновен юзер го инсталирай:

rpm -ivh

Отиди в ~/rpm/SPEC директорията. Там трябва да ти е spec фрайла от пакета. Може да се наложи лека редакция, например на %BuildRoot и т.н. След като си готов изпълни /пак като юзер/:

rpmbuild -ba sim.spec     /или както там се казва spec файла/

Ако си направил всичко от ръководството, ще имаш rpm пакет в ~/rpm/RPMS/i586

То това е и хубавината на src.rpm, че можеш много лесно да си направиш rpm за себе си. В повечето от случаите това е достатъчно за един юзер /като мен, например/.

Ако процеса мине безболезнено, почти винаги можеш да ползваш същия spec файл с по-нов сорс пакет за направа на rpm на по-новата версия, след лека редакция разбира се. Ако не друго, поне името на сорс архива.

Все пак ако имаш избор, избирай src.rpm за някаква версия на Mandriva, понеже обикновено има един, или няколко полезни пача отнасящи се до тази дистрибуция. Все пак всичко си зависи от програмата, на която си решил да правиш rpm.

Това последното го пиша, защото останах с впечатление, че си с някаква RC версия на Mandriva. Но по принцип е вярно за всяка дистрибуция, само сменяш името...

/edit Софта на форума наистина има бъг. Пак кашна линк адреса. Нещо става, ако е по-дълъг. Линка към src.rpm е:

Примерен код
ftp://rpmfind.net/linux/MandrakeCooker/2007.0/SRPMS/contrib/release/sim-0.9.4-0.20041105.2mdk.src.rpm




Активен

The more you know about Linux the less likely girls will want to know about you!

Nik123

  • Напреднали
  • *****
  • Публикации: 3217
  • Distribution: Mageia, Q4OS
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #13 -: Feb 01, 2007, 14:23 »
Здравей, благодаря за информацията. Да, с RC2 версията на 2007 съм- тая май беше последната RC преди официалната. Само че съм сложил всички бъгфиксес и сикюрити ъпдейти и т.н. от мирърите. Благодаря за линка, но той няма да ми свърши работа- наскоро пак тихомълком промениха айскю протокола и тая версия сим, която е в линка ти- 0.9.4- не бачка, т.е. изпращаш, виждаш, че ти пишат, но не получаваш нищо. С гаим го няма тоя проблем, но ми е много грозен, свикнал съм си със сим. Тая версия, от която се опитвам да направя рпм, е последната стейбъл, която работи, та затова човъркам нея. Пък и реших, че няма да е зле да се науча да си правя рпм-и, и ведно с това ще си направя и рпм пакет от тоя сорс на сим. Т.е., целта на тоя рпм е хем да се науча, хем и да си направя сим, шото не ми се прекомпилира всеки път при инстал/деинстал от сорс. Както и да е, ще разгледам spec файла на sim в твоя линк. Със здраве  '<img'>
Активен

Nik123

  • Напреднали
  • *****
  • Публикации: 3217
  • Distribution: Mageia, Q4OS
    • Профил
Малко помощ за .spec файл - за build на prm
« Отговор #14 -: Feb 02, 2007, 17:47 »
Искам и нещо друго да попитам, което ми се струва важно- направих си рпм от сорса на kbedic. Kbedic е речник за кде и иска qt, т.е. зависи от qt. Сега, ако си стартирам от сорс ./configure, то ще си изпищи че му го няма qt-то, ако наистина нямам на машината qt. Аз обаче имам кю-ти и рпм-ът стана. Но ако опитам после, същия рпм да го инсталирам на машина без qt, ще прекъсне ли процеса на инсталация, защото го няма qt? По принцип един "нормален" рпм няма да се инсталира, заради провалени зависимости, но моето производство? В .spec файла, който написах, никъде нищо не се споменава за зависимости, и как се разрешават, а в ръководството на мандрива за правене на рпм-и освен едно семпло Requirements: Python друго нищо нямаше дадено по въпроса. Та, мога да сведа питането си до следното: При правенето на рпм, определянето на зависимостите автоматичен процес ли е, т.е. в сорса някъде ли е указано, или аз трябва ръчно някъде да въведа зависимостите?



Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
apt-build
Хардуерни и софтуерни проблеми
alabal 1 3036 Последна публикация Sep 20, 2004, 21:41
от
apt-build
Настройка на програми
Yri 6 3679 Последна публикация Feb 20, 2005, 22:59
от JOKe
последен път питам как се build deb package
Общ форум
JOKe 10 8577 Последна публикация Aug 23, 2005, 10:14
от dbaniza
Въпрос за apt-build
Настройка на програми
redcure 2 3239 Последна публикация Aug 21, 2006, 19:35
от redcure
Build Engineer (Linux ориентиран, за София)
Търсене
stanislav_lm 0 2447 Последна публикация Aug 28, 2012, 10:44
от stanislav_lm