13 Atualizações transacionais #
As atualizações transacionais estão disponíveis no SUSE Linux Enterprise Desktop como prévia de tecnologia para atualizar o SLES quando o sistema de arquivos raiz é apenas leitura. As atualizações transacionais são atômicas (todas as atualizações serão aplicadas apenas se todas forem bem-sucedidas) e suportam rollbacks. Isso não afeta o sistema em execução, já que as mudanças não são ativadas até o sistema ser reinicializado. Como as reinicializações são interruptivas, o administrador deve decidir se a reinicialização é mais onerosa do que a desestabilização dos serviços em execução. Se as reinicializações forem muito onerosas, não use as atualizações transacionais.
As atualizações transacionais são executadas diariamente pelo script transactional-update. O script verifica as atualizações que estão disponíveis. Se houver quaisquer atualizações, ele criará um novo instantâneo do sistema de arquivos raiz em segundo plano e, em seguida, buscará as atualizações dos canais de versão. Depois que o novo instantâneo for totalmente atualizado, ele será marcado como ativo e será o novo sistema de arquivos raiz padrão após a próxima reinicialização do sistema. Quando o transactional-update está definido para ser executado automaticamente (que é o comportamento padrão), ele também reinicializa o sistema. O tempo de execução da atualização e a janela de manutenção da reinicialização são configuráveis.
Apenas os pacotes que fazem parte do instantâneo do sistema de arquivos raiz podem ser atualizados. Se os pacotes contiverem arquivos que não fazem parte do instantâneo, a atualização poderá falhar ou danificar o sistema.
Os RPMs que requerem a aceitação de uma licença não podem ser atualizados.
13.1 Limitações da prévia de tecnologia #
Como uma prévia de tecnologia, há algumas limitações de funcionalidade. Os seguintes pacotes não funcionarão com o transactional-update:
A página index.html padrão de nginx talvez não esteja disponível
tomcat-webapps e tomcat-admin-webapps
phpMyAdmin
sca-appliance-*
mpi-selector
emacs funciona exceto para jogos do Emacs
bind e bind-chrootenv
docbook*
sblim-sfcb*
texlive*
iso_ent
openjade
opensp
pcp
plymouth
postgresql-server-10
pulseaudio-gdm-hooks
smartmontools
O componente atualizador do instalador do sistema não funciona com um sistema de arquivos apenas leitura porque ele não tem suporte para atualizações transacionais.
Outras considerações:
Convém minimizar o tempo entre a atualização do sistema e a reinicialização da máquina.
É possível aplicar apenas uma atualização de cada vez. Certifique-se de reinicializar após uma atualização e antes que a próxima atualização seja aplicada.
update-alternativesapenas deve ser executado após uma atualização transacional depois que a máquina for reinicializada.Somente crie novos usuários ou grupos de sistema após uma atualização transacional depois da reinicialização. É aceitável criar usuários e grupos normais (UID > 1000, GID > 1000).
O YaST ainda não reconhece as atualizações transacionais. Se um módulo do YaST precisar instalar mais pacotes, esse procedimento não funcionará. Operações de sistema normais que apenas modificam os arquivos de configuração em
/etcfuncionarão.Para php7-fastcgi, você deve criar um link simbólico manualmente,
/srv/www/cgi-bin/php, que aponta para/usr/bin/php-cgi.ntpfaz parte do Módulo Legacy para migração de versões mais antigas do SLES. Ele não é suportado em uma nova instalação do SUSE Linux Enterprise Desktop e foi substituído pelo chrony. Se você continuar usando o ntp, uma nova instalação será necessária para funcionar corretamente com as atualizações transacionais.
sblim-sfcb: todo o ecossistema do sblim é incompatível com a atualização transacional.
O
btrfs-defragdo pacote btrfsmaintenance não funciona com um sistema de arquivos raiz apenas leitura.Para
btrfs-balance, a variávelBTRFS_BALANCE_MOUNTPOINTSem/etc/sysconfig/btrfsmaintenancedeve ser mudada de/para/.snapshots.Para
btrfs-scrub, a variávelBTRFS_SCRUB_MOUNTPOINTSem/etc/sysconfig/btrfsmaintenancedeve ser mudada de/para/.snapshots.
13.2 Habilitar transactional-update #
Você deve habilitar o Módulo Servidor Transacional durante a instalação do sistema e, em seguida, selecionar a Função do Sistema Servidor Transacional. NÃO há suporte para a instalação de qualquer pacote a partir do Módulo Servidor Transacional em um sistema em execução, e isso pode danificar o sistema.
Não é suportado mudar o layout do subvolume da partição raiz nem colocar subdiretórios ou subvolumes da partição raiz em suas próprias partições (exceto /home, /var, /srv e /opt), e isso muito provavelmente danificará o sistema.
13.3 Gerenciando as atualizações automáticas #
As atualizações automáticas são controladas por um systemd.timer que é executado uma vez por dia. Ele é aplicado a todas as atualizações e informa o rebootmgrd de que a máquina deve ser reinicializada. Você pode ajustar o horário de execução da atualização. Consulte systemd.timer(5). Para ajustar a janela de manutenção, que é quando o rebootmgrd reinicializa o sistema, consulte rebootmgrd(8).
Você pode desabilitar as atualizações transacionais automáticas com este comando:
#systemctl --now disable transactional-update.timer
13.4 O comando transactional-update #
O comando transactional-update habilita a instalação atômica ou a remoção de atualizações. As atualizações serão aplicadas apenas se todas elas puderem ser instaladas com êxito. O transactional-update cria um instantâneo do seu sistema antes de aplicar a atualização, e você pode restaurar esse instantâneo. Todas as mudanças se tornarão ativas apenas após a reinicialização.
--continueA opção
--continueé usada para fazer várias mudanças em um instantâneo existente sem reinicialização.O comportamento padrão do
transactional-updateé criar um novo instantâneo do sistema de arquivos raiz atual. Se você se esquecer de alguma coisa, como de instalar um novo pacote, terá de reinicializar para aplicar as mudanças anteriores, executar otransactional-updatenovamente para instalar o pacote que ficou faltando e reinicializar outra vez. Não é possível executar o comandotransactional-updatevárias vezes sem reinicialização para adicionar outras mudanças ao instantâneo, pois isso cria instantâneos independentes separados que não incluem as mudanças dos instantâneos anteriores.Use a opção
--continuepara fazer quantas mudanças desejar sem reinicialização. Um instantâneo separado é gerada toda vez, e cada instantâneo contém todas as mudanças efetuadas nos instantâneos anteriores, além das novas mudanças. Repita esse processo quantas vezes desejar e, quando o instantâneo final incluir tudo o que você quer, reinicialize o sistema para que o instantâneo final se torne o novo sistema de arquivos raiz.Outro recurso útil da opção
--continueé que você pode selecionar uma instantâneo existente como base para seu novo instantâneo. O seguinte exemplo demonstra a execução dotransactional-updatepara instalar um novo pacote em um instantâneo com base no instantâneo 13 e, em seguida, uma nova execução para instalar outro pacote:#transactional-update pkg install package_1#transactional-update --continue 13 pkg install package_2A opção
--continue [num]chamasnapper create --from. Consulte a Seção 10.6.2, “Criando instantâneos”.cleanupSe o sistema de arquivos raiz atual for idêntico ao sistema de arquivos raiz ativo (após uma reinicialização, antes que
transactional-updatecrie um novo instantâneo com as atualizações), todos os instantâneos antigos sem um algoritmo de limpeza terão esse algoritmo definido. Isso garante que o Snapper apague os instantâneos antigos. (Consulte a seção sobre algoritmos de limpeza em snapper(8).) Isso também remove todos os diretórios sobrepostos/etcnão referenciados (e, portanto, não utilizados) de/var/lib/overlay:#transactional-update cleanuppkg in/installInstala pacotes individuais dos canais disponíveis usando o comando
zypper install. Também é possível usar esse comando para instalar arquivos RPM de Correção Temporária do Programa (PTF, Program Temporary Fix).#transactional-update pkg install package_nameou
#transactional-update pkg install rpm1 rpm2pkg rm/removeRemove pacotes individuais do instantâneo ativo usando o comando
zypper remove. Também é possível usar esse comando para remover arquivos RPM de PTF.#transactional-update pkg remove package_namepkg up/updateAtualiza pacotes individuais do instantâneo ativo usando o comando
zypper update. Apenas os pacotes que fazem parte do instantâneo do sistema de arquivos base podem ser atualizados.#transactional-update pkg update package_nameup/updateSe houver novas atualizações disponíveis, um novo instantâneo será criado, e o
zypper up/updateatualizará o instantâneo.#transactional-update updupSe houver novas atualizações disponíveis, um novo instantâneo será criado, e o
zypper dup –no-allow-vendor-changeatualizará o instantâneo. Na sequência, o instantâneo será ativado e se tornará o novo sistema de arquivos raiz após a reinicialização.#transactional-update duppatchSe houver novas atualizações disponíveis, um novo instantâneo será criado, e o
zypper patchatualizará o instantâneo.#transactional-update patchrollbackEle define o subvolume padrão. Em sistemas com um sistema de arquivos apenas leitura,
snapper rollbacké chamado. Em um sistema de arquivos apenas leitura e sem argumentos, o sistema atual é definido como um novo sistema de arquivos raiz padrão. Se você especificar um número, esse instantâneo será usado como o sistema de arquivos raiz padrão. Em um sistema de arquivos apenas leitura, ele não cria nenhum instantâneo adicional.#transactional-update rollback snapshot_numbergrub.cfgEle cria uma nova configuração do GRUB2. Às vezes, é necessário ajustar a configuração de boot, por exemplo, adicionando outros parâmetros do kernel. Edite /etc/default/grub, execute
transactional-update grub.cfge, em seguida, reinicialize para ativar a mudança. Você deve reinicializar imediatamente, ou a nova configuração do GRUB2 será sobregravada pelo padrão na próxima execução do transactional-update.#transactional-update grub.cfgrebootEsse parâmetro aciona uma reinicialização depois que a ação é concluída.
#transactional-update dup reboot--helpEle imprime uma tela de Ajuda com as opções e os subcomandos.
#transactional-update --help
13.5 Solução de problemas #
Em caso de falha no upgrade, execute supportconfig para coletar os dados de registro. Envie os arquivos resultantes, incluindo o /var/log/transactional-update.log, ao Suporte da SUSE.