Usando a Toolbox no Fedora Silverblue

Em outros posts eu comentei sobre como funciona a instalação de programas RPM no Fedora Silverblue, sobre o fato dos pacotes ficarem em camadas que são montadas em novas imagens com a base do sistema. A cada alteração nos RPMs o sistema precisa reiniciar para subir a nova imagem de Base + Camada de pacotes (layered packages).

Cada pessoa usa o Silverblue de forma diferente. Algumas instalam os pacotes com o rpm-ostree mesmo, outras instalam tudo que podem em flatpaks. E outras pessoas usam a toolbox para instalar alguns programas RPM que vão ficar em um contêiner (algo como um chroot).

Eu costumo instalar pacotes de linha de comando pelo rpm-ostree, e as aplicações gráficas em Flatpak. Instalo poucas coisas em toolbox, e vou mostrar algumas delas aqui.

O que é a Toolbox?

É uma caixa de ferramentas (ora, que surpresa hehe) que permite instalarmos programas e ambientes num contêiner, usando ferramentas familiares como o DNF. Mas de dentro da toolbox vocês continuam com o mesmo usuário e permissões do sistema host (no meu caso, o Silverblue), tem acesso ao seu diretório home e podem usar o DNF para lidar com pacotes.

Se algo der errado, vocês podem jogar fora a toolbox e tudo que foi feito nela.

Instalando a toolbox

O Fedora Silverblue já vem com a toolbox instalada. No Fedora tradicional ela pode ser instalada com
sudo dnf install toolbox

Criando uma toolbox

Para criar uma toolbox com o mesmo sistema do host (no meu caso, Fedora 32), basta o comando
toolbox create

Para criar uma toolbox com uma versão específica do Fedora, podemos usar algo como
toolbox create --release f30
O comando acima cria uma toolbox com o Fedora 30, o que é interessante se precisarmos usar pacotes que não estão no 32 mas estavam no 30.

Não é necessário darmos um nome à toolbox, mas é bom fazer isso se formos usar mais de uma toolbox. Para nomear a toolbox:
toolbox create --container fedora31 --release f31
O comando acima cria uma toolbox com a versão 31 do Fedora e dá o nome de fedora31.

Vou criar uma toolbox com a mesma versão do host e vou dar o nome de fedora32:
toolbox create -c fedora32
O parầmetro -c é a abreviação de --container.

Vou criar mais uma toolbox com a versão 30 do Fedora, e vou dar o nome de fedora30:
toolbox create --container fedora30 --release f30

Vejamos a lista do toolboxes:
toolbox list

Acessando a toolbox

Se tivéssemos criado apenas uma toolbox, poderíamos acessar de forma bem simples:
toolbox enter

Como temos mais de uma, vamos entrar informando o contêiner desejado e vamos verificar a versão do sistema no contêiner:
toolbox enter --container fedora30
cat /etc/os-release


Usando o DNF na toolbox

Podemos instalar programas na toolbox usando o DNF. Vou instalar um editor de textos simples, o micro.
sudo dnf install micro

Editor Micro rodando no contêiner:

Rodando os programas da toolbox a partir do host

Para rodar um programa da toolbox a partir do host, preciso informar que quero rodar a partir de uma toolbox. Se eu tiver mais de um contêiner, preciso informar o contêiner também. Vejam o erro na imagem:

Para rodar o editor micro no host, vou usar o comando abaixo:
toolbox run -c fedora30 micro Projetos/php/app/blog/app/User.php
** O caminho do arquivo, no comando acima, só foi colocado para mostrar screenshot com algum arquivo aberto, é irrelevante ao artigo.

Posso criar um alias para o comando e para digitar somente micro:
alias micro="toolbox run -c fedora30 micro"

Instalando programas gráficos na toolbox

Embora não seja o ideal, também podemos instalar programas gráficos na toolbox. Vou instalar o editor/IDE Geany.
O Geany não possui plugins no pacote flatpak do Fedora, nem no pacote do Flathub. Tenho duas opções: usar o rpm-ostree e colocar o geany + plugins nos layered packages ou usar a toolbox. Vou mostrar na toolbox, dá mais trabalho, mas pode ajudar como referência em alguma necessidade da comunidade.

Vou fazer a instalação no outro contêiner (fedora32) apenas para mostrar o uso de mais de um contêiner:
toolbox enter -c fedora32
sudo dnf install geany geany-plugins-*

Rodando o Geany a partir do contêiner

geany

## Rodando o Geany a partir do host
O procedimento é igual ao anterir, do editor Micro:
toolbox run -c fedora32 geany

Criando um lançador para o Geany

Para que o Geany apareça no meu menu de aplicações, vou criar um lançador para ele. Em resumo: eu copiei um arquivo geany.desktop de outro lugar e alterei somente a linha Exec do arquivo para que ele use o comando adequado. Também coloquei um ícone para que o lançador fique mais bonito.

Salvei o arquivo em ~/.local/share/applications/geany.desktop, com a alteração nas linhas:

Exec=toolbox run -c fedora32 geany %F
Icon=/home/leo/.local/share/icons/geany.png

Vejam o lançador do programa funcionando:

E o programa funcionando com todos os plugins:

Removendo uma toolbox

Vou remover a toolbox do contêiner fedora 30, e vamos ver que o programa Micro deixará de existir no sistema.
toolbox rm --force fedora30

Agora temos apenas um contêiner - fedora32

E o comando micro (o alias criado anteriormente) não funciona mais:

Por hoje é só, pessoal. Até a próxima!

Comentários

  • Digite seu comentário> @leandroramos disse:

    Em outros posts eu comentei sobre como funciona a instalação de programas RPM no Fedora Silverblue, sobre o fato dos pacotes ficarem em camadas que são montadas em novas imagens com a base do sistema. A cada alteração nos RPMs o sistema precisa reiniciar para subir a nova imagem de Base + Camada de pacotes (layered packages).

    Cada pessoa usa o Silverblue de forma diferente. Algumas instalam os pacotes com o rpm-ostree mesmo, outras instalam tudo que podem em flatpaks. E outras pessoas usam a toolbox para instalar alguns programas RPM que vão ficar em um contêiner (algo como um chroot).

    Eu costumo instalar pacotes de linha de comando pelo rpm-ostree, e as aplicações gráficas em Flatpak. Instalo poucas coisas em toolbox, e vou mostrar algumas delas aqui.

    O que é a Toolbox?

    É uma caixa de ferramentas (ora, que surpresa hehe) que permite instalarmos programas e ambientes num contêiner, usando ferramentas familiares como o DNF. Mas de dentro da toolbox vocês continuam com o mesmo usuário e permissões do sistema host (no meu caso, o Silverblue), tem acesso ao seu diretório home e podem usar o DNF para lidar com pacotes.

    Se algo der errado, vocês podem jogar fora a toolbox e tudo que foi feito nela.

    Instalando a toolbox

    O Fedora Silverblue já vem com a toolbox instalada. No Fedora tradicional ela pode ser instalada com
    sudo dnf install toolbox

    Criando uma toolbox

    Para criar uma toolbox com o mesmo sistema do host (no meu caso, Fedora 32), basta o comando
    toolbox create

    Para criar uma toolbox com uma versão específica do Fedora, podemos usar algo como
    toolbox create --release f30
    O comando acima cria uma toolbox com o Fedora 30, o que é interessante se precisarmos usar pacotes que não estão no 32 mas estavam no 30.

    Não é necessário darmos um nome à toolbox, mas é bom fazer isso se formos usar mais de uma toolbox. Para nomear a toolbox:
    toolbox create --container fedora31 --release f31
    O comando acima cria uma toolbox com a versão 31 do Fedora e dá o nome de fedora31.

    Vou criar uma toolbox com a mesma versão do host e vou dar o nome de fedora32:
    toolbox create -c fedora32
    O parầmetro -c é a abreviação de --container.

    Vou criar mais uma toolbox com a versão 30 do Fedora, e vou dar o nome de fedora30:
    toolbox create --container fedora30 --release f30

    Vejamos a lista do toolboxes:
    toolbox list

    Acessando a toolbox

    Se tivéssemos criado apenas uma toolbox, poderíamos acessar de forma bem simples:
    toolbox enter

    Como temos mais de uma, vamos entrar informando o contêiner desejado e vamos verificar a versão do sistema no contêiner:
    toolbox enter --container fedora30
    cat /etc/os-release


    Usando o DNF na toolbox

    Podemos instalar programas na toolbox usando o DNF. Vou instalar um editor de textos simples, o micro.
    sudo dnf install micro

    Editor Micro rodando no contêiner:

    Rodando os programas da toolbox a partir do host

    Para rodar um programa da toolbox a partir do host, preciso informar que quero rodar a partir de uma toolbox. Se eu tiver mais de um contêiner, preciso informar o contêiner também. Vejam o erro na imagem:

    Para rodar o editor micro no host, vou usar o comando abaixo:
    toolbox run -c fedora30 micro Projetos/php/app/blog/app/User.php
    ** O caminho do arquivo, no comando acima, só foi colocado para mostrar screenshot com algum arquivo aberto, é irrelevante ao artigo.

    Posso criar um alias para o comando e para digitar somente micro:
    alias micro="toolbox run -c fedora30 micro"

    Instalando programas gráficos na toolbox

    Embora não seja o ideal, também podemos instalar programas gráficos na toolbox. Vou instalar o editor/IDE Geany.
    O Geany não possui plugins no pacote flatpak do Fedora, nem no pacote do Flathub. Tenho duas opções: usar o rpm-ostree e colocar o geany + plugins nos layered packages ou usar a toolbox. Vou mostrar na toolbox, dá mais trabalho, mas pode ajudar como referência em alguma necessidade da comunidade.

    Vou fazer a instalação no outro contêiner (fedora32) apenas para mostrar o uso de mais de um contêiner:
    toolbox enter -c fedora32
    sudo dnf install geany geany-plugins-*

    Rodando o Geany a partir do contêiner

    geany

    ## Rodando o Geany a partir do host
    O procedimento é igual ao anterir, do editor Micro:
    toolbox run -c fedora32 geany

    Criando um lançador para o Geany

    Para que o Geany apareça no meu menu de aplicações, vou criar um lançador para ele. Em resumo: eu copiei um arquivo geany.desktop de outro lugar e alterei somente a linha Exec do arquivo para que ele use o comando adequado. Também coloquei um ícone para que o lançador fique mais bonito.

    Salvei o arquivo em ~/.local/share/applications/geany.desktop, com a alteração nas linhas:

    Exec=toolbox run -c fedora32 geany %F
    Icon=/home/leo/.local/share/icons/geany.png
    

    Vejam o lançador do programa funcionando:

    E o programa funcionando com todos os plugins:

    Removendo uma toolbox

    Vou remover a toolbox do contêiner fedora 30, e vamos ver que o programa Micro deixará de existir no sistema.
    toolbox rm --force fedora30

    Agora temos apenas um contêiner - fedora32

    E o comando micro (o alias criado anteriormente) não funciona mais:

    Por hoje é só, pessoal. Até a próxima!

    Muito esclarecedor amigo, ótimo post

  • Cara escreve um livro que eu compro...pelo amor de Deus. Ta perfeito! Parabéns.

  • @lucas_pereira Muito obrigado pelo apoio :smile:

  • Foi mal aeee pelo exagero merecido. Me empoguei! :#