update:
16.08.2004 - poprawione literówki (thx dmr)
Jak zainstalować ebuild spoza standardowego drzewa portage?
Celem tego HOWTO jest pokazanie jak zainstalować w gentoo pakiety, do których ebuildów nie ma w dystrybucyjnym drzewie portage, a które różni ludzie umieszczają w Internecie. Podczas pisania trochę się rozbuchało. Oprócz suchego tekstu 'jak to zrobić' wyszedł z tego maleńki podręcznik, ale mam nadzieję, że Wam się to przyda.
Po kolei:
1. Przygotwanie portage do obsługi naszego drzewka
W pliku /etc/make.conf znajduje się zmienna PORTDIR_OVERLAY, będąca standardowo zahashowana
Code: Select all
# PORTDIR_OVERLAY="/usr/local/portage"Code: Select all
PORTDIR_OVERLAY="/usr/local/portage"Gdzie nie można umieszczać PORTDIR_OVERLAY? W jednym katalogu, wraz ze wszystkimi jego podkatalogami, nie powinniście tego robić – w /usr/portage. Jeśli wrzucicie tam własne / znalezione ebuildy, to przy najbliższym
Code: Select all
emerge syncW dalszej części tekstu gdy będę się odwoływał do katalogu /usr/local/portage, to tak naprawdę będę miał na myśli to co kryje się pod zmienną PORTDIR_OVERLAY. Jeśli postanowiliście wybrać inny katalog – pamiętajcie o tym i stosownie podmieniajcie jego nazwę.
Dzięki uwadze Poe (kilka postów niżej): dobrze, aby wartość PORTDIR_OVERLAY była ujęta w cudzysłowia. Różne powłoki zachowają się troszeczkę inaczej podczas czytania tej wartości bez cudzysłowiów. Na dzis dzien może to nie tworzyć żadnych problemów, jednak aby ustrzec się przed ew. problemami przyszłości dodajmy je.
Chętnych do pogłębięnia wiedzy o powłokach linuxa odsyłam pod adres : http://www.tldp.org/HOWTO/HOWTO-INDEX/os.html#OSSHELL , gdzie można się trochę dowiedzieć o swoim shellu.
Po tym przydługim wstępie idziemy dalej.
2. Umieszczamy ebuild w 'nowym drzewku'
Znalezione w Internecie ebuildy są (przeważnie) dwojakiego rodzaju – albo znajdziecie 'suchy' plik pakiet.ebuild, albo archiwum pakiet.tar.gz (czy też pakiet.tar.bz2). Różnica między nimi nie jest wielka, jednak w pierwszym przypadku, zanim będzie można przystąpić do instalacji, należy jeszcze zrobić pewną dodatkową czynność.
Na początek o organizacji drzewka. Do katalogu o ścieżce jak w naszym PORTDIR_OVERLAY nie wrzucamy po kolei ebuildów jak leci. W tym 'nakładanym portage' musimy zachować tę samą organizację pakietów w katalogi, jak jest to zrobione w przypadku oryginalnego drzewa.
Weźmy przykład – mamy ebuild dla mplayer'a, który możemy znaleźć na gentoo.pl w dziale download (żeby nie szukać – http://www.gentoo.pl/ebuild/mplayer-1.0_pre4-r3.ebuild). Nie możemy go umieszczać od tak w /usr/local/portage. Należy mu stworzyć katalog jak w oryginalnym drzewie. W tym przypadku będzie to /usr/local/portage/media-video/mplayer. Tworzymy katalog
Code: Select all
mkdir -p /usr/local/portage/media-video/mplayerProste i pomaga walczyć z bałaganem.
Teraz dwa przypadki:
a) ściągneliśmy archiwum tar.gz
Zazwyczaj, gdy ktoś umieszcza W Internecie ebuild w archiwum (tar.gz lub tar.bz2) to oprócz samego ebuilda umieszcza tam także kilka innych potrzebnych plików. Najważniejsze z nich to
zawierające listę oraz sumy kontrolne plików do ściągnięcia.Manifest
files/digest-nazwapakietu-wersja
Niech za przykład posłuży ebuild z polskimi stronami podręcznika man, który możemy znaleźć na gentoo.pl - http://www.gentoo.pl/ebuild/man-pl.tar.gz . Po rozpakowaniu
Code: Select all
tar -zxpvf man-pl.tar.gzCode: Select all
ls -R /usr/local/portage/app-i18n/manpages-pl/Code: Select all
/usr/local/portage/app-i18n/manpages-pl/:
files Manifest manpages-pl-20040401.ebuild
/usr/local/portage/app-i18n/manpages-pl/files:
digest-manpages-pl-20040401b) ściągneliśmy sam plik ebuild
W przypadku 'gołego' ebuilda, musimy sobie Manifest i digest wygenerować sami (bez tego emerge nie pozwoli na instalację).
Wykorzystajmy jako przykład ebuild mplayer'a.
Po utworzeniu katalogu j.w., kopiujemy do niego ebuild oraz wchodzimy do niego
Code: Select all
cp mplayer-1.0_pre4-r3.ebuild /usr/local/portage/media-video/mplayer
cd /usr/local/portage/media-video/mplayerCode: Select all
ebuild mplayer-1.0_pre4-r3.ebuild digestNormalnie byłoby to wszystko co jest potrzebne do instalacji. Jako ćwiczenie z generacji digest'a polecam, np. ściągnąć sobie ebuild do wielokrotnie wymienianych i polecanych na forum love-sources (jeszcze jedna 'wersja' jądra linuxa ze sporą ilością patch'y); adres pod którym znajdziecie ebuild: http://www.public.iastate.edu/~jpcox/lo ... -r5.ebuild (najnowsza dostępna wersja, gdy pisałem to HOWTO), a katalog (w którym powinniście umieścić ebuild) to /usr/local/portage/sys-kernel/love-sources. Mam nadzieję, że pójdzie bez problemu.
Po wykonaniu polecenia ebuild, love-sources są gotowe do instalacji.
W przypadku mplayer'a z gentoo.pl, należy jeszcze ściągnąć dodatkowy patch na gtk2, wymagany do instalacji (chyba, że nie korzystacie z gtk2), który znajdziecie pod adresem http://www.gentoo.pl/ebuild/mplayer-1.0-gtk2.patch oraz dołożyć patch'e z oryginalnego mplayer'a. Wszytkie dodatkowe pliki standardowo umieszcza się w podkatalogu files (w naszym przypadku będzie to /usr/local/portage/media-video/mplayer/files). Dlaczego kolejny podkatalog? Żeby zachować (względny) porządek w katalogach ebuildów. Dobrze, więc ściągamy ten patch, umieszczamy go w podkatalogu wraz z kilkoma plikami, które zapożyczymy z gentoo'owego mplayer'a:
Code: Select all
mv mplayer-1.0-gtk2.patch /usr/local/portage/media-video/mplayer/files
cp /usr/portage/media-video/mplayer/files/mencoder-segfault.patch /usr/local/portage/media-video/mplayer/files
cp /usr/portage/media-video/mplayer/files/mplayer-0.90-coreutils-fixup.patch /usr/local/portage/media-video/mplayer/files
cp /usr/portage/media-video/mplayer/files/mplayer-1.0_pre4-alsa-gcc34.patch /usr/local/portage/media-video/mplayer/files
cp /usr/portage/media-video/mplayer/files/mga-kernel-2.6.patch /usr/local/portage/media-video/mplayer/files
cp /usr/portage/media-video/mplayer/files/mplayer.desktop /usr/local/portage/media-video/mplayer/files3. Instalujemy pakiet
Tutaj nie ma już o czym za bardzo pisać. Instalacja jest identyczna, jak dla plików z oryginalnego portage.
Code: Select all
emerge pakietCode: Select all
emerge -vb love-srouces -pCode: Select all
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild N ] sys-kernel/love-sources-2.6.6-r5 -build XXXX kB [1]
Total size of downloads: 0 kB
Portage overlays:
[1] /usr/local/portageW przypadku ebuildów, dla których istnieją w systemie dwie wersje – w oryginalnym portage oraz w naszym – emerge wybiera wg prostego kryterium:
1)jeśli jeden z ebuildów odnosi się do nowszej wersji – wybierz go
2)jeśli oba ebuildy odnoszą się do tej samej wersji pakietu, zainstaluj wersję z PORTDIR_OVERLAY
Punkt 2 jest dość istotny – emerge zakłada, że wiemy co trzymamy w systemie.
Jako literaturę dla spragnionych wiedzy polecam manuale do portage (na gento.pl znajdziecie tłumaczenia) oraz strony podręcznika man (emerge, ebuild).
Pozdrawiam,
Przemek





