Újabb problémák az Ubuntu Rust-alapú GNU coreutils helyettesítővel

Címkék

Az Ubuntu a 25.10-es interim kiadásban elkezdett kísérletezni azzal, hogy az évtizedek alatt kiforrott, C-ben írt alapvető GNU segédprogramokat Rust-alapú megfelelőire cserélte. "Drop-in replacement"-ként hivatkoztak rájuk, azaz a terv az volt, hogy csak bedobják a régi, jól bevált segédprogramok helyére és a felhasználók a váltásból semmit sem vesznek észre, mert az új cuccok pont úgy működnek majd, mint a régiek.

Az elképzelés már az új, uutils coreutils-ba tartozó date paranccsal megbukott, hiszen a hibája eltörte az automatikus frissítéseket. Most kiderült, hogy probléma van a Rust-alapú du-val és sort-tal is: azok nem teljes egészében implementálják a GNU coreutils-ba tartozó du, sort funkcióit, így az olyan script-ek, amik rájuk támaszkodnak hibásan működhetnek.

Hozzászólások

Tehát, még egyszer: 

Ha nem akarunk izgalmakat és instabil rendszert, maradunk az LTS-en. 

trey @ gépház

Én még azon is gondolkodom, hogy csak a támogatási idő miatt Linux Mintről visszatérek Ubuntura, aktiválom az ingyenes Pro-t és tíz évig jó vagyok. Addigra talán a Wayland is összeszedi magát.

Én az egész politikát kib@sznám a hupról. De a népnek cirkusz kell, az üzemeltetőnek meg látogatottság.

A Firefox az snap, és a Mozilla a publishere, úgyhogy az Ubuntu semmit se kell tegyen a karbantartásért.

A Thunderbird is snap, de úgy látom, hogy annak Canonical a publishere.

Mintha pont ezert tértek át snap-re, hogy ne kelljen a függőségeket folyton frissíteni az egész oprendszeren. Az, hogy teljesen átadták a karbantartást másnak az már a bónusz. :)

Annak nem sok értelme lenne, hogy egy 2032-ig kereskedelmileg támogatott (értsd: fizetős) operációs rendszerben a fizető ügyfelek egy elavult, lyukas böngészőt kapjanak. Abból könnyen még per is kerekedhetne, hiszen közületek, intézmények, vállalatok is használják. 

trey @ gépház

Nekem jelenleg három dolog igazán fontos: egy normális webböngésző, Docker (vagy valami hasonló technológia) és a phpStorm. Ha ezek jól működnek, a többit el tudom engedni. :)

Én az egész politikát kib@sznám a hupról. De a népnek cirkusz kell, az üzemeltetőnek meg látogatottság.

Az a baj, hogy erről többet beszéltünk, mint a hüvelygombáról, csak képtelen vagy megérteni. 2032-re a 22.04 és 2034-re a 24.04 csomagverziói teljesen elavulnak. A Linux világa gyorsan változik, csak az utóbbi pár év (nem egész évtized) termése: Wayland kényszerítése, Wayland portálok, Pipewire, Wireplumber, dbus-broker, systemd-homed, systemd-bsod, Proton, DXVK, NTsync, Wine WOW64, OOMkiller, számos újabb Gtk és Qt és glibc főverzió, Bash 5.x, stb.. Ez nem az a műfaj, főleg desktopon, ahol 10 évig hátradőlhetsz, és nem lesz változás. Szerveren vagy ipari vezérlőn, embedded eszközön talán még elmegy, hogy ha valami régi PHP, Python verziós cuccot kell kiszolgálni, egy 10 éves rendszer arra még alkalmas, de desktopon agyhalál lesz, addigra talán már az univerzális csomagformátumok se fognak vele menni.

Az is egy magoldás, hogy időben mindig átmész a következő LTS-re, 26.04, 28.04, és kézzel telepíted a gnu-coreutilst, ami lecseréli a default uutilst, de ha már kézileg kell hekkelni az Ubuntu értelmét veszti, ha kézimunkára vágysz, arra van vagy tucat jobb disztró.
 

“Linux isn't an OS, it's a troubleshooting sim game.” (a YouTube commenter)

