rpm-ostree no Silverblue

Hoje vamos ver como está a experiência do rpm-ostree com instalação de pacotes e algumas funções. Vale lembrar que o que verá aqui ainda pode mudar / melhorar com o tempo.

O rpm-ostree é como se fosse o dnf do Silverblue, porém com intuito de providenciar updates mais seguros (atômicos). No momento ele não possui uma opção “search package” e não terá muitas funções usadas no DNF, por se tratar de um novo paradigma de gerenciamento de sistema ou por apenas não terem implementado ainda.

Além de instalar pacotes, ele também é responsável por gerenciar o sistema de update, rebase, override etc..

Para mais informações consulte também esta documentação.

Alguns comandos básicos do rpm-ostree:

rpm-ostree status – informações sobre os deployments e estado de uso do rpm-ostree.

rpm-ostree cancel – cancela qualquer processo que o rpm-ostree esteja fazendo.

rpm-ostree update – faz update do sistema

rpm-ostree install – instala pacotes .rpm

rpm-ostree uninstall – desinstala pacotes .rpm que você instalou anteriormente com o “install”.

rpm-ostree reset – desinstala todos “layered packages” (pacotes .rpm que você instalou)

rpm-ostree rebase – rebase ou deploy uma nova versão ou branch ostree (usado para upgrade de versão)

rpm-ostree override – permite também, sobrepor / instalar um pacote que substitui algum usado no sistema.

rpm-ostree cleanup --rollback – remove deployments anteriores não pinados do sistema/grub.

rpm-ostree cleanup --pending – remove deployments ainda pendentes do sistema/grub.

rpm-ostree override remove – remove algum pacote rpm instalado no sistema base

Se quer reportar algum bug/contribuir/estudar acesse o github.

Em um lançamento o dev (Colin Walters) explicou que o objetivo do rpm-ostree é capacitar “usuários e desenvolvedores”. Devem ser capazes de aplicar atualizações automáticas, sem medo de uma queda de energia ou kernel panic quebrar no meio do processo.

Tendo estas características como prioridade, alguns efeitos colaterais surgiram (não intencionalmente). E no update v2021.1 um dos maiores efeitos foi parcialmente resolvido:

rpm-ostree ex apply-live

Nesta versão, a funcionalidade anteriormente conhecida por “rpm-ostree ex livefs” agora é conhecida como “rpm-ostree ex apply-live” que agora tem uma base mais sólida tecnicamente. É considerado muito seguro de usar, mas ainda está sob “ex” porque ainda pode sofrer mudanças e esperam receber feedback sobre.

Muitos “críticos” do rpm-ostree falam sobre “precisar reiniciar para atualizações/instalações de app’s”. Isso não é totalmente verdade, pois o objetivo é mover a maioria dos softwares para contêineres (flatpak’s).

obs: Atualmente outros gerenciadores de pacotes como dnf, apt, zypper, pacman… também necessitam de reboot do sistema para atualização de partes críticas como kernel, systemd, networkmanager, firmwares, glibc etc.

Vamos ver então como usar esta funcionalidade do rpm-ostree instalando um pacote não distribuído em Flatpak, começando com o coreCtrl, uma programa feito, a princípio, para ser uma ferramenta a nível do sistema, logo não será usada em Flatpak.

rpm-ostree install corectrl

Embora o rpm-ostree não tenha a intenção de ser intensamente usado como o DNF para instalar pacotes toda hora, pode demonstrar lentidão, levou 3 minutos (em VM 2CPU’s 4GB RAM) para instalar estes pacotes. Porem ao termino, ainda não estão disponíveis para uso no sistema:

Veja este artigo com comparativo de tempo com DNF vs RPM-OSTREE

Podemos ver que foi criado um novo deploy com os pacotes adicionados, na qual ao reiniciar o sistema estará disponível, porem aqui ao invés de reiniciar vamos usar o comando:

sudo rpm-ostree ex apply-live

update: também pode instalar e aplicar diretamente com –apply-live

rpm-ostree install --apply-live corectrl

Nesta VM o comando levou aproximadamente 30 segundos para concluir:

Então consultando novamente via rpm-ostree status, vemos o status “transient” em vermelho:

