Portál AbcLinuxu, 15. května 2024 03:46

spkg beta

19.7.2006 04:46 | Přečteno: 1000× | Ostatní | poslední úprava: 19.7.2006 04:51

Spkg jsem předevčírem dostal do stavu, kdy jsou všchny důležité vlasntosti naimplementované a už chybělo jen testování na spoustě balíčků. No a už nechybí. :)

Upgrade a instalace potřebovaly znovu otestovat a tak jsem nainstaloval z DVD Slackware-10.1 všechny balíčky z kategorií a, ap, d, l a n. To dává po instalaci 295 balíků zhruba 1GB dat (70 tisíc souborů). Instaloval jsem pomocí installpkg a spkg -i a následně porovnal výstup příkazu tree -psufiga a find . -type f | xargs md5sum. Na první pohled to nevypadalo moc nadějně. Instalace pomocí spkg vytvořila mnoho symlinků navíc oproti installpkg, ale to bylo způsobeno tím že v installpkg je chyba, protože ldconfig se nespouští pro adresář do kterého se instaluje (/root), ale vždy pro kořenový adresář. Což není moc platné. Po spuštění ldconfig -r /root a opětovném porovnání výstupu psufigy, už bylo vše pozitivnější.

Defakto se pouze lišily velikosti adresářů, protože spkg při instalaci či upgrade, pokud již instalovaný soubor existuje, nejprve vytvoří dočasný soubor a až po dokončení zpracování tgz balíku všechny cílové soubory nahradí. Vytvářením dočasných souborů nám o něco nakynou adresáře ve kterých se tyto soubory vytvářejí. Pokud pak dojde k přerušení instalace/upgrade uživatelem, nebo nesplněním nějaké podmínky pak se prostě odstraní všechny soubory které byly do té doby vytvořeny a vše je jako před instalací. Čili je možně bezpečně přerušit dlouho trvající upgrade mnoha balíků bez obav o konzistenci zrovna upgradovaného balíku a prostě pokračovat později. Cílem vývoje samozřejmě nebylo aby si člověk mohl po zahájení upgrade v 8 hodin ho mohl ve 12 přerušit a pokračovat ráno, ale upgrade balíků výrazně zrychlit. :-)

Upgrade test probíhal tak, že jsem provedl upgrade zmíněných kategorií z slackware-10.1 na slackware-10.2 přímo z DVD. V řeči příkazů, tedy:

