PackageKit uzturētājs Matiass Klumps 24. augustā izklāstīja plānu PackageKit 2.0, kas salauzīs visas dēmona D-Bus saskarnes. Pašreizējās saskarnes nav mainījušās kopš 1.0.0 laidiena 2014. gada 12. septembrī. Katram programmu pārvaldniekam, kas ar PackageKit sarunājas pa D-Bus, būs jāraksta jauns kods.
Darbu apmaksā Vācijas Sovereign Tech Agency stipendija. Klumps 2025. gadā strādāja pirmajā stipendiātu grupā ar nelielu stundu skaitu. Šī gada otrajā pusē stundas ir būtiski palielinātas, jo viņš pabeidza doktora darbu. Stipendija maksā tieši uzturētājiem. Aģentūra to sāka kā papildinājumu savam atbalstam lielākām brīvprogrammatūras organizācijām.
Kas tieši lūzīs
PackageKit sēž starp grafiskajiem programmu pārvaldniekiem un distributīva pakotņu rīkiem. Repozitorijā ir 14 aizmugursistēmu mapes: apt, dnf, dnf5, zypp, alpm, portage, nix, eopkg, entropy, pisi, poldek un freebsd, plus divas testēšanai.
Otrā pusē ir grafiskās saskarnes. KDE Discover kodā ir PackageKitBackend, GNOME Software spraudņu mapē ir packagekit, Cockpit tīmekļa konsolē ir pkg/packagekit. Visām šīm koda daļām nāksies pārrakstīt D-Bus izsaukumus.
Tā būs sāpīga pāreja, jo PackageKit 2.0 salauzīs visas PackageKit saskarnes: tās ir bijušas iesaldētas vairāk nekā desmit gadus. Tomēr es pilnībā sagaidu, ka izmaiņa būs pūļu vērta.
Klumps ir arī pateicis, ko 2.0 nedos. Interaktivitātes nebūs, tāpat kā termināļa progresa pārsūtīšanas uz grafisko saskarni. Pārējais plāns ir mazāk koda, izmestas funkcijas, kurām mūsdienu darbvirsmās vairs nav lietojuma, plus dažas jaunas lietas frontendiem.
Kāpēc dēmonu grib pārtaisīt
Gadiem valdīja pieņēmums, ka lietotāji pāries uz atomāriem distributīviem un PackageKit vairs nebūs vajadzīgs. Klumps raksta, ka tas nav noticis un pakotnēs balstītām sistēmām joprojām ir iemesli pastāvēt, sevišķi izstrādes vidēs. Tikmēr dēmona arhitektūra ir palikusi gadiem tāda pati.
Otro iemeslu Klumps formulē caur drošību. PackageKit ir dēmons, kura tiešais uzdevums ir mainīt visu sistēmu, tāpēc to praktiski nav iespējams ielikt smilškastē.
Aprīlī tas parādījās praksē. CVE-2026-41651 jeb Pack2TheRoot ļāva neprivileģētam lietotājam instalēt RPM pakotnes ar root tiesībām un izpildīt to skriptletus bez autentifikācijas. NVD tam iedeva 8,8 balles pēc CVSS 3.1. Cēlonis bija TOCTOU sacensību stāvoklis uz transakcijas karodziņiem: izsaucēja padotos karodziņus dēmons ierakstīja, nepārbaudot, vai transakcija vispār ir autorizēta. Skarti visi laidieni no 1.0.2 līdz 1.3.4. Labojums iznāca 1.3.5 laidienā 22. aprīlī. Caurumu atrada Deutsche Telekom sarkanā komanda.
Bezsaistes atjauninājumi bez vairākām pārstartēšanām
Otrs uzdevums ir bezsaistes atjauninājumu procedūra. Tagad tā prasa vairākas pārstartēšanas. Klumps grib to pārlikt uz systemd soft-reboot, kas pārstartē lietotāja telpu, neizslēdzot kodolu. Vēl viens mērķis ir atbrīvoties no atjauninājumiem, kas darbojas sistēmas startēšanas laikā. Viņš raksta, ka no lietojamības viedokļa to uzskata par diezgan sliktu.
Jaunā uzvedība vēl ir melnraksta stadijā. Iespējams, tai vajadzēs atbalstu pašā systemd, tāpēc termiņu Klumps nesauc.
pkcon paliek, jaunais rīks jau ir klāt
Vienu pārejas daļu Klumps ir izdarījis jau tagad. PackageKit 1.3.4 laidienā, kas iznāca 28. janvārī, komplektā nonāca komandrindas rīks pkgcli. Vecais pkcon bija taisīts kā testēšanas rīks. Tā komandas atkārtoja D-Bus API nosaukumus. Attīstības tam nebija gandrīz desmit gadus.
pkgcli komandas ir show, search, list-updates un what-provides, nevis get-details. Ir --json karodziņš, kas izvada JSONL skriptiem. Noklusētais keša vecums tagad ir trīs dienas, agrāk tas bija “nekad”. Nelietotās atkarības tiek noņemtas pēc noklusējuma. Rīks pkcon netika izmests, lai nesalauztu esošos skriptus. Tas pats paņēmiens ar 2.0 D-Bus saskarnēm nestrādās, jo tur lūzt pats protokols.
Pārējais stipendijas saraksts
Klumps strādā pa vienam projektam. Pirmais rindā ir AppStream, kur lielākā daļa darba jau ir padarīta un 1.2.0 laidiens ir tuvu. Tajā ir JPEG-XL atbalsts, smilškastē ievietota mediju apstrāde un stabilizēta libappstream-compose API. AppStream saņēma prioritāti, jo drīz iznāks jaunā Freedesktop Flatpak izpildvide.
Arī AppStream iemesls ir līdzīgs PackageKit iemeslam. Bibliotēka sākotnēji bija rakstīta tā, lai lasītu tikai uzticamus datus no pārbaudītiem distributīvu avotiem. Flatpak to lieto citādi, tāpēc daļa darba iet noturībai pret datiem, kuriem uzticēties nevar. Daļu kļūdu, ko Klumps tagad labo, atrada AI koda pārskats.
Nākamās rindā ir Freedesktop specifikācijas, kuras Klumps arī uztur. Viņš plāno pievienot savietojamības matricu. Ja kāda darbvirsma specifikāciju neievieš vai no tās atsakās, tas būs dokumentēts. Programmu autori tad zinās, ko sagaidīt. Klumps raksta, ka līdz šim darbojās neizteikts pieņēmums, ka visi ievieš visu, kas nekad nav bijis pilnīgi patiesi.
Vēl plānā ir specifikāciju vietnes pārstrāde ar labāku meklēšanu, MDN paraugā. Freedesktop.org vietnes atjaunotā versija pirmajā iterācijā ir gatava un gaida sistēmadministratora darbu. Pēc tam Klumps grib atsevišķā sadaļā arhivēt mirušos projektus. Kā piemēru viņš min HAL.
Pēdējais PackageKit laidiens ir 1.3.6 no 16. jūnija. Koka meson.build failā versija jau stāv kā 1.3.7, tāpēc pirms 2.0 sanāks vēl vismaz viens 1.x laidiens.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.