Veszel egy laptopod, kihozod a boltból, felrakod rá a latest Ubuntu LTS-t és neadjisten minden működik rajta (akár a megfelelő HWE pack-kal).  Onnantól pont jó, hogy nem kell verziókat upgrade-elni, nem törik el, a friss böngésző meg jön az update-ekkel.  Átlag felhasználót hol érdekli, hogy X vagy Wayland van alatta, ha megfelelően stabil és gyors? hogy milyen hangrendszerrel, OSS-el, plain alsával, pulseaudióval, bármi mással van összereszelve, ha elindítja a Youtube videót és kijön a hang?  Hol érdekli a heti aktuális systemd-* komponens?  Hol érdekli, hogy milyen bash vagy zsh verzió van benne? A felhasználó bekapcsolja a gépet és tudja elvégezni a dolgát a lehető legstabilabb környezetben, a legkevesebb zavaró öncélú rendszer-reszelés mellett.

Egyébként az OOM killer annyira nem újdonság, hogy 20+ éve velünk van.  https://lwn.net/2001/0412/a/oom-patch.php3

Veszel egy laptopod, kihozod a boltból, felrakod rá a latest Ubuntu LTS-t és neadjisten minden működik rajta (akár a megfelelő HWE pack-kal).

Vagy, mondok jobbat, LTS-sel érkezik, arra van certifikálva a HW compatibility mátrixában. Utána a következő tanúsítás valószínűleg a következő LTS-re lesz. Interim release-zel éppen megy? "Super!" mondja a gyártó, "Good for you!", csak éppen nem garantálja. Majd a következő LTS-sel megnézni és illeszti.  

trey @ gépház

https://hup.hu/comment/3235453#comment-3235453:

 

Mi avul el?

Gép megy, Docker megy, Java van, böngésző van, git van,  phpStorm megy, LibreOffice megy, ssh megy.

Én az Ubuntu 18.04-ről is csak 2023-ban váltottam, nekem teljesen megfelelt a gyári Unity-val.

Én az egész politikát kib@sznám a hupról. De a népnek cirkusz kell, az üzemeltetőnek meg látogatottság.

Erre a kérdésre az a válasz, hogy a fasz tudja, mert official statementet én nem láttam. Ami eleve kicsit red flag. Az eddigi tapasztalat az, hogy de, viszont csak a standardet, utána kiveszik. Pl jelenleg már nem jó sem 20.04, aminek májusban járt le a normál supportja, sem semelyik korábbi LTS (18.04, 16.04), pedig még mindkettő (három) benne van az ubuntu pro-ban. És ugye ez a szál innen indult: "A 22.04 LTS aktivált Pro-val 2032-ig támogatott. A 24.04 LTS aktivált Pro-val még plusz évekig".

Mert olyan gépem van (Lenovo T470), amin az újabb verziók már nem adnak semmit. Nem akarok a waylanddal és egyebekkel szívni, nekem csak az kell, hogy működjön.

Én az egész politikát kib@sznám a hupról. De a népnek cirkusz kell, az üzemeltetőnek meg látogatottság.

És akkor kapsz ilyet:  

 

** WARNING: connection is not using a post-quantum key exchange algorithm.

** This session may be vulnerable to "store now, decrypt later" attacks.

** The server may need to be upgraded. See https://openssh.com/pq.html

 

Aztán mégis kell frissíteni. Pedig RHEL8 még évekig jó lenne.

A szervert frissitettem és ssh banner-ben jön az üzenet.

Ez leginkább azért meglepő, mert a fent linkelt dokumentáció egyértelműen a kliens viselkedéséről szól.  De most mélyebbre ástam neked és a fenti hibaüzenetet triggerelő kód a kliens kódjában található, az ssh_login függvényben.

https://github.com/openssh/openssh-portable/blob/master/sshconnect.c#L1…

Közben alám szerkesztettél :)  Ez jelenleg egy teljesen elméleti probléma, ha nagyon zavar az ssh kliensnél a zaj, akkor mehet a configba a Match block - akár host specifikusan - és a "WarnWeakCrypto no".

