Zastaralý software v distribucích

Re:Zastaralý software v distribucích
« Odpověď #30 kdy: 28. 12. 2013, 12:31:48 »
V Linuxovém světě se ustálila taková zvláštní situace, která je nesamozřejmá (má spousty podmínek a důvodů), ale lidi si na to zvykly a začali to považovat za normální i když v některých je ohledech je to spíš úplná katastrofa než normální situace.

Pár z těch "featur":

1. Počítá se s tím, že za kvalitu (relativní) ručí víc distributor než autor aplikace. To je samo o sobě krávovina, protože distributor může jenom těžko dobře opravovat chyby v softu, který nenaprogramoval.

2. Kvůli tomu autoři softů často vydávají tragicky neodladěné verze. To samo o sobě nevadí, ale měly by být označené jako vývojové a teprve po odladění jako stable/release.

3. Linuxový svět je taková džungle plná nejrůznějších nekompatibilit, že vydat něco, aby to fungovalo na (aspoň) většině Linuxů prakticky nejde. Proto se vydávají často jenom zdrojáky (ať si s nima distributoři dělají co chtějí) nebo zvlášť verze pro každou distribuci.

4. Kapitolou samou pro sebe je nekompatibilita init systémů a balíčkovacích systémů. Všechny dějají vesměs to samé, takže by se klidně mohl používat jeden, ale to ne. NIH syndrom...

5. V OSS světě spousta vývojářů kašle na plánování a zpětnou kompatibilitu (právě proto, že se ustálil přístup "to vychytá distribuce")

6. Linuxové distribuce mají v balíčcích i zákadní systém. Z toho právě plyne, že po updatu to třeba ani nenabootuje. Přitom většina uživatelů chce rock-solid základní systém a nejnovější uživatelský soft.

7. z 6ky částečně plyne to, že není pořádné stabilní API, se kterým by aplikace mohly být kompatibilní. Všechno se hýbe jako ten písek, jak píše Petr.

atd. atd.

V BSD světě to funguje jinak - základní systém je monolit, který se může instalovat prostým překopírováním. A jeho API i ABI podléhá určité politice (např. u FreeBSD stbilita ABI v rámci major verze). Zbytek jsou "aplikace třetích stran" a hlavní zodpovědnost za ně mají jejich vývojáři. Systém obsahuje jenom skripty, které instalaci usnadňují. A k tomu nějaký systém na evidenci zranitelností v konkrétních softech konkrétních vezí. Nic víc. Tenhle přístup vede k tomu, že je jasně dáno, kdo má za co zodpovědnost a distributor se netváří, že dokáže spravit všechno a ručí za všechno (což je iluze - v podstatě podvod na uživatele, protože to není a nemůže být pravda).

V jiném tématu jsme s Leninem nakousli, že podobným způsobem se Linux dá provozovat taky - stačí si nainstalovat nějaký minimalistický základ (třeba pečlivě vybrané balíčky ze Slackware) a zbytek instalovat pomocí pkgsrc. Škoda, že tahle cesta není víc rozšířená (a teda s větší podporou).

Já sem prostě zvyklý z Windows u aplikací, které používám, zkrátka stahovat a instalovat aktuální verze aplikací přímo od jejich autora, být závislý na tom, zda mi správce Linuxové distribuce aplikaci zpřístupní a v jaké verzi mi je tak nějak proti srsti.
To je ale proto, že aplikace pro Windows se obvykle distribuují jako staticky linkované, nebo aspoň si všechno potřebné tahají ssebou. To v unixovém světě jde taky (viz MacOS), akorát v Linuxu to (skoro) nikdo nedělá.


