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