《OpenShift 4.x HOL教程汇总》

文章目录

  • 什么是 rpm-ostree
  • 升级更新CoreOS操作系统
    • 自动更新升级
    • 手动升级更新
  • 比较更新前后差别
  • 回滚系统更新
  • 切换当前的rpm-ostree版本
  • 安装软件
  • 删除软件
  • 参考

什么是 rpm-ostree

rpm-ostree是什么?我们可以把rpm-ostree看成是rpm和ostree的合体。一方面它提供了基于rpm的软件包安装,另一方面它提供了基于ostree的操作系统更新升级,而且rpm-ostree将这两种操作都视为对操作系统的更新,每次对系统的更新都像提交“Transaction-事务”,从而确保更新全部成功或全部失败,允许在更新系统后回退到更新前的状态。

在 RHCOS/FCOS 中没提供像 RHEL/CentOS 的YUM/dnf工具,而提供了rpm-ostree实现基于rpm的软件安装。rpm-ostree使用的也是Yum Repository获得软件,可以执行以下命令查看Fedora CoreOS自带的Repository,而在在RHCOS中没有提供缺省的Repository。

[core@tutorial ~]$ ll /etc/yum.repos.d/
total 28
-rw-r--r--. 1 root root  728 Oct 11 09:02 fedora-cisco-openh264.repo
-rw-r--r--. 1 root root 1303 Oct 11 09:02 fedora-modular.repo
-rw-r--r--. 1 root root 1349 Oct 11 09:02 fedora-updates-modular.repo
-rw-r--r--. 1 root root 1391 Oct 11 09:02 fedora-updates-testing-modular.repo
-rw-r--r--. 1 root root 1344 Oct 11 09:02 fedora-updates-testing.repo
-rw-r--r--. 1 root root 1286 Oct 11 09:02 fedora-updates.repo
-rw-r--r--. 1 root root 1239 Oct 11 09:02 fedora.repo

rpm-ostree提供的不仅仅是基于rpm包安装软件,rpm-ostree提供了类似“Transaction-事务”的软件安装升级过程。不像 YUM 那样是单个升级更新软件包,rpm-ostree 是将升级更新作为一个原子单元进行的,因此更类似“Transaction-事务”提交。rpm-ostree在更新操作系统的时候会有2个bootable区域,一个是更新前一个是更新后的,更新升级只有在重启操作系统后才生效。如果软件安装或升级出现问题,则回滚和重新启动会使CoreOS系统返回到先前的状态。我们可以查看CoreOS的“/ostree/”和“/boot/”目录,它们是ostree Repository环境和boot使用哪个ostree。注意:在FCOS和RHCOS中会有稍许差异。

sh-4.4# ls -l /ostree/
total 0
lrwxrwxrwx. 1 root root   8 Jul 30 02:51 boot.1 -> boot.1.1
drwxr-xr-x. 3 root root  19 Jul 30 02:51 boot.1.1
drwxrwxr-x. 3 root root  19 Jul 30 02:51 deploy
drwxrwxr-x. 7 root root 102 Jul 30 02:51 reposh-4.4# ls -al /boot/
total 37
drwxr-xr-x.  7 root root  1024 Jul 30 02:51 .
drwxr-xr-x. 12 root root   253 Jul 30 02:51 ..
drwxr-xr-x.  3 root root 16384 Jan  1  1970 efi
drwxrwxr-x.  4 root root  1024 Jul 14 17:24 grub2
lrwxrwxrwx.  1 root root     8 Jul 30 02:51 loader -> loader.1
drwxr-xr-x.  3 root root  1024 Jul 30 02:51 loader.1
drwx------.  2 root root 12288 Jul 14 17:23 lost+found
drwxrwxr-x.  3 root root  1024 Jul 30 02:51 ostree

升级更新CoreOS操作系统

自动更新升级

