Mostrando postagens classificadas por relevância para a consulta coreutils. Ordenar por data Mostrar todas as postagens
Mostrando postagens classificadas por relevância para a consulta coreutils. Ordenar por data Mostrar todas as postagens

uutils: Um coreutils escrito na linguagem Rust

uutils: Um coreutils escrito na linguagem Rust

uutils: Um coreutils escrito na linguagem Rust


 Sylvestre Ledru, que é desenvolvedor do Debian, está trabalhando em uma reimplementação do pacote coretuils chamado uutils ou Rust coreutils. Esse pacote tem como intuído ter os mesmos comandos do pacote coreutils do GNU que já conhecemos porém escritos em uma linguagem mais moderna, a linguagem mais moderna é Rust para ser mais específico.

Rust Coreutils (in my home directory)
Rust Coreutils (no meu diretório home)

 Tudo começou quando Sylvester andava estudando a linguagem Rust e pensou como poderia replicar algo similar com a linguagem. Sylvester pensou em alguns projetos e chegou até a descartar as algumas das ideias por se tratar de projetos muito complexo (glibc seria algo complexo demais, o projeto LLVM/clang (escrito em C++) ou kernel Linux seriam muito mais complexos ainda) chegando a conclusão do coreutils.

Rust coreutils installation
Instalação do Rust coreutils

Rust coreutils installation completed
Instalação do Rust coreutils, quando concluída, fica armazenado em um diretório oculto do seu home

 A intenção do uutils é ser um pacote Cross-platform (características da linguagem Rust que além de ser rápida e segura, é ótima para escrever código cross-platform: Disponível para Linux, Windows, MacOS, Android, FreeBSD, Fuchsia, etc. O que garante que scripts sejam facilmente transferidos entre plataformas) e não é necessariamente para competir contra o projeto do GNU, mas servir como uma alternativa. O Rust/coreutils está disponível para o Debian/Ubuntu desde Janeiro de 2021 e já é bom o suficiente para realizar seu boot do Debian com o GNOME, instalar os top 1000 pacotes e compilar o Firefox, o kernel Linux e o LLVM/Clang.

 Rust coreutils conta com mais ou menos 120 comandos sendo que 19 ainda estão como trabalho em progresso e seu progresso pode ser conferido clicando aqui. Os testes estão sendo realizados com o GNU test suite e estão progredindo bem tornando-o compatível com as ferramentas do GNU. Alguns comandos possuem desempenho melhor do que os do GNU (alguns chegam a ser 4.63 vezes mais rápido do que os comandos do GNU) e outros mais lentos.

Rust coreutils Status
Progresso do desenvolvimento do Rus coreutils

 Também foram adicionados novos recursos aos comandos como barra de progresso nos comandos cp e mv (algo que já vimos aqui com os comandos cpadv e mvadv no pacote avanced copy) e cut -w do FreeBSD separando campos por espaços (algo que vimos aqui que fizeram o mesmo no cut do toybox 0.8.6 para ter uma saída parecida com a da linguagem awk) além de estarem trabalhando na implementação de opções que faltam em vários binários. Ao final da instalação é gerado um único binário com todos os comandos assim como o busybox, o toybox, o 9base, o sbase e o ubase (todos que podem ser conferidos aqui no blog). Este binário recebe exatamente o nome de coretutils e fica abrigado dentro de um diretório oculto de seu home chamado ~/.cargo/bin. Os comandos podem ser executados da mesma forma que os demais binários com ./coreutils.


Rust coreutils cut command options
Opções do comando cut do Rust coreutils

Progress option on Rust coreutils cp command
Opção de progresso no comando cp do Rust coreutils que vimos no cpadv

