- Fedora, Fedora 43 में पूरे पैकेज सेट के 99% को reproducible बनाने के लिए बदलाव आगे बढ़ा रहा है
- मौजूदा infrastructure सुधारों के ज़रिए 90% तक पहुँचा जा चुका है, और बाकी के लिए packager को इन्हें bug के रूप में पहचानकर ठीक करने के लिए प्रेरित करने की योजना है
- लक्ष्य security को मज़बूत करना और package quality को बेहतर बनाना है, और इसके लिए स्वतंत्र verification tool
rebuilderd भी लाने की तैयारी है
ओपन सोर्स builds की reproducibility का अवलोकन
- ओपन सोर्स software की security मज़बूत करने और integrity verify करने के लिए 'reproducible builds' का महत्व बढ़ रहा है
- reproducible build ऐसा build है जिसमें एक ही source code, build environment और build command के आधार पर कोई भी व्यक्ति एक जैसा result तैयार कर सके
- Debian इस क्षेत्र में 10 साल से अधिक आगे है, और अब उसकी आधिकारिक live CD भी reproducible तरीके से बनाई जा सकती है
- Fedora ने reproducible builds पर काम हाल में शुरू किया है, लेकिन Fedora 43 development cycle में पूरे पैकेजों के 99% को reproducible बनाने के प्रस्ताव पर विचार कर रहा है
Fedora और Debian के बीच अंतर
- Debian स्थानीय रूप से build किए गए package upload करने की अनुमति देता है, इसलिए reliability कम हो सकती है
- Fedora सभी packages को केंद्रीय, सख्ती से नियंत्रित infrastructure में build करता है
- Fedora
dist-git नाम के Git repository में source और hash जानकारी शामिल रखता है, जिससे package tracking आसान हो जाती है
reproducible builds के लिए Fedora की अपनी परिभाषा
- Fedora, Debian से अलग परिभाषा इस्तेमाल करता है
- signature और कुछ metadata को छोड़कर, RPM file के वास्तविक content payload पर फोकस किया जाता है
- इसकी वजह RPM format की विशेषताएँ, signature का तरीका, और build time (
BUILDTIME) तथा build host (BUILDHOST) जैसी जानकारी का शामिल होना है
- openSUSE,
BUILDHOST को reproducible पर सेट करके इसका समाधान कर रहा है
reproducible builds की दिशा में Fedora की तकनीकी प्रगति
- Fedora 38 से
SOURCE_DATE_EPOCH का उपयोग करके files के modification time को स्थिर करने वाला बदलाव लागू किया गया
- Fedora 41 में
add-determinism नाम का Rust-आधारित tool लाया गया, जो build हुई files के metadata को standardize करता है
- Debian
strip-nondeterminism नाम की Perl library का उपयोग करता है, लेकिन Fedora ने Perl dependency से बचने के लिए अपना अलग tool चुना
- अब तक लगभग 90% packages में reproducibility हासिल की जा चुकी है
आगे की योजना
- बचे हुए 9% के लिए योजना है कि packager reproducibility की समस्या को bug मानें और उसे ठीक करें
fedora-repro-build utility दी जाएगी ताकि स्थानीय स्तर पर Koji build की reproducibility test की जा सके
rebuilderd नाम की स्वतंत्र verification system को सार्वजनिक रूप से चलाने की योजना है, जो package metadata का विश्लेषण करके और rebuild के ज़रिए reproducibility verify करेगी
rebuilderd, diffoscope के माध्यम से differences report भी बना सकती है
packaging guidelines और quality improvement
- Fedora की packaging guidelines को अपडेट करके यह जोड़ा जाएगा कि "जहाँ संभव हो, build reproducible होना चाहिए"
- reproducible builds सिर्फ security ही नहीं, package quality सुधारने में भी मदद करती हैं
- उदाहरण: अगर architecture-independent package में hardware dependency मिलती है, तो यह bug होने की संभावना है
non-reproducible exception cases
- Haskell, multi-threaded build के दौरान reproducible नहीं है, और इसे ठीक करने का काम जारी है
- Go में debug file
.gdb_index स्थिर नहीं रहती, इसलिए reproducibility नहीं मिलती, और अभी इसका समाधान नहीं है
- Linux kernel module signing में अस्थायी key का उपयोग होता है, और इससे संबंधित patch प्रस्तावित किया गया है
community feedback
- Fedora infrastructure team ने rebuilderd की location और maintenance को लेकर सवाल उठाए
- यह भी चर्चा हुई कि क्या rebuilderd को Koji में integrate किया जा सकता है
- कुछ लोगों का मानना है कि स्वतंत्र verification के लिए Koji से अलग system का उपयोग बेहतर होगा
- कुछ ने rebuilderd की जगह Copr के उपयोग का सुझाव भी दिया
- कुल मिलाकर, Fedora के मौजूदा tools के साथ integration बढ़ाने वाली दिशा को प्राथमिकता दी जा रही है
आगे की प्रक्रिया
- FESCo(Fedora Engineering Steering Committee) को proposal ticket जमा किया जाएगा
- मंज़ूरी मिलने पर Fedora 43 की अक्टूबर release target तक implementation का काम तेज़ किया जाएगा
- अंतिम उपयोगकर्ताओं को शायद बड़ा अंतर महसूस न हो, लेकिन supply chain security के लिहाज़ से यह बहुत मूल्यवान बदलाव है
7 टिप्पणियां
Fedora टीम हमेशा हैरान करती है, और ऐसा लगता है कि उसके ज़्यादातर फ़ैसले सही दिशा में आगे बढ़ने के लिए होते हैं। हर बार योगदान देने वाले सभी लोगों का मैं आभार मानते हुए इसका उपयोग करता हूँ।
लगता है पहले इसका काफ़ी इस्तेमाल होता था, लेकिन आजकल इसे क्यों भुला दिया गया है?
Linux community में यह अब भी Linux desktop उपयोग के लिए बहुत लोकप्रिय है.
यह server उपयोग के लिए बनी distribution नहीं है, इसलिए हमारे देश में, जहाँ Linux desktop ज़्यादा सक्रिय नहीं है, लगता है इसकी पहचान उतनी ज़्यादा नहीं है.
आह, लगता है कि आजकल अगर कोई heavy user नहीं है, तो वह ऐसा Ubuntu चुनता है जिसे server और desktop दोनों के लिए इस्तेमाल किया जा सके!
लिनक्स की बात देखकर खुशी हुई, इसलिए एक बात जोड़ रहा/रही हूँ.. hehe
Ubuntu में snap आने के बाद desktop पक्ष में लोगों की राय काफ़ी गिर गई थी.. Unity DE भी लोगों को बहुत बँटा-बँटा सा पसंद आया.. और release cycle बहुत लंबा होने की वजह से नए drivers का support भी ठीक से नहीं मिलता..
अगर आप desktop Linux पर विचार कर रहे हैं, तो मैं सच में Fedora recommend करता/करती हूँ.
Fedora काफ़ी हद तक stock के करीब Gnome इस्तेमाल करता है, और Gnome के हाल के updates भी बहुत बढ़िया रहे हैं, इसलिए यह मुझे सच में बहुत संतोषजनक लगता है!
धन्यवाद हाहा
Fedora का नाम सुनते ही पुरानी यादें ताज़ा हो जाती हैं
Hacker News टिप्पणियाँ
gcccompiler multi-threaded compilation को support नहीं करता। C language में parallelism कई translation units को parallel में compile करने से आता है