Note que, no final existe uma mensagem de algo como “alguns serviços talvez precisam ser reiniciados”. Está falando de serviços no systemd, na qual o rpm-ostree ele não reinicia automaticamente no modo “live” caso algum app necessita (como o CoreCtrl).

Neste caso o CoreCtrl não iniciará por falta destes serviços não iniciados, este é um caso que ainda será necessário o reinício do sistema para funcionamento pleno do programa, se instalar um pacote mais simples (ex: editor de texto) não precisará reiniciar:

Exemplo:

rpm-ostree install leafpad

Após instalado, veja que o leafpad irá ser adicionado no mesmo deploy com o CoreCtrl.

Então novamente:

sudo rpm-ostree ex apply-live

Então já poderá usar o Leafpad:

Todavia, neste momento ele ainda não se integrou totalmente (pelo menos nesta DE/versão) como no menu de pesquisa:

Na lista de app’s do GNOME Settings apareceu na hora:

Se reiniciar a sessão (sem reinicio do sistema) o ícone no menu aparece (este é o GNOME 40.alpha):

Outra opção que temos com rpm-ostree é instalar pacotes 32bit, porém ainda existe bug’s com alguns pacotes, como o WINE. Se tentar um “rpm-ostree install wine” no momento exite um bug (já reportado aos desenvolvedores).

Então vamos testar com o pacote Steam do RPMFusion, que é e depende de várias lib’s 32bit (embora possa usar via Flatpak tranquilamente)

Para testar usarei o Fedora 33 (pois no momento o pacote Steam está incompatível com o Fedora 34 ainda não lançado).

Primeiro adicionamos o repositório RPMFusion instalando os rpm’s:

sudo rpm-ostree install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Depois aplicamos o comando em modo live:

sudo rpm-ostree ex apply-live

Agora instalamos o Steam:

rpm-ostree install steam

Então novamente o comando:

sudo rpm-ostree ex apply-live

Neste momento já poderá usar o Steam (sendo que o ícone não aparecerá no menu sem encerrar a sessão):

Após encerrar e sessão e login…

Agora, digamos que você queira desinstalar todos app’s padrão do Silverblue, inclusive aqueles que fazem parte do sistema como: firefox, nautilus, gnome-software…

Com o comando “rpm-ostree override remove nomedopacote” podemos deixar o sistema praticamente vazio.

Alguns flatpak’s vem instalados por padrão, para remover todos basta um “flatpak remove --all

Removendo todos Flatpak’s, os app’s padrão do sistema são estes:

Assim como no Fedora Workstation, no Silverblue você pode deixar o sistema apenas com o settings (no caso do GNOME) então vou deixar apenas o settings e o terminal com o comando:

rpm-ostree override remove gnome-classic-session gnome-disk-utility nautilus gnome-software-rpm-ostree gnome-software firefox yelp gnome-system-monitor

em seguida:

sudo rpm-ostree ex apply-live

Agora basta reiniciar a sessão (sem reiniciar o sistema caso não queira).

Perceba que, este procedimento via dnf seria arriscado para um iniciante e teria chances de ele não saber/conseguir reverter as mudanças, pois o downgrade no dnf não é tão confiável. A diferença do rpm-ostree, é que permite reverter tudo sem problemas! veja a seguinte.

Por ultimo, digamos que você queira desfazer todos “overrides remove” que fez anteriormente e remover tudo que não é padrão do sistema (como aqueles pacotes leafpad e corectrl) basta 1 comando:

rpm-ostree reset

E Reiniciar (ou usar sudo rpm-ostree ex apply-live) que o sistema estará como se tivesse instalado novamente, lembrando que sua Home/documentos não são afetados e os Flatpak’s não são alterados com o rpm-ostree.

Concluindo

Acho que isto mostra um pouco do paradigma do rpm-ostree / ostree, que não é realmente substiuir o dnf ou apt… mas tratar o gerenciamento do sistema de forma mais segura, tanto usuários iniciantes como avançados.

Por enquanto é isso, para mais features do rpm-ostree, veja também este artigo com outras funções interessantes do rpm-ostree.

Se deseja me dar sugestões, mande para fastos2016@gmail.com ou nas redes sociais.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Blog no WordPress.com.

Acima ↑

%d blogueiros gostam disto: