Freesco, NND, CDN, EOS
http://forum.freesco.pl/

Nowy pakiet - SQLite
http://forum.freesco.pl/viewtopic.php?f=24&t=13414
Strona 1 z 1

Autor:  DeyV [ sobota, 2 września 2006, 01:45 ]
Tytuł:  Nowy pakiet - SQLite

Natchniony rozmowami o bazach danych, oraz zdecydowany w końcu przekonać się, o co chodzi w tym tworzeniu pakietów, przygotowałem pierwszą paczkę, z prostym w instalacji (chyba ;)) pakietem bazodanowym SQLite , czyli
Cytuj:
a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine

strona www: http://sqlite.org/

paczki są do pobrania tutaj:
http://mstudio.nq.pl/php_pl/index.php?udir=%2Fnnd%2Fnew czyli

url: http://mstudio.nq.pl/php_pl/nnd/new/sql ... pkg.tar.gz
dev: http://mstudio.nq.pl/php_pl/nnd/new/sql ... pkg.tar.gz



Tak jak napisałem - to pierwsza paczka, którą udało mi się stworzyć, mam jednak nadzieje, że zrobiłem wszystko zgodnie z instrukcją.
Będę jednak wdzięczny za wszelkie informacje o błędach, niedociągnięciach lub powinnościach, których niedopełniłem.

Autor:  Mis' [ sobota, 2 września 2006, 08:38 ]
Tytuł:  Re: Nowy pakiet - SQLite

deyv pisze:
przygotowałem pierwszą paczkę,


Pokaż PKGBUILD i resztę plików., które przygotowałeś.

Autor:  DeyV [ sobota, 2 września 2006, 12:22 ]
Tytuł: 

Potrzebne było tylko PKGBUILD (mówiłem, ze to wyglądało na bardzo prostą paczuszkę ;) )
PKGBUILD pisze:
pkgname=sqlite
pkgver=3.3.7
pkgrel=1
pkgdesc="SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine"
url="http://www.sqlite.org/"
license="public domain"
depends=()
makedepends=()
conflicts=()
replaces=()
backup=()
install=
source=(http://www.sqlite.org/sqlite-3.3.7.tar.gz)

md5sums=('a48deb5e6b0cee59c889f87eee886741')


build() {
cd $startdir/src/$pkgname-$pkgver
./configure --prefix=/usr
make || return 1
make prefix=$startdir/pkg/usr install
}



No właśnie - i apropo tego.
PKGBUILD nie chciał mi zaaprobować ścieżki do plików lokalnych. Musialem mu podać url do tar.gz przez http. Dlaczego?

Autor:  Mis' [ sobota, 2 września 2006, 12:55 ]
Tytuł: 

deyv pisze:
pkgrel=1


zmienna $pkgrel powinna zawierać, poza numerem wydania, literki "nnd" - ma to odróżniać pakiety nnd od pakietów Archa i wskazywać w jakim środowisku program był kompilowany.

deyv pisze:
pkgdesc="SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine"


dlaczego nie przetłumaczone? Polonizacja pakietów jest obecnie jednym z priorytetów.

deyv pisze:
license="public domain"


Przyznam, że teraz nie pamietam, ale powinieneś sprawdzić w dokumentacji pacmana jakie wartości zmiennej license są dopuszczalne. Kiedyś było to tylko GPL, BSD i chyba artistic... w każdym razie nie przypominam sobie żebym widział jakikolwiek pakiet gdzie zmienna $license składałaby się z dwóch słów. Sądzę, ze lepiej by było tę zmienną pozostawić pustą... spacje w zmiennych mogą być źródłem kłopotów.

deyv pisze:
depends=()
makedepends=()


aż mi się wierzyć nie chce, że ten program nie ma żadnych zalezności, ani tych buildtime ani runtime... czyżby kompilowany był statycznie? Jeśli nie, to poleceniem ldd należy sprawdzić jakich bibliotek wymaga, a następnie za pomoca pacman -Qo zobaczyć do jakiego pakietu dany plik należy. Wynik podaje się w zmiennej depends. Podobnie w zmiennej makedepends podajesz pakiety, które sa niezbędne na etapie kompilacji...

deyv pisze:
conflicts=()
replaces=()


to by oznaczało, że sqllite i, na przykład, mysql mogą działać na tym samym komputerze równocześnie... jeśli tak jest to OK, jesli jednal SQLite "gryzie się" z jakąś bazą danych, to należy podać nazwę pakietu w zmiennej conflicts. Zmiennej replaces raczej nie używaj, ona ma raczej znaczenie dla całego zestawu/grupy pakietów.

deyv pisze:
backup=()


jesli SQLite ma jakiś plik konfiguracyjny to tutej podajesz ścieżkę do niego (bez pierwszego slasha)

deyv pisze:
source=(http://www.sqlite.org/sqlite-3.3.7.tar.gz)

No właśnie - i apropo tego.
PKGBUILD nie chciał mi zaaprobować ścieżki do plików lokalnych. Musialem mu podać url do tar.gz przez http. Dlaczego?


ano dlatego, że domyślnie script budujący pakiet pobiera źródła z internetu. Taka idea... Jesli chcesz, aby pobierał źródła lokalnie to umieść je w tym samym katalogu co PKGBUILD i w zmiennej source nie podawaj żadnej ścieżki tylko samą nazwę pliku.
Pomimo, że w zmiennej source masz podany URL do pliku to script budujący pakiet najpierw sprawdza czy danego pliku nie ma w /var/chache/pacman/src i jeśli jest to korzysta z niego.

Autor:  DeyV [ sobota, 2 września 2006, 13:48 ]
Tytuł: 

No i właśnie to było mi potrzebne. Nie znalazłem bowiem nigdzie informacji o tym, że można / trzeba skorzystać z ldd i pacman -Qo Warto by tą informację dodać do arta na temat tworzenia pakietów.

W efekcie powstało coś takiego:

Cytuj:
pkgname=sqlite
pkgver=3.3.7
pkgrel=1nnd
pkgdesc="SQLite jest małą bliblioteką napisną w C, zawierajacą samodzielną, wydajną i nie wymagającą konfiguracji relacyjna bazę danych SQL"
url="http://www.sqlite.org/"
license="public-domain"
depends=('readline' 'glibc' 'ncurses' )
makedepends=()
conflicts=()
replaces=()
backup=()
install=
source=(http://www.sqlite.org/sqlite-3.3.7.tar.gz)

md5sums=('a48deb5e6b0cee59c889f87eee886741')


build() {
cd $startdir/src/$pkgname-$pkgver
./configure --prefix=/usr
make || return 1
make prefix=$startdir/pkg/usr install
}



Co do konfliktów - naprawdę nie ma takiego problemu, ponieważ SQLite nie jest samodzielnym serwerem, lecz biblioteką, którą wykorzystują inne programy. (napisane np. w C, perlu, pythonie lub PHP ) Akurat walczyłem z instalacja takowego (zresztą jeszcze o tym napiszę), więc doszedłem do wniosku, że to może być dobry początek, by się czegoś nauczyć.

Jak sam komentarz wskazuje również, nie ma plików konfiguracyjnych.

ps. dzięki za uwagi i proszę o jeszcze :)

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/