Re:Zastaralý software v distribucích
« Odpověď #31 kdy: 28. 12. 2013, 12:35:54 »
Vy co tu nadhazujete Linux From Scratch, podívali jste se někdy aspoň na okamžik o co vlastně jde? Nejenom, že to není 'distribuce', je to pouze kniha, návod jak si vybudovat vlastnímy silami systém, postavený na Linuxu a open source software, a hlavně - vůbec si nezakládá na tom 'mít vždy ten nejaktuálnější soft'. Má úplně jiné priority.
Prave ze podival. Mate vzdy tak aktualni software, jak si ho sam zkompilujete.
Pred par lety jsem LFS zkousel, ale nakonec jsem se z pohodlnosti vratil k Ubuntu.
"Kdo v zájmu bezpečí obětuje část své svobody, v konečném důsledku přijde o svobodu i svou bezpečnost."

Tonda

  • *****
  • 638
    • Zobrazit profil
    • E-mail
Re:Zastaralý software v distribucích
« Odpověď #32 kdy: 28. 12. 2013, 12:47:56 »
U windows stejně jako v linuxu nemáš nejnovější verze všeho. Když si naistaluju debian stable + backports, tak mám skoro nejnovější kernel, nejnovější firefox, office, kodeky a další běžné desktopové věci. Naopak zastaralý je C runtime (stejně jako na windows spousta aplikací je stále dělaná pro zastaralý .net nebo visual studio runtime) nebo grafické prostředí (na windows je také pořád jedno a to samé a nemění se). Nevidím v tom rozdíl, jediné co by teoreticky mohlo vadit je špatný pocit z toho, že jseš u office o jednu minor verzi zpět (kdo z vás z hlavy zná verzi office na vašem počítači a koho to trápí?). Všechny tyhle drobné problémy máš vykoupené vyšší stabilitou a prakticky nulovým časem za údržbu. Jestli si chceš všechno řešit sám, tak si zůstaň na windows nebo si dej arch  apod.
To je stále dokola, pro Windows instalační balíčky dělá autor a ve vlastním zájmu je dodá pro všechny podporované verze, kterých díky release cyklu Windows není tolik. Systémů založených na Linuxu je víc než verzí Windows a releasují co půl roku. Takže instalátor dělají správci distribuce a ti prostě vezmou verzi v době freeze své distribuce a dál na to kašlou, krom nejexponovanějších aplikací jako Firefox. Od doby kdy sem si ten qbittorrent instaloval vyšla nová verze aplikace a knihovny a já zas budu hodiny řešit jak to pofackovat místo abych si prostě stáhnul instalátor a pustil ho jako na Windows. A tohle není o tom, že by autor aplikace přešel na technologi, kterou starý systém nepodporuje, to je proto, že díky fragmentaci Linuxu a častému vydávání verzi se prostě nikomu nechce připravovat balíčky pro takové množství distribucí.

U komerčních/neopensource se o to vždy postará autor, protože prostě nemá jinou možnost.

Re:Zastaralý software v distribucích
« Odpověď #33 kdy: 28. 12. 2013, 12:54:13 »
pro všechny podporované verze, kterých díky release cyklu Windows není tolik.
To není délkou release cyklu, ale zpětnou (ne)kompatibilitou ABI. Pokud udržíš kompatibilitu ABI, můžeš si klidně releasovat každý den a na produkty třetích strn to nebude mít žádný vliv.

Ale hlavní moment je tam to zmíněné statické linkování. Staticky slinkovaný program pravděpodobně spustíš na spoustě distribucí v různých verzích taky celkem bez problémů. Ne tak dobře jako na Windows nebo MacOSu, ale hodně podobně.

pedro

Re:Zastaralý software v distribucích
« Odpověď #34 kdy: 28. 12. 2013, 13:10:01 »
...

Pěkně napsané. Mám k tomu 2 poznámky, ta roztříštěnost v Linuxu je alespoň v dlouhodobém měřítku výhodná, urychluje to vývoj. Za docela zajímavé považuji, že ten zmíněný Slackware, který má relativně nejméně zdrojů a relativně nejméně toho vymýšlí (drží se upstreamu), nejenom že je nejstarší stále vyvíjenou, ale také platí za nejstabilnější dsitribuci (a to obsahuje celkem aktuální balíky).


Atrament

Re:Zastaralý software v distribucích
« Odpověď #35 kdy: 28. 12. 2013, 13:20:36 »
Mate vzdy tak aktualni software, jak si ho sam zkompilujete.
No ale to přece platí o všech distribucích.

