Mostrando postagens com marcador terminal de comandos. Mostrar todas as postagens
Mostrando postagens com marcador terminal de comandos. Mostrar todas as postagens

Lançado zsh 5.9

zsh 5.9 released

Lançado zsh 5.9


 Foi lançado no dia 14 de Maio a versão 5.9 o terminal de comandos Zsh. Essa nova versão traz 17 novos recursos sendo algumas delas voltadas a definição de funções (que recebeu uma nova opção -T para habilitar tracing, executa funções anónimas); zstyle; elementos de região, XTRACE (desabilitado por padrão); os comandos export e readonly agora ignoram a função -p em certas ocasiões e muito mais. Além de novos recursos, o Zsh 5.9 recebeu também mudanças (21 no total) e correções de bugs.

Advanced Copy patch 0.9-9.0

Advanced Copy patch 0.9-9.0

Advanced Copy patch 0.9-9.0


 Em Novembro de 2020 eu apresentei aqui no blog o projeto Advanced Copy  (ou simplesmente advcpmv). Trata-se de um patch que adiciona barra de progresso aos comandos cp e mv do GNU.

cpadv
O comando cpadv exibe a barra de status com a opção -g

 Em abriu Jarun disponibilizou o patch 0.9-9.0 que traz uma correção que ocorria de certas vezes não era exibido quando arquivos eram movidos ou o progresso global. Diferente da versão 0.8-8.32, a versão 0.9.9.0 possui o arquivo install.sh que substitui o wget pelo curl. Para instalar o advcpmv basta executar o script install.sh através do comandos sh (aproveite e confira como encontrei um bug no comando sh do toybox cliando aqui. Testei este script com o toysh e funcionou normalmente), torna o processo o processo de compilação e instalação um pouco mais fácil.

Lançado toybox 0.8.7

toybox command line terminal

Lançado toybox 0.8.7

 No dia 6 de Maio foi lançada a versão 0.8.7 do toybox; o terminal de comandos padrão do Android. O toybox é utilizando também em vários outros projetos como o sbase, no POSIX-2008/SUSv4, no Linux Standard Base, no buildroot, na klibc (que já teve vídeo no canal), no Nash do Fedora, no Beatiebox do FreeBSD, no BsdBox, e vários outros projetos.

NOVOS COMANDOS

 O toybox 0.8.7 recebeu novos comandos: uclampset, gpiodetect, gpioinfo, gpioiget, gpiofind, gpioset e uma versão simplificada do httpd (inicialmente para realizar testes com o comando wget) porém, o comando catv foi removido já que todos utilizam o comando cat com a opção -v (honestamente eu nem tinha reparado nesse comando no toybox).

catv
o comando catv foi descartado no toybox 0.8.7


COMANDOS PROMOVIDOS

 Os comandos host, wget, openvt e deallocvt saíram do diretório pendentes para revisão e foram promovidos para estáveis depois de receber limpezas (aí eu senti firmeza). Outros comandos também receberam limpezas como nos comandos ping, fsync, ionice, pmap, truncate, timeout, tty, factor, mount, fusão do chvt/deallocvt para o openvt.c; fusão do lspci.c para o lsusb.c permitindo que compartilhem arquivos de configuração (config file reading infrastructure) e remoção do arquivo lib/linestack.c que ficou parado lá por anos. Vale a ressalva que esses comandos ainda permanece em pendentes ou já eram declarados estáveis.


NOVOS RECURSOS

 Há também novos recursos em comandos já existente como o top que agora permite se locomover entre a lista SHIFT LEFT/RIGHT (esse eu achei doido); o find -samefile (além das correções de bugs nas opções -newerXY e @time.nanosecond parsing), o cmp -n, o tar recebeu a opção --strip components e as opções --owner e --group agora permitem especificar :UID e :GID; os comandos lsusb e lspci agora realizam a leitura dos arquivos /etc/{usb,pci}.ids[.gz] para proporcionar leitura humana; o ifconfig se tornou capaz de renomear interfaces.



CORREÇÕES DE BUGS

 Houveram várias correções de bugs também como no cp --preserve xattr e cp --xattr (nesse último caso evitam copiar contextos do selinux); o sort -u; wget -O - (agora escrevendo na saída); pwget -B remove mais caracteres que outras implementações não emitem; sed agora trabalha com múltiplo w para o mesmo arquivo (essa é a versão de ser que eu mais gosto. Leia também sobre o minised); correções no nl -E, realpath -e, várias no sh (${X: -1:1} que não é o mesmo que ${X:-1:1} devido :- possuir um sentido especial).

 Um desenvolvedor do Google enviou um patch para o toysh eliminando avisos desnecessários quando compilado com o clang. Mais sobre o avanço do toybsh pode ser conferido no próprio blog do Rob Lanldey clicando aqui. Muitas pessoas andam dando bastante atenção ao toysh pois esse será um grande salto para o Android. Com isso, muitos testes estão sendo realizados como o próprio Rob mencionou em seu blog que possui notas de teste para o toysh como como echo $ (se verdadeiro)echo $ (verdadeiro &&) e echo $(case a in a) echo hello;; esac) que podem produzir erro de sitax. Eu mesmo recentemente postei um vídeo explicando como eu reportei a Rob Landley o bug que encontrei.


 Eu incentivo a todos a testarem seus scripts com o toysh e caso apresentar erros, reportem os erros e como reproduzí-los pois isso facilita bastante os trabalho da equipe (seus testes são importantes); quanto mais testes forem realizados, melhor para que o toysh execute scripts com a mesma fidelidade e compatibilidade que outros terminais. Rob landley mesmo postou em seu blog que está realizando vários testes e que "é por isso que ele tem/precisa de muitos testes".

Como encontrei um bug no comando sh

Encontrei um bug no comando sh

Como encontrei um bug no comando sh

 Recentemente eu encontrei um bug tanto nos comando sh e toysh do terminal de comandos toybox ao tentar utilizá-los para executar um script que elaborei para uma das minhas novas aulas de shell script do meu CURSO DE MIGRAÇÃO PARA LINUX. Então eu decidi explicar em um vídeo como eu encontrei tal bug reproduzindo-o com os dois comandos.

 A minha intenção é motivar e encorajar vocês que não são desenvolvedores a reportar bugs às equipes dos projetos adotando a cultura bazar já mencionado aqui algumas vezes. Vocês não precisam ser desenvolvedores para reportar bugs (é muita ingenuidade acreditar que sim) e acreditem, vocês vão facilitar muito a vida das equipes.


 Porém um detalhe que eu poderia ter mostrado no vídeo ao compilar o código fonte para reforçar é que, quando seu código fonte é compilado com o padrão ./configure e make conforme demonstrado no vídeo, a versão compilada não possui nenhum dos dois comandos:

Android toybox 0.8.6
Reparem as linhas selecionadas com s e t na versão compilada do toybox 0.8.6 que ambos os comandos não existem.

Repare que nem um dos dois comandos serão encontrados ao tentar executar.
Repare que nem um dos dois comandos serão encontrados ao tentar executar.

 Cheguei até mesmo compilar o comando sh separadamente e testá-lo (a toa pois o resultado seria o mesmo). Bom, reforço que este é o terceiro bug que eu encontro no terminal e que estarei reportando em breve; pode acabar sendo util... ou não na pior das hipóteses. Somente reportando para descobrir.

Google passa a financiar o desenvolvimento do terminal de comandos toybox

Google passa a financiar o desenvolvimento do terminal de comandos toybox

Google passa a financiar o desenvolvimento do terminal de comandos toybox

 Rob Landley anunciou que o Google estaria financiando o desenvolvimento do toybox principalmente com o avanço do Hermetic (eu jurava que não tinham dado continuidade nesse projeto) tendo este linkado o terminal de comandos com host bionic tornando o sistema operacional capaz de ser construído em si.

 Isso porque o Android é construído através de compilação cruzada. Ao tornar o sistema self hosting, ele não dependerá mais de outro sistema operacional para que seja compilado (como o próprio nome sugere). Este recurso (os comandos sh e toysh) foi adicionado no toybox a partir da versão 0.8.4 como pode ser conferido clicando aqui.

toybox toysh and sh commands
Os comandos toysh e sh que permitem o toybox tornar o sistema operacional self hosting.

 A partir da versão 0.8.5 o toybox passou a ter 85% de tudo o que um terminal de comandos precisa para ser utilizado como terminal de comandos padrão. Hoje estamos na versão 0.8.6 porém, ainda há certos recursos listados pela equipe para incorporar ao terminal de comandos e assim torná-lo capaz de compilar o kernel Linux.

 Questionado "se o toysh será capaz de substituir o dash" Rob Landley respondeu que "visa substituir o bash" (pode ser lido clicando aqui). Eu torço para isso, ams a minha preferência é o Zsh (terminal de comandos muito mais poderoso e muito mais interessante que o Bash). O motivo de demorar parao lançamento da versão 1.0 do toybox (seu ultimo lançamento foi no final de Novembro do ano passado) é que a maior parte dos membros o desenvolve nas horas vagas (inclusive o próprio Rob).

 Só que nos dias 28 e 30 de Janeiro deste ano, Rob publicou as seguintes notas em seu blog:
Estou muito satisfeito por começar a trabalhar na lista de tarefas do toybox hermetic build do Google, mas amanhã tenho que preencher a papelada com o estado do Texas (posso reutilizar o nome Impact Linux de 2008, ou preciso encontrar outro que passe uma busca de conflito), e então eu preciso de um EIN federal ou não?
Eu quero fazer o trabalho. Preciso limpar muitos itens de tarefas. Escrevi um monte de coisas que preciso lembrar de fazer no verso de um envelope esta manhã e, claro, deixei em casa
 Não há como eu opinar nas questões financeiras de uma empresa. Mesmo a Google tendo tamanho Patrimônio, não há como eu saber o quão rentável o Android é para a empresa, principalmente depois da ação judicial que a Oracle moveu contra a Google. Porém assim mesmo eu me faço a seguinte pergunta, só agora? O terminal de comandos toybox é utilizado no Android desde a versão Marshmallow (versão 6 do Android lançado entre 2014 e 2015). Eu mesmo venho divulgando sobre o toybox desde 2017 com a série Muito além do GNU. Será que em oito anos o toybox não apresentou retorno financeiro o suficiente para que a Google financiasse a equipe do projeto. A linguagem bc do Gavin Howard mesmo é utilizado como dependência para compilar o kernel Linux do Android; não seria interessante financiá-lo também?

bc language by Gavin Howard
Linguagem bc de autoria de Gavin Howard.

 O mesmo ocorreu com o CentOS e o Rocky Linux. Quando a Red Hat anunciou o fim do CentOS e iniciou o CentOS Stream, maioria dos usuários de Linux julgaram a Red Hat uma mercenária e egoísta. Interessante é que todos bebiam da fonte do CentOS, mas quase ninguém contribuía (pelo o que me contaram, só haviam dois mantenedores da versão 8 do CentOS). Daí anunciaram o Rocky Linux como seu substituto e hoje o Rocky Linux conta com grandes empresas o financiando como Amazon e Microsoft (inclusive a própria Google). Não seria mais fácil ter financiado o CentOS ao invés de ter deixado o projeto morrer e já que todos bebiam dessa fonte?...

Rocky Linux Sponsors
Patrocinadores do Rocky Linux

 Fica a dica a todos; se você gosta de um projeto, não deixem a sua fonte secar. É melhor do que ficar lamentando depois pelo seu fim. Bom, ao menos a Google tomou essa iniciativa (antes tarde do que nunca); porém, nós também podemos fazer o mesmo (vale para nós também).

Zsh poderá receber novo logo em breve

Novo logo do Zsh

Zsh poderá receber novo logo em breve

 Não é de hoje que eu menciono sobre o terminal de comandos Zsh no meu canal e vários artigos aqui no blog. esse é um dos terminais de comandos mais poderosos que eu conheço e que tenho uma certa paixão. Tanto que seu vídeo foi um dos primeiros da minha série Muito além do GNU e até mesmo entrevistei o autor do Oh-My-Zsh:



 Depois de todo o problema causado pela GPLv3, o Zsh passou a ganhar mais atenção dos desenvolvedores e administradores (acho que algo que tardou em acontecer) e começaram a abandonar o Bash. A Apple o adotou no MacOS, O Kali Linux também passou adotá-lo como padrão e outras distribuição já cogitam o mesmo (também tardam um pouco quanto a isso).

 Mas por mais que pareça uma coisa boba a se comentar, o logo do Zsh é um tanto quanto pobre. Tem como mascote um Mago ou um escrito bem pequeno. O Oh-My-Zsh já traz um logo bem mais interessante. A questão é que o logo gera uma identidade muito interessante para o projeto (algo que eu aprendi na marra. agradeço a todos que me ajudaram com isso).

Mago de uma das artes originais do Zsh

Mago de uma das artes originais do Zsh


 Recentemente, Justin Dorfman se ofereceu para produzir uma nova arte para o Zsh para ser utilizado no Website e em qualquer outro lugar. Os modelos criados por Justin podem ser conferidos abaixo:

Art offered by Justin Dorfman

Arte oferecida por Justin Dorfman

Me diz aí o que você achou das novas artes sugeridas. Eu achei bem legal e bem melhor do que as anteriores. Se puder haver mais artes, eu vou gostar. E se você possui a habilidade de produzir artes, lembre-se que isso também é uma forma de contribuir.

toybox recebendo sua própria versão do strace

toybox recebendo sua própria versão do strace
toybox recebendo sua própria versão do strace
 Recentemente foi lançada a versão 0.8.6 do terminal de comandos toybox. Somente dando uma recapitulada, o toybox é um terminal de comandos feito do zero e que passou a ser utilizado no Android a partir da versão 7. Todos os seus comandos foram e são desenvolvidos do zero; mesmo sendo comandos que você já tenha familiaridade, trata-se de suas próprias versões dos mesmos comandos sendo livre de códigos de terceiros. E como todos os seus comandos, o toybox receberá sua própria versão do comando strace.

Compilando o strace do toybox.
Compilando o strace do toybox.
 Essa primeira versão recebeu incialmente suporte apenas a um pequeno conjunto de system calls e opções, mas  já é possível realizar certos trabalhos normalmente. Uma parte fundamental que informam é que não há com o que se preocupar com certas funções do strace devido torná-lo muito complexo e que por esse motivo o Android nunca teve uma versão do strace (além de haver um período de transição gradativa dos micro-controladores)

strace do toybox e suas opções.
Opções strace do toybox.
 Uma informação que eu obtive é que Rob Landley quer uma versão de strace sem decodificação (apenas números brutos), o que esperam que não seja algo complicado. Tem também o fato de a glibc não utilizar as mesmas estruturas do kernel podem apresentar certos problemas, o que os leva a adicionar mais linhas de código para cada arquitetura que querem apresentar suporte (vale lembrar que a dietlibc utiliza a mesma estrutura do kernel Linux).

Rastreando o comando ls com o strace do toybox.
Rastreando o comando ls com o strace do toybox.
 Ainda há um longo caminho a ser percorrido; o strace do toybox está recebendo bugfix e talvez não terá a versão para MacOSX. Vamos aguardar para ver a evolução de mais um comando surgindo no toybox.

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (1) ambiente gráfico (19) AMD (14) analise (9) Andriod (14) android (5) artigo (5) aws (1) bc (16) benchmark (3) BSDs (27) btrfs (30) bugs (1) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (7) Código Fonte (53) comandos (24) comp (1) compressores (5) container (6) CPU (19) criptografia (4) crowdfunding (9) cursos (24) daemons (13) Debian (31) desenvolvimento (80) desktop (19) DevOps (3) DevSecOps (3) dic (1) Dica de leitura (86) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (1) diocast (1) dioliunx (3) distribuições Linux (13) Docker (11) DragonflyBSD (20) ead Diolinux (2) edição de vídeo (5) EMMI Linux (4) emuladores (5) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (10) filesystem (75) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (20) Funtoo Linux (13) games (90) gerenciadores de pacotes (3) GOG (3) google (8) gpu (3) hardware (101) hash (1) helenos (3) I.A (1) init system (8) Intel (15) IoT (1) ispconfig (1) jogos (36) kde (1) kernel (134) lançamento (60) leis (1) LFCS (1) licenças (8) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (5) LPI (8) LTS (1) machine learning (1) matemática (4) mesa redonda (27) microsoft (6) microst (1) muito além do GNU (146) não viva de boatos (9) navegadores (3) NetBSD (7) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) open source (82) OpenBSD (5) OpenShift (1) os vários sabores de Linux (39) padrim (2) palestras e eventos (5) partições (6) pentest (8) pipewire (1) processadores (27) professor Augusto Manzano (11) Programação (60) promoção (1) propagandas com Linux (8) Red Hat (21) redes (3) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (1) runlevel (2) segurança digital (19) servidores (1) shell (3) sistema operacional (22) smartphones (3) Software livre e de código aberto (150) sorteio (3) Steam (9) Steam no Linux (7) supercomputadores (4) suse (7) systemd (7) terminal (83) terminal de comandos (11) toca do tux (1) toybox (23) tutorial (6) Tux (3) unboxing (7) UNIX (16) UNIX Toolbox (14) vartroy (1) vga (1) vulnerabilidade (4) wayland (5) whatsapp (1) Windows Subsystem for Linux (2) wine (14) WoT (1) ZFS (13) zsh (2)