I copied Rust coreutils from my home directory to /opt just to test the progress cp option
Copiei o Rust coreutils para o diretório /opt somente para testar o recursos de barra de progresso. Essa opção se comporta exatamente como a opção do cpadv além de também possuir o recurso de dedeuplicação e é o que me leva a elimiar o cpadv

 O Rust coreutils está sob licença MIT e conta com boas documentações. Espero em breve poder vê-lo sendo utilizado como substituto ao coreutils. Há também o coreutils escrito na linguagem V que conta com 109 comandos porém, apenas 41 estão prontos. Um único defeito que posso mencionar por enquanto é que, apesar de ser um único binário concentrando todos os seus comandos (assim como os demais projetos já mencionados), ele é muito grande; com apenas 87 comandos e sendo linkado dinamicamente, o Rust coretutils ocupa mais de 12MB enquanto que o toybox que é linkado estaticamente e possui 233 comandos, ocupa apenas 724KB. Podemos considerar que o toybox é mais de 17 vezes menor se levarmos em conta não somente o tamanho e sim todos os fatores (sua ligação e a quantidade de comandos).

Rust Coreutils X toybox
Rust Coreutils X toybox

 Mesmo assim, espero poder ver o Rust coreutils progredir. Sucesso ao projeto e para todos nós.


V coreutils: Um coreutils escrito na linguagem V

coreutils in V

