更新和升级树莓派 OS
本节介绍如何将软件更新部署到运行树莓派 OS的设备。
在继续进行之前,让我们研究为什么更新设备非常重要。
第一个也是最重要的原因是安全性。运行树莓派 OS的设备包含数百万行您依赖的代码。随着时间的流逝,这几百万行代码将公开众所周知的通用漏洞和披露(CVE)漏洞,这些漏洞记录在公开数据库中,这意味着他们很容易被利用。 下面是一个示例,它是在 KODI 中发现的最新 CVE ,它提供了有关什么信息是更多信息的更多信息。在数据库中可用,以及如何跟踪 CVE 。作为树莓派 OS的用户,减轻这些漏洞的唯一方法是使软件保持最新状态,因为上游存储库会密切跟踪 CVE 并尝试快速缓解它们。
与第一个原因相关的第二个原因是,您在设备上运行的软件很可能包含错误。一些错误是 CVE ,但是错误也可能会影响所需的功能,而与安全性无关。通过使软件保持最新状态,可以降低碰到这些错误的机会。
APT(高级打包工具)
要在树莓派 OS中更新软件,可以在终端中使用apt工具。从任务栏或应用程序菜单打开终端窗口:
首先,通过输入以下命令来"更新"系统的软件包列表:
`` sudo apt update
接下来,使用以下命令将所有已安装的软件包"升级"到最新版本:
``
sudo apt full-upgrade
注意," full-upgrade"优先于简单的" upgrade",因为它还会拾取可能已进行的任何依赖项更改。
通常来说,定期执行此操作可使您使用的特定主要树莓派 OS主发行版保持最新(例如 Stretch )。它不会从一个主要版本更新到另一个,例如,Stretch to Buster。
但是,基金会的树莓派 OS映像有时会发生需要手动干预的更改,例如新引入的软件包。这些没有随升级一起安装,因为此命令仅更新您已经安装的软件包。
更新内核和固件
内核和固件以 Debian 软件包的形式安装,因此在使用上述步骤时也将获得更新。这些软件包不经常更新,并且经过大量测试。
空间用完了
运行 sudo apt full-upgrade时,它将显示将下载多少数据以及 SD 卡上将占用多少空间。值得用 df -h检查您是否有足够的可用磁盘空间,因为不幸的是 apt 不会为您完成此操作。另外请注意,下载的软件包文件(.deb文件)保存在/var/cache/apt/archives中。您可以删除它们以释放 sudo apt clean(在较早版本的 apt 中为 sudo apt-get clean)。
从 Stretch 升级到 Buster
警告:可以升级现有的拉伸图像,但不能保证在每种情况下都可以使用,因此我们不建议您这样做。如果您确实希望将 Stretch 映像升级到 Buster ,我们强烈建议您先进行备份-对于更新失败导致的数据丢失,我们不承担任何责任。
要进行升级,请首先修改文件/etc/apt/sources.list和文件/etc/apt/sources.list.d/raspi.list。在两个文件中,将单词" stretch"的每次出现都更改为" buster"。 (两个文件都需要 sudo 来编辑。)
然后打开一个终端窗口并执行:
`` sudo apt update sudo apt -y dist-upgrade
对任何提示回答"是"。在屏幕上显示信息页面时,可能还会暂停安装–按住<kbd> space </kbd>键滚动浏览所有内容,然后按<kbd> q </kbd>接着说。
最后,如果您不使用 PulseAudio 进行蓝牙音频以外的其他操作,请输入以下命令将其从图像中删除:
``
sudo apt -y清除" pulseaudio *"
如果要使用新的 Pi 型号(例如 Pi 3B +),则可能还需要按照上述说明更新内核和固件。
第三方解决方案
本节介绍了为什么可能需要第三方解决方案以及为什么apt并非在所有情况下都最佳的原因。 树莓派不建议使用任何特定的第三方工具。准用户应根据自己的特定需求确定最合适的工具。Apt是更新运行树莓派 OS的设备软件的便捷方法,但是当您有大量设备要更新时,此方法的局限性显而易见,尤其是当您无法物理访问设备以及设备按地理位置分布时。 如果您缺乏对设备的物理访问权限,并想通过无线(OTA)部署无人值守更新,则有一些一般要求:
- 在任何情况下,更新都不得中断("中断")设备,例如,如果更新中断(断电,网络丢失等),则系统应恢复到工作状态
- 更新必须是atomic:更新成功或更新失败;两者之间没有什么可能导致设备仍然"运行"但行为不确定
- 更新必须能够安装经过密码签名的映像/软件包,以防止第三方在您的设备上安装软件
- 更新必须能够使用安全的通信渠道安装更新
不幸的是apt缺乏健壮性,即原子性和后备性。这就是为什么第三方解决方案开始出现的原因,这些解决方案试图解决部署无人值守更新 OTA 需要解决的问题。