13 Atualizações transacionais #
As atualizações transacionais estão disponíveis no SUSE Linux Enterprise Desktop para atualizar o SLES quando o sistema de arquivos raiz é apenas leitura. Essas atualizações são atômicas, todas as atualizações serão aplicadas apenas se 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 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 #
Atualmente, há certas limitações na funcionalidade das atualizações transacionais. Os seguintes pacotes não funcionam com o comando transactional-update
:
A página padrão
index.html
de nginx talvez não esteja disponíveltomcat-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-alternatives
apenas 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 normais do sistema que modificam os arquivos de configuração em
/etc
funcionam.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-defrag
do pacote btrfsmaintenance não funciona com um sistema de arquivos raiz apenas leitura.Para
btrfs-balance
, a variávelBTRFS_BALANCE_MOUNTPOINTS
em/etc/sysconfig/btrfsmaintenance
deve ser mudada de/
para/.snapshots
.Para
btrfs-scrub
, a variávelBTRFS_SCRUB_MOUNTPOINTS
em/etc/sysconfig/btrfsmaintenance
deve 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 pode 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
permite a instalação ou remoção atômica de atualizações. As atualizações serão aplicadas apenas se todas 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.
--continue
A 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-update
novamente para instalar o pacote que ficou faltando e reinicializar outra vez. Não é possível executar o comandotransactional-update
vá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
--continue
para 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 quiser e, quando o instantâneo final incluir tudo o que você deseja, 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-update
para 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_2
A opção
--continue [num]
chamasnapper create --from
. Consulte a Seção 10.6.2, “Criando instantâneos”.cleanup
Se o sistema de arquivos raiz atual for idêntico ao sistema de arquivos raiz ativo (após uma reinicialização, antes que
transactional-update
crie 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 de sobreposição/etc
não referenciados (e, portanto, não utilizados) em/var/lib/overlay
:#
transactional-update cleanup
pkg in/install
Instala 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_name
ou
#
transactional-update pkg install rpm1 rpm2
pkg rm/remove
Remove 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_name
pkg up/update
Atualiza 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_name
up/update
Se houver novas atualizações disponíveis, um novo instantâneo será criado, e o
zypper up/update
atualizará o instantâneo.#
transactional-update up
dup
Se houver novas atualizações disponíveis, um novo instantâneo será criado, e o
zypper dup –no-allow-vendor-change
atualizará 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 dup
patch
Se houver novas atualizações disponíveis, um novo instantâneo será criado, e o
zypper patch
atualizará o instantâneo.#
transactional-update patch
rollback
Ele 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_number
grub.cfg
Ele 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.cfg
e 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 dotransactional-update
.#
transactional-update grub.cfg
reboot
Esse parâmetro aciona uma reinicialização depois que a ação é concluída.
#
transactional-update dup reboot
--help
Ele 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.