V coreutils: Um coreutils escrito na linguagem V

 No ano passado eu escrevi o artigo uutils: Um coreutils escrito na linguagem Rust. Neste artigo eu mencionei que existia outro coreutils escrito na linguagem V (The V Programming Language (vlang.io). V é uma linguagem de propósito geral que foi projetada para ser simples e fácil de manter,  para oferecer bastante poder e poder ser utilizada em quase todos os campos como sistemas operacionais, web, jogos, interface gráfica, dispositivos móveis, ciência, embarcados e muito mais. Existe até mesmo um sistema operacional chamado Vinix escrito na linguagem V e que já roda Bash, GCC e V.

Vinix is an effort to write a modern, fast, and useful operating system in the V programming language.
Vinix: Um sistema operacional escrito na linguagem V

 V é similar a linguagem Go contendo melhorias que podem ser conferidas aqui e também influenciada por Oberon, Rust, Swift, Kotlin e Python. Vale lembrar que a linguagem V ainda está em versão beta (versão 0.4.4 no exato momento que escrevo este artigo) e o autor afirma que não haverá muitas mudanças, apenas melhorias.

Hot code reloading em V. altere as coisas instantaneamente sem recompilar.

 Agora vamos a o que nos interessa que é o coreutils escrito na linguagem V. o V coreutils visa ser uma versão do coreutils mais próximo possível das especificação POSIX e  com muitas extensões GNU (nisso o GNU é muito bom: extensões. apesar que a maior parte delas não foi desenvolvida pelo projeto GNU). A equipe procura desenvolver a implementação de cada comando mas que não seja 100% de paridade, especialmente peculiaridades e efeitos colaterais não intencionais. O V coreutils está sob a licença MIT.

 Eu resolvi compilar e testar os comandos do V coreutils e uma boa parte deles estão prontos; um total de 56 de 109 comandos. O processo de compilação é simples; primeiro baixe o V coreutils utilizando o comando:
git clone https://github.com/vlang/coreutils.git
 Ou baixe o pacote .zip. Com o compilador V instalado em sua máquina, digite o comando
v run build.vsh
 O processo de compilação leva pouco mais de 6 segundos para concluir (sim, muito rápido).

V coreutils compilation process
Tempo do processo de compilação do V coreutils


 A principio aqui ocorre um problema. Assim como ocorre com o Rust coreutils, achei o tamanho dos binários exageradamente enorme. O resulta do processo de compilação é um diretório bin de 60MB e facilmente cada binário ocupando 1MB mesmo linkados dinamicamente... O que é um exagero se levarmos em conta que cada binário deveria ter apenas bytes...


 Porém, eu consegui a informação com o Alexey, autor da V lang, para tentar executar o comando v -prod -skip-unused file.v. Unindo essa informação com a que eu encontrei dentro do arquivo Makefile, eu encontrei a solução de otimização dos binários executando:

v run build.vsh -prod -skip-unused

 O processo de otimização dos binários leva bem mais tempo para concluir (desta vez ~2.30 minutos para a conclusão) porém gerou binários bem menores, alguns tendo tendo 100K - 200K; alguns ainda continuaram grandes, mas OK. O diretório bin no final ficou com 11MB (quase seis vezes menor do que o anterior). O comando cp por exemplo, que anteriormente ocupava 1MB (1008K), passou a ocupar 200K ao ser otimizado. Ainda os considero grandes, mas já é um ganho enorme.

V coretutils: optmized binaries compilation time
V coretutils tempo de compilação de binários otimizados

Resultado do tamanho dos binários após utilizar as opções de otimização.


BUGS E REPORT

 Erros ainda serão visíveis. Temos que levar em conta que se trata de um programa que ainda está em sua versão 0.01, sendo desenvolvido em uma linguagem que ainda em versão beta e que faz uso de certa forma do compilador TinyCC que ficou parado por um longo tempo.


 Então se trata de um baita desafio pela frente. Por exemplo, o comando mkdir já passou na maioria dos testes manuais, mas um bug é fácil de reproduzir. Quando se cria um diretório com a opção -m e definindo as permissões que deseja (644 neste exemplo para fins de testes), ao listar o diretório criado você descobre que diretório foi criado com as permissões de escrita para o proprietário (w sendo que selecionamos leitura e escrita), leitura para outros e stick bit sendo que não selecionamos a opção de stick bit. Este é um bug que vou reportar mas também preciso descobrir se esse é um comportamento que o projeto já havia planejado


 O comando cp, ao tentar copiar um diretório para outro não existente, cria um arquivo vazio.



CONCLUSÃO

 Como já mencionei outras vezes, não existe GNU/Linux uma vez que nem todas as ferramentas que utilizamos nas distribuição são do GNU (alias, elas são a minoria) e as do GNU são substituíveis. Esse já não é o primeiro pacote de comandos que eu apresento aqui, facilmente podemos contar alguns como o embutils, o 9base, o ubase, o Rust Coreutils, o V coreutils, o FreeBSDcoreutils o ChimeraCoreutils e podemos utilizar também busybox ou o toybox e ainda mais outros podem existir.

 SEJA LIVRE DE IDEOLOGIAS INUTEIS.


O coreutils na linguagem V pode ser baixado aqui

Mais sobre o coreutils pode ser conferido aqui

Toca do Tux: A queda da GPL?
 

4 Conjunto de Comandos que NÃO TEM NADA A VER Com o GNU



Esta semana na série Muito além do GNU resolvi desmistificar um assunto muito mal explorado por toda galera que gosta de defender GNU a todo custo:
Que todos os comandos que utilizamos (menos os gerenciadores de pacotes) fazem parte do pacote coreutils do GNU.
Chega a ser ridículo mas sim, eu já recebi esse tipo de comentário pelo menos umas quatro vezes no canal. Uma prova disso foi que até comentário que chegou a ser apagar; mas não tem problema, o print do comentário está aqui:
ifconfig faz parte do pacote net-tools do... projeto GNU? Algo errado não está certo.
ifconfig faz parte do pacote net-tools do... projeto GNU? Algo errado não está certo.

A unica coisa que eu percebo é a falta de estudo que essa galera tem, a arrogância de acharem que GNU é indestrutível e ainda de defenderem o que não conhecem.

Resolvi então neste vídeo tratar de quatro pacotes que não tem vinculo com o pacote coreutils do GNU e que sem esses pacotes o sistema operacional fica quase inútil. Na verdade não seríamos capaz nem mesmo de formatar a máquina:


Os comandos dos pacotes Util-Linux, nettools e Iproute2 são pertencentes ao Linux, não ao GNU. Até mesmo o nome do primeiro já sugere tal coisa, não seria nem mesmo necessário debater o assunto. Inclusive todos eles se encontram hospedados no site do kernel.

Façamos uma pequena analise um pouquinho mais a fundo. O comando date por exemplo, que é um comando utilizado para verificar hora e data (e alterar hora e data também inclusive), faz parte do pacote coreutils do GNU (digite o comando man date e verifique a licença no final do manual ou digite o comando info coreutils date). OK, isso está certo.

Porém já o comando hwclock, que serve para verificar data e hora do hardware (vindo do BIOS, UEFI, Chip PROM ou qualquer coisa do tipo) e que serve também para alterar sua hora e data (tanto do hardware como do hardware para o sistema e vice versa) faz parte do pacote Util-Linux (digite man hwclock e verifique a linha sobre o autor. Ou digite info coreutils hwcloc e veja o resultado desastroso).

Já o comando cal foi escrito por Wolfgang Helbig da comunidade FreeBSD e o comando calendar veio da versão 7 do Unix da AT&T. O próprio SSH é originado dos BSDs para o Linux:

 

Na imagem abaixo temos uma lista de comandos que fazem parte do Util-Linux:

Lista de comandos do pacote Util-Linux
Lista de comandos do pacote Util-Linux

E na próxima abaixo temos uma lista de comandos que fazem parte do coreutils do GNU:

Lista de comandos do pacote coreutils
Lista de comandos do pacote coreutils

A conclusão que eu chego é que eu percebo em muitos usuários que se apaixonam pelo projeto uma inocência muito grande e defendem com unhas e dentes e a todo custo sem o minimo de conhecimento básico. Isso se torna culpa dos usuários mesmo não se interessarem em ler, pesquisar e se aprofundar.

minibase: Um outro conjunto de pequenas ferramentas para o userspace do Linux

small static userspace tools for Linux

minibase: Um conjunto de pequenas ferramentas para userspace do Linux


 Eu já apresentei vários pacotes com conjuntos de ferramentas diferentes disponíveis para Linux como o embutils de autoria do Felix Von Leitner que desenvolveu a dietlibc e que traz implementações de comandos como os do coreutils, o 9base que se trata de um port do user space do sistema operacional plan9 para os Unix, o sbase que é uma coleção de ferramentas do Unix que são facilmente portáveis para outros Unix, o ubase que é uma coleção de ferramentas similares ao util-linux porém visando ser menor, o rustcoreutils ou uutils que é uma versão de coreutils escrito na linguagem Rust por um ex desenvolvedor do Debian, o moreutils que é  coleção de ferramentas para Unix que ninguém havia pensado em desenvolver (mas que no final das contas eu também não as entendi muito bem) e o vcoreutils que é uma implementação do coreutils escrito na linguagem V além de outras ferramentas como o Busybox e o toybox que englobam vários comandos em um único binário e implementações do coreutils em outras linguagens como o nim coreutils e o golang coreutils

 Vejam quantas opções de pacotes existem para Linux além de outros que não possuem relação com o coreutils e possuem funções centralizadas como shadow-utils para criação de usuários de senhas, o procps para gerenciamentos de processos, ip-utils para troubleshooting com comandos como ping, o iproute2 e o net-tools para gerenciamento de redes e muitos mais. Linux não é limitado a ferramentas do GNU como a maioria de nós usuários de Linux costumamos propagar aos quatro ventos. Uma frase dita por Rob Landely que eu a adaptei e costumo adotar com frequência é que:

 "Tudo no Linux é uma questão de alternativas e escolhas. Se você não quiser utilizar o SSH, você pode utilizar o Dropbear. Se não quiser utilizar o Apache, você pode utilizar o NginX e assim por diante".

 O mesmo vale para shell, comandos, bibliotecas, compiladores, interfaces gráfica e tudo o que gira em torno o sistema operacional. É isso o que eu chamo de os vários sabores de Linux que não se trata apenas da próxima distribuição que você pretende adotar e sim de qualquer coisa que você queira utilizar no Linux. E como tudo é uma questão de escolha, o ucraniano Alex Suykov desenvolveu suas próprias ferramentas e as disponibilizou livremente sob o nome de minibase. Alex também é o autor do sninit que abordei também no artigo daemons, daemons e mais daemons init, um pequeno e estático init system para Linux.


Comandos do minibase

 O minibase serve como base de comandos para userspace do Linux para ser utilizado para bootar o sistema operacional, carregar módulos, montar partições, estabelecer conexão e fornecer serviços básicos ao ponto de poder carregar interfaces gráfica com o X ou o Wayland, permitir download de pacotes e muito mais.

 Os executáveis do minibase podem ser construídos com qualquer toolchain que constrói o kernel e são linkados estaticamente (ou seja, não necessitam de dependências externas). Seus binários são muito pequenos tendo entre 10KiB a no máximo 25KiB que o tornam confiáveis e fáceis de debugar. Está  disponível sob a licença GPLv3 (há ressalvas feitas no próprio README) para as arquiteturas x86_64 arm, aarch64, rv64, mips, mips64 e i386.

 O minibase ainda não é declarado como versão 1.0, há muito trabalho a ser feito e o autor pede para não enviarem patches ou commits. Caso queiram reportar bugs ou sugeris novas ideias, enviem solicitações.


Link para o github do minibase


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

Lançado novo Minicurso de atributos no Linux
E não esqueçam de conferir também o meu mini curso de atributos no Linux

Bug no terminal de comandos Bash e comparação entre os pacotes de coleções de comandos

Bug no terminal de comandos Bash e comparação entre os pacotes de coleções de comandos

Bug no terminal de comandos Bash e comparação entre os pacotes de coleções de comandos


 Bom, fiz os vídeos onde demos uma olhada no toybox, Respondemos a comentários interessantes, demos uma olhada no embutils e no 9base. Depois disso me lembrei que no artigo "Android, uma boa alternativa ao Windows no desktop" que escrevi há mais ou menos dois anos atrás e que percebi um bug no Bash. A questão é que na época eu conferia a quanto tempo o android estava em funcionamento tanto pela configuração do sistema operacional quanto pelo comando uptime.

 Fiz uso na época de alguns terminais (que não me lembro o nome) e um deles era o terminal Bash para o Android. O Bash retornava valor errado de horas em execução pelo comando uptime, não combinava com o relógio do android e nem com dos outros terminais que estavam sendo utilizados. Foi aí que passei a me preocupar se todo resultado obtivermos no terminal são verídicos ou não, e por isso adotei a estratégia de conferir os resultados em dois ou mais terminais de tempos em tempos somente para me certificar.

Consegui recuperar as imagens da época que fiz a analise e aqui estão algumas mostrando a quanto tempo o sistema está em funcionamento tanto pelo sistema de estado do próprio android quanto pelo bash fazendo uso do comando uptime:

Aqui mostra que o sistema está de pé hà mais de 252 horas
Reparem nas duas primeiras imagens que o android já estava no em funcionamento hà mais de 252 horas (10 dias e meio) enquanto que o bash informa que o sistema está em funcionamento a somente 8 dias e 3 horas.


Reparem agora nesta duas que o android consta mais de 254 horas (e está correto de acordo com o relógio exibido no canto superior direito sendo o total de 10 dias e 14 horas) enquanto que o bash permanece 8 dias e 4:36.


Tudo bem, foram no mesmo dia, então esperei mais um tempo e agora o android consta mais de 273 horas (totalizando de 11 dias e 9 horas e meia) enquanto que o Bash permanece 8 dias e 23:05. Nesta ultima imagem, conferam a data e hora com o comando date que e o bash retornou 21:10 sendo que a hora real era 18:10).

