Skocz do zawartości

Jak Budować Paczki Rpm Prosto Ze Źródła Programu.


Jusko

Rekomendowane odpowiedzi

Witam.

 

Sprawa wyglada tak. Skompilowalem sobie najnowsza wersje GemRB. Mimo ustawienia prefiksu kompilacji gdzies w moim /home, nie zadowala mnie to rozwiazanie (masa syfu po kompilacji i musialbym luskac co trzeba do dzialania a co nie). Poczytalem cos o przebudowie .spec itd...ale niewiele z tego lapie. Mam kod zródlowy wlasnie skompilowany - co potrzebuje teraz do budowy rpm, nie mam zadnego speca ani nic - wiadomo, czyste zródelka dopiero skompilowane.

Odnośnik do komentarza
Udostępnij na innych stronach

Zobacz sobie checkinstall, który sam robi paczki. Program jest dość leciwy i nie wiem czy na pewno poprawnie zadziała. Na stronie programu jest wersja 1.6.2 z którą miałem problemy, lepiej sprawowała mi się 1.6.0 z rpm.pbone.net (paczka jest dla FC7 ale się instaluje). Co do przebudowy .spec, jeśli nie posiadasz żadnego .spec albo src.rpm poprzedniej wersji programu to zostaje raczej samodzielnie stworzenie takiego pliku.

Odnośnik do komentarza
Udostępnij na innych stronach

Jesli to Cie uszczesliwi to dla sportu zbudowalem dzis ten Twój engine.

Tu masz speca: http://dl.dropbox.co...srpm/gemrb.spec

do zródel w wersji gemrb-0.6.3.tar.gz

paczke mam, ale nie dam :P a to z dwóch wzgledów:

- to, ze sie paczka zbudowala to jeszcze nie znaczy, ze engine jest ok

- pocwicz sobie budowanie, a jak nie dasz rady to Ci wtedy dam paczke srpm

 

[EDIT]

tak w ogóle to zródelka byly ciut niestandardowe, trzeba bylo wybrac cos jeszcze prostszego na poczatek

Odnośnik do komentarza
Udostępnij na innych stronach

Jak widac po godzinie pisania postu - walczylem do upadlego (jest godzina 4:17 rano :P ), niemniej paczka zbudowana i zainstalowana. Nieco walczylem z tym jak to upakowac, gdyz rpmbuild co chwile sypal mi jakims bledem, jednak analizujac je doszedlem do tego co i jak. Dla sportu pocwicze jeszcze ze zródelkiem czegokolwiek. Wprawdzie podbramkowe sytuacje jak GemRB zdarzaja sie raz na nie wiem jaki czas, ze nie ma w repo paczki i nie dostarcza jej autor, lecz wiedza sie przyda (wlasnie dlatego do kompilacji wybralem to a nie co innego - chce zagrac sobie w Planescape: Torment a Wine wole nawet nie meczyc, zawiodlo mnie ostatnio na calej linii juz ostatecznie). Dziekuje kazdemu niezmiernie za pomoc. Jesli generalnie sprowadza sie to do edycji takich spec, to moze ta budowa nie jest AZ tak tragiczna.

 

Mam jednak pytanie - biblioteki wymagane i dostarczane ze speca. Utworzyles speca, zapisales go, utworzyles RPM-a i potem dopisales je do speca - tak?

 

ps: nie wiedzialem, ze checkinstall obsluguje tez rpm. Uzywalem go dawniej pod Ubuntu/Debianem, jednak tworzyl nieco dziwne paczki - nie obslugiwaly zaleznosci (tj. nie dociagaly paczki zaleznosci brakujacych, gdy zabraklo ich w systemie nie dalo sie deba zainstalowac).

Odnośnik do komentarza
Udostępnij na innych stronach

Mam jednak pytanie - biblioteki wymagane i dostarczane ze speca. Utworzyłeś speca, zapisałeś go, utworzyłeś RPM-a i potem dopisałeś je do speca - tak?

Ja to robię tak, że nawet nie staram się dowiedzieć co powinno być w sekcjach "Requires" i "Provides" . Podczas wstępnego budowania paczki to po prostu jest wypluwane w komunikatach, więc robię kopiuj-wklej i buduję jeszcze raz z nowym specem (może można prościej i szybciej, ale potrafię budować tylko proste paczki).

Teraz druga sprawa, wkleiłem na chama np.

Requires: libSDL-1.2.so.0

najlepiej gdybyś zrobił teraz

yum provides */libSDL-1.2.so.0

dostałbyś, że biblioteka jest dostarczana przez SDL-1.2... i powinieneś (?) zmienić to na

Requires: SDL

czy tam nawet z numerkiem <= 1.2

Dobrze jest to sprawdzić, bo może się okazać, że 10 bibliotek jest dostarczane przez jedną paczkę. Zresztą nie wiem nawet jak sobie yum radzi z zależnościami podanymi w postaci bibliotek, a nie paczek :unsure:

Odnośnik do komentarza
Udostępnij na innych stronach

Dwa pytania:

 

GemRB nie wymagał do kompilacji wiele, dzięki czemu w jego specu (dzięki borzole!) wygląda to tak:

 

# (...) na podstawie pliku INSTALL ze źródeł, sprawdzam co w Fedorze dostarcza dane zależności
# narzędzia wymagane do budowy paczki
BuildRequires:  cmake, make, gcc-c++
# biblioteki wymagane do budowy paczki (ich źródła, a nie binarki ...chyba)
BuildRequires:  zlib-devel, python-devel, SDL-devel

# opcjonalnie, można zbudować paczkę bez tych zależności:
# (optional, for sound)
BuildRequires:  openal-soft-devel
# (optional, for fast lower-quality sound)
BuildRequires:  SDL_mixer-devel
# (optional, for the png importer plugin)
BuildRequires:  libpng-devel (...)

 

Teraz chciałbym skompilować frozen-bubble (wiem, że udostępniają oni swój spec, ale chciałbym przerobić gembrowski pod niego i nieco nauczyć się budowy speca). Klepię yum-builddep frozen-bubble i co otrzymuję:

 

Rozwiązano zależności

================================================================================
Pakiet                      Architektura
                                       Wersja                Repozytorium
                                                                         Rozmiar
================================================================================
Instalowanie:
SDL_Pango-devel             i686       0.1.2-11              fedora       22 k
SDL_mixer-devel             i686       1.2.11-4.fc14         fedora       19 k
glib2-devel                 i686       2.26.0-2.fc14         fedora      1.6 M
perl-ExtUtils-MakeMaker     noarch     6.56-141.fc14         updates     292 k
perl-SDL                    i686       2.1.3-13.fc14         fedora      292 k
Instalowanie, aby rozwiązać zależności:
SDL-devel                   i686       1.2.14-8.fc14         fedora      362 k
SDL_Pango                   i686       0.1.2-11              fedora       21 k
SDL_gfx                     i686       2.0.17-3.fc12         fedora       54 k
SDL_net                     i686       1.2.7-6.fc12          fedora       22 k
SDL_ttf                     i686       2.0.10-1.fc14         fedora       27 k
alsa-lib-devel              i686       1.0.24-1.fc14         updates     1.1 M
autoconf                    noarch     2.66-2.fc14           fedora      903 k
automake                    noarch     1.11.1-5.fc14         fedora      545 k
cairo-devel                 i686       1.10.2-1.fc14         updates     601 k
fontconfig-devel            i686       2.8.0-2.fc14          fedora      209 k
freetype-devel              i686       2.4.2-4.fc14          updates     365 k
kernel-headers              i686       2.6.35.11-83.fc14     updates     742 k
libX11-devel                i686       1.3.4-3.fc14          fedora      1.0 M
libXau-devel                i686       1.0.6-1.fc14          fedora       13 k
libXdamage-devel            i686       1.1.3-1.fc14          fedora      8.9 k
libXext-devel               i686       1.1.2-2.fc14          fedora       77 k
libXfixes-devel             i686       4.0.5-1.fc14          fedora       12 k
libXft-devel                i686       2.1.14-1.fc13         fedora       18 k
libXrandr-devel             i686       1.3.0-5.fc13          fedora       19 k
libXrender-devel            i686       0.9.6-1.fc14          fedora       16 k
libXxf86vm-devel            i686       1.1.0-1.fc13          fedora       17 k
libdrm-devel                i686       2.4.22-1.fc14         fedora       64 k
libogg-devel                i686       2:1.2.0-1.fc14        fedora       12 k
libpng-devel                i686       2:1.2.44-1.fc14       fedora      111 k
libvorbis-devel             i686       1:1.3.1-2.fc14        fedora       20 k
libxcb-devel                i686       1.7-1.fc14            fedora      139 k
mesa-libGL-devel            i686       7.9-5.fc14            updates     493 k
mesa-libGLU-devel           i686       7.9-5.fc14            updates     111 k
pango-devel                 i686       1.28.1-4.fc14         fedora      331 k
perl-CPAN                   noarch     1.9402-141.fc14       updates     249 k
perl-Digest-SHA             i686       1:5.47-141.fc14       updates      61 k
perl-ExtUtils-ParseXS       noarch     1:2.2100-141.fc14     updates      43 k
perl-Test-Harness           noarch     3.17-141.fc14         updates     242 k
perl-devel                  i686       4:5.12.3-141.fc14     updates     477 k
pixman-devel                i686       0.18.4-1.fc14         fedora       15 k
xorg-x11-proto-devel        noarch     7.4-39.fc14           updates     250 k
zlib-devel                  i686       1.2.5-2.fc14          fedora       45 k

