添加和更新软件包

更新、升级和安装软件包会导致网络服务中断

  • 升级软件包可能会导致服务重启或停止。
  • 安装软件包有时会通过更改核心服务依赖软件包来中断核心服务。在某些情况下,由于依赖关系,安装新软件包还会升级其他现有软件包。
  • 如果服务停止,您需要重启交换机以重启服务。

列出交换机上安装的软件包

要显示交换机上安装的软件包,请运行以下命令。

cumulus@switch:~$ nv show platform software installed
acpi                                   libfreeipmi17                          libyajl2
acpid                                  libfreetype6                           libyaml-0-2
acpi-support-base                      libfstrm0                              libyang2
adduser                                libfuse2                               libyuv0
apt                                    libgav1-1                              libzmq5
arping                                 libgcc-12-dev                          libzstd1
arptables                              libgcc-s1                              linux-base
atftp                                  libgcrypt20                            linux-image-6.1.0-cl-1-amd64
atftpd                                 libgd3                                 linux-image-amd64
auditd                                 libgdbm6                               linux-libc-dev
babeltrace                             libgdbm-compat4                        linux-perf
base-files                             libgee-0.8-2                           linuxptp
base-passwd                            libgeoip1                              linux-selftests
...
cumulus@switch:~$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                Version                   Architecture Description
+++-===================-=========================-============-=================================
ii  acpi                1.7-1.1                   amd64        displays information on ACPI devices
ii  acpi-support-base   0.142-8                   all          scripts for handling base ACPI events such as th
ii  acpid               1:2.0.31-1                amd64        Advanced Configuration and Power Interface event
ii  adduser             3.118                     all          add and remove users and groups
ii  apt                 1.8.2                     amd64        commandline package manager
ii  arping              2.19-6                    amd64        sends IP and/or ARP pings (to the MAC address)
ii  arptables           0.0.4+snapshot20181021-4  amd64        ARP table administration
...

显示软件包版本

要显示交换机上安装的软件包的版本

以下示例命令显示交换机上 vrf 软件包的版本

cumulus@switch:~$ nv show platform software installed vrf
             operational        
-----------  -------------------
package      vrf                
version      1.0-cl5.9.0u4      
description  Linux tools for VRF

以下示例命令显示交换机上 vrf 软件包的版本

cumulus@switch:~$ dpkg -l vrf
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name       Version      Architecture Description
+++-==========-============-============-=================================
ii  vrf        1.0-cl5.9.0u4    amd64        Linux tools for VRF

升级所有软件包

要将交换机上安装的所有软件包升级到最新版本,请运行以下命令

cumulus@switch:~$ nv action upgrade system packages to latest use-vrf default dry-run

默认情况下,NVUE nv action upgrade system packages 命令在管理 VRF 中运行。要在非管理 VRF(例如 default)中运行该命令,您必须使用 use-vrf <vrf> 选项。

cumulus@switch:~$ sudo -E apt-get update
cumulus@switch:~$ sudo -E apt-get upgrade

系统列出要升级的软件包,并提示您继续。

上述命令将所有已安装版本升级到其最新版本,但不安装任何新软件包。要添加新软件包,请参阅下方的 添加软件包

当您运行任何 apt-get 命令时,请始终将 -E 选项与 sudo 一起使用。此选项会在您安装新软件包或升级发行版之前保留您的环境变量(例如 HTTP 代理)。

添加软件包

要添加新软件包,首先使用 NVUE nv show platform software installed <package-name> 命令或 Linux dpkg -l | grep <package-name> 命令确保该软件包尚未在系统上。

  • 如果软件包已在系统上,您可以从 Cumulus Linux 存储库更新软件包,作为软件包升级过程的一部分,该过程会升级系统上的所有软件包。请参阅上方的 升级软件包
  • 如果软件包在系统上,请使用 Linux sudo -E apt-get install <package-name> 命令添加它。此命令从 Cumulus Linux 存储库检索软件包,并将其与任何依赖软件包一起安装在您的交换机上。以下示例在交换机上添加 tcpreplay 软件包
cumulus@switch:~$ sudo -E apt-get update
cumulus@switch:~$ sudo -E apt-get install tcpreplay
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
tcpreplay
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 436 kB of archives.
After this operation, 1008 kB of additional disk space will be used
...

您可以同时安装多个软件包

cumulus@switch:~$ sudo -E apt-get install <package1> <package2> <package3>

在某些情况下,由于依赖关系,安装新软件包还会升级其他现有软件包。要在安装之前查看这些其他软件包,请运行 apt-get install --dry-run 命令。

配置其他存储库

默认情况下,Cumulus Linux 搜索 Cumulus Linux 存储库以查找可用的软件包。您可以通过将其他存储库添加到 Cumulus Linux 查询的源列表来配置其他要搜索的存储库。

  • NVIDIA 向某些软件包添加了功能或进行了错误修复;请勿将这些软件包替换为来自其他存储库的版本。
  • NVIDIA 不测试不属于 Cumulus Linux 存储库的软件包,Cumulus Linux 技术支持也不支持这些软件包。

要配置其他存储库

  • 提供存储库位置、发行版和池。
  • 将存储库设置为受信任,或者提供安全密钥。
  • 启用存储库源以添加来自存储库的源文件(可选)。
  • 设置在添加其他存储库时要使用的 VRF(可选)。默认 VRF 为 mgmt

存储库 URL 可以是 httpshttp 格式,也可以是交换机上的目录和文件名 (/etc/myrepo)。

以下示例配置位于 http://test.myrepo.com 的存储库,发行版为 mydist,池为 mypool,启用来自存储库的源文件,并将存储库设置为受信任。该示例还将 VRF 设置为 default

cumulus@switch:~$ nv set system packages use-vrf default
cumulus@switch:~$ nv set system packages repository http://test.myrepo.com distribution mydist pool mypool 
cumulus@switch:~$ nv set system packages repository http://test.myrepo.com source enabled
cumulus@switch:~$ nv set system packages repository http://test.myrepo.com insecure enabled
cumulus@switch:~$ nv config apply

以下示例配置位于 http://test.myrepo.com 的存储库,发行版为 mydist,池为 mypool,启用来自存储库的源文件,并提供安全密钥 thekey.asc

cumulus@switch:~$ nv set system packages repository http://test.myrepo.com distribution mydist pool mypool
cumulus@switch:~$ nv set system packages repository http://test.myrepo.com source enabled
cumulus@switch:~$ nv set system packages repository http://test.myrepo.com key thekey.asc
cumulus@switch:~$ nv config apply 

编辑 /etc/apt/sources.list 文件以配置存储库。

以下示例配置位于 http://test.myrepo.com 的存储库,发行版为 mydist,池为 mypool,启用来自存储库的源文件,并将存储库设置为受信任。

deb [trusted=yes] http://test.myrepo.com mydist mypool
deb-src [trusted=yes] http://test.myrepo.com mydist mypool

以下示例配置位于 http://test.myrepo.com 的存储库,发行版为 mydist,池为 mypool,启用来自存储库的源文件,并提供安全密钥 thekey.asc

deb [signed-by=/etc/apt/keyrings/thekey.asc] http://test.myrepo.com mydist mypool 
deb-src [signed-by=/etc/apt/keyrings/thekey.asc] http://test.myrepo.com mydist mypool 

管理存储库密钥

Cumulus Linux 提供以下命令:

  • 获取存储库密钥并将其保存在交换机上。
  • 删除存储库密钥。
  • 要全局获取和保存密钥,请运行 nv action fetch system packages key <key> 命令。Cumulus Linux 获取密钥并将其全局保存在 /etc/apt/trusted.gpg.d/ 目录中。这是默认设置。
  • 要为特定存储库获取和保存密钥,请运行 nv action fetch system packages key <key> scope repository 命令。Cumulus Linux 获取密钥并将其保存在 /etc/apt/keyrings/ 目录中。

以下示例获取存储库密钥 http://deb.opera.com/archive.key 并将其保存在 /etc/apt/trusted.gpg.d 目录中

cumulus@switch:~$ nv action fetch system packages key http://deb.opera.com/archive.key 

以下示例通过将范围设置为 repository,获取存储库密钥 http://deb.opera.com/archive.key 并将其保存在 /etc/apt/keyrings 目录中

cumulus@switch:~$ nv action fetch system packages key http://deb.opera.com/archive.key scope repository

要删除软件包密钥,请运行 nv action delete system packages key <key> 命令

cumulus@switch:~$ nv action delete system packages key debian-archive-bookworm-automatic.asc

要全局获取和保存存储库密钥

  • 如果密钥已存在于文件系统中,请将其复制到 /etc/apt/trusted.gpg.d/ 目录。
  • 如果密钥位于远程 URL,请使用 wget 或其他实用程序获取它,然后将其复制到 /etc/apt/trusted.gpg.d/ 目录。

以下示例从远程 URL 获取密钥 http://your-url.com/name.key 并将其复制到 /etc/apt/trusted.gpg.d/ 目录

cumulus@switch:~$ wget -qO - http://your-url.com/name.key
cumulus@switch:~$ sudo cp name.key /etc/apt/trusted.gpg.d

要为特定存储库获取和保存密钥

  • 如果您的密钥已存在于文件系统中,请将其复制到 /etc/apt/keyrings/ 目录。
  • 如果密钥位于远程 URL,请使用 wget 或其他实用程序获取它,然后将其复制到 /etc/apt/keyrings/ 目录。

以下示例将文件系统上的密钥 name.key 复制到 /etc/apt/keyrings/ 目录。

cumulus@switch:~$ sudo cp name.key /etc/apt/keyrings/