Eu não sou o único que já reparou isso, esta imagem abaixo é de um membro do grupo Linux aprendendo  no Telegram onde relata que a partição /dev/sda4 pelo gparted está em NTFS enquanto que no Bash consta FAT16 a mesma partição. Porém o Windows também reconhece como NTFS:
Confiram o o sistema de arquivos no partição /dev/sda4 fornecida pelo Gparted e pelo Bash. Esta imagem é na distribuição Kali Linux
Esta ultima imagem é outra situação que aconteceu durante o processo de escrever este artigo. Eu utilizei o comando du (disk used) para conferir o tamanho final do binário do toybox após compilá-lo e o bash me retornou que o toybox tinha apenas 56k; repeti a operação e obtive o mesmo resultado. Depois utilizei o comando o du do próprio toybox que tenho instalado na minha máquina, para através dele também conferir o resultado final do tamanho do novo binário que compilei e o resultado foi que o comando du do toybox me retornou que seu tamanho final era de 328k (e não 56k como exibindo pelo du do coreutils...) Quando dos dois então estão certos? Após isso, para desencargo de consciência, resolvi mais uma vez utilizar o comando du do próprio bash que me retornou o valor de 328k e não 56k como ele havia me retornado das duas primeiras vezes... Bem conflitante. Não?
Eu utilizei o comando du (disk used) no bash contra o binário do toybox para conferir o seu tamanho final ao compilá-lo e o bash me retornou que o toybox tinha apenas 56k. Depois usei o du do proprio toybox que me retornou que seu tamanho final era de 328 e depois usei o comando du novamente no bash que me retornou que o tamanho do toybox era de 328...
O comando du utilizado no bash (pacote coreutils) consta que o arquivo toybox é do tamanho de 56k, depois o mesmo comando no toybox e depois o mesmo comando no bash novamente

