Já ty konflikty považuji za přínosné aby člověk co o tom nemá přehled, neumí anglicky atd. se dozvěděl co jak ve světě svobodného softwaru funguje :-)
Pochopil jsem že hlavní problém s vendor lock in a kompatibilitou se týká
api a abi pro to aby fungovali propietalni bloby nebo proprietární sw (předpokládám že ten svobodný by nebylo problém překompilovat, možná i to je drahé nebo nemusí být snadné?).
Řeší tento problém do budoucna
flatpaky, Nixpkgs nebo něčeho vhodného aby šlo garantovat nebo předpokládat funkčnost nezávisle na distribuci?
Jaké distribuce dávají informace o tom jak a na čem a s čím je jejich software poskládaný tak aby šlo udělat klon 1:1 ?
To by mohlo být také pro někoho jako kritérium výběru jak zabránit vendor lock in..
> Jaké distribuce dávají informace o tom jak a na čem a s čím je jejich software poskládaný tak aby šlo udělat klon 1:1 ?
Je několik typů distribucí:
- sestavované ze zdrojáků u uživatele - Linux From Scratch, Gentoo - jelikož umožnují i bootstrap, tak to asi splňují komplet (ale bacha - *).
- komunitní typu Debian, Fedora, Arch - teoreticky to jde, prakticky není úplně jednoduché postavit stejný build systém. Tj, máte zdrojáky, ale není snadné z nich opravdu udělat bootstrap stejným způsobem jako ta distribuce.
- komerční jako SUSE, RHEL, Oracle - i když máte zdrojáky, tak build systém neznáte a může mít interní kroky, které nezreprodukujete. Nikdy. Například systém pro kontrolu exportních pravidel (šifry a jiné technologie), elektronické podpisy komponent a balíků, dělení do repozitářů podle zákazníka nebo produktu atd.
- commitové distribuce jako Fedora Silverblue, NixOS atd toto také neřeší, umožňují vám ovlivnit instalaci konkrétních verzí, ale build systém je pořád mimo vaši kontrolu.
(*) Ani Gentoo ovšem nezaručuje reproducible buildy (myšleno binárně identické). Různě po komunitách se na tom pracuje, ale překladač a programy jsou pořád ještě ovlivněny časem (timestampy v souborech) a použitým hardware (optimalizace).
> NixOS atd toto také neřeší, umožňují vám ovlivnit instalaci konkrétních verzí, ale build systém je pořád mimo vaši kontrolu.
What. NixOS naopak umožňuje detailně ovlivnit build jakéhokoliv balíku, a reproducible buildy jsou v podstatě #1 priorita. Moje dva pracovní stroje jsou binárně zcela identické (tedy, tam kde to aplikace umožňuje), i s tím že mám v některých balíkách upravené build flagy a některý software si buildím sama.
12. 7. 2023, 10:51 editováno autorem komentáře
Jenže ne všechen software to umožňuje. https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+label%3A%226.topic%3A+reproducible+builds%22
Je to svatý grál, ale není snadné ho dosáhnout.
A btw, build jednoho balíku je něco jiného než bootstrap celé distribuce. Nicméně ok, máte pravdu, že u NixOS je to snazší než jinde a je to jejich cílem.
Tam je spíš problém v definici toho co je vlastně distribuce, protože NixOS je dost stavebnice. Každopádně bych ho v tom seznamu řadila spíš k Gentoo než k Fedoře. Protože snadný bootstrap je jedna z jeho hlavních vlastností a co není v build cache se sestavuje přímo na koncovém zařízení.
12. 7. 2023, 11:22 editováno autorem komentáře
Ano, byla jsem uživatelka Silverblue před přechodem na Nix, a tak nějak tam nevidím žádnou paralelu, zvlášť ne v možnosti bootstrapu distribuce. Jediné co je podobné je možnost rollbacku, ale to má i třeba Arch s nastavenými snapshoty.
"build systém je pořád mimo vaši kontrolu" je naprosto mimo.
12. 7. 2023, 14:22 editováno autorem komentáře
Já to chápu jako takový arch (na rozdíl od gentoo se distribuuji binarky, ale můžou i návody na sestavení kódu třeba na git repo, je snadné tam se kompilovat i automatizovaně a měnit nastavení kompilace) a běží to v kontejnerech.
Tedy silverblue a Suse micro (údajně to jde přepnout u všech ale nezkoušel jsem).
Ale nevím proč by zase nešlo v silverlue nebo suse také kompilovat s vlastním nastavením a přenášet to jinam jako image který by měl fungovat na jiném sestavení distra bez toho aby to rozbilo něco jiného
Tedy jakou má výhodu vlastně nix oproti silverlue nebo suse?
Také vlastně nevím proč by někdo měl na server nebo desktop používat stream nebo Rh.. Co má za výhody?
Jediné co mě napadá SELinux? Nevím jak má dobré přednastavené konfigurace třeba to suse micro..
Zajímavé je že suse nabízí podporu i pro produkty redhatu už delší dobu.
Strojový překlad
Nulové výpadky, úplná kompatibilita
Se systémem SUSE Liberty Linux si můžete být jisti, že všechny opravy údržby a zabezpečení jsou plně testovány tak, aby byly plně kompatibilní s RHEL a CentOS, od zdrojového kódu a binárních souborů až po integritu binárního rozhraní aplikace jádra. Pravidelně vydávané binárně kompatibilní bezpečnostní záplaty a údržbové aktualizace zajišťují, že celá vaše smíšená linuxová aktiva jsou aktuální a bezpečná, což zajišťuje vysokou dostupnost, odolné úložiště a neprůstřelné vyrovnávání zatížení.
https://www.suse.com/products/suse-liberty-linux/
12. 7. 2023, 14:48 editováno autorem komentáře
Distribuují se ne binárky, ale návody na sestavení balíků včetně závislostí. NixOS ani nemá binární balíky v pravém slova smyslu, má binární cache. Při instalaci se vyhodnotí hash pro build instrukce (derivace), podívá se jestli je ten hash v jedné z nastavených cachí, a pokud ano, stáhne si cachovaný build. Při vypnutí cache se buildí všechno.
Rozhodně to pak neběží v kontejnerech. Věci instalované v nix store sice zahrnují všechny své závislosti (podobně jako třeba Flatpak), ale není to kontejner (nemají vlastní namespace) - ostatně ani nemůže, nix jako balíčkovací systém plně funguje i na MacOS.
... OMG
"Také vlastně nevím proč by někdo měl ... používat ... Rh"
Protoze jeho dodavatel dodavajici nejaky SW ten SW podporuje prave a treba i pouze na RH. A pokud budes resit, ze neco nefunguje, pricemz se zjisti, ze to nefunguje na cemkoli jinem, tak ti dodavatel rekne, ze kdyz si to provozujes na necem jinem, tak si to taky sprav.
A tenhle stav nastaval mimo jine prave proto, ze tu existovala jak placena tak neplacena varianta (centos) tudiz dodavatel takoveho SW typicky v zavislosti na pozadavcich/infrastrukture/rozsahu ... dodal jedno nebo druhe.