要删除密钥,请从 /etc/apt/keyrings/etc/apt/trusted.gpg.d 目录中删除密钥。

cumulus@switch:~$ sudo rm /etc/apt/keyrings/name.key

显示存储库信息

要显示存储库列表及其详细信息

cumulus@switch:~$ nv show system packages repository 
Repository                                    Insecure  Source   Distribution             Pool 
--------------------------------------------  --------  -------  -----------------------  ----------- 
https://apps3.cumulusnetworks.com/repos/deb/  enabled   enabled  CumulusLinux-d12         netq-latest 
                                                                 CumulusLinux-d12-latest  netq 
                                                                                          upstream 
https://apt.cumulusnetworks.com/repo                             CumulusLinux-d12-latest  cumulus 
                                                                                          netq 
                                                                                          upstream

要显示特定存储库的详细信息

cumulus@switch:~$ nv show system packages repository https://apt.cumulusnetworks.com/repo
                operational              applied 
--------------  -----------------------  ------- 
insecure        enabled                  enabled 
source          enabled                  enabled 
[distribution]  CumulusLinux-d12         CumulusLinux-d12 
[distribution]  CumulusLinux-d12-latest  CumulusLinux-d12-latest

要显示存储库的发行版列表

cumulus@switch:~$ nv show system packages repository https://apt.cumulusnetworks.com/repo distribution
Distribution      Origin            Version  Codename          Pool         Priority 
----------------  ----------------  -------  ----------------  -----------  --------
CumulusLinux-d12  Cumulus Networks           CumulusLinux-d12  netq-latest  991

要显示存储库的发行版的详细信息

cumulus@switch:~$ nv show system packages repository https://apps3.cumulusnetworks.com/repos/deb/ distribution CumulusLinux-d12 
          operational       applied 
--------  ----------------  ------- 
[pool]    netq-latest 
codename  CumulusLinux-d12 
origin    Cumulus Networks 

要显示存储库的发行版池列表

cumulus@switch:~$ nv show system packages repository https://apps3.cumulusnetworks.com/repos/deb/ distribution CumulusLinux-d12 pool 
Pool          priority 
--------      -------- 
netq-latest   100 

要显示存储库和密钥的列表

cumulus@switch:~$ nv show system packages
         operational  applied
-------  -----------  -------
use-vrf               mgmt

repository
=============
    Repository                                       Insecure  Source    Key  Distribution               Pool
    -----------------------------------------------  --------  --------  ---  -------------------------  ----
    copy:/var/lib/cumulus/cumulus-local-apt-archive  enabled   disabled       cumulus-local-apt-archive  main

key
======
    Key ID                                          Path                                                                   Scope 
    ----------------------------------------------  ---------------------------------------------------------------------  ------
    debian-archive-bookworm-automatic.asc           /etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc           global
    debian-archive-bookworm-security-automatic.asc  /etc/apt/trusted.gpg.d/debian-archive-bookworm-security-automatic.asc  global
    debian-archive-bookworm-stable.asc              /etc/apt/trusted.gpg.d/debian-archive-bookworm-stable.asc              global
    debian-archive-bullseye-automatic.asc           /etc/apt/trusted.gpg.d/debian-archive-bullseye-automatic.asc           global
    debian-archive-bullseye-security-automatic.asc  /etc/apt/trusted.gpg.d/debian-archive-bullseye-security-automatic.asc  global
    debian-archive-bullseye-stable.asc              /etc/apt/trusted.gpg.d/debian-archive-bullseye-stable.asc              global
    debian-archive-buster-automatic.asc             /etc/apt/trusted.gpg.d/debian-archive-buster-automatic.asc             global
    debian-archive-buster-security-automatic.asc    /etc/apt/trusted.gpg.d/debian-archive-buster-security-automatic.asc    global
    debian-archive-buster-stable.asc                /etc/apt/trusted.gpg.d/debian-archive-buster-stable.asc                global

要显示密钥列表

cumulus@switch:~$ nv show system packages keys
Key ID                                          Path                                                                   Scope 
----------------------------------------------  ---------------------------------------------------------------------  ------ 
debian-archive-bookworm-automatic.asc           /etc/apt/trusted.gpg.d/debian-archive-bookworm-automatic.asc           global 
debian-archive-bookworm-security-automatic.asc  /etc/apt/trusted.gpg.d/debian-archive-bookworm-security-automatic.asc  global 
debian-archive-bookworm-stable.asc              /etc/apt/trusted.gpg.d/debian-archive-bookworm-stable.asc              global 
sample-test-key.asc                             /etc/apt/keyrings/sample-test-key.asc                                  repository

要显示软件包密钥的详细信息

cumulus@switch:~$ nv show system packages key debian-archive-bookworm-automatic.asc
        operational 
 -----  --------------------------------------------------------------------- 
 scope  global 
 path   /etc/apt/trusted.gpg.d/debian-archive-bookworm-security-automatic.asc