Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nik123 в Jan 30, 2007, 19:32 Здравейте! Опитвам се да си направя рпм от .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 файла ![]() Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nik123 в 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? Съвсем се обърках вече. Някакви идеи? Титла: Малко помощ за .spec файл - за build на prm Публикувано от: winman в 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 Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nik123 в Jan 30, 2007, 20:33 Благодаря за информацията. Ще прочета за какво става въпрос, а за конвенцията- сигурно си прав, макар че аз си правя рпм-а за собствено ползване, едва ли е фатално
Едит: А за листа с файлове, няма ли някакъв начин да го взема от тоя makefile, и от кой по-точно? Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nikolavp в Jan 30, 2007, 21:02
Ако мислиш да не си утежняваш живота и искаш да разбереш как се работи с make, защото повярвай ми рано или късно ще ти потрябва ![]() EDIT:Чак сега видях, че използваш automake ![]() ![]() Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nik123 в Jan 30, 2007, 22:52 Благодаря и на двама ви, надявам се, че ще успея да се справя :-)
Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nik123 в 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 Откъде да му взема повече от един сорс, като сорса си е само един ![]() Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nik123 в 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 постна по-горе. Ако някой може да помогне, пък било и с просто предположения, моля да постне Титла: Малко помощ за .spec файл - за build на prm Публикувано от: winman в 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} Прочети пак ръководството на Мандрива, което ти изпратих. Първо изпълни указанията за директории и т.н. После разгледай примера. Там всичко е обяснено. Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nik123 в Feb 01, 2007, 03:23 Благодаря за отговора! Значи, по въпроса за сорса, оправих го, благодаря много за съвета. Относно BuildRoot- дефинирал съм го-
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot Проблемът е - не знам защо, но при стъпката make install се опитва да инсталира /копира файловете в системните директории /например /usr/share/icons - за .png файловете забелязах/ и после дава ерори и толкова- ще постна след малко подробностите, в момента пак съм на маке. Аз доколкото разбрах от ХауТу-то, това не би трябвало да се случва.. Всички директории, които трябва да се създадат, според указанието съм ги създал Титла: Малко помощ за .spec файл - за build на prm Публикувано от: winman в 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 и т.н. Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nik123 в 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 още не съм я довършил Титла: Малко помощ за .spec файл - за build на prm Публикувано от: winman в 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 е:
Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nik123 в Feb 01, 2007, 14:23 Здравей, благодаря за информацията. Да, с RC2 версията на 2007 съм- тая май беше последната RC преди официалната. Само че съм сложил всички бъгфиксес и сикюрити ъпдейти и т.н. от мирърите. Благодаря за линка, но той няма да ми свърши работа- наскоро пак тихомълком промениха айскю протокола и тая версия сим, която е в линка ти- 0.9.4- не бачка, т.е. изпращаш, виждаш, че ти пишат, но не получаваш нищо. С гаим го няма тоя проблем, но ми е много грозен, свикнал съм си със сим. Тая версия, от която се опитвам да направя рпм, е последната стейбъл, която работи, та затова човъркам нея. Пък и реших, че няма да е зле да се науча да си правя рпм-и, и ведно с това ще си направя и рпм пакет от тоя сорс на сим. Т.е., целта на тоя рпм е хем да се науча, хем и да си направя сим, шото не ми се прекомпилира всеки път при инстал/деинстал от сорс. Както и да е, ще разгледам spec файла на sim в твоя линк. Със здраве
![]() Титла: Малко помощ за .spec файл - за build на prm Публикувано от: Nik123 в Feb 02, 2007, 17:47 Искам и нещо друго да попитам, което ми се струва важно- направих си рпм от сорса на kbedic. Kbedic е речник за кде и иска qt, т.е. зависи от qt. Сега, ако си стартирам от сорс ./configure, то ще си изпищи че му го няма qt-то, ако наистина нямам на машината qt. Аз обаче имам кю-ти и рпм-ът стана. Но ако опитам после, същия рпм да го инсталирам на машина без qt, ще прекъсне ли процеса на инсталация, защото го няма qt? По принцип един "нормален" рпм няма да се инсталира, заради провалени зависимости, но моето производство? В .spec файла, който написах, никъде нищо не се споменава за зависимости, и как се разрешават, а в ръководството на мандрива за правене на рпм-и освен едно семпло Requirements: Python друго нищо нямаше дадено по въпроса. Та, мога да сведа питането си до следното: При правенето на рпм, определянето на зависимостите автоматичен процес ли е, т.е. в сорса някъде ли е указано, или аз трябва ръчно някъде да въведа зависимостите?
Титла: Малко помощ за .spec файл - за build на prm Публикувано от: winman в Feb 02, 2007, 18:25 Да, системата е интелигентна и автоматично си прави зависимостите. Като всяка автоматика, понякога запецва и трябва ръчно да добавиш. Затова преди да се разпространи един rpm трябва добре да се тества.
Всъщност аз знам, че rpm за широко разпространение би трябвало да се тества на "девствена" инсталация на дадена дистрибуция. Така веднага се виждат недостатъците. При липсващи зависимости всичко е в ръцете на инсталатора. Urpmi е достатъчно интелигентен, но ако например не намери нещо, процеса на инсталация спира. За щастие със съответното съобщение, което да ти помогне да разбереш защо. Би трябвало да е така и при Yum във Федора и т.н. Стартирай си в терминал MC /Midnight Commander/, отиди върху кой да е rpm и натисни F3. Ще видиш интересни неща. После повтори процедурата, като избереш rpm и натиснеш Enter. После с F3 разгледай всички файлове. Ще видиш, че зависимостите са описани. |