total descendants::2 total children::1 |
Here it is. Neuhladene, neotesane zdrojaky. Tato verzia by mohla byt pri praci s oficialnymi balikmi +- stabilna do tej miery, ze nezleti na hubu uplne. Aspon nie pokial nebudete pokusat certa. Co by malo fungovat? * nainstalovanie balika, bud do alternativneho roota, alebo aj do / (to silne neodporucam) * odinstalovanie balika (podla nazvu, nazvu+kompletnej verzie, alebo nazvu suboru vratane pripony) * upgradpkg by fungovat mohol, ale zatial som ho neskusal Installpkg zatial nespusta installscript, takze niektore symlinky a device fajle mozu chybat. Podporovany je prepinac --root (installpkg) a premenna prostredia ROOT (upgradepkg, removepkg), prepinace -copy, -warn, -preserve a --silent pri remove funguju okrem funkcie kopirovania suborov do /var/log/packages/... (pouzil to niekto vobec za poslednych 10 rokov?). V zasade by installpkg a removepkg mali fungovat do tej miery, ze co date pomocou installpkg nainstalovat, to sa bude dat pomocou removepkg odinstalovat. Vytvaranie old school textovej databazy balikov zatial podporovane nie je, pracuje sa iba s Berkeley DB databazou a do tej sa zial moc nahliadnut neda, pretoze querypkg nastroj nie je dokonceny. Zdrojaky su tu:cpkgtools-0.0.1-alpha.tar.gz. Je to klasicky cmake projekt, ale bez autodetekcnych hraciciek zatial. Na Slacku 13.37 a vsade, kde je libarchive a libdb44 by to malo chodit out of box. Skompilovat sa to da nasledujucimi prikazmi: cd cpkgtools-0.0.1-alpha mkdir build && cd build cmake .. && make Instalacne makra pre targety som tam nedal umyselne, aby si niekto omylom neprepisal originalne pkgtoolsy, toto sa da vyskusat aj pod neprivilegovanym uzivatelom (az na par balikov, ktore maju na suboroch take prava, ze sa potom bez roota nedaju zmazat). Funkcnost sa da vyskusat napriklad pomocou (nasledovne nainstaluje vsetky baliky z aktualneho adresara do alternativneho rootu v /tmp/pkgtest): mkdir -p /tmp/pkgtest; (time for each in *.txz; do ~/path/to/binary/installpkg --root /tmp/pkgtest/ $each; done && time for each in *.txz; do ROOT=/tmp/pkgtest ~/path/to/binary/removepkg $each; done) > /tmp/install_progress.txt v druhom terminali sa potom da sledovat proces napr. cez tail -f /tmp/install_progress.txt Po zbuildovani tejto verzie som porovnaval vykon na nainstalovani a odinstalovani kompletneho setu k z aktualneho slacku 13.37. Vysledky su nasledujuce: bash pkgtools instalacia: real 2m35.985s user 2m13.235s sys 0m22.400s bash pkgtool odinstalacia: real 1m44.704s user 0m30.244s sys 0m44.775s cpkgtools instalacia: real 1m57.753s user 1m4.770s sys 0m5.086s cpkgtools odinstalacia: real 1m1.832s user 0m44.992s sys 0m2.699s Test je prevedeny vyssie uvedenym skriptom na Macbooku Pro 4,1 s C2D T8300 2.4GHz a 2GB RAM pri instalacii 400MB balikov do holeho alternativneho roota (v pripade cpkgtoolsov neboli spustene instalacne skripty), pricom na pocitaci bezalo este kopec inych veci. Narast vykonu je takmer dvojnasobny, ale s vacsim poctom suborov, resp. balikov by sa rozdiel mal este zvacsit v prospech cpkgtools. Drawback moze byt, ze binarna databaza je trocha vacsia (ale aj tak zabera radovo jednotky az desiatky MB) nez textova kvoli viacnasobnym indexom nad tabulkami. Akekolvek pripomienky, postrehy a bugreporty su vitane. Zaroven pripominam, ze mimo alternativneho rootu si to zatial nedovolim pustat ani ja sam, takze pozor, nech si nerozhasite system uplne. |
| |||||||||||||||||||||||||