Re:Zastaralý software v distribucích
« Odpověď #36 kdy: 28. 12. 2013, 13:45:20 »
No ale to přece platí o všech distribucích.
Ne tak docela, protože u některých distribucí je práce se zdrojovými balíčky neskutečnej porod, jejich úprava přímo nadlidskej výkon a aktuální verzi softu ze zdrojáku tam třeba přeložit nejde, protože vyžaduje novější knihovny, než který v distribuci jsou.

Takže musím prostudovat tunu materiálů, abych se dozvěděl, co všechno musím udělat, abych si přeložil zdrojovej balíček. Pak ho můžu přeložit s nějakou jinou volbou, ale překlad taky možná zhavaruje, protože výsledek nebude souhlasit s nějakou signaturou, která ve zdrojový balíčku je. Takže buď můžu překládat pořád dokola od začátku (obrovský plýtvání časem), nebo se můžu opět ponořit do manuálu, abych zjistil, jakým hackem překlad spustit odprostředka znovu...

...a dosáhl jsem jenom nějaké přihlouplé změny volby. Povýšit verzi by mohlo být daleko daleko těžší.

Prostě kdo nevěří, ať tam běží - každý ať si zkusí pro svou distribuci:
1. vytvořit balíček softu, který pro ni není
2. přeložit existující balíček s jinými volbami
3. přeloži existující balíček s nějakým vlastním patchem
4. vzít existující balíček a povýšit jeho verzi

Troufnu si říct, že pro většinu distribucí je to hraní si minimálně na den, spíš dva.

Juro

Re:Zastaralý software v distribucích
« Odpověď #37 kdy: 28. 12. 2013, 14:10:10 »
...a ze si davaju na tej stabilite zalezat, ked sa rozhoduju, ci daju starsiu "odskusanu" verziu alebo novsiu. Napr. v ubuntu software centre mi svieti NetBeans 7.0.1, aktualny je 7.4. Neviem, neviem, ci to s tou opatrnostou neprehanaju a ci je to naozaj stabilnejsie.

Re:Zastaralý software v distribucích
« Odpověď #38 kdy: 28. 12. 2013, 14:20:51 »
Nejvíce se mi osvědčilo minimální základ (kernel + knihovny) a k tomu si připojit pár programů co chci (na desktopu nepoužitelné).
Linux je neuvěřitelný zmatek, touha po nových aplikacích je kontraproduktivní (pokud si jí neopodstatním funkcionalitou).

Kolikrát je mnohem rychlejší (minuty) záplatu backportovat do zdrojového kódu, než zkoušet co se stane po aktualizaci celého systému.
Ono se totiž s největší pravděpodobností asi tak 1000 věcí rozbije a pak to řešit hodiny není pro produkční nasazení.
Proto taky se každý diví, proč to takhle řeší většina distribucí - prostě to jinak nejde.
Google tohle zjevně při návrhu Androidu vzdal a raději to nechal běžet na JAVĚ.

Já už to vzdal úplně a raději to nechám běžet v kontaineru, v kterém vyjma základních knihoven nic není.
Software je tam jen jeden a komunikuje přes webové rozhraní ven (odmítám se hrabat v tom bordelu zvaném Linuxové distribuce)
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci

Atrament

Re:Zastaralý software v distribucích
« Odpověď #39 kdy: 28. 12. 2013, 15:06:31 »
No ale to přece platí o všech distribucích.
Ne tak docela, protože u některých distribucí je práce se zdrojovými balíčky neskutečnej porod, jejich úprava přímo nadlidskej výkon a aktuální verzi softu ze zdrojáku tam třeba přeložit nejde, protože vyžaduje novější knihovny, než který v distribuci jsou.

