HTML

Bagoj úr blogja

Kíváncsi Bagoj befigyel a Linux belsejébe, illetve különféle Linux terjesztéseket próbál ki. Ha jó napja van, scriptet ír Neked.

Friss topikok

Pöttyös csomagok

2008.04.02. 13:44 bagoj ur

Szórakoztam a minapában a csomagkezelővel, ugyanis nem akartam elhinni, hogy az Ubuntu standard, csak parancssoros telepítőjének 588Mb-ot kéne foglalnia. Szent meggyőződésem, hogy a sok függőség ennek az oka, amelyet az Ubuntu fejlesztői sem tudnak már nagyon átlátni. Nem is csodálnám: A Debian több, mint tíz éve kezdte el kialakítani a rendszert, az Ubi erre épül, több tízezer csomag van és az ezek közötti függőségeket jobb nem bolygatni.
 

Mi is a problémám? Tegyük fel, hogy egy alkalmazásnak (nevezzük A-nak) szüksége van egy bizonyos funkcionalitás megvalósításához egy másik csomagra (nevezzük B-nek). A "B" csomag megvalósítja önmaga mindazt, amire "A"-nak szüksége van; de még egyéb dolgokra is képes, amelyekhez szüksége van "C" csomagra. Azokat a funkciókat "A" nem használja, ami miatt "B"-nek szüksége van "C"-re, de mégis, a függőségi fa miatt fel kell rakni "C" csomagot is, amely lényegében parlagon hever (illetve mondjuk úgy, arra vár hogy a felhasználó feltegye "D"-t, amely már közvetlenül használja). Eljutottunk oda, hogy nagy valószínűséggel rengeteg felesleges csomag pihenget a gépünkön. A következtetés hatására az időmet leginkább "E"-ben szeretném eltölteni, mely nem más, mint mindegyik csomagtól legtávolabb eső kiskocsma.


Megjegyzés: Emiatt frankó például a Gentoo, amelynél lehet olyan globális fordítási direktívát alkalmazni, hogy "no gnome"; ilyenkor a csomagok konfigurálásánál és fordításánál körömszakadtáig küzd a rendszer, hogy a felhasználónak ne kelljen Gnome-ot használnia.

A lényeg, hogy azon gondolkodtam, kéne egy programot írni, ami szépen gráfot rajzol a csomagok függőségeiből. Milyen szerencse, hogy erre a Debian/Ubuntu rendszer alapból is alkalmas! :-)
Először is le kell szednünk a graphviz csomagot, amely képes a .dot szöveges gráf leíró fájlból SVG, PostScript, JPG vagy PNG formtumot előállítani:

$ sudo apt-get install graphviz

vagy természetesen a csomagkezelőből is el lehet végezni a telepítést. Ezek után (továbbra is parancssorban):

$ apt-cache dotty <csomagnév>

Ez közvetlenül kiírja nekünk a pötty (dot) formátumú fájl tartalmát, ezért inkább irányítsuk ezt bele egy fájlba (például ha a bash függőségeit szeretnénk megnézni):

$ apt-cache dotty bash > bash.dot

majd az elkészült pötty fájlt a graphviz dot parancsával átalakíthatjuk a kívánt formátumba (ajánlom az SVG-t, mivel a döbbenetes mennyiséfű függőség miatt a pixel-alapú képekből nem sokat látni):

$ dot -o bash.svg -T svg bash.dot

És máris előállt a csodás grafikus ábrázolásunk! Sajnos SVG-t nem tudok feltölteni, de itt egy részlet a gtk+2 függőségeiből. És kezdem megérteni, hogy mitől 588 Mb az az 588 Mb:














 

 

3 komment

Címkék: linux függőség csomag alkalmazások rendszerfelügyelet

A bejegyzés trackback címe:

https://bagojur.blog.hu/api/trackback/id/tr2612276

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

rdi 2008.04.08. 07:39:57

Szép. Szerintem is ki kéne próbálnod a Slackware-t vagy a Gentoo-t!

bagoj.ur 2008.04.08. 13:31:37

Dehát én Gentooztam évekig... :-) Ott sem sokkal egyszerűbb az élet, ráadásul a fordító meg a portage olyan sok helyet foglal - az alaprendszerem nem áll meg 2Gb alatt.

Ezért is próbálkozom azzal, hogy megtaláljam a közös nevezőt ezek között a programok között; azaz a cég a minél kevesebb dependencyvel a minél több program telepítése... HMMMM most adtál egy remek ötletet! Felhasználva a függőségi gráfot; tudnék egy optimalizációs algoritmust írni. Bár az leginkább akkor lenne hatékony, ha a keretes írásban is emlegetett ABCD-problémát is fel tudnám oldani; azaz meglenne hogy miért is van szüksége A-nak B-re.

bagoj.ur 2008.04.08. 13:33:10

bocs, tehát cég = cél az előző hsz-ban. "Cél a minél kevesebb... stb."