Automatyka, instalacja
Witold Filipczyk
juandon w poczta.onet.pl
Śro, 10 Paź 2001, 13:36:54 CEST
Witajcie,
Zauważyłem, że im więcej pakietów tym panuje większa maniana(niespełnione zależności, konflikty).
Proponuję by:
- z każdym katalogiem RPMów skojarzyć bazę RPMów do niego
- dołożenie RPMa może wyglądać np., tak: rpm --dbath "$coś tam" --justdb -U pakiet
Jeśli pakiet jest jawnie sprzeczny to się go nie wrzuci na ftp-a.
Druga propozycja jest taka, żeby nie było w ogóle pakietów będących ze sobą w konflikcie.
To znaczy, żeby można było zainstalować np. 10 wersji kernela, 5 różnych demonów lpd,
postfixa, qmaila, sendmaila ,itp., kilka wersji gcc, itd.
Przy starcie (jak i w czasie jazdy) skrypty ustalałyby linki symboliczne na odpowiednie
pliki.
Jeśli chodzi o sam proces instalacji, to wyobrażam go sobie tak:
Jest plik tekstowy (może być z-gzip-owany). W pliku tym w każdej linii umieszczona jest
nazwa pakietu oraz numery pakietów od których ten pakiet bezpośrednio zależy.
Pakiety ponumerowane są w ten sposób, że dany pakiet zależy tylko od pakietów o mniejszych
numerach. Numer pakietu jest równoważny numerowi linii, w której znajduje się nazwa tego pakietu.
"Bezpośrednio" to podobnie jak w deklaracjach klas w C++ podaje się tylko klasy bazowe
dla deklarowanej klasy. Jeśli dwa lub więcej pakietów zależy wzajemnie od siebie to albo powinny
one stanowić jeden pakiet, albo wszystkie takie pakiety powinny być wypisane w jednej linii w pliku.
Plik może wyglądać, np. tak:
abc 7 4 # 10 linia w pliku
...
...
...
cde 10
itd.
Taki plik bardzo by upraszczał i przyspieszał sprawdzanie zależności i instalowanie pakietów.
Jeśli ktoś mimo wszystko chciałby wybierać samodzielnie spośród kilku tysięcy pakietów,
to sprawdzanie zależności wyglądało by następująco:
char instalowac_czy_nie[last+1];
const instalowac=1
const nie_instalowac=0
for (int i=last;i;i--) if (instalowac_czy_nie[i]) "dla kazdego numer w linii i"
instalowac_czy_nie[numer]=instalowac;
Instalacja natomiast tak:
for (i=1;i<=last;i++) if (instalowac_czy_nie[i]) rpm --nodeps --noorder -ihv pakiet[i];
Oczywiście instalacja przebiegałaby szybko, łatwo i przyjemnie. Do instalacji wystarczyłoby
4MB RAMu bez swapu.
Plik tekstowy byłby znacznie krótszy niż ten który produkuje obecnie poldek.
Ten plik powinien być zsynchronizowany z tym co jest w katalogu z RPMami, powinien być uaktualniany
przy okazji dołożenia każdego nowego pakietu do bazy.
Oczywiście mógłbym napisać programik(i), który by się zajął generacją takiego pliku i jego
uaktualnianiem, ale wydaje mi się, że znajdzie się tu ktoś kto zrobi to szybciej i lepiej niż ja.
(Any volunteers ?)
Ideałem by było, gdyby na płytkach pakiety leżały w takiej samej kolejności jak w pliku. Wtedy
instalacja, szczególnie na szybkim zestawie, przebiegałaby w imponującym tempie.
PS. Czy dużym nietaktem by było umieszczenie w PLD własnych programików. Na razie mam na myśli
cdplayer-a, ale zamierzam coś jeszcze napisać.
PS2. Dlaczego nowszych wersji niektórych pakietów (choć już dawno zostały poprawione w CVS-ie)
nie ma jeszcze na FTP-ie, np. e3 (wersja z FTP nie ma binarki w środku).
--
Witek
http://www.mat.uni.torun.pl/~witek
Jestem idealistą, a idea jest taka, żeby nic nie robić i jeszcze brać za to pieniądze.
Więcej informacji o liście dyskusyjnej pld-devel-pl