Feladatok elszigetelése

Mivel mostanában kezd eluralkodni a gépemen a káosz ami a telepített programokat illeti, ezért elgondolkoztam egy picit. Ennek eredményét szeretném megosztani veletek.

Az alap probléma az, hogy meglehetősen sok, változatos feladatra használom a gépet, ezért egy rakás, eltérő funkcionalitású programra van szükségem.

Például szükségem van egy C(++) fejlesztő környezetre, egy java fejlesztő környezetre, egy xilinx (fpga) fejlesztő környezetre, valamint webprogramozáshoz egy webszerverre illetve php runtimera (jelen esetben fejlesztőkörnyezet nincs). Aztán ehhez jönnek hozzá a kiegészítők, doxygen, dia (uml-hez).

Vannak más feladatok is, például van telepítve egy audacity, egy avidemux, encodeoláshoz egy mplayer.

Külön kategóriát alkotnak a játékok, abból is van pár telepítve, bár olyan sok időm nincs játszani...

A meglátásom az, hogy egy "namespaceben" (ezután nem fogom idézőjelezni) nem egészséges ennyire változatos feladatra alkalmas programokat tartani, jó lenne valahogy kategorizálni őket, majd külön namespaceket kialakítani nekik. Azaz lennének profilok, és attól függően, milyen feladatot akarok csinálni, betölteném az annak megfelelő profilt (természetesen futásidőben, reboot és logout-login nélkül). Persze ezt hierarchikusan kellene megcsinálni, hiszen vannak programok, amiket szeretnénk minden namespaceből elérni (pl. böngésző).

Konkrét példa a fentiekre:

Default namespace: os programjai, böngésző, szövegszerkesztő, office, pdf olvasó, képmegjelenítő, dokumentumok, képek, zenék, filmek, stb...
- Fejlesztőeszközök namespace: dia, doxygen
- - C(++) namespace: Visual C++ Express, doksik, project fileok
- - Java namespace: NetBeans, JDK, doksik, project fileok
- - Fpga namespace: Xilinx ISE, doksik, project fileok
- - Webdev namespace: Apache, php, doksik, project fileok
- Multimedia namespace: audacity, avidemux, mplayer, project fileok (nyers video és audio)
- Játék namespace: most nem sorolom fel...

Ehhez viszont az operációs rendszer támogatására is szükség van, és abban biztos vagyok, hogy a windows ilyet nem tud.

A virtualizáció lehetne alternatíva, de azzal nem valósítható meg a hierarchikus felépítés, azaz a virtualizált rendszer nem fér hozzá a host programjaihoz, azaz a virtualizált rendszerre is fel kell telepíteni minden programot amit a hoston telepítettünk és szeretnénk elérni a guestből (és ide beleértem magát az os-t is).

Talán leginkább a chroot és a jail hasonlít arra, ami nekem kell. Nem ismerem semelyik technológiát sem annyira, hogy biztos kijelentéseket tegyek, de tudtommal a jail a programok futásidejű elszigetelésére alkalmas, azt nem tudom, hogy a fájlrendszer is elszigetelődik-e. A chroot pedig tudtommal a fájlrendszer elszigetelésére alkalmas, de futásidejű elszigetelésre nem annyira. Kérdés mindkét technológia esetén, hogy a hierarchikus felépítés megoldható-e, azaz a szülő programjaihoz és fájlrendszeréhez való hozzáférés biztosítható-e.

Szóval nagyon úgy néz ki, hogy jelenleg nem megvalósítható az, amit szeretnék. Ti hogy látjátok, mennyire életképes az ötlet, és mennyire megvalósítható?

Hozzászólások

Ha nem kell különböző verziónak egyszerre telepítve lenni, akkor nem értem a problémát, mert kb erre van a több felhasználó lehetősége. Az adott felhasználó GNOME menüjéből ki tudod venni a játékokat, stb és az asztal is testre szabható a feladattól függően.

szerk: ja hogy windows :) Ott viszont vagy megszokod a káoszt, vagy váltasz operációs rendszerre.

--
http://sandor.czettner.hu

