transactional-update原子性更新常用命令

transactional-update介绍

参考:https://suse.org.cn/%E7%A4%BE%E5%8C%BA%E6%96%B0%E9%97%BB/2023/05/27/opensuse-aeon.html

openSUSE Aeon 不能直接使用 zypper 安装 RPM 包。openSUSE Aeon在后台使用带有 zyppertransactional-update

大多数情况下,你不需要交互使用这些命令,因为 Aeon 通过 transactional-update.service systemd 服务实现了系统自动更新。


安装transactional-update

Opensuse LeapOpensuse Tumbleweed默认没有安装transactional-update,可以尝试安装,不保证能用

# 安装transactional-update的包
zypper install -y transactional-update transactional-update-zypp-config

# 启动定时器
systemctl enable --now transactional-update.timer

openSUSE MicroOS安装软件包

SLE Micro引入了事务性更新,允许您对根文件系统应用一项更改;

使用transactional-update shell 安装多个软件包,对文件系统的更改并使用该exit命令离开shell后,需要重新启动主机以应用更改.

简单来讲:

就是在每次安装软件时,会自动给系统做快照

重启操作系统后才能运行安装的软件.

# 搜索软件
zypper se 包名


transactional-update原子性更新–示例

换句话说,如果:

  1. 先执行 sudo transactional-update pkg install $pkg1
  2. 再执行 sudo transactional-update pkg install $pkg2
  3. 然后重启
  4. 你会发现新系统安装了 $pkg2,而不是 $pkg1

第一次变更

一次性把需要的软件安装齐全;每次安装的软件不一样,就是不同的镜像

  • 进入事务性更新 shell
# 进入事务性更新 shell(用于在不影响当前系统的情况下进行软件包修改)
transactional-update shell
  • 事务性更新shell中执行:
# 安装网络工具
zypper in -y mosh telnet net-tools wget rsync tcpdump iperf bind-utils

# 退出事务性更新 shell,提交更改
exit

# 查看等待重启应用的更改
transactional-update pending 

# 重启系统以应用更改
reboot

第二次变更

第二次安装软件包时,第一次的所有软件包就会失效,又变回未安装软件包状态。

所以,如果要增加软件包,要在第一次软件包的基础上追加软件包

  • 进入事务性更新 shell
# 进入事务性更新 shell(用于在不影响当前系统的情况下进行软件包修改)
transactional-update shell
  • 事务性更新shell中执行:
# 更新系统到最新
zypper dup

# 安装网络工具
zypper in -y mosh telnet net-tools-deprecated curl wget rsync tcpdump iperf bind-utils proxychains-ng

########### 追加的软件部分###############

# 安装常用工具
zypper in -y htop mlocate bash-completion git vim lrzsz tree screen socat lsof qrencode  traceroute jq sysstat

# 性能自动优化
zypper in -y tuned tuned-utils tuned-utils-systemtap

# 选装
zypper in -y wireguard-tools lsb-release

# openSUSE使用zypper来管理软件包--非虚拟机不装
zypper in -y open-vm-tools

# ssh防护
zypper in -y fail2ban ipset trash-cli

# 安装glibc-i18ndata包
## glibc-i18ndata 国际化语言数据库
zypper in -y glibc-i18ndata glibc-locale glibc-locale-base

## wqy-zenhei-fonts wqy-bitmap-fonts wqy-microhei-fonts 安装文泉驿正黑字体
zypper in -y wqy-zenhei-fonts wqy-bitmap-fonts wqy-microhei-fonts
  • Ctrl+D 保留更改
# 退出事务性更新 shell,保留更改
exit

重启到新环境(新快照)

# 重启系统以应用更改
reboot

放弃变更

  • 输入 exit 1 丢弃更改

进入事务性更新模式安装软件包

注意: 要一次性把需要的所有软件安装上

不进入事务性更新模式是不能安装软件包的。

# 进入事务性更新 shell(用于在不影响当前系统的情况下进行软件包修改)
transactional-update shell

# 安装软件包
zypper in -y pkg1

# 退出事务性更新 shell,提交更改
exit

# 重启系统以应用更改
reboot

免交互安装软件包
# 使用 transactional-update 安装 package_1 软件包
# 这会创建一个新的系统快照,并在其中安装该软件包
transactional-update pkg ins patterns-microos-cockpit cockpit-ws cockpit-tukit

热变更–不重启立即可用

  • 系统不停机更新到最新–不重启
# 将系统更新到最新
transactional-update -c dup
# 应用变更(立即可用)
transactional-update apply
  • 热安装软件包–不重启
# -c:基于最新快照继续操作(避免从头开始下载依赖包)
transactional-update -c pkg install pkg1 pkg2

# 应用到默认快照无需重启(适用于紧急修复场景)
transactional-update apply

# 安装的包将立即可用

transactional-update常用命令

下面列出了 transactional-update 的命令。注意:请记住在命令完成后重新启动系统以查看更改!

# 安装 rpm 包
sudo transactional-update pkg install package_name 

# 删除 rpm 包
sudo transactional-update pkg remove package_name 

# 将系统升级到下一个版本
sudo transactional-update dup

# 回滚到上一个快照并立即重启
sudo transactional-update rollback last reboot

transactional-update-自动更新

默认情况下,用于处理系统的自动更新的 transactional-update.timer 被设置为每天更新,即更新任务将在每天的 00:00:00 执行。

如果正赶上计算机关闭的时候,因为 timer 被设置为 persistance=true,那么更新将在第一时间发生。

# 查看日志排错
sudo journalctl -u transactional-update.service

你还可以使用带有 -f 标志的 journalctl 来实时追踪日志。


调整 transactional-update.timer

根据你的日常使用情况,即使在 persistent=true 的情况下,定时器也可能无法成功触发自动更新过程,因为它会在每次启动时使用 RandomizedDelaySec= 添加随机延迟。

如果你想每天自动更新你的系统,你可能会发现你需要调整所述的延迟。

编辑 transactional-update.timer(创建 override.conf 文件):

# sudo systemctl edit transactional-update.timer

编辑 [Timer] 部分下的一行:
这个例子是针对最大5 分钟随机延迟(默认值是 2 小时)。

# 随机延迟
RandomizedDelaySec=5m

回滚快照

官方文档:https://documentation.suse.com/zh-cn/sles/12-SP5/html/SLES-all/cha-snapper.html

# 查看快照列表
snapper list

# 回滚快照
snapper rollback 快照编号

# 回滚到快照5 并添加备注
snapper rollback 5 -d "Emergency_rollback"

microos-tools:开源自动化工具

microos-tools:开源自动化工具,提升openSUSE MicroOS管理效率.
https://github.com/openSUSE/microos-tools

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

教Linux的李老师

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值