Podsumowanie transakcji
================================================================================
Install      42 Package(s)

Całkowity rozmiar: 11 M
Całkowity rozmiar pobierania: 6.6 M
Rozmiar po zainstalowaniu: 59 M
W porządku? [t/N]: 

 

Czy to wszystko mam zawrzeć w sekcji

BuildRequires:
?

 

A konkretnie czy wystarczy tylko sekcja:

 SDL_Pango-devel             i686       0.1.2-11              fedora       22 k
SDL_mixer-devel             i686       1.2.11-4.fc14         fedora       19 k
glib2-devel                 i686       2.26.0-2.fc14         fedora      1.6 M
perl-ExtUtils-MakeMaker     noarch     6.56-141.fc14         updates     292 k
perl-SDL  

 

Sprawa druga - statyczne pakiety RPM (nie wiem czy dobrze się wyrażam). Czy można w pakiecie RPM wbudować już zależności? Na przykładzie - paczka z programem potrzebuje zależności, które musi dociągnąć z repo. Czy idzie zbudować paczkę z wbudowanymi z nią zależnościami, aby bez problemu zainstalować ją od razu na komputerze bez dostępu do internetu?

 

 

ps: budowa pakietów dobra sprawa, a tym bardziej jeśli autorzy udostępniają spec. Chwila zabawy i mam najnowszą wersję OpenShot ze źródełek, ponieważ na stronie jest stara wersja dla F13 :)

Odnośnik do komentarza
Udostępnij na innych stronach

To nie tak. Sekcja "Instalowanie" wyswietli Ci tylko brakujace zaleznosci, czyli jak cos masz juz w systemie to nie zostanie uwzglednione. A nastepna sekcja "Instalowanie, aby rozwiazac zaleznosci" to juz w ogóle zaleznosci tych zaleznosci, czyli cos co Cie w ogóle nie interesuje przy budowie paczki.

 

Aby zobaczyc zaleznosci paczki

* juz zainstalowanej np. "mc"

rpm -q mc --requires 

* z dysku

rpm -qp /path/to/mc.xxx.rpm --requires 

* src.rpm mozna rozpakowac jak archiwum i obejrzec speca;)

* wyszukaj na koji

http://koji.fedorapr...o?rpmID=2326805

 

[edit]

Wbudowanie zaleznosc to tylko wieksza paczka. Zawodowcy widzialem ze buduja paczki z wielu archiwów, gdzies w specu podaja rózne zródla, aplikuja patch'y, albo generuja z jednego archiwum kilka paczek. Cuda na patyku robia, temat rzeka. Nie wiem, czy zauwazyles, ale jest nawet wtyczka eclipse do edycji spec'ów

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...