|
|
|
Poveche informatsiia
|
|
|
|
|
|
Vnimanie: Tazi statiia se nuzhdae ot aktualizirane.
Foresight e linuks distributsiia
nasochena glavno kum desktop potrebitelite s niakoi spetsifichni
(polozhitelni) osobenosti:
Purvo malko predistoriia, tazi distributsiia se bazira pochti iztsialo (kato ideologiia) na
rPath Linux, druga distributsiia, koiato vsushtnost razrabotva i realizira
paketniia menazher izpolzvan ot Foresight (narechen conary) i za chiito
harakteristiki shte stane duma po-natatuk.
Tuk triabva da spomena zashto predstaviam Foresight
Linux vmesto negoviiat po-goliam brat rPath Linux.
Prichinata e prosta, rPath Linux (kato distributsiia) e dosta star, i mai
ne se obnoviava aktivno, versiite na paketite v poslednata mu versiia
sa stari. Toi sluzhi po-skoro kato "demonstratsiia na raboteshta
funktsionalnost" (v sluchaia na conary) i baza za suzdavane i rabota na
novi distributsii (na baza conary). Taka vsushtnost se postiga i edna ot
osnovnite tseli i i se izpolzvat predimstvata zalozheni pri proektiraneto na conary (vizh
po-dolu).
Osnovnata chast ot ekipa, razrabotil rPath sa hora aktivno rabotili
predi tova v RedHat, zatova i mnogo ot neshtata sa
vzaimstvani/nasledeni ot RH/Fedora distributsiiata - init
sistema, nachini za nastroika i t.n.
Predgovor
Kontseptsiiata na koiato se bazira conary ima za tsel izbiagvane na niakoi ot
nedostatutsite na klasicheskite paketni sistemi ('rpm' i 'dpkg'), kato
osven tova se dobaviat novi funktsii, koito (zasega) ne prisustvat v realizatsiiata na
drug paketen menazher. Tova spored suzdatelite se nalaga poradi
burzoto razvitie na Internet i razrastvaneto na horata/obshtnostite
suzdavashti "Otvoren kod".
Purvo da spomena za nedostatutsite na
klasicheskite paketni menazheri, koito conary tseli da izbegne/korigira:
1. Suzdavaneto na razkloneniia
(Branching) - traditsionnite paketni sistemi izpolzvat nomer na
versiiata za da oboznachat (identifitsirat) paketite kato "stari" i
"novi". V dopulnenie kum tova se izpolzvat i niakoi drugi kontseptsii
(kato "epochs") za da se izbegnat problemite pri nomera na versii koito
ne sledvat konventsiite na dadenata paketna sistema.
Prostata nagled kontseptsiia "star" "nov" ne raboti dobre kogato ima mnogo
na broi i silno razkloneni klonove na razrabotka.
Naprimer edna i sushta versiia na izhodniia kod sluzhi za suzdavane na
mnogobroini binarni versii dori za razlichni bazovi versii na dadena
distributsiia. Prostoto lineino sortirane po nomera na versiite ne mozhe
tochno da predstavi podobna situatsiia, tui kato nikoia ot tezi versii ne e
"po-nova", te prosto za prednaznacheni za razlichen kontekst (i386, i586,
i686, athlon-xp ili puk fc, mdk i t.n.).
2. Ogranicheniia na paketnite hranilishta
- traditsionnite paketni sistemi ne osiguriavat vuzmozhnosti za suvmestna
koordinirana rabota mezhdu otdelni (otnositelno nezavisimi) hranilishta. Hranilishtata
poniakoga sudurzhat paketi s konflikt na versiite, riadko mozhe da se stigne dori do
konflikt na imena. Zasega nachina za izbiagvaneto na tezi konflikti e
v dopulnitelnite oznacheniia za 'distributsiia' i bazova versiia na
distributsiiata - naprimer: fc3-i386 ili mdk-i586 i suse92 (tuk lipsva
versiia za arhitekturata).
Vupreki che tova grubo kazano vurshi rabota, to chesto vodi potrebitelite
(osobeno nachinaeshtite) do oburkvane i ottam do greshki.
Osven tova tezi konventsii ne sa standartni i unifitsirani kato
spazvaneto im e vupros samo na dobra volia.
Programite za avtomatichno namirane i instalatsiia na novi/obnoveni paketi
doniakude pomagat, no pri nalichieto na vse poveche hranilishta, problema
stava vse po-ocheviden.
Edin primer (bez skoroshen lichen opit) e nesuvmestimostta mezhdu hranilishtata na
Debian i Ubuntu paketi (dori za Debian-unstable i poslednata versiia na
Ubuntu). Sushtoto s oshte po-goliama sila vazhi za "rpm" paketite (kudeto mnogo chesto se prilagat i suvsem razlichni pachove).
3. Izhodniia kod e razdelen ot
binarnite paketi - pri traditsionnite paketni sistemi izhodniiat
kod ne e tiasno svurzan sus suotvetnite mu binarnite paketi. Binarniiat
paket chesto vklyuchva 'podskazka' za tova koi paket s izhoden kod e
izpolzvan za suzdavaneto mu, no ne sushtestvuva formalna vruzka mezhdu
dvata.
Mnogo hranilishta suhraniavat samo nai-novite versii na paketite, taka che
dori da se znae ot koe hranilishte e vzet paketa, mozhe da se sluchi da ne mozhe
da se svali izhodniiat kod na paketa, tui kato toi veche e premahnat ot
hranilishteto ili obnoven kum po-nova versiia. Tozi problem mozhe da se reshi,
no za tova sushto ne sushtestvuva ofitsialna suglasuvana politika mezhdu
distributsiite (suotvetno hranilishtata).
4. Naimenuvaneto e sluchaino i
neupravliavano - ne sushtestvuva obsht unikalen mehanizum za
naimenuvane (na paketite) s tsel izbiagvane konfliktite na imena, versii
i release nomera. Izbiagvaneto na podobni konflikti stava samo
posredstvom konventsii i e uspeshno samo kogato obhvata mu e ogranichen.
Ot tova stradat "paketnite-zavisimosti", te sa validni samo v ramkite
na edna distributsiia i niamat globalna validnost.
Naprimer dva paketa (ot Fedora i SuSE) za "iptables-1.2.8" (bez
dopulnitelnite oznacheniia) instalirani po greshka na greshnata distributsiia
nai-veroiatno shte ia "schupiat" (ako vuobshte se instalirat).
V dopulnenie kum gornoto sushtestvuva dosta "grubo" razdelenie za "arhitektura"
(i386, i486, i586, i686, x86_64 i dr.), koeto ne predlaga vsichki realno
sushtestvuvashti vuzmozhnosti, tuk se vklyuchvat i izpolzvanite globalni i lokalni (za paket) flagove/optsii. Ako puk se suzdadat poveche varianti tova
silno shte zatrudni identifikatsiiata na paketite i upravlenieto na
hranilishtata. Tuk neshtata pak se reshavat s neformalni konventsii, no niakoi
spetsifichni optsii/optimizatsii iziskvat kato edinstveno reshenie kompilirane ot
izhoden kod.
5. "Krehki" skriptove -
klasicheskite paketni sistemi pozvoliavat da se dobaviat kum paketite
skriptove (kato meta-danni). Te nai-chesto se izpulniavat v rezultat na
niakakvo deistvie, kato instalatsiia, iztrivane, prekonfigurirane. Tozi
podhod suzdava niakoi problemi:
- greshki v skriptovete chesto vodi do katastrofa i iziskva slozhni
gimnastiki v sledvashtite versii. Tova sushto taka poniakoga ogranichava
vuzmozhnostta da se vurnem kum po-stara versiia (koiato ima greshka v
daden skript);
- povecheto takiva skriptove sa "shabloni", koito prosto se kopirat ot
paket na paket. Tova uvelichava veroiatnostta ot greshka (nova greshka pri
kopirane ili prenasiane na stari greshki v noviia paket);
- "Trigeri" - (skriptove v edin paket, koito obache se izpulniavat v
rezultat ot deistvie v drug paket) vnasiat niva na slozhnost, koito chesto
vuzprepiatstvat vsiakakvi usiliia za "kontrol na kachestvoto" (QA).
- skriptovete ne mogat (e trudno) da budat promeneni s ogled pokrivane
na niakakvi spetsifichni iziskvaniia na lokalniia kompyutur;
- skriptove prednaznacheni za edna distributsiia chesto se provaliat, kogato
se instalirat (poradi greshka) na druga distributsiia.
Sega sled kato dobre "oplyuh" nai-razprostranenite paketni menazheri,
mislia da napisha i kak (si misliat che) reshavat tezi i drugi problemi
suzdatelite na conary.
Tova koeto chetete po-gore e sintez (prevod) na dokumenti na rPath i
Foresight, no durzha da podchertaia che te do goliama stepen se pokrivat i s
moeto mnenie, minali i nastoiashti nablyudeniia (na etap chetiridnevna rabota i dosta chetene), taka che tova ne
e samo oshte edin oriazan prevod ;)
Sega idva red i za predimstvata na
Foresight (suotvetno conary):
Vuvedenie v Conary
Conary osiguriava originalen podhod pri upravlenieto na prilozheniia s otvoren kod, vklyuchva novi idei za razpredeleno upravlenie i konfigurirane podobni na tezi v GNU arch i monotone.
Vmesto da se kontsentrira vurhu upravlenieto na otdelni paketi, kakto 'rpm' i 'dpkg' conary izpolzva mrezhovo-dostupni hranilishta, sudurzhashti strukturirana po versii ierarhichna informatsiia za vsichki failove i grupi ot failove v dadena distributsiia.
Tozi nov podhod osiguriava niakolko vulnuvashti novi vuzmozhnosti:
- mozhete da suzdavate, poddurzhate i razprostraniavate promeni chrez suzdavane na novi klonove na razrabotka i vtoro ima vuzmozhnost za sledene na promenite v sushtestvuvashti veche klonove kato v sushtoto vreme zapazvate i v tiah lokalno napravenite promeni. Tuk osven lesno razkloniavane ima i vuzmozhnost za "lesno" vrushtane kum bazoviia klon;
- inteligentno se zapazvat lokalno napravenite promeni v Vashata sistema. Edno obnoviavane niama "sliapo" da premahne lokalno napravenite promeni;
- mozhete da dublirate lokalno napravenite na edna mashina promeni, kato gi instalirate i na drugi mashini, taka ulesniavaiki poddruzhkata na mnozhestvo mashini;
- kakto i dosta drugi priiatni iznenadi (kakto shte vidite po-nadolu).
Sega zapochvam pored s kratko opisanie na novite vuzmozhnosti:
A.Razpredeleno durvo s versii.
A.1.Hranilishte - vsichko se suhraniava v mrezhovo-dostupno razpredeleno hranilishte, realizirano kato mrezhovo-dostupna baza danni (SQlite, i kato optsiia MySQL).
A.2.Failove - suhraniavaneto na failovete (v hranilishteto) stava chrez unikalen identifikator a ne chrez tiahnoto ime, taka imeto stava chast ot metadannite i mozhe dori da se promenia, kakto i vsichki drugi atributi (sobstvenik, prava, vreme, sudurzhanie i t.n.)
A.3.Troves, Packages and Components - paketite sa sustaveni ot komponenti, koito ot svoia strana sudurzhat failove. Trove se narichat i paketite i komponentite, trove e mnozhestvo ot failove ili ot drugi troves.
Konponentite sa udobni tui kato sudurzhat razlichni chasti na daden paket, niakoi standartni oznachenie (sufiksi) za komponenti sa:
:source, :runtime, :lib, :devel, :docs i t.n. Samo da spomena che vsichki *:source komponenti ne sa chast ot nikoi paket, tui kato niakoi ot tiah se izpolzvat pri suzdavaneto na poveche ot edin paket (otdelno se pesti i miasto).
A.4.Etiketi i Versii - izpolzvat se dosta po dulgi stringove za da se opisvat imenata i miastoto na proizhod, kato obache tazi informatsiia (obiknovenno) se skriva i se sukrashtava do neshto kato: 2.2.3-4-2, koeto e po-lesno za razbirane. Tuk 2.2.3 e nomera na originalnata versiia na paketa, 4 e nomera na posledniia release na izhodniia kod, a 2 e chislo, pokazvashto broia na generiranite ot tozi izh. kod binarni paketi.
Samo za primer eto edno pulno "ime" na paket: /conary.rpath.com@rpl:trunk/2.2.3-4-2. Tuk suznatelno sukrashtavam dosta informatsiia.
A.5.Senki (shadows) - tazi funktsiia osiguriava vuzmozhnost da se praviat i suhraniavat lokalnite promeni (suzdavane na sobstven "klon"). Tuk sushto suznatelno sukrashtavam dosta dulgoto inache opisanie.
A.6.Harakteristiki (flavors) - tazi puk funktsiia pozvoliava mnogo podrobna nastroika na optsiite za opredeliane na "arhitekturi", "promeneni konfiguratsii" i "izpolzvani flagove" (kakto globalni taka i spetsifichni za daden paket).
V.Razliki/Promeni (changesets) - conary izpolzva razliki kogato instalira novi prilozheniia, toest svaliat se i se zapisvat na lokalnata failova sistema samo promenenite neshta za daden paket. Tova spestiava trafik, miasto (v hranilishteto) i ne prezapisva (suhraniava) napravenite lokani promeni (nai-chesto konfiguratsii i dr.).
V.1.Predstaviane na lokalnite promeni - mozhete da generirate "lokalni promeni", koito sa otnositelnite razliki mezhdu sudurzhanieto na lokalnata sistema i sushtata informatsiia ot hranilishteto (na baza paket). Sled tova mozhete da go "prilozhite" i vurhu drugi mashini ili puk da go napravite chast ot razklonenie na lokalnoto/niakoe hranilishte. Pri vtoriia nachin mozhete da obnoviavate i chrez tova hranilishte.
V.2.Obnoviavane (merging) - Pri aktualizatsiia na daden paket tova stava chrez 'three-way merge' mezhdu 'originalniia instaliran fail'<->'faila ot lokalnata failova sistema'<->'versiia na sushtiia fail koiato shte bude instalirana'. Sushtoto se otnasia i do pravata za dostup na failovete.
Dosta riadko, no e vuzmozhno da se poluchi konflikt mezhdu lokalnata i novata versii, togava e neobhodima ruchno da se razreshi konflikta. S tsel suvmestimost za suzdavane/prilagane na razlikite se izpolzvat "diff/patch".
V.3.Efektivnost - sledvat niakoi prichini za po-visokata efektivnost v sravnenie s traditsionnite paketni sistemi:
- izpolzvaneto na "promeni" spestiava trafik i vreme za prenasiane;
- prilaganeto samo na promenite uskoriava instalatsiiata, osobeno za golemi paketi s malki (po obem) promeni;
- spestiava se miasto v hranilishteto tui kato v nego se suhraniava samo edno kopie na daden obekt (fail);
- chrez izpolzvane na "razpredeleni hranilishta" e vuzmozhno: da se spesti vreme za poddruzhka na promeneno kopie na tsialo hranilishte i se pesti miasto neobhodimo za suhraniavane na tsialoto hranilishte.
V.4.Vrushtane kum staro sustoianie (rollback) - kato slestvie ot izpolzvaneto na "promeni" pri obnoviavane na sistemata (koito se suhraniavat po versii) e mnogo lesno da se napravi vrushtane kum proizvolno izbrano predhodno sustoianie. Logichno tova vrushtane mozhe da stane samo "stupka-po-stupka" chrez prilagane na "promenite" v obraten red. Ne mozhe da skochite direktno kum dadeno sustoianie. CHastichno rshenie na gornoto ogranichenie e che sled tova mozhete otnovo da obnovite samo tezi paketi koito zhelaete.
S.Drugi kontseptsii
S.1.Dinamichni tagove - tova e chastta ot conary, koiato reshava problema s "krehkite skriptove". Suvsem nakratko "dinamichnite tagove" sa opisateli za razlichnite tipove danni/kod (elf, library, info i t.n.). Kakvo obshto ima tova sus skriptovete? Okazva se che ima, kum vseki "dinamichen tag" mozhe da se prikrepi/nasochi edin tui narechen "tag handler", koito v obshtiia sluchai e skript koito se izpulniava za vsichki failove ot tozi "tag". Tova e v osnovni linii.
S.2.Grupi i nabori failove - tuk shte si spestia malko pisane, kato samo kazha che grupite sa neshto podobno na "grupite paketi" v Debian (i proizvodnite), kakto i v rpm-proizvodnite distributsii. Toest pri instalatsiia ili po-kusno kazvane "iskam desktop sistema" i t.n.
Naborite failove sa prednaznacheni osnovno za izgrashtdane na malki (embedded) sistemi - ruteri, kontroleri i dr., kato opisvat samo daden nabor ot failove.
D.Budeshta rabota - distributsiiata (paketniia menazher) e otnositelno zriala (sredna vuzrast), kato obache conary (spisuka s razpredeleni hranilishta) vse oshte se razvivat i dorabotvat, taka che ima miasto za deistvie ;)
Zaklyuchenie - Lichno az veche izpolzvam tazi distributsiia (to puk ostavashe i da ne ia polzvam, no da go napisha) i veroiatno shte ostane (zaedno s Gentoo).
Oshte otsega ostaviam miasto i za nedostatutsite na Foresight (conary) a te osven tova i realno sushtestvuvat. Opredeleno ne iskam da Vi zabluzhdavam ;)
Nedostatutsi:
1.Conary se razprostraniava pod "svoboden litsenz", no niakoi drugi chasti (za da si napravish sobstvena distributsiia - Builder) sa zatvoreni. Mozhe da ima i drugi podobni neshta;
2.Polzvaneto na vunshni hranilishta ulesniava, no zaedno s tova i ogranichava, osobeno ako tsialata informatsiia e nalichna samo v v edno ot tiah (conary.rpath.com@rpl:trunk);
3.Drug (otnositelen) minus e fakta che Foresight e nasochena glavno kum
nai-novata versiia na Gnome i vunshno e oformen za rabota osnovno kato dekstop
sistema. Tova po-tiasno nasochvane vodi do znachitelno po-malko raznoobrazie na vsiakakvi prilozhenie (survurni i drugi). Primerno niakoi ot paketite s koito obiknovenno rabotia (i suotvetno poznavam po-dobre) gi niama, naprimer - djbdns (ima bind), qmail (ima postfix)i t.n.
Tova obache mozhe doniakude da se obiasni s broia na razrabotchitsite (okolo 12), taka che tova si e tehen izbor i proekt, puk i vse oshte ostava vuzmozhnostta za instalirane ot izh. kod ;) dori v sobstven klon na razrabotka.
Tova ogranichenie obache ne e tvurdo, ako niakoi/i napravi/iat hranilishte sudurzhashto paketi s KDE, XFCE, drugi otdelni prilozhenie, niama da e problem da se polzvat,pri tova v ramkite na sushtiia paketen menazher.
4.Dnes (8.02.2013) otnovo poglednah XFCE-2.5.2 versiiata(12.2011) i opredeleno mozhe da se kazhe che e napravena glavno za desktop polzvane-mnogo malko sa vklyuchenite prilozheniia (drugite triabva sam da si gi kompilirash i instalirash), ne e osobeno trudno, no e spetsifichno.
5.Drugi - zasega ostava prazno ...
Veche e nalichna za svaliane poslednata versiia na Foresight/URL:
http://www.foresightlinux.com/downloads
Priemam vsiakakvi otzivi/komentari ;)
Posledna redaktsiia: 07-noe-2014
Redaktori na tazi sektsiia sa Rumen_Yotov, TheArch |
|
|
|
|
|
|
|
|
|
|
|
|