Ubuntu volta a usar GNU cp após incompatibilidade no Rust Coreutils
Notícias

Ubuntu volta a usar GNU cp após incompatibilidade no Rust Coreutils

Acesse nossos conteúdos exclusivos!

A transição gradual do Ubuntu para o Rust Coreutils encontrou mais um obstáculo. Desta vez, o problema envolveu o comando cp, responsável por copiar arquivos e diretórios, cuja implementação em Rust precisou ser temporariamente substituída pela versão tradicional do GNU Coreutils após causar falhas na construção das imagens Live da distribuição.

A mudança foi anunciada pela equipe Ubuntu Foundations, que confirmou a reversão enquanto uma correção definitiva é preparada e enviada ao projeto uutils, responsável pela reimplementação dos utilitários clássicos do Unix em Rust.

O que aconteceu?

O erro surgiu após a versão em Rust do cp ser reativada no pacote coreutils-from, mecanismo utilizado pelo Ubuntu para definir quais comandos utilizam as implementações tradicionais e quais passam a usar as versões desenvolvidas em Rust.

Pouco tempo depois da alteração, o sistema de construção das imagens Live do Ubuntu 26.04 LTS começou a apresentar falhas. O problema foi registrado no Launchpad como o bug #2158691 e recebeu prioridade Critical, já que impedia a geração das imagens utilizadas para instalação e testes da distribuição.

Como medida imediata, os desenvolvedores optaram por restaurar a implementação do GNU Coreutils, permitindo que o processo de compilação voltasse a funcionar normalmente.

A incompatibilidade estava relacionada à forma como o Rust Coreutils interpretava determinadas combinações de opções do comando cp, especialmente o uso conjunto de parâmetros como -a e -L.

No GNU Coreutils, a opção -a (archive) engloba automaticamente outras opções, como cópia recursiva e preservação de atributos dos arquivos. Já a implementação em Rust tratava alguns desses parâmetros como mutuamente exclusivos, fazendo com que parte do comportamento esperado fosse descartada.

Comandos como cp -afL deixavam de realizar a cópia recursiva corretamente e retornavam mensagens de erro indicando que a opção -r não havia sido especificada, mesmo ela estando implícita no modo de arquivamento.

Um desafio esperado

O incidente não representa um problema generalizado do Rust Coreutils, mas ilustra um dos principais desafios de substituir ferramentas que acumulam décadas de compatibilidade.

Grande parte da infraestrutura de distribuições Linux depende de comportamentos muito específicos, muitas vezes reproduzidos por scripts antigos que assumem exatamente a forma como os utilitários do GNU Coreutils funcionam.

Pequenas diferenças na interpretação de argumentos podem passar despercebidas durante os testes iniciais e só aparecer quando entram em contato com sistemas complexos, como a cadeia de construção de uma distribuição Linux.

Ao menos o problema já foi corrigido no pacote utilizado pelo Ubuntu 26.04 LTS, enquanto uma proposta de correção também foi enviada ao projeto uutils para que a implementação em Rust passe a reproduzir o comportamento esperado do cp.

Fique por dentro das principais novidades da semana sobre tecnologia e Linux: receba nossa newsletter!

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!