Egyébként szerintem ha ez valóban probléma lesz, akkor lesz RHEL8-ra hivatalos update-elt openssh szerver.  Teljesen valószínűtlen, hogy emiatt bárki céges Enterprise Linux user nekiáll distribet frissítgetni, ha amúgy support cikluson belül van és lefedi az igényét a rendszer.

Már leírtam egyszer, Shor algoritmussal eddig a 7x3 = 21 volt a legnagyobb publikus kulcs, amit sikerült faktorizálni.

Na, majd ha 1000 bit körül járnak, akkor kezdhetünk aggódni. Hagyományos algoritmussal eddig 829 bites RSA-t már faktorizáltak, elképzelhetőnek tartom, hogy NSA szintű helyeken az 1000 bitet is tudják, de hogy nem kvantumszámítógéppel, abban biztos vagyok.

Csak 5 percet túrtam eddig, de nem egyértelmű, hogy mi a konkrét hiba. Érti valaki?

Amúgy ezt az újraírósdit egyáltalán nem értem. Én mindig valami újat akarok programozni inkább. Semmi érdekeset nem találnék a du újraírásában. Lenne az a pénz, de hobbiból? Minek?

A du-ra találtam ezt: https://askubuntu.com/questions/1559396/the-new-du-command-in-lib-cargo-bin-coreutils-outputs-wrong-sizes-in-ubun

A sort-ra még mindig semmi. Illetve írták, hogy lassú. És hogy egysoros de nagyon hosszú fájlokra nem működik - de ez nem életszerű, ez talán nem okoz a való életben hibákat. Szóval valaki tudja, hogy mire gondolhatott Lunduke?

Mondjuk nézzük meg az érem másik oldalát is: rengeteg niche feature került bele az alap unix tool-okba az utóbbi 1-2 évtizedben. Emlékszem még a 2000-es években a legtöbb tool man oldala pár paraméterre korlátozódott. Pl. a find -ba bekerült rengeten abszolút niche feature, ma ránézel a man oldalára, okádék az egész, a man bash -hez hasonlatos.

És ez nem egyedi. Még a totál alap dolgok is, mint egy mv vagy cp is telis-tele vannak tömve mindenféle szirszar paraméterrel, ami egyszer kellett valakinek, és azóta ott van.

Ami nem gond, persze, amíg hozzá nem kell nyúlni... Mint pl. most.

Szóval persze, a rust alapú coreutils nem kompatibilis, de igazából a coreutils önmagával se kompatibilis, még az 5 évvel ezelőtti énjével sem, nemhogy 10+ év távlatában.

Ami működik, ne javítgasd!

If it aint broke, dont fix it!

Tanultak a fiúk az előzőből? 
Nem. 
Meglepődtünk Vincent? 
Nem.

Most majd utánanéznek hogyan kell tesztelni?
Nyilván most sem.
 

Ez a hír alapján nem törekedtek arra, hogy bitre pontosan azonos kimenetei legyenek azoknak a parancsoknak, amikre köztudottan sok script épül régóta. Gondolom nem voltak unit tesztek sem 100% lefedettséggel erre, hogy mennyire azonos értékekkel térnek vissza. 

Ez nélkül kicserélni egészen felelőtlen tett. Mondjuk így élesben derült ki, hogy nem sikerült, ha már nem gondoltak erre korábban maguktól.

A szép új világban nem lesz elég, hogy a script ellenőrzi, létezik-e az adott utasítás, hanem azt is kell majd detektálnia, hogy épp melyik verzió van felrakva, és arra egyedi utasítást írni. Oké, hogy az innovációnak van ára, de tényleg ez az ára?

Vagy: el kellene már valahogy hagyni, hogy az egyes parancsok plaintextben adják át az adatot. Stream-ekre jó, de amikor már egy ls-t, date-et, du-t, df-et kell parsolni, akkor lenne rá jobb mód.

Csak ehhez meg kellene változtatni az egész shellt, meg az egész 1970 óta létező stdin/stout/stderr kezelést. Amit akár lehetne amúgy inkrementálisan is. Van rengeteg strukturált adatformátumunk is, xml, json, yaml, stb. Lehetne ezeknek a parancsoknak is ilyen változata.

Igen, persze el lehetne indulni ebbe az irányba is. 

- bele lehet qrni az egész json kezelő library-t dependencyként, majd nézd meg mekkora resource footprint lesz belőle. Neked otthon mindegy de egy AWS szinten már a villanyszámlában nagyon nem. Edge computingre is nagyjából alkalmatlan leszel.
- arról nem beszélve hogy akkor az egész scriptkupacot át kéne migrálni ennek az inputnak a kezelésére. A teszt-scope-od ezzel ismét felrobbant (miközben látható h az eddigi limited scope-ot sem sikerült kezelni)

Szerintem ez az egész amibe beletenyereltek nagyon hasonlít ahhoz amit évek óta csinálok: 30-40 éves banki rendszerekhez kapcsolódás illetve ilyen rendszerek kiváltása modernebb technológiákra és módszertanokra (!)

Nem csak technológiai (mondjuk cobol) és architektúrális (mondjuk mainframe) hanem módszertani kihívás is bőven: dokumentáltság, teszteltség, fejlesztési és üzemeltetési módszertanok.

Tekintetes babzsákfejlesztő urak sokkal óvatosabban piszkálnák ezeket a dolgokat ha egy kicsit dolgoztak volna azelőtt egy ilyen banki legacy migrációs projekten. 

bele lehet qrni az egész json kezelő library-t dependencyként, majd nézd meg mekkora resource footprint lesz belőle. Neked otthon mindegy de egy AWS szinten már a villanyszámlában nagyon nem

tényleg azon aggódunk abban a világban, ahol egy random telepítés hoz magával pl egy teljes python szinte bármiben, hogy oda kéne még tenni egy párszáz Ks json libraryt a C vagy a rust mellé? Tényleg azon aggódunk, hogy az alapvetően managementre való (értsd mivel nem workload, kb mérhetetlen arányban futó) eszközök majd sokkal több energiával fognak futni? Zárójel kinyit, ráadásul messze nem vagyok megyőződve róla, hogy ez tényleg igaz, a json egy viszonylag hatékony formátum viszonylag jól megírt parserekkel, főleg ha azzal kell hasonlítani, hogy | grep | tr -s| cut | vagy mondjuk vmi awk, zárójel bezár.

arról nem beszélve hogy akkor az egész scriptkupacot át kéne migrálni ennek az inputnak a kezelésére.

Ezt nyilván inkermentálisan kell csinálni.

Van is egyébként már azért jó pár eszköz, ami egyébként tud is ilyet már, pl az 'ip', a systemd suitnak is vannak részei

(miközben látható h az eddigi limited scope-ot sem sikerült kezelni)

Egyébként tényleg ennyire gyász a helyzet? Mert ha jól értem, eddig volt egy kis baj a date-tel, meg most kiderült, hogy hiányoznak darabok a du-ból meg a sort-ból. Ami azért egyrészt nem akkora rohadtnagy tragédia egyébként a scopehoz képest (persze ettől még nem is jó, a sort talán a leggányabb), másrészt eléggé felveti a kérdését annak, hogy itt tényleg a babzsákfejlesztőkkel van-e a baj, vagy azzal a hülyével, aki a drop-in replacement szót találta használni (esetleg azzal a hülyével, aki elhitte az elmúlt tízensokév után, hogy bármilyen drop-in replacement tényleg az lesz). Mert azért mikor az hangzik el, hogy "In fact, it turns out that the Rust-based sort replacement is incomplete — only implementing a portion of the GNU sort function." akkor bizony gyanús, hogy itt nem feltétlen arról van szó, hogy nem tudnak tesztelni, hanem ez vagy nincs kész, és mégis be lett management tolva, vagy eleve nem is volt terv, hogy tök kompatibilis legyen. Ez utóbbit explicit cáfolja a repó, és azért az is látszik, hogy egyébként futtatják a gnu tesztjeit, és fekete-fehéren (well, színesen, de érted) oda van rajzolva, hogy a 600 környéki tesztből még bukik úgy 75 meg skippelve van vagy 50. Szóval a fejlesztés még nem tart ott, hogy legalább azon el kelljen kezdeni gondolkodni, hogy ennyi teszt elég-e, vagy valójában az eredeti coreutils tesztkészlete fos, és még csomó minden hiányzik... ez ki is van téve az ablakba, aztán valaki mégis úgy döntött, hogy beemeli. Nekem gyanús, hogy itt nem babzsák probléma van.