Takže musím prostudovat tunu materiálů, abych se dozvěděl, co všechno musím udělat, abych si přeložil zdrojovej balíček. Pak ho můžu přeložit s nějakou jinou volbou, ale překlad taky možná zhavaruje, protože výsledek nebude souhlasit s nějakou signaturou, která ve zdrojový balíčku je. Takže buď můžu překládat pořád dokola od začátku (obrovský plýtvání časem), nebo se můžu opět ponořit do manuálu, abych zjistil, jakým hackem překlad spustit odprostředka znovu...

...a dosáhl jsem jenom nějaké přihlouplé změny volby. Povýšit verzi by mohlo být daleko daleko těžší.

Prostě kdo nevěří, ať tam běží - každý ať si zkusí pro svou distribuci:
1. vytvořit balíček softu, který pro ni není
2. přeložit existující balíček s jinými volbami
3. přeloži existující balíček s nějakým vlastním patchem
4. vzít existující balíček a povýšit jeho verzi

Troufnu si říct, že pro většinu distribucí je to hraní si minimálně na den, spíš dva.
A které distribuce to jsou? Pokud se vrhnu do kompilování nějaké aplikace ze zdrojáků, je to všude více méně stejné (pokud se nebudeme bavit o Arším AURu a nebo Gentoo teda). Pokud se bavíme o nejnovější verzi aplikace, která je jinak normálně součástí distribuce, tak prostým nainstalováním build dependencies té aplikace(apt-get build-dep u debian-like distribucí), se s trochou štěstí dosáhne kompilovatelného stavu oné nejnovější verze. Pak stačí stáhnout a zkompilovat tu novou verzi. S instalací nebo snad balíčkováním se není třeba otravovat, všechny normální desktopové aplikace jdou normálně spustit přímo z adresáře těch zdrojáků, takže stačí plácnout ikonku někam do panelu a je hotovo. Beztak se to bude za dva týdny kompilovat znova (vyjde nová verze, kterou 'nutně' potřebujeme) tak co se s tím nějak moc párat...

Pamatuju se, že svého času jsem tak používal třeba Clementine, hlavně v jeho začátcích byla každá nová verze znatelným skokem vpřed co se týče funkčnosti, takže jsem to tahal a kompiloval přímo z gitu a fungovalo to na debianu testing krásně po docela dlouhý časový úsek aniž bych se dostal do situace, kdyby to chtělo nějaké knihovny v nedostupných verzích...

Ale je fakt, že stačí velmi málo, aby se z toho stala uživatelova noční můra - aplikace začne chtít nějakou knihovnu v novější verzi než je dostupná, ta ale vyžaduje zase jinou taky v nějaké novější verzi a a už to jede. A vůbec nejlepší je, když se podaří po dlouhém boji nainstalovat vše požadované, ale kompilace té původní aplikace, kvůli které to celé člověk dělá, přesto selhává :)

Re:Zastaralý software v distribucích
« Odpověď #40 kdy: 28. 12. 2013, 16:58:44 »
A které distribuce to jsou?

Všechny založené na RPM nebo DEB.

Pokud se bavíme o nejnovější verzi aplikace, která je jinak normálně součástí distribuce, tak prostým nainstalováním build dependencies té aplikace(apt-get build-dep u debian-like distribucí), se s trochou štěstí dosáhne kompilovatelného stavu  [...] aplikace začne chtít nějakou knihovnu v novější verzi než je dostupná, ta ale vyžaduje zase jinou taky v nějaké novější verzi a a už to jede.
Trochu si protiřečíš :)

Respektive máš pravdu - někdy to jde a někdy to nejde. Jenže pokud se bavíme o produkčních systémech (server nebo desktop, to je jedno), tak "někdy to nejde" = takhle to provozovat nejde.

U mainstreamových distribucí máš víceméně na výběr je buď provozovat tak jak jsou, bez úprav (maximálně případě nějaké konzervativní PPA), nebo je neprovozovat. Nějak víc se v tom vrtat je o nervy, zvlášť s Linuxovými výstřelky typu initrd, grub 2, systemd...

Atrament

Re:Zastaralý software v distribucích
« Odpověď #41 kdy: 28. 12. 2013, 17:30:14 »
Trochu si protiřečíš :)

