{"id":173,"date":"2011-02-04T00:45:09","date_gmt":"2011-02-03T22:45:09","guid":{"rendered":"http:\/\/blog.mageia.org\/it\/?p=173"},"modified":"2011-02-07T00:01:31","modified_gmt":"2011-02-06T22:01:31","slug":"bootstrap-quale-bootstrap-io-voglio-la-iso-di-mageia","status":"publish","type":"post","link":"http:\/\/blog.mageia.org\/it\/2011\/02\/04\/bootstrap-quale-bootstrap-io-voglio-la-iso-di-mageia\/","title":{"rendered":"Bootstrap? Quale bootstrap? Io voglio la ISO di Mageia!"},"content":{"rendered":"<p>Avevamo annunciato che la nostra prima alpha ISO sarebbe stata disponibile dalla fine di Gennaio&#8230; e ancora niente ISO. Dannazione! Cosa sta succedendo? Lasciatemi spiegare.<\/p>\n<h2>C&#8217;era una volta un Bootstrap&#8230;<\/h2>\n<p>Come indicato nel post precedente, il nostro sistema di compilazione ha lavorato a pieno regime durante le ultime settimane e pi\u00f9 di 4000 pacchetti sono stati prodotti. Questo insieme di pacchetti \u00e8 quello che noi chiamiamo bootstrap.<\/p>\n<p>Guardando Wikipedia, vedrete che un bootstrap \u00e8 definito come un piccolo bootloader utilizzato per avviare un sistema pi\u00f9 grande. Nel caso di Mageia: il bootstrap \u00e8 l&#8217;attuale fase nella quale viene approntato il sistema di base e risolte le principali dipendenze per consentire alle altre applicazioni di essere compilate utilizzando gli strumenti ed i pacchetti propri di Mageia. Tutte le distribuzioni Linux utilizzano i propri pacchetti per costruire tutti i pacchetti presenti nei repositories.<\/p>\n<p><a href=\"http:\/\/blog.mageia.org\/wp-content\/uploads\/2011\/02\/White_chicken_egg_square.jpg\" rel=\"lightbox[173]\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/blog.mageia.org\/wp-content\/uploads\/2011\/02\/White_chicken_egg_square-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" \/><\/a><\/p>\n<p>Poi arriva la parte pi\u00f9 difficile della storia, una sorta di dilemma del tipo &#8220;\u00e8 venuto prima l&#8217;uovo o la gallina?&#8221;. Alcuni pacchetti di basso livello, tipicamente chiamati toolchains (<em>n.d.t. insiemi di applicazioni finalizzate alla compilazione\/creazione di un prodotto, l&#8217;output di uno \u00e8 l&#8217;input di un altro<\/em>), <em>necessitano di se stessi per essere compilati<\/em><em> <\/em>:  gcc, glibc\u2026 Questi pacchetti esistono gi\u00e0 in molte distribuzioni. Quindi il processo di bootstrap parte semplicemente da una di queste distribuzioni.<\/p>\n<p>Per quanto riguarda Mageia, abbiamo deciso di utilizzare i pacchetti di Mandriva dato che la prima release \u00e8 basata su Cooker. Per poterli utilizzare, occorre ripulirli:<\/p>\n<ul>\n<li>rimuovendo parti e pezzi specifici di Mandriva (macro RPM, oggetti tutelati da copyright come immagini e icone, roba obsoleta\u2026)<\/li>\n<li>rimuovendo condizioni non necessarie nella definizione dei requisiti per la compilazione<\/li>\n<li>inviando le correzioni upstream (n.d.t. con upstream ci si riferisce in generale al produttore principale di un software per il quale sono state prodotte le correzioni) al fine di non doverle mantenere e renderle fruibili anche a tutti gli altri qualora l&#8217;upstream le accettasse<\/li>\n<li>disabilitando temporaneamente qualche dipendenza ad alto livello dato che queste non sono state ancora risolte e non sono quindi disponibili per Mageia (Java, Mono).<\/li>\n<\/ul>\n<p>Quando tutto questo sar\u00e0 fatto, ogni pacchetto sar\u00e0 pronto per essere ricostruito nel sistema di compilazione di Mageia. Una volta che il pacchetto sar\u00e0 ricostruito come uno di Mageia, il packager controller\u00e0 ed aggiunger\u00e0, se necessarie, le dipendenze di compilazione non appena saranno disponibili.<\/p>\n<h2>Facciamo un esempio<\/h2>\n<p>gcc \u00e8 un compilatore C, una parte importante del sistema base dato che \u00e8 necessario per compilare i sorgenti di molte applicazioni.<\/p>\n<p>Mageia richiede il proprio pacchetto gcc per generare tutte le applicazioni utilizzando il linguaggio C (ci\u00f2 prende anche il nome di dogfooding &#8211; <em>n.d.t. leggasi autosufficienza<\/em>). Questa \u00e8 un&#8217;operazione cruciale per Mageia in quanto il corretto svolgimento di questa assicura che tutto funzioni bene e al contempo permette di identificare potenziali problemi permettendone quindi la correzione.<\/p>\n<p>Il gcc di Mageia viene quindi generato.<\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/blog.mageia.org\/wp-content\/uploads\/2011\/02\/bootstrap_bs.png\" rel=\"lightbox[173]\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/blog.mageia.org\/wp-content\/uploads\/2011\/02\/bootstrap_bs.png\" alt=\"\" width=\"910\" height=\"443\" \/><\/a>Una volta costruita la toolchain possiamo ricompilare il kernel di Mageia, i drivers X, il server X, ecc cos\u00ec come le applicazioni di pi\u00f9 alto livello. Un sistema appena avviato non offre molti pacchetti oltre a qualche libreria ed un compilatore. Tutto ci\u00f2 necessiter\u00e0 successivamente di ulteriori ed essenziali pacchetti di sistema\u00a0 prima di consentire ai team di packagers di iniziare a lavorare sul serio. Molti pacchetti necessitano per dipendenza di ulteriori pacchetti che andranno quindi compilati a loro volta.<\/p>\n<p style=\"text-align: left;\">In conclusione migliaia di pacchetti sono necessari per compilare i componenti principali che saranno a loro volta necessari alle applicazioni ad un pi\u00f9 alto livello.<\/p>\n<p style=\"text-align: left;\"><a href=\"http:\/\/blog.mageia.org\/wp-content\/uploads\/2011\/02\/deps_bootstrap.png\" rel=\"lightbox[173]\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/blog.mageia.org\/wp-content\/uploads\/2011\/02\/deps_bootstrap.png\" alt=\"\" width=\"642\" height=\"266\" \/><\/a>Certamente questa \u00e8 la storia semplificata, privata di tutte quelle cose simpatiche che possono accadere durante il processo di ricompilazione, ma questo \u00e8 il quadro generale.<\/p>\n<p style=\"text-align: left;\"><strong>Perch\u00e8 il bootstrap \u00e8 cos\u00ec importante?<\/strong><\/p>\n<p>Come indicato precedentemente, il bootstrap \u00e8 una fase dove i packagers e gli specialisti del sistema base possono prendere del tempo per verificare la consistenza delle varie parti ad un livello veramente basso della distribuzione, definire i requisiti e renderli idonei alle politiche della distribuzione. Quindi il bootstrap non \u00e8 dedicato esclusivamente alle persone interessate nei fork \ud83d\ude42<\/p>\n<p>Ad ogni modo, migliorare e scrivere documentazione appropriata sulla fase di bootstrap sar\u00e0 inoltre di grande aiuto quando nuove architetture verranno aggiunte e supportate. Occorreranno infatti una toolchain appropriata, un sistema di base&#8230;. insomma la stessa storia.<\/p>\n<h2>Le ISO<\/h2>\n<p>Tornando quindi alla nostra prima domanda: per quando possiamo aspettarci una prima ISO di prova? La fase di bootstrap \u00e8 iniziata un mese fa e dovrebbe terminare entro domani. Ci sono volute circa <strong>1,500\u00a0hours<\/strong> per compilare i pacchetti disponibili, prendere in carico le compilazioni andate a buon fine ma anche quelle fallite e quelle ricompilate, prendere le decisioni tecniche che andavano prese, gli inconvenienti, le discussioni\u2026<\/p>\n<p>Ora ci siamo :-). Il repository \u00e8 pronto per le prime prove di compilazione, la nostra macchina per la costruzione delle ISO \u00e8 configurata a dovere e la Alpha 1 \u00e8 prevista per il 15 di Febbraio; restate sintonizzati,\u00a0 ulteriori news sulla futura roadmap verranno presto rilasciate!<\/p>\n<div>(Originariamente postato il <a title=\"3:22 pm\" rel=\"bookmark\" href=\"..\/..\/?p=422\">February 2, 2011<\/a> da <a title=\"View all posts by ennael\" href=\"..\/..\/?author=2\">ennael)<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Avevamo annunciato che la nostra prima alpha ISO sarebbe stata disponibile dalla fine di Gennaio&#8230; e ancora niente ISO. Dannazione! Cosa sta succedendo? Lasciatemi spiegare. C&#8217;era una volta un Bootstrap&#8230; Come indicato nel post precedente, il nostro sistema di compilazione &hellip; <a href=\"http:\/\/blog.mageia.org\/it\/2011\/02\/04\/bootstrap-quale-bootstrap-io-voglio-la-iso-di-mageia\/\">Continua a leggere<span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-173","post","type-post","status-publish","format-standard","hentry","category-senza-categoria"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p15lp4-2N","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.mageia.org\/it\/wp-json\/wp\/v2\/posts\/173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.mageia.org\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.mageia.org\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.mageia.org\/it\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.mageia.org\/it\/wp-json\/wp\/v2\/comments?post=173"}],"version-history":[{"count":12,"href":"http:\/\/blog.mageia.org\/it\/wp-json\/wp\/v2\/posts\/173\/revisions"}],"predecessor-version":[{"id":186,"href":"http:\/\/blog.mageia.org\/it\/wp-json\/wp\/v2\/posts\/173\/revisions\/186"}],"wp:attachment":[{"href":"http:\/\/blog.mageia.org\/it\/wp-json\/wp\/v2\/media?parent=173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.mageia.org\/it\/wp-json\/wp\/v2\/categories?post=173"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.mageia.org\/it\/wp-json\/wp\/v2\/tags?post=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}