Esta não é a primeira vez que situação assim acontece e considero até mesmo um alerta para a adoção de outros terminais como Zsh e Fish como terminal de comandos principal. Este é um bug de longa data que volta e meia acabo vendo.

Neste artigo resolvi comparar os pacotes coreutils do GNU, o embutils, o 9base e o toybox para certificar se estes entregam os mesmos resultados ou se retornam valores diferentes, tamanho final do binário, licença e muito mais.

Deu trabalho calcular o tamanho final do 9base uma vez que os comandos ficam todos dispersos estando cada um em seu próprio diretório (diretório = pasta para caso você que esteja lendo seja usuário novo no Linux) e cada diretório não contem unicamente o próprio comando (diferente do embutils que concentra todos os comandos em um único diretório quando compilados). Então criei um diretório, copiei somente os binários para dentro dele e assim calculei o tamanho final dos comandos do 9base.
9base
Diretórios do 9base onde concentram os comandos sepadaramente. Clique na imagem para aumentar o tamanho.

O diretório bin-x86_64 é aonde o embutils concentra todos os comanos após a compilação. Clique na imagem para aumentar o tamanho.
O diretório bin-x86_64 é aonde o embutils concentra todos os comanos após a compilação. Clique na imagem para aumentar o tamanho.
As comparações aqui são feitas entre as licenças utilizadas, se são linkados dinamica ou estaticamente, o tamanho final dos binários, a descrição da saída da opção --help dos comandos para obter informações precisas de como utilizá-los e por fim o resultado das saídas dos comandos.