为了可以看到自动更新的效果,可以先下载稍早些的RCOS的版本(https://getfedora.org/en/coreos?stream=stable),这样才有更新的版本。

  1. 新建一个CoreOS虚拟机环境(确保可以上互联网),然后在CoreOS中执行命令查看rpm-ostree状态。此时可以看到状态是“busy”、而且提示“Transaction: deploy --lock-finalization”,revision为“5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6”。当前版本(*指向)是“32.20200907.3.0 (2020-09-23T08:16:31Z)”。
[core@tutorial ~]$ rpm-ostree status
State: busy
Transaction: deploy --lock-finalization revision=5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6 --disallow-downgradeInitiator: caller :1.14
Deployments:
* ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200907.3.0 (2020-09-23T08:16:31Z)Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
  1. zincati服务是CoreOS自动升级的服务,执行命令查看zincati服务状态,此时是“auto-updates logic enabled”(自动更新)。由于是自动更新,因此上一步的rpm-ostree的状态是“busy”,说明系统正在升级中。
[core@tutorial /]$  systemctl status zincati.service
● zincati.service - Zincati Update AgentLoaded: loaded (/usr/lib/systemd/system/zincati.service; enabled; vendor preset: enabled)Active: active (running) since Sat 2020-10-10 10:35:30 UTC; 2h 28min agoDocs: https://github.com/coreos/zincatiMain PID: 667 (zincati)Tasks: 2 (limit: 1074)Memory: 19.4MCGroup: /system.slice/zincati.service└─667 /usr/libexec/zincati agent -vOct 10 10:35:30 tutorial systemd[1]: Started Zincati Update Agent.
Oct 10 10:35:31 tutorial zincati[667]: [INFO ] starting update agent (zincati 0.0.12)
Oct 10 10:35:34 tutorial zincati[667]: [INFO ] Cincinnati service: https://updates.coreos.fedoraproject.org
Oct 10 10:35:34 tutorial zincati[667]: [INFO ] agent running on node '8bda37ece9284650967684a1e552c5f4', in update group 'default'
Oct 10 10:35:34 tutorial zincati[667]: [INFO ] initialization complete, auto-updates logic enabled
  1. 一段时间后CoreOS将自动重启。此时再次登录CoreOS,可以再次确认rpm-ostree的状态,其中状态转为“idle”,而且当前版本已经是“32.20200923.3.0 (2020-10-05T16:42:18Z)”,这说明rpm-ostree版本已经升级了。
$ ssh core@<COREOS_HOST> -i id_rsa
[core@tutorial ~]$ rpm-ostree status
State: idle
Deployments:
* ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200923.3.0 (2020-10-05T16:42:18Z)Commit: 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200907.3.0 (2020-09-23T08:16:31Z)Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
  1. 查看zincati服务的日志,确认包括升级“32.20200923.3.0”的过程和重启系统的日志。另外日志显示的“auto-updates logic enabled”也说明更新是自动的(修改更新策略可参考https://docs.fedoraproject.org/en-US/fedora-coreos/auto-updates/,本文就省略了)。
[core@tutorial ~]$ journalctl -u zincati.service
-- Logs begin at Sun 2020-10-11 01:13:13 UTC, end at Sun 2020-10-11 01:32:26 UTC. --
Oct 11 01:13:21 tutorial systemd[1]: Started Zincati Update Agent.
Oct 11 01:13:22 tutorial zincati[882]: [INFO ] starting update agent (zincati 0.0.12)
Oct 11 01:13:25 tutorial zincati[882]: [INFO ] Cincinnati service: https://updates.coreos.fedoraproject.org
Oct 11 01:13:25 tutorial zincati[882]: [INFO ] agent running on node '124aa9a131ee4d8399ca49e8ae2dbe54', in update group 'default'
Oct 11 01:13:25 tutorial zincati[882]: [INFO ] initialization complete, auto-updates logic enabled
Oct 11 01:13:29 tutorial zincati[882]: [INFO ] target release '32.20200923.3.0' selected, proceeding to stage it
Oct 11 01:15:54 tutorial zincati[882]: [INFO ] staged deployment '32.20200923.3.0' available, proceeding to finalize it
Oct 11 01:15:55 tutorial systemd[1]: Stopping Zincati Update Agent...
Oct 11 01:15:55 tutorial systemd[1]: zincati.service: Succeeded.
Oct 11 01:15:55 tutorial systemd[1]: Stopped Zincati Update Agent.
-- Reboot --
Oct 11 01:16:10 tutorial systemd[1]: Started Zincati Update Agent.
Oct 11 01:16:10 tutorial zincati[668]: [INFO ] starting update agent (zincati 0.0.12)
Oct 11 01:16:14 tutorial zincati[668]: [INFO ] Cincinnati service: https://updates.coreos.fedoraproject.org
Oct 11 01:16:14 tutorial zincati[668]: [INFO ] agent running on node '124aa9a131ee4d8399ca49e8ae2dbe54', in update group 'default'
Oct 11 01:16:14 tutorial zincati[668]: [INFO ] initialization complete, auto-updates logic enabled
  1. 手动重启CoreOS虚拟机,可以在CoreOS系统启动界面中看到下图中的2行,它们就是rpm-ostree记录的2个version。缺省会使用ostree:0启动,但是也可手动选择ostree:1启动。这说明我们可以临时使用以前的系统启动。

手动升级更新

除了自动更新FCOS外,还可以使用以下rpm-ostree命令完成手动更新操作系统。

[core@tutorial ~]$ sudo rpm-ostree upgrade --check
[core@tutorial ~]$ sudo rpm-ostree upgrade --preview
[core@tutorial ~]$ sudo rpm-ostree upgrade --download-only
[core@tutorial ~]$ sudo rpm-ostree upgrade --reboot

比较更新前后差别

  1. 执行命令,确认此时ostree有2个版本,commit分别为“5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6”和“b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57”。
[core@tutorial ~]$ rpm-ostree status
State: idle
Deployments:
* ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200923.3.0 (2020-10-05T16:42:18Z)Commit: 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200907.3.0 (2020-09-23T08:16:31Z)Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
  1. 执行命令,根据commit比较2个ostree的差别。
[core@tutorial /]$ rpm-ostree db diff 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6 b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57
ostree diff commit from: 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6
ostree diff commit to:   b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57
Downgraded:afterburn 4.5.1-1.fc32 -> 4.5.0-1.fc32afterburn-dracut 4.5.1-1.fc32 -> 4.5.0-1.fc32catatonit 0.1.5-3.fc32 -> 0.1.5-2.fc32conmon 2:2.0.21-2.fc32 -> 2:2.0.19-1.fc32container-selinux 2:2.145.0-1.fc32 -> 2:2.144.0-2.fc32crun 0.14.1-5.fc32 -> 0.14.1-4.fc32curl 7.69.1-6.fc32 -> 7.69.1-5.fc32dbus-broker 24-1.fc32 -> 23-2.fc32elfutils-default-yama-scope 0.181-1.fc32 -> 0.179-2.fc32elfutils-libelf 0.181-1.fc32 -> 0.179-2.fc32elfutils-libs 0.181-1.fc32 -> 0.179-2.fc32flatpak-session-helper 1.8.2-2.fc32 -> 1.6.5-1.fc32grub2-common 1:2.04-23.fc32 -> 1:2.04-21.fc32grub2-efi-x64 1:2.04-23.fc32 -> 1:2.04-21.fc32grub2-pc 1:2.04-23.fc32 -> 1:2.04-21.fc32grub2-pc-modules 1:2.04-23.fc32 -> 1:2.04-21.fc32grub2-tools 1:2.04-23.fc32 -> 1:2.04-21.fc32grub2-tools-minimal 1:2.04-23.fc32 -> 1:2.04-21.fc32iproute 5.7.0-1.fc32 -> 5.6.0-1.fc32iproute-tc 5.7.0-1.fc32 -> 5.6.0-1.fc32krb5-libs 1.18.2-22.fc32 -> 1.18.2-20.fc32libcurl 7.69.1-6.fc32 -> 7.69.1-5.fc32libnfsidmap 1:2.5.1-4.rc4.fc32 -> 1:2.5.1-2.rc3.fc32libsmbclient 2:4.12.7-0.fc32 -> 2:4.12.6-0.fc32libssh 0.9.5-1.fc32 -> 0.9.4-3.fc32libssh-config 0.9.5-1.fc32 -> 0.9.4-3.fc32libwbclient 2:4.12.7-0.fc32 -> 2:4.12.6-0.fc32libxml2 2.9.10-7.fc32 -> 2.9.10-3.fc32linux-firmware 20200918-112.fc32 -> 20200817-111.fc32linux-firmware-whence 20200918-112.fc32 -> 20200817-111.fc32nfs-utils-coreos 1:2.5.1-4.rc4.fc32 -> 1:2.5.1-2.rc3.fc32openldap 2.4.47-5.fc32 -> 2.4.47-4.fc32pcre2 10.35-6.fc32 -> 10.35-4.fc32pcre2-syntax 10.35-6.fc32 -> 10.35-4.fc32procps-ng 3.3.16-1.fc32 -> 3.3.15-7.fc32rpm-ostree 2020.5-1.fc32 -> 2020.4-1.fc32rpm-ostree-libs 2020.5-1.fc32 -> 2020.4-1.fc32samba-client-libs 2:4.12.7-0.fc32 -> 2:4.12.6-0.fc32samba-common 2:4.12.7-0.fc32 -> 2:4.12.6-0.fc32samba-common-libs 2:4.12.7-0.fc32 -> 2:4.12.6-0.fc32sudo 1.9.2-1.fc32 -> 1.9.0-0.1.b4.fc32systemd 245.8-2.fc32 -> 245.7-1.fc32systemd-container 245.8-2.fc32 -> 245.7-1.fc32systemd-libs 245.8-2.fc32 -> 245.7-1.fc32systemd-pam 245.8-2.fc32 -> 245.7-1.fc32systemd-rpm-macros 245.8-2.fc32 -> 245.7-1.fc32systemd-udev 245.8-2.fc32 -> 245.7-1.fc32
Removed:clevis-14-4.fc32.x86_64clevis-dracut-14-4.fc32.x86_64clevis-luks-14-4.fc32.x86_64clevis-systemd-14-4.fc32.x86_64jose-10-6.fc32.x86_64libjose-10-6.fc32.x86_64libluksmeta-9-7.fc32.x86_64luksmeta-9-7.fc32.x86_64nmap-ncat-2:7.80-4.fc32.x86_64tpm2-tools-4.1.3-1.fc32.x86_64tpm2-tss-2.4.2-1.fc32.x86_64

回滚系统更新

  1. 执行命令,回滚前面的操作系统的自动更新。
[core@tutorial ~]$ sudo rpm-ostree rollback
Moving 'b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57.0' to be first deployment
Bootloader updated; bootconfig swap: yes; deployment count change: 0
Downgraded:afterburn 4.5.1-1.fc32 -> 4.5.0-1.fc32afterburn-dracut 4.5.1-1.fc32 -> 4.5.0-1.fc32catatonit 0.1.5-3.fc32 -> 0.1.5-2.fc32conmon 2:2.0.21-2.fc32 -> 2:2.0.19-1.fc32container-selinux 2:2.145.0-1.fc32 -> 2:2.144.0-2.fc32crun 0.14.1-5.fc32 -> 0.14.1-4.fc32curl 7.69.1-6.fc32 -> 7.69.1-5.fc32dbus-broker 24-1.fc32 -> 23-2.fc32elfutils-default-yama-scope 0.181-1.fc32 -> 0.179-2.fc32elfutils-libelf 0.181-1.fc32 -> 0.179-2.fc32elfutils-libs 0.181-1.fc32 -> 0.179-2.fc32flatpak-session-helper 1.8.2-2.fc32 -> 1.6.5-1.fc32grub2-common 1:2.04-23.fc32 -> 1:2.04-21.fc32grub2-efi-x64 1:2.04-23.fc32 -> 1:2.04-21.fc32grub2-pc 1:2.04-23.fc32 -> 1:2.04-21.fc32grub2-pc-modules 1:2.04-23.fc32 -> 1:2.04-21.fc32grub2-tools 1:2.04-23.fc32 -> 1:2.04-21.fc32grub2-tools-minimal 1:2.04-23.fc32 -> 1:2.04-21.fc32iproute 5.7.0-1.fc32 -> 5.6.0-1.fc32iproute-tc 5.7.0-1.fc32 -> 5.6.0-1.fc32krb5-libs 1.18.2-22.fc32 -> 1.18.2-20.fc32libcurl 7.69.1-6.fc32 -> 7.69.1-5.fc32libnfsidmap 1:2.5.1-4.rc4.fc32 -> 1:2.5.1-2.rc3.fc32libsmbclient 2:4.12.7-0.fc32 -> 2:4.12.6-0.fc32libssh 0.9.5-1.fc32 -> 0.9.4-3.fc32libssh-config 0.9.5-1.fc32 -> 0.9.4-3.fc32libwbclient 2:4.12.7-0.fc32 -> 2:4.12.6-0.fc32libxml2 2.9.10-7.fc32 -> 2.9.10-3.fc32linux-firmware 20200918-112.fc32 -> 20200817-111.fc32linux-firmware-whence 20200918-112.fc32 -> 20200817-111.fc32nfs-utils-coreos 1:2.5.1-4.rc4.fc32 -> 1:2.5.1-2.rc3.fc32openldap 2.4.47-5.fc32 -> 2.4.47-4.fc32pcre2 10.35-6.fc32 -> 10.35-4.fc32pcre2-syntax 10.35-6.fc32 -> 10.35-4.fc32procps-ng 3.3.16-1.fc32 -> 3.3.15-7.fc32rpm-ostree 2020.5-1.fc32 -> 2020.4-1.fc32rpm-ostree-libs 2020.5-1.fc32 -> 2020.4-1.fc32samba-client-libs 2:4.12.7-0.fc32 -> 2:4.12.6-0.fc32samba-common 2:4.12.7-0.fc32 -> 2:4.12.6-0.fc32samba-common-libs 2:4.12.7-0.fc32 -> 2:4.12.6-0.fc32sudo 1.9.2-1.fc32 -> 1.9.0-0.1.b4.fc32systemd 245.8-2.fc32 -> 245.7-1.fc32systemd-container 245.8-2.fc32 -> 245.7-1.fc32systemd-libs 245.8-2.fc32 -> 245.7-1.fc32systemd-pam 245.8-2.fc32 -> 245.7-1.fc32systemd-rpm-macros 245.8-2.fc32 -> 245.7-1.fc32systemd-udev 245.8-2.fc32 -> 245.7-1.fc32
Removed:clevis-14-4.fc32.x86_64clevis-dracut-14-4.fc32.x86_64clevis-luks-14-4.fc32.x86_64clevis-systemd-14-4.fc32.x86_64jose-10-6.fc32.x86_64libjose-10-6.fc32.x86_64libluksmeta-9-7.fc32.x86_64luksmeta-9-7.fc32.x86_64nmap-ncat-2:7.80-4.fc32.x86_64tpm2-tools-4.1.3-1.fc32.x86_64tpm2-tss-2.4.2-1.fc32.x86_64
Run "systemctl reboot" to start a reboot
  1. 在重启CoreOS之前可查看当前rpm-ostree还是指向的是“32.20200923.3.0”版本。
[core@tutorial ~]$ rpm-ostree status
State: idle
Deployments:ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200907.3.0 (2020-09-23T08:16:31Z)Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0Diff: 47 downgraded, 11 removed* ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200923.3.0 (2020-10-05T16:42:18Z)Commit: 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
  1. 重启CoreOS,然后再次进入CoreOS。
[core@tutorial ~]$ sudo reboot
$ ssh core@<COREOS_HOST> -i id_rsa
  1. 确认此时rpm-ostree指向已经回退到“32.20200907.3.0”版本了。
[core@tutorial ~]$ rpm-ostree status
State: idle
Deployments:
* ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200907.3.0 (2020-09-23T08:16:31Z)Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200923.3.0 (2020-10-05T16:42:18Z)Commit: 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

切换当前的rpm-ostree版本

在上面最后一步,我们看到当前rpm-ostree中有“32.20200907.3.0”和“32.20200923.3.0”两个版本,而CoreOS使用的是“32.20200907.3.0”版本。我们可以通过以下命令可切换当前CoreOS使用的rpm-ostree版本。

  1. 执行命令,切换当前的rpm-ostree版本到“32.20200923.3.0”,然后自动重启CoreOS。
[core@tutorial ~]$ sudo rpm-ostree deploy -r 32.20200923.3.0
Resolving version '32.20200923.3.0'
⠄ Receiving metadata objects: 0/(estimating) -/s 0 bytes...
Receiving metadata objects: 0/(estimating) -/s 0 bytes... done
⠒ Receiving metadata objects: 0/(estimating) -/s 0 bytes...
Receiving metadata objects: 0/(estimating) -/s 0 bytes... done
Staging deployment... done
Connection to 192.168.1.100 closed by remote host.
Connection to 192.168.1.100 closed.
  1. 重启后再次登录CoreOS,然后确认CoreOS已经使用的是“32.20200923.3.0”版本的ostree了。
$ ssh core@<COREOS_HOST> -i id_rsa
[core@tutorial ~]$ rpm-ostree status
State: idle
Deployments:
* ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200923.3.0 (2020-10-05T16:42:18Z)Commit: 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200907.3.0 (2020-09-23T08:16:31Z)Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0

安装软件

  1. 执行命令,用rpm-ostree安装httpd。
[core@tutorial ~]$ sudo rpm-ostree install httpd
Checking out tree 5090d96... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora
Updating metadata for 'fedora-cisco-openh264'... done
rpm-md repo 'fedora-cisco-openh264'; generated: 2020-08-25T19:05:18Z
Updating metadata for 'updates'... done
rpm-md repo 'updates'; generated: 2020-10-09T16:04:03Z
Updating metadata for 'fedora'... done
rpm-md repo 'fedora'; generated: 2020-04-22T22:22:36Z
Importing rpm-md... done
Resolving dependencies... done
Will download: 10 packages (2.0?MB)
Downloading from 'fedora'... done
Downloading from 'updates'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Added:apr-1.7.0-3.fc32.x86_64apr-util-1.6.1-12.fc32.x86_64apr-util-bdb-1.6.1-12.fc32.x86_64apr-util-openssl-1.6.1-12.fc32.x86_64fedora-logos-httpd-30.0.2-4.fc32.noarchhttpd-2.4.46-1.fc32.x86_64httpd-filesystem-2.4.46-1.fc32.noarchhttpd-tools-2.4.46-1.fc32.x86_64mailcap-2.1.48-7.fc32.noarchmod_http2-1.15.14-1.fc32.x86_64
Run "systemctl reboot" to start a reboot
  1. 查看rpm-ostree的状态,确认当前最前面的ostree已经包含“LayeredPackages: httpd”了。但是当前“*”指向的不是新版的ostree,这是因为最新的ostree还没有生效。
[core@tutorial ~]$ rpm-ostree status
State: idle
Deployments:ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200923.3.0 (2020-10-05T16:42:18Z)BaseCommit: 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0Diff: 10 addedLayeredPackages: httpd* ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200923.3.0 (2020-10-05T16:42:18Z)Commit: 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200907.3.0 (2020-09-23T08:16:31Z)Commit: b53de8b03134c5e6b683b5ea471888e9e1b193781794f01b9ed5865b57f35d57GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
  1. 执行命令,查看ostree变化情况。可以看到“pending deployment”比“booted deployment”多了10个包。
[core@tutorial ~]$ rpm-ostree db diff
ostree diff commit from: booted deployment (5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6)
ostree diff commit to:   pending deployment (6d09d2e87ee5c22db2eacf8670fde9461c1c29abe67108f879ea212970ea31f1)
Added:apr-1.7.0-3.fc32.x86_64apr-util-1.6.1-12.fc32.x86_64apr-util-bdb-1.6.1-12.fc32.x86_64apr-util-openssl-1.6.1-12.fc32.x86_64fedora-logos-httpd-30.0.2-4.fc32.noarchhttpd-2.4.46-1.fc32.x86_64httpd-filesystem-2.4.46-1.fc32.noarchhttpd-tools-2.4.46-1.fc32.x86_64mailcap-2.1.48-7.fc32.noarchmod_http2-1.15.14-1.fc32.x86_64
  1. 重启CoreOS,重启后再次登录CoreOS。
[core@tutorial ~]$ sudo reboot
$ ssh core@<COREOS_HOST> -i id_rsa
  1. 再次查看rpm-ostree的状态。通过“*”的指向确认此时rpm-ostree已经使用带有“LayeredPackages: httpd”的了。
[core@tutorial ~]$ rpm-ostree status
State: idle
Deployments:
* ostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200923.3.0 (2020-10-05T16:42:18Z)BaseCommit: 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0LayeredPackages: httpdostree://fedora:fedora/x86_64/coreos/stableVersion: 32.20200923.3.0 (2020-10-05T16:42:18Z)Commit: 5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6GPGSignature: Valid signature by 97A1AE57C3A2372CCA3A4ABA6C13026D12C944D0
  1. 确认此时CoreOS中已经有httpd服务了。
[core@tutorial ~]$ sudo systemctl start httpd
[core@tutorial ~]$ systemctl status httpd
● httpd.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)Active: active (running) since Sun 2020-10-11 02:57:18 UTC; 5s agoDocs: man:httpd.service(8)Main PID: 4124 (httpd)Status: "Started, listening on: port 80"Tasks: 213 (limit: 1074)Memory: 19.2MCGroup: /system.slice/httpd.service├─4124 /usr/sbin/httpd -DFOREGROUND├─4125 /usr/sbin/httpd -DFOREGROUND├─4126 /usr/sbin/httpd -DFOREGROUND├─4127 /usr/sbin/httpd -DFOREGROUND└─4128 /usr/sbin/httpd -DFOREGROUNDOct 11 02:57:18 tutorial systemd[1]: Starting The Apache HTTP Server...
Oct 11 02:57:18 tutorial httpd[4124]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::fa65:9674:c105:f61c%enp0s3. Set the >
Oct 11 02:57:18 tutorial systemd[1]: Started The Apache HTTP Server.
Oct 11 02:57:18 tutorial httpd[4124]: Server configured, listening on: port 80
  1. (可选)如果当rpm-ostree的State是busy的时候安装软件,我们可以看到以下错误提示。说明系统更新正在进行中,还未完成,此时无法执行新的安装操作。
[core@tutorial ~]$ sudo rpm-ostree install wget
error: Transaction in progress: deploy --lock-finalization revision=5090d96f4faf090c90c5f4ebf6c3cdab458acc89f2ba08d1ff704744a143b7e6 --disallow-downgrade

删除软件

除了可以用rpm-ostree安装软件外, 还可以用它删除软件,完成后会自动重启操作系统以使得安装生效。

[core@tutorial /]$ sudo rpm-ostree uninstall httpd --reboot

参考

https://docs.fedoraproject.org/en-US/iot/applying-updates-UG/
https://dustymabe.com/2020/01/23/devconf.cz-2020-fedora-coreos-lab/
https://discussion.fedoraproject.org/c/server/coreos/5
https://developers.redhat.com/blog/2020/03/12/how-to-customize-fedora-coreos-for-dedicated-workloads-with-ostree/

OpenShift 4 - Fedora CoreOS (6) - 用rpm-ostree安装软件、升级回滚CoreOS相关推荐

  1. 通过RPM方式安装,升级,卸载,以及配置使用MySQL

    通过RPM方式安装,升级,卸载,以及配置使用MySQL 一.下载 MySQL是一种开源的关系数据库管理系统,被广泛应用于各种业务应用中.本文将讲解如何下载和安装MySQL的rpm安装包. 下载rmp安 ...

  2. linux rpm远程安装软件下载,linux软件的安装。使用rpm、yum或wget下载软件

    介绍 在linux中安装软件一般有一下几种方式: a.通过rpm包安装 b.通过yum在线安装(联网) c.weget url 在线下载软件(只负责下载,不安装) 1.通过rpm包来进行软件的安装和卸 ...

  3. linux rpm yum 安装 软件

    rpm 安装: 1.rpm包的了解:  rpm  安装  升级  删除 rpm -ivh  ****.rpm   安装 rpm -Uvh  ****.rpm  升级 rpm -e name    删除 ...

  4. 在linux下使用rpm命令安装软件

    1.rpm rpm -ivh 无法解决文件的依赖性 [kiosk@foundation42 Desktop]$ rpm -ivh linuxqq-v1.0.2-beta1.i386.rpm error ...

  5. Linux系统中rpm命令安装软件,报错:This program may be freely redistributed under the terms of the GNU GPL

    遇到问题: This program may be freely redistributed under the terms of the GNU GPL Usage: rpm {–help} rpm ...

  6. (四) Shell脚本简介,变量的定义、引用、删除,常见状态和运算符,命令,软件的安装和维护(RPM),软件的安装和维护(yum)

    1,课程回顾 2,本章重点 shell 脚本 软件管理(rpm yum) 3,具体内容 3.1 Shell脚本简介 3.1.1 什么是shell脚本 1.当命令不在命令行中执行,而是从一个文件中执行时 ...

  7. (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记

    1.光盘的挂载与解挂 在Linux操作系统中,所有的存储设备都必须先挂载然后才能使用. 问题:为什么当我们直接访问/run/media/itheima/CentOS 7 x86_64就相当于访问光盘 ...

  8. 官方wdpc安装文档,推荐RPM包安装

    wdcp支持两种安装方式 1 源码编译 此安装比较麻烦和耗时,一般是20分钟至一个小时不等,具体视机器配置情况而定(我试过一次,等了半小时还是失败了,强烈不推荐) 2 RPM包安装 简单快速,下载快的 ...

  9. 在linux系统下用rpm查看安装信息,rpm的查询命令

    RPM: Redhat Package Manager (RPM软件包管理器) 在linux环境下,可以用rpm命令安装.升级.卸载.查询软件包 1.查询所有已安装的软件包 rpm -qa 2.查询某 ...

最新文章

  1. Vue父组件网络请求回数据后再给子组件传值demo示例
  2. Linux编程之自定义消息队列
  3. Asp.net 操作cookie大全
  4. python画饼图-从零开始学Python--matplotlib(饼图)
  5. 计算机设备管理系统报告,设备管理信息化自查报告
  6. 安卓UI测试(基于android studio环境 espresso框架)
  7. 深入分析Flex [Bindable] (总结)
  8. php中在网页中显示图片代码,用PHP将网页上的Canvas图像保存到服务器上的方法
  9. 使用 Linux 15 年后,我重新回到 Windows:感觉非常糟糕
  10. 使用loadrunner进行服务器性能测试(winsocket)
  11. python和c的语法区别_python和c语言语法有什么区别?
  12. 使用 Kotlin 读取本地视频并使用Vitamio框架编写万能播放器进行播放(二)
  13. 台式计算机不用鼠标怎么关机,没有鼠标怎么关机
  14. word页面顺序倒过来_word怎么把顺序颠倒
  15. 如何判断vps的好坏?
  16. java对pdf文件进行加密操作
  17. 四路监控物联卡赋能卡友行车安全
  18. 高校数字化实验室(实训室)综合管理系统
  19. 【模型训练】YOLOv7反光衣检测
  20. python全排列,递归

热门文章

  1. php修改mongo,php操作MongoDB基础教程(连接、新增、修改、删除、查询)
  2. css的长度单位没有哪些,css 长度单位知多少
  3. java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性
  4. c语言定义92bit位变量,Keil C51对C语言的关键词扩展之四: bit
  5. 安卓bmi项目_搭载安卓系统的智能健康一体机:上禾SH-V20
  6. java输入输出流_金九银十准备季:Java异常+Java IO与NIO面试题(含答案)
  7. 单纯形表的matlab输出,自编MATLAB版单纯性算法 可以列出单纯形表以及其他相关数据...
  8. 东方韵味春节牛年PSD分层海报,过大年不愁没海报发了!
  9. 设计素材模板|春节要来了,素材准备好了么?
  10. UI设计素材 | 备用的404界面,存起来