ROOT=/root1 upgradepkg {a,ap,d,l,n}/*.tgz a pomocí spkg spkg -u -v -r /root2 {a,ap,d,l,n}/*.tgz

Poté jsem opět porovnal výstupy psufigy a md5sumu pro /root1 a /root2. Výstup těchto příkazů byl. bez neočekávaných rozdílů, kromě jednoho souboru, který je vytvářen instalačním skriptem bindu (/etc/rndc.key) a má být pro každou instalaci jiný.

Nakonec jsem udělal remove test, abych ověřil že spkg -d funguje stejně jako removepkg. Opět s porovnáním stavu adresářů /root1 a /root2. Test spočíval v odstranění všech balíků ze skupiny d (39 balíků).

Co nebylo stejné byly časy potřebné pro provedení potřebných operací. Tady jsou čísla:

PříkazREALUSERSYS
ROOT=/root1 installpkg {a,ap,d,l,n}/*.tgz16m4s7m42s3m11s
spkg -i -v -r /root2 {a,ap,d,l,n}/*.tgz3m41s54s38s
ROOT=/root1 upgradepkg {a,ap,d,l,n}/*.tgz33m50s18m30s6m45s
spkg -u -v -r /root2 {a,ap,d,l,n}/*.tgz4m39s0m50s0m40s
ROOT=/root1 removepkg `cat pkglist`6m6s3m43s1m3s
spkg -d -v -r /root2 `cat pkglist`11.8s0.67s1.18s

Rozdíl oproti testům v mém předchozím příspěvku je v tom, že jsem tentokrát spouštěl instalaci z DVD, kde jsou přítomné soubory s popisem balíku, takže skripty installpkg a upgradepkg měly nyní o něco snažší práci než v předchozím případě, kdy jsem je spouštěl z mého mirroru slackware-current na disku, kde ony soubory nemám. A spkg měl o něco komplikovanější práci, protože jsem nepoužil parametr --no-ldconfig, takže ldconfig se spouštěl po každém nainstalovaném balíku. Spustit ldconfig trvá zhruba 100ms, takže to dává 30s zbytečně navíc pro jak installpkg tak spkg. Ovšem je rozdíl jestli je to 30s z 16m, nebo 30s z 3m40s. Při použití spkg DVD-ROM mechanika seekovala jak o život, takže by se někde v jejím okolí dalo hledat úzké herdlo. ;-)

Malá poznámka na závěr pro ty co stále chtějí používat pkgtools. Spkg trpí stejným problémem jako pkgtools a to tím, že databáze balíčků čítá např. na mém systému 600 malých souborů. A z těchto 600 souborů je potřeba před zahájením upgrade načíst seznam souborů, které jsou v systému nainstalovány. To na mém systému, který už zažil upgrade zhruba 1400 balíčků trvá zhruba 12s, když ty soubory ještě nejsou v cache. Tento čas lze poměrně dobře srazit (u mě na 3s - z toho 800ms je dáno čistě zpracováním obsahu souborů - tj. omezeno výkonem procesoru, čili zrychlení se pohybuje někde v řádu 5x) pomocí drobné "defragmentace" adresářů /var/log/packages a /var/log/scripts. Zde je program defrag.sh:

#!/bin/sh -e
rm -rf /var/log/packages~ /var/log/scripts~
cp -a /var/log/packages /var/log/packages~
cp -a /var/log/scripts /var/log/scripts~
rm -rf /var/log/packages /var/log/scripts
mv /var/log/packages~ /var/log/packages
mv /var/log/scripts~ /var/log/scripts

Nechce k tomu někdo dopsat grafické rozhraní s kostičkama a progressbarem?

Tímto se spkg velmi přiblížil k verzi 1.0. Ještě to budu nějaký čas používat kde budu moct, a mám v plánu vytvoření testsuite složené z mnoha speciálně vytvořených balíčků, které otestují co nejvíc cest v kódu. Dále je potřeba přidat pár drobných volitelných vlastností, jako je v pkgtools např. upgradepkg --install-new nebo --reinstall. A nakonec bude třeba zaktualizovat dokumentaci.

Nemá někdo nápad na užitečnou vlastnost, která v pkgtools chybí? Mě napadá příkaz --check, který by zkontroloval dané blaíčky a zobrazil soubory, které byly změněny či odstraněny po instalaci balíčku. Je ještě něco jiného?

Homepage projektu je: http://spkg.megous.com. Poslední beta verzi lze vždy najít v adresáři http://spkg.megous.com/dl/patches/.        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

Josef Kufner avatar 19.7.2006 04:50 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: spkg beta
Odpovědět | Sbalit | Link | Blokovat | Admin
:-D
Hello world ! Segmentation fault (core dumped)
19.7.2006 08:17 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: spkg beta
Odpovědět | Sbalit | Link | Blokovat | Admin
<3 Slackware. Jedine co mi chybi je oficialni 64bit Slack.
19.7.2006 15:02 tomm | skóre: 7 | blog: tomm's software | Sokolov
Rozbalit Rozbalit vše Re: spkg beta
Odpovědět | Sbalit | Link | Blokovat | Admin
Tomu se rika "prilozit ruku k dilu". Moc pekne. Co na to Patrick? Vi o tom?
GUI existuje jen proto, aby se veslo vice terminalu na jednu obrazovku ...
19.7.2006 15:11 megi | skóre: 11 | blog:
Rozbalit Rozbalit vše Re: spkg beta
Asi ještě ne. Hodlám ještě přidat pár informací na web (Rád bych vytáhl tady z blogu ty nejzajímavější informace a přeložil je do angliny, páč v angličtině je o spkg informací poskrovnu.) a až dodělám man stránku, tak mu napíšu mail.
19.7.2006 15:13 megi | skóre: 11 | blog:
Rozbalit Rozbalit vše Re: spkg beta
Btw, každopádně není kam spěchat, protože 11.0.0 je za dveřmi (jen co Andrea dodělá těch pár zbývajících balíčků), takže tam už se spkg určitě nedostane. :)
20.7.2006 06:59 XMurder | skóre: 25 | blog: introvert
Rozbalit Rozbalit vše Re: spkg beta
Odpovědět | Sbalit | Link | Blokovat | Admin
a jeje, duplicitní název: http://freshmeat.net/projects/slackware-spkg/
20.7.2006 13:08 megi | skóre: 11 | blog:
Rozbalit Rozbalit vše Re: spkg beta
Ano, o tom vim. Neni to prijemne, ale uz je to spoustu let mrtvy projekt, takze by to nemel byt problem. Brzo ho spkg dohoni a predhoni v google (dnes uz je tesne za nim, vcera byl jeste treti), takze doufejme updane v zapomeni. :)) Just kidding.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.