Utilizamos aqui os comandos df e du -s para verificar se os resultados coincidem; o único comando que não utilizamos no 9base foi o df, pois o 9base não possui tal comando. Os testes (básicos) aqui realizados usando comandos como du, foram feitos em diretórios como meu próprio home. No meu home mesmo por exemplo, enquanto o 9base retornou o resultado 12111218d (12113235d com a opção -sh... tipo... hein?), todos os outros retornaram o resultado 12244176 (12G com a opção -sh).
Clique na imagem para aumentar o tamanho.
Os resultados pode ser conferidos logo abaixo:
comparacao-entres-os-pacotes-de-comandos-coreutils-embutils-9base-e-o-terminal-de-comandos-toybox
Clique na imagem para aumentar o tamanho e conferir o resultado dos pacotes.
Há quem vá dizer que não acha justo incluir o Bash nessa história; não seria então incluir o toybox também. Ou vai haver quem diga que não é justo incluir o toybox nesta comparação; a questão é que o toybox concentra todos os comandos dentro de si, e não dispersos. Fora que ele fez parte da série, dando uma olhada ;)

Vale Lembrar também que o tamanho final dos arquivos pode variar por filesystem conforme descreve no artigo Benchmark de filesystems.

De todos, o que menos me agradou foi literalmente o 9base. Não adianta o 9base estar sob a licença MIT (que é uma licença que vem tendo sua adição cada vez mais crescente) mas gerar binários exageradamente enormes, ter fracas descrições com a opção --help e ainda apresentar resultados duvidosos e de difícil leitura (digitem o comando ls do 9base e confiram que desastre).