Respektive máš pravdu - někdy to jde a někdy to nejde. Jenže pokud se bavíme o produkčních systémech (server nebo desktop, to je jedno), tak "někdy to nejde" = takhle to provozovat nejde.

To jsem se právě snažil vyjádřit - někdy to jde fakt v pohodě, a někdy prostě ani omylem  :-\ Když jsem ještě Linux na desktopu používal, tak to byla věc, která mně pálila asi nejvíc - pro desktop vyloženě špatný model distribuce software.

pedro

Re:Zastaralý software v distribucích
« Odpověď #42 kdy: 28. 12. 2013, 18:46:20 »
Tak musíte si uvědomit, že některé distribuce jsou primárně určené ke kompilaci kódu a některé nejsou. Třeba v Gentoo si člověk může flexibilně vybrat, které balíky, ve kterých verzích a s kterými compile optiony bude mít a ještě se to díky portage dobře spravuje. To stejné bez nástrojů pro správu můžete dělat na jinak binárním Slackware. Pokoušet se o totéž na Debianu je ale asi opravdu určené k zániku, určitě to lze pro několik málo balíků, ne pro celou distribuci. Debianistům to nevadí, oni jsou spokojení s tím, že jim to jede jak z praku a nemusí se o systém starat, maximálně nějaké ty backporty a pro odvážné apt pinning. Prostě na každý úkol je jiný nástroj/distribuce.

Re:Zastaralý software v distribucích
« Odpověď #43 kdy: 29. 12. 2013, 20:17:22 »
U Windows aplikací jste závislý na tom, kdy autor sestaví instalačku a zveřejní ji na webu. U Linuxových distribucí jste závislý na tom, kdy zveřejní balíček správce distribuce. Nebo si v obou případech můžete aplikaci sestavit sám.
Jenže jak můj příklad ukazuje, autor tu aplikaci sestaví, protože je to jeho aplikace a má na tom zájem, zatímco správce distribuce se na to zhusta vykvajzne. Sám to překládat nechci.
To je ale zásadní nepochopení vývoje software. Software se vyvíjí postupně, někdy dokonce paralelně v několika větvích. Pak někdo přijde, ukáže prstem na nějakou konkrétní verzi zdrojového kódu, a s toho se sestaví verze určená k distribuci. Ten někdo může být jak autor (který takhle typicky vydává verze pro Windows), tak správce distribučního balíčku. Takže tu aplikaci v nějaké verzi musel sestavit i správce distribučního balíčku, jinak byste tu aplikaci v dané distribuci neměl k dispozici.

Možná jste tedy nemyslel, že by v distribuci nikdo tu aplikaci nesestavil, ale třeba to, že autor sestavuje nové verze pro Windows častěji, než jak je máte k dispozici ve vaší distribuci. Pak je samozřejmě otázka, k čemu je dobré mít nové verze častěji. Na Windows je to zpravidla proto, že jinou možnost lidé nemají. V linuxových distribucích máte možnost kompilovat software přímo ze zdrojáků, což mi připadá jako nejlepší varianta, pokud se chcete podílet na vývoji a mít pořád ten nejaktuálnější kód.

Tonda

  • *****
  • 638
    • Zobrazit profil
    • E-mail
Re:Zastaralý software v distribucích
« Odpověď #44 kdy: 30. 12. 2013, 09:42:21 »
Já se živím vývojem software, takže mám určitou představu. Zásadní rozdíl je ten, že když tvůrce software vydá verzi, tak k ní vždy vydá i sestavení, kdežto správce distribuce na to kašle, sestavil jednou v době vydání distribuce aby si mohl udělat čárku do kolonky "počet předkompilovaných balíčků" a dál na to kašle, viz verze mnou zmiňovaného qbittorrent v Ubuntu 12.04 a 10.04.

Nechci se podílet na vývoji jen chci mít aktuální uživatelský software s aktuálními funkcemi, v této konkrétní situaci jsem pouhý uživatel a nějaká kompilace je naprosto nepřijatelný způsob distribuce, to možná vyhovuje geekům, kteří to mají jako hračku.