jaka nazwa w pkgssel

Paweł Gajda mis w k2.net.pl
Sob, 22 Maj 1999, 19:01:35 CEST


On Fri, 21 May 1999, Paweł Kołodziej wrote:

> [piątek, 21 maj 1999], Paweł Gajda napisał(a):
> 
> > Wczoraj zerknąłem do środka rpmliba i *być może*, gdyby
> > pokombinować, to da się w ogóle nie trzymać całego ustrojstwa w
> > pamięci(bez przeróbek rpmliba). Trzeba tylko zbudować rpmowi
> > tymczasową bazę i na niej kazać mu znajdować zależności. Zysk z tego
> > taki, że nie trzeba wtedy swapa. IMHO na razie nie warto sobie tym
> > zawracać głowy, ale możliwość, zdaje się, jest. 
> 
> IMHO tym sobie wogóle nie warto zawracać głowy. W końcu co za różnica -
> zrobimy bazę czy swap. Zasatnawiam się też nad sensownością tego czego się
> już podjołem czyli, przechowywania fragmnetów nagłówków w db. W końcu co za
> różnica czy to będzie plik na dysku, czy swap. No chyba że to by było
> odczytywane z CD-ROM'a (medium źródłowego). Wtedy to ma sens (oszczędzimy
> około 4 Mb swapa). Ale z drógiej srtony 4Mb to niewiele jak na instalacje
> 500Mb'towej dystrybucji. Trudno mi sobie wyobraźić taką instalację, gdzie
> zrobienie 4Mb swapa mogło by w czymś przeszkodzić. np. na partycji z /home
> zawsze podczas instalacji będzie przynajmniej tyle. Może więc sobie odpuścić
> to odchudzanie tocfile'a i robienie tego w db. Czekam na opinie.


IMO różnica jest zasadnicza. Dodatkowe 2-3 MB które ląduje w pamięci
_bez potrzeby_. Poza tym, zauważ, że dostęp do poszczególnych
nagłówków będzie właściwie losowy (juzer będzie je oglądał, jak
chciał), co przy małej ilości pamięci spowoduje swapowanie
(nie mówiąc już o znajdowaniu zależności)

Wyobraź sobie systuację przy 2000 i więcej pakietów, gdzie 
nagłówki w całości zajmą ok 16MB (570 = 4MB). Nawet przy okrojonych 
zajmą te 9. IMO prędzej czy później trzeba będzie to zrobić na
plikach db w całości i być może Red Hat to kiedyś zrobi.

No i na koniec:
Skoro można zrobić lepiej, to czemu tak właśnie nie zrobić?  
Nakład pracy nie jest IMHO tak duży, a podział nagłówków na
część ,,rpmową'' i ,,juzerską'' jest IMO naturalny.  




Zbyt słabo znam rpmliba i poniżej jest sporo domysłów
i spekulacji. 


Jeżeliby się udało korzystać z bazy do znajdowania zależności i
kolejności, to wtedy można bez problemu zrobić tocfile jako
db.   

Otóż, z tego co obejrzałem, to podczas budowy rmpdep budowane są
indeksy, które normalnie leżą w /var/lib/rpm/. Wydaje mi się, że dlatego
właśnie instalacja tych 100 pakietów base zajmowała te 5-6 MB.   
    
Fragment funkcji z rpma (verify.c) :

static int verifyDependencies(rpmdb db, Header h) {
    [..]
    rpmdep = rpmdepDependencies(db); 
    rpmdepAddPackage(rpmdep, h, NULL);

    rpmdepCheck(rpmdep, &conflicts, &numConflicts);
    rpmdepDone(rpmdep);


Czy nie można zrobić bazy zawczasu, umieścić na dysku dystrubucyjnym,
i zależności załatwiać w ten sposób? Zapobiegnie to tworzeniu indeksów
w pamięci, co oprócz pamięci zabiera czas.

Nie wiem natomiast jak można sobie poradzić z rpmdepOrder - nie
oglądałem jej i nie wiem jak jest zrobiona, ale przecież to żadna 
trudność przeglądać db zamiast ram, i być może zostało to
przewidziane w rpmlibie.   

Aha, jeszcze jedno, czy zamiast przekierowywać stderr, nie wystarczy
rmpErrorSetCallback()? 
 
Paweł
-- 
mailto: mis w k2.net.pl



Więcej informacji o liście dyskusyjnej pld-installer