A probléma természetesen nem az, hogy a jelenlegi formában ne működnének ezek a programok így együtt. A probléma az, hogy nem különülnek el egymástól megfelelően, azaz karbantartásuk macerás. Például ha a java namespace szükségtelenné válik, és szeretném eltávolítani, akkor fejben kell tartanom, hogy el kell távolítanom a jdk-t (jre marad), netbeanst, meg ha már nincs rá szükség, akkor a project fileokat és a doksikat, mindezt úgy, hogy ki kell válogatnom a többi dolog közül, amit nem szeretnék eltávolítani. Ha külön namespace-t alkotna, akkor nem kellene válogatni.

Mondok egy gyakorlatiasabb példát: tegyük fel, hogy többféle stílusú zenéket szeretek hallgatni, és azt is tegyük fel, hogy minden együttes stílusa pontosan meghatározható. Majd tegyük fel, hogy hirtelen az egyik stílust megutálom. Ha a zenéimet kategorizálva tároltam, akkor egyszerűen letörlöm az adott stílus könyvtárát, amiben az adott stílust képviselő zenekarok vannak. Ha viszont ömlesztve tárolom a zenéimet, akkor egyesével (mondjuk zenekaronként) ki kell válogatnom, kik azok, akiket már nem szeretnék hallgatni. Vagy ha nekem ma olyan napom van hogy egy bizonyos stílusú zenét szeretnék hallgatni, akkor is könnyebb összeállítani egy playlistet az adott stílus mappájából, mint az összes zenéből válogatva.

--
Don't be an Ubuntard!

"A probléma az, hogy nem különülnek el egymástól megfelelően, azaz karbantartásuk macerás. Például ha a java namespace szükségtelenné válik, és szeretném eltávolítani, akkor fejben kell tartanom, hogy el kell távolítanom a jdk-t (jre marad), netbeanst, meg ha már nincs rá szükség, akkor a project fileokat és a doksikat, mindezt úgy, hogy ki kell válogatnom a többi dolog közül, amit nem szeretnék eltávolítani. Ha külön namespace-t alkotna, akkor nem kellene válogatni."

ha meg saját namespace-eket használsz, akkor azokat kell karbantartani. hol is vagy akkor előrébb?

amúgy se tudom, miért fáj, hogy sok program van fent. azért van a gép, hogy használd. ha beteszed ugyanazt a halmot 4 zacskóba, semmivel nem lesz kevesebb. a karbantartás részt meg nem értem, miért lesz macerás karbantartani egy jdk-t? ugyanúgy leszeded a telepítőt, és frissíted, akár van másik 100 program fent, akár nem. linuxon még ennél is durvább, ott minden szépen bele van dobálva a */lib meg */bin könyvtárakba. na de kit érdekel, minden a saját dolgaihoz nyúl csak, és nincs baj. ezért nem is értem, mi is a gondod pontosan.

a windows nem tud ilyet, mert te se tudod, hogy mit is akarsz (nekem legalábbis nem igazán derült ki). a virtualizációs rész már végképp kusza, most akkor legyenek elkülönülve a környezetek, vagy ne? el kéne dönteni... ha egy hoston akarsz minden app-ot, akkor azok igenis ugyanabba a program files-ba fognak települni. vagy most akkor mit is akarsz? program files (java), program files (c++), ... ? az aztán tényleg sokkal rendezettebb lesz ;)

szerintem ne csinálj problémát ott, ahol nincs :)

ha nincs konkrét problémád, ne piszkáld.
ez a namespace dolog fel sem merül olyanokban, akik nem programoznak c++-ban meg jávában.
Ha nagyon piszkálni akarod, telepítsd fel külön könyvtárstruktúrába mindegyik cuccot és azt add hozzá a PATH-hoz, amelyikkel éppen dolgozni akarsz.

Igen, ez így a telepítés szempontjából jó ötlet lenne, de van pár probléma. A programok adott esetben további programokat szoktak telepíteni, például a visual studio felpakol önmagán kívül még olyan 4-5 csomagot, köztük például a saját runtimeját, ami nem települhet akárhova. Vagy a telepített programok user profiljában tárolt configjai már nem különülnek így el.

Az általam vázolt esetben egy transzparens megoldásra is szükség lenne emiatt, de van már ilyen (legalábbis windowson), neve virtual store. Csak össze kellene pattintani efölé egy réteget, ami megoldja a namespaceket, és készen is lenne.

--
Don't be an Ubuntard!