Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Documentação do SUSE Linux Enterprise Desktop / Guia de Administração / Tarefas comuns / Atualizações transacionais
Aplica-se a SUSE Linux Enterprise Desktop 15 SP6

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í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-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ável BTRFS_BALANCE_MOUNTPOINTS em /etc/sysconfig/btrfsmaintenance deve ser mudada de / para /.snapshots.

  • Para btrfs-scrub, a variável BTRFS_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 o transactional-update novamente para instalar o pacote que ficou faltando e reinicializar outra vez. Não é possível executar o comando transactional-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 do transactional-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] chama snapper 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 do transactional-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.