Porém, também não adianta o embutils ser tão pequeno (apesar que isso é muito bom :), tão exulto (admirável demais isso) e ter as mesmas fracas descrições na opção --help que o 9base... (apesar que possuem manpages para os dois, essas descrições se tornam problemas fáceis de serem solucionados) e também adotar a GPL mesmo que seja a versão 2. Poderia ao menos ter adotado a MPL. Ao menos seu resultado não é duvidoso.

Também não adianta o coreutils ter boas descrições com a opção --help mas ter binários grandes (o coreutils não fica longe do 9base se consideráramos que o coreutils ser dinamicamente lincado) e adotar a GPLv3 (versão totalmente conflitante com ao GPLv2 e GPLv2+). Fora seus resultados poderem ser bem duvidosos.

O que apresentou melhores resultados foi o realmente o toybox podendo reunir as melhores características de cada um:
  • Licença flexível para uma época onde a GPL se torna fragmentável
  • tamanho final do binário bem enxuto (melhor que o próprio embutils)
  • Pensado na segurança, estabilidade e desempenho
  • Boa descrição de informações (de forma mais alinhada que do próprio Bash+coreutils)
  • Resultado da saída do comando confiável
Uma pena ainda não ser possível utilizar o toybox como terminal de comandos padrão como no caso do Android, mas espero que não demore muito a se tornar uma opção para as distribuições que utilizamos (em especial o Alpine Linux), o que é algo que a comunidade toybox trabalha para que aconteça. Porque, ficar digitando o comando toybox toda vez que quero usar um comando é desagastante. Na verdade ainda não abandono (de forma alguma) o Zsh e está espero que venha a se tornar o terminal de comandos padrão nas distribuições.

Já perceberam que não coloquei o coreutils como vilão da história como muitos ACHAM que eu odeio GNU. Porque a paixão excessiva por parte dos amantes do Gnu em suas cabeças é tão grande que isso não permite que eles vejam que estou fazendo analise técnica. Porém também não estou escrevendo este artigo para desmoralizar o 9base. Somente não o adotaria hoje por não atender nenhuma das expectativas em um conjunto de comandos. Quando adotarem um terminal, pesem na balança se o que obtemos é real ou não. pretendo ainda fazer uma análise ainda um pouquinho maior sobre esse comandos. Vamos ver o que teremos de resposta ;)

E o estudo não para por aqui. Depois de quase concluído este artigo, descobri novas coisas que gerarão outro estudo. Até o próximo artigo.

Agradeço ao Hilton Vasconcelos pela imagem fornecida do Kali Linux mostrando a partição /dev/sda4 no Gparted e no bash.

wget removido do Ubuntu Server 25.10

wget Removed from Ubuntu Server 25.10 Default Install (And No, It's Not Because of Rust)

wget removido do Ubuntu Server 25.10


 Muitas mudanças vem ocorrendo no Ubuntu: A substituição do GNU coreutils pelo rust coreutils (e o relato de seu desempenho 17 vezes menor), a substituição do sudo pelo sudo-rs e agora que o wget será descontinuado no Ubuntu Server a partir da versão 25.10. Em seu lugar, será utilizado o wcurl que basicamente é um script para o comando curl que facilita muito a vida para baixar arquivos.

 O anuncio foi feito por John Chittum no dia 31/07:

"Após mais debates e testes, avançamos e movemos o wget para a versão 25.10.

Isso ficou muito mais fácil porque o wcurl foi disponibilizado na versão 25.10 do curl. Ele é um substituto imediato para as chamadas simples e possui a maior parte da funcionalidade do wget. Para casos mais complexos, como espelhamento, o wget ainda é a solução correta. Tudo isso está incluído nas notas de lançamento da versão 25.10 (assim que eu clicar em enviar...)."

  A ideia é remover ferramentas redundantes e reduzir funcionalidades duplicadas (que é uma ideia que eu gostei). Isso sim é algo interessante para ser lançado no Ubuntu 25.10. Outros programas que estão sendo removidos é o GNU Screen,o Byobu em favor do Tmux.

 O wget vai permanecer no suporte no seed group que incluem pacotes oficiais mas não na instalação padrão.

uutils: Um coreutils escrito na linguagem Rust

Ubuntu se livrando do GNU

Ubuntu adotando sudo-rs

Rust coreutils mais que 17 vezes mais lento no Ubuntu


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

Lançado novo Minicurso de atributos no Linux
E não esqueçam de conferir também o meu mini curso de atributos no Linux

Marcadores

A pior história sobre Linux que já ouvi (6) A.I (2) ambiente gráfico (19) AMD (14) analise (10) Andriod (17) android (8) Apple (1) arm (5) artigo (5) aws (1) bc (23) benchmark (6) BetrFS (1) blackhat (1) BSDs (35) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (18) canonical (1) canto do Diego Lins (2) certificações Linux (7) Código Fonte (53) comandos (34) comp (1) compressores (9) consoles (1) container (8) CPU (20) cracker (1) criptografia (5) crowdfunding (9) cursos (24) daemons (14) Debian (31) desempenho (2) desenvolvimento (104) desktop (19) DevOps (3) DevSecOps (4) dic (1) Dica de leitura (91) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (4) diocast (1) dioliunx (3) distribuições Linux (14) Docker (13) DragonflyBSD (24) driver (2) dropbear (3) ead Diolinux (2) edição de vídeo (5) embarcados (1) EMMI Linux (4) emuladores (9) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (11) filesystem (82) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (22) Funtoo Linux (13) games (96) garbage collector (1) gerenciadores de pacotes (4) glaucus (8) GOG (3) google (9) gpu (4) hacker (2) hardware (104) hash (1) helenos (3) I.A (1) init system (13) Intel (16) inteligencia artificial (2) IoT (1) ispconfig (1) jogos (40) kde (1) kernel (143) lançamento (64) leis (1) LFCS (1) libs (2) licenças (10) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (4) lkgr (1) LPI (8) LTS (1) Mac (1) machine learning (1) matemática (9) mesa redonda (27) microcontroladores (1) microsoft (6) microst (1) muito além do GNU (182) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (12) nimlang (4) nintendo (2) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) ONLYOFFICE (5) open source (85) OpenBSD (8) OpenShift (1) oracle (1) os vários sabores de Linux (46) padrim (2) palestras e eventos (5) partições (6) pentest (8) performance (1) pipewire (1) plan9 (3) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (72) promoção (1) propagandas com Linux (8) ps4 (1) real-time. (1) Red Hat (23) redes (4) resenha nerd (5) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (14) RISCV (13) rtos (2) runlevel (2) rust (16) Sega (1) Sega Saturn (1) segurança digital (28) servidor web (2) servidores (3) shell (12) shell script (9) sistema operacional (25) skarnet (2) smartphones (3) Software livre e de código aberto (150) sorteio (3) Steam (11) Steam no Linux (9) supercomputadores (4) suse (7) systemd (9) terminal (90) terminal de comandos (21) toca do tux (1) toybox (31) tutorial (6) Tux (3) ubuntu (1) unboxing (7) UNIX (17) UNIX Toolbox (13) vartroy (1) vga (1) virtualização (3) vulnerabilidade (7) wayland (5) web (1) whatsapp (1) whitehat (1) Windows Subsystem for Linux (2) wine (14) WoT (1) yash (1) ZFS (16) zsh (3)