Qualche intoppo per l’adozione delle Rust Coreutils in Ubuntu: il comando cp per ora resta GNU

Lo scorso settembre, quando abbiamo iniziato a parlare di Ubuntu 25.10 abbiamo indicato come la novità più rilevante di questa release transitoria fosse l’introduzione dei comandi sudo e coreutils scritti in Rust. Questing Quokka si è posta questo obiettivo in modo da essere apripista per le future release.

In funzione di questo, Ubuntu 26.04 (Resolute Raccoon, rilasciata lo scorso aprile), che vale la pena notare è una Long Term Support, si è presentata al mondo con le Rust Coreutils 0.8, ma senza effettuare la transizione in maniera totale, tanto che i comandi base cp, mv e rm sono rimasti nella versione GNU, la versione storica scritta in C.

Il motivo di questa scelta è legato a otto problemi di tipo TOCTOU (Time-of-Check to Time-of-Use) che sono stati scoperti in fase di rilascio di Resolute Raccoon. I TOCTOU sono problemi di sicurezza che si verificano quando un programma controlla una risorsa (un file) e poi la usa, ma nel lasso di tempo tra i due momenti, un attaccante la modifica, ad esempio la sostituisce con un link malevolo.

Nei piani di Canonical, la fase due è rappresentata dall’adozione totale delle Coreutils Rust all’interno di Ubuntu 26.10 (Stonking Stingray) che uscirà come di consueto il prossimo ottobre: in questo modo l’azienda di Mark Shuttleworth si aspetta di utilizzare le release intermedie per effettuare una transizione il più soft possibile alle nuove Coreutils.

Per raggiungere questo obiettivo la versione cp scritta in Rust è stata inserita nel pacchetto principale che si chiama coreutils-from la cui versione ha il curioso nome di 0.0.0~ubuntu26.

Qui, per così dire, sono iniziati i problemi.

Il 30 giugno 2026, lo sviluppatore di Canonical Simon Johnsson ha segnalato un bug di importanza critica. Il comando cp basato su Rust ha infatti bloccato completamente livecd-rootfs, ovvero lo strumento utilizzato da Canonical per generare le immagini ISO d’installazione di Ubuntu. 

Il fallimento è stato causato da una lieve incompatibilità tecnica nel modo in cui Rust gestiva una stringa di argomenti multipli:

  • Il sistema di compilazione eseguiva un comando composto usando cp -afL.
  • In GNU, il flag -L (segui i collegamenti simbolici) sovrascrive correttamente la natura di conservazione dei symlink del flag -a.
  • Nella versione Rust, una libreria di parsing per la riga di comando chiamata clap cancellava l’intero contesto di -a (incluse le sue proprietà ricorsive -R) nel momento in cui andava a risolvere -L. Di conseguenza, lo script dell’installer si è ritrovato improvvisamente impossibilitato a copiare le cartelle.

Ora, poiché l’intero sistema operativo non era più in grado di compilare le proprie immagini ISO, il bug è stato immediatamente elevato a importanza Critica.

Mentre gli sviluppatori discutevano se patchare semplicemente lo script di compilazione delle immagini, il team di rilascio ha stabilito come fosse troppo pericoloso lasciare un’utilità così fondamentale a bloccare l’infrastruttura di base e, quello stesso giorno, Johnsson ha rilasciato un aggiornamento d’emergenza (coreutils-from versione 0.0.0~ubuntu28) che ha annullato completamente la modifica, reintroducendo ufficialmente gnucp (il binario di copia GNU in C).

È chiaro come questo sia solo un normale incidente di percorso per il quale sicuramente il cammino delle Coreutils Rust non verrà influenzato, ma è giusto ricordare come migrazioni di questo tipo siano tutt’altro che semplici.

È verosimile che problematiche affini emergeranno nel futuro poiché “il diavolo è nei dettagli” e, per quanto la si voglia fare facile, non è di una componente banale che si sta trattando la migrazione.

Vale la pena ricordarlo a chi pensa “E che ci vuole, è solo un eseguibile”.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *