Libelektra: Melhorias no AsciiNema

Criado em 2 jun. 2019  ·  27Comentários  ·  Fonte: ElektraInitiative/libelektra

  • [ ] deve funcionar como está também no docker (sudo?)
  • [ ] editor kdb também para hosts
  • [ ] também mostra de outro idioma, por exemplo, python
  • [ ] mostrar YAML
  • [ ] mostrar montagem de especificações

Todos 27 comentários

Eu posso regravar tudo como está agora para mostrar a mensagem de erro, pois ela pertence em menor grau a "meu domínio", mas não quero instruir completamente um exemplo inteiro de yaml, python, specmount, pois isso é muito trabalho para mostrar com sentido a um usuário o que elektra pode fazer.

Concordamos que apenas os problemas relacionados a mensagens de erro me pertencem...

Concordo que python não é algo com o qual você trabalhou. YAML é apenas um exemplo, não é realmente importante. As outras coisas estão perfeitamente dentro do escopo.

Ok, mas e quanto a "deve funcionar como está também no docker"
Eu não entendo este ponto.

Ok, mas e quanto a "deve funcionar como está também no docker"
Eu não entendo este ponto.

Que o tutorial é feito dentro do docker. Então você inicia o tutorial puxando uma imagem do docker (talvez você possa enviar uma imagem alpina do Docker para docker.com que tenha o Elektra 0.9.1 instalado para que você não precise instalar durante o tutorial).

Por que eu precisaria fazer isso em um contêiner docker? Eu tenho asciinema local no meu sistema e gravei lá. Tudo o que o asciinema emite é um arquivo .json

Por que eu precisaria fazer isso em um contêiner docker? Eu tenho asciinema local no meu sistema e gravei lá.

Como primeiro comando durante o tutorial, você puxa e insere o contêiner docker. Isso tem a vantagem de que o que é gravado também funciona para pessoas que desejam experimentar a si mesmas sem a necessidade de passar pela instalação.

talvez você possa enviar uma imagem alpina do Docker para docker.com que tenha o Elektra 0.9.1 instalado para que você não precise instalar durante o tutorial

Já não temos um registro do docker onde o jenkins puxa todos os contêineres? Se eu enviar uma imagem do docker para o dockerhub, provavelmente precisarei da sua conta para isso, para que a imagem do docker permaneça online durante a vida útil do elektra.

Isso não deve ser problema, mas você pode criar uma imagem do Docker?

@mpranj você planejou fazer essa imagem para lançamentos?

você planejou fazer tal imagem para lançamentos?

Sem planos imediatos, mas parece bom ter. Gosto muito da ideia de publicarmos essa imagem oficialmente a cada lançamento. Elektra é bastante trabalhoso para compilar e configurar para iniciantes.

Ok, você pode criar uma imagem do docker alpine e enviá-la para um repositório (público recém-criado?)? Faria mais sentido que você, como mestre de construção, fizesse isso :)

você pode criar uma imagem alpina docker

Eu posso criá-lo, mas provavelmente não hoje.

Sem planos imediatos

provavelmente não hoje.

Ok, então eu criei hoje.

docker run -it elektra/elektra e você cai em um shell com kdb disponível.

Trabalho incrível! Não se esqueça de anunciá-lo nas próximas notas de lançamento. Também devemos adicionar essas informações aos locais importantes para recém-chegados (@d3nwp).

@mpranj Quais plugins você incluiu na imagem? json por exemplo não existe. Se eu incluir o yaml, você provavelmente deve instalar um desses.

Btw é sudo não instalado na imagem, mas necessário para montar (na verdade, muito estranho).

Além disso: esta imagem tem 700 mb de tamanho, você pegou uma versão alpina?

Btw é sudo não instalado na imagem, mas necessário para montar (na verdade, muito estranho).

A imagem é construída de uma maneira que você não precisa do sudo. Então, simplesmente digite como primeiro comando (após a execução do docker):

alias sudo= # in this image we do not need to be root

Então "sudo" não acontecerá na imagem, mas se os usuários experimentarem em sua máquina, eles terão todos os comandos que precisam de sudo com sudo.

@Piankero você pode inspecionar a imagem em #3300 e adicionar sugestões.
Infelizmente:

677.1M  /usr
360.8M  /usr/local/lib/elektra
73.4M   /usr/libexec/gcc
63.1M   /usr/local/bin/kdb

Eu acho que na verdade a imagem não é construída de tal forma que o sudo não seja necessário, eu preciso melhorar isso. Ou você experimentou?

A imagem é construída de uma maneira que você não precisa do sudo.

docker run -it elektra/elektra           
~ $ kdb mount hello.js /hello ini
 Sorry, 3 warnings were issued ;(
    Sorry, module resolver_fm_hpu_b issued the warning C01100:
    Resource: Could not create configuration file '/etc/kdb/elektra.ecf'. Reason: No such file or directory
    Mountpoint: system/elektra
    Configfile: /etc/kdb/elektra.ecf.8:1575114514.708002.tmp
    At: /opt/elektra/src/plugins/resolver/resolver.c:709
    Sorry, module dump issued the warning C01100:
    Resource: Could not open file /etc/kdb/elektra.ecf.8:1575114514.708002.tmp for writing. Reason: No such file or directory
    Mountpoint: system/elektra
    Configfile: /etc/kdb/elektra.ecf.8:1575114514.708002.tmp
    At: /opt/elektra/src/plugins/dump/dump.cpp:287
    Sorry, module resolver_fm_hpu_b issued the warning C01100:
    Resource: Could not unlink the file '/etc/kdb/elektra.ecf.8:1575114514.708002.tmp'. Reason: No such file or directory
    Mountpoint: system/elektra
    Configfile: /etc/kdb/elektra.ecf.8:1575114514.708002.tmp
    At: /opt/elektra/src/plugins/resolver/resolver.c:1154
Sorry, module resolver_fm_hpu_b issued the error C01100:
Resource: Could not create directory '/etc/kdb'. Reason: Permission denied. Identity: uid: 1000, euid: 1000, gid: 1000, egid: 1000
Mountpoint: system/elektra
Configfile: /etc/kdb/elektra.ecf.8:1575114514.708002.tmp
At: /opt/elektra/src/plugins/resolver/resolver.c:785


IMPORTANT: Sorry, I am unable to write your requested mountpoint to system/elektra/mountpoints.
           You can get the problematic file name by reading the elektra system file (kdb file system/elektra/mountpoints).
           Usually you need to be root for this operation (try `sudo !!`).

@Piankero sim, está configurado incorretamente. Desculpe, vou tentar corrigir isso em breve!

Eu tentei simplesmente configurar o elektra para não escrever nada fora do diretório do usuário, mas o tutorial inclui coisas como editar o arquivo hosts como root.

Talvez faça sentido que a imagem seja executada como root para que essas coisas possam ser feitas facilmente?
Caso contrário, o sudo precisa ser configurado corretamente na imagem, não sei se isso faz sentido.

EDIT: ping também não funciona em alpine/busedbox sem root.

EDIT: outra coisa que não está disponível em alpino que eu saiba é xerces, então não existe xmltool :(

EDIT: elektrify-getenv não funciona porque o alpine não usa glibc.

Eu empurrei elektra/elektra:0.9.1-3 que configura o kdb para escrever apenas no usuário homedir.

Como nem tudo do tutorial do AsciiNema funcionará no alpino, estou aberto a outras sugestões.

Eu tentei simplesmente configurar o elektra para não escrever nada fora do diretório do usuário, mas o tutorial inclui coisas como editar o arquivo hosts como root.

sim.

Talvez faça sentido que a imagem seja executada como root para que essas coisas possam ser feitas facilmente?
Caso contrário, o sudo precisa ser configurado corretamente na imagem, não sei se isso faz sentido.

Talvez sudo seja melhor, pois todos os nossos tutoriais usam sudo.

por exemplo, scripts/docker/cirrus/arch/Dockerfile tem sudo

EDIT: ping também não funciona em alpine/busedbox sem root.

Não é grande coisa não tê-lo (como também não temos getenv)

EDIT: outra coisa que não está disponível em alpino que eu saiba é xerces, então não existe xmltool :(

Não é grande coisa: então não mostramos o plugin xerces. xmltool está obsoleto de qualquer maneira.

EDIT: elektrify-getenv não funciona porque o alpine não usa glibc.

Esta parte podemos remover.

Obrigado! Vou adicionar sudo então!

Eu empurrei elektra/elektra:0.9.1-5 que adiciona sudo e reduz o tamanho da imagem pelo fator ~100.

@markus2330 Antes de gravar o novo tutorial, quero que você aprove todo o manual.

Aqui está a nova versão:

docker run -it elektra/elektra                                      > NEW LINE

sudo kdb mount hello.js /hello json
kdb set user/hello/hello/world "Hello World"
kdb get user/hello/hello/world  
kdb file user/hello/hello/world
vi /home/elektra/.config/hello.js
# Edit file to say "Hello World from File!"
kdb get user/hello/hello/world
kdb editor user/hello ini
# Edit file to say "Hello World from INI!"
kdb get user/hello/hello/world
kdb export user/hello 
kdb export user/hello tcl
kdb export user/hello yaml                                      > NEW LINE
kdb rm user/hello/hello/world
cat /home/markus/.config/hello.ini     
sudo kdb umount /hello
echo "Now let us change something.. With validation"
vi specification.ini                                       > NEW START
# content:
# []
# mountpoint = specification.ini
# [hostip]
# check/ipaddr =
# [timeout]
# check/range = 0-100
sudo kdb mount /home/elektra/specification.ini spec/validation ni
sudo kdb spec-mount /validation
kdb set /validation/hostip 123.123.123.1233
kdb set /validation/timeout 500
kdb editor spec/validation ni
#edit range to 1000
kdb set /validation/timeout 500
sudo kdb umount spec/validation                                      
kdb rm -r /validation                                           > NEW END
echo "What to do next???"
kdb
kdb --help
kdb --find-tools

Uau, você até criou o script :+1: . Já estou ansioso pelo resultado.

Você pode colocar o script em um PR para que possamos discutir linha por linha?

À primeira vista noto:

  • muitos mais echo seriam úteis (dá ao leitor mais tempo para perceber o que está acontecendo)
  • a especificação é melhor ser construída passo a passo, não tudo de uma vez
  • você viu a demonstração em https://archive.fosdem.org/2018/schedule/event/elektra/
  • o plugin hosts está ausente (para que a validação implícita sem uma especificação seja mostrada)

Por falar nisso. Acabei de ler que https://github.com/dhobsd/castty suporta áudio :wink:

Você pode colocar o script em um PR para que possamos discutir linha por linha?

https://github.com/ElektraInitiative/libelektra/pull/3320

Eu marco esta questão como obsoleta, pois não teve nenhuma atividade por um ano. Vou fechá-lo em duas semanas se não ocorrer mais nenhuma atividade. Se você quiser que ele esteja ativo novamente, faça um ping no problema escrevendo uma mensagem aqui ou crie um novo problema com o restante deste problema.
Obrigado por suas contribuições :sparkling_heart:

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

sanssecours picture sanssecours  ·  4Comentários

mpranj picture mpranj  ·  3Comentários

markus2330 picture markus2330  ·  4Comentários

markus2330 picture markus2330  ·  4Comentários

markus2330 picture markus2330  ·  3Comentários