(Az meg, hogy ennek az egésznek mi köze van az edge computinghoz, azt kifejthetnéd)

Egyébként a powershell azért jó, mert tökéletesen rámutat, hogy két alapvetően teljesen más igényhalom van.

A rendes shell interaktív munkára nagyon jó, de -- tudom, majd mindjárt jönnek a hívők -- programozni az egész egy kifejezett határfos. Az egész kártyavár space delimited hell, meg az egész execution pipelinet végigszopató parsing és santizáció (idézőjelek ugye) alapvetően szar ötlet. Ehhez képest a powershell remekül megmutatja, hogy

  • egy object pipeline sokkal normálisabb scriptelésre
  • egy object pipeline, pláne ha -javaProgramozós kapcsolónevekkel van megverve kibaszottul szar ötlet interaktívan :)

Azért az én bashhez (sem) szokott szememnek a powershell eléggé tökön lövés.

Nyilván, én is lábrázást kaptok tőle, meg nem is értek hozzá. Ettől még az, hogy értelmes struktúrált adat utazik, az konkrét scriptelésnél be kell látni, hogy robusztusabb dolog alapvetően.

Önmagában a json nem elég. Az volna a lényeg, hogy legyen egy verziózott interfész, és a program azt mondhassa, hogy xy z.ver kell neki. Az interfész a megvalósítástól függetlenül legyen specifikálva. És legyen eszköz, ami validálja, hogy tényleg csak azt használja, ami meg van jelölve (importálva). El is jutunk oda, hogy szigorúan típusos programnyelvet kell használni valami szigorú függőségkezeléssel.

>de az ritka eset.

JSON úgy lehet jó, ha van hozzá JSON séma (csak hallottam, hogy ilyen is van), plusz a séma mellé van téve egy specifikáció is, hogy mi mit jelent benne. És mind a futtatandó szkript (program), mind a megvalósító program deklarálja, hogy ő mit valósít meg/használ, és valami ellenőrzi, illetve megoldja a kompatibilitást. Így értem, hogy enélkül pont ugyanott vagyunk, mint a névvel ellátott paraméterekkel, nem lesz kevésbé törékeny. Odáig kell eljutni a gondolkodásban, hogy a szkript írás is programozás és pontosan ugyanolyan szigorú szabályokra lenne szükség, mint a tisztességes programnyelvekben, ha azt akarjuk, hogy amit csinálunk az időtálló legyen.

Azt mondd már meg, hogy egy kétoszlopos adatnak mi a jó kutya f@szának kell strukturált adatnak lennie? Nem generálunk elég szemetet amúgy is?

A másik, hogy és ha én szemileg akarom parsolni? Nehogy már az legyen, mint a powerhellbe, hogy ha valami emberi kimenetet akarok, akkor még pluszban formázgassam át.

Nem kell mindenhova strukturált adatformátum. Őszintén szólva, én végtelenül gyűlölöm ezt a JSON-be belebuzult világot. Persze, komplex adatstruktúráknál legyen, de a du / sort hót egyszerű kimeneteire hadd ne mán.

Blog | @hron84

valahol egy üzemeltetőmaci most mérgesen toppant a lábával 

via @snq-

Bár alapvetően egyetértek, azért ne csináljunk úgy, mintha ez egy új dolog lenne a shell háza táján, és egy scriptben ne kellett volna eddig is garmadával szopni az ilyesmik garmadával, kezdve saját! interpretertől a mindenféle random builtin vagy külső parancs, itt épp melyik awk van jellegű inkompatibilitásokkal, meg simán csak a random took verziókkal jövő új flagekkel, még akkor is, ha linuxokban maradunk, és mondjuk a bsdk szóba se kerültek.

Megint hozzá nem értők* akarnak valami ezer éve jól működő dolgot lecserélni. Meglepő, hogy nem sikerült.

(*lehet, hogy értenek a Rust fejlesztéshez, de hogy a fent nevezett utilityket életükben soha nem használták, az is biztos)

Blog | @hron84

valahol egy üzemeltetőmaci most mérgesen toppant a lábával 

via @snq-