标签 更新 下的文章

本指南介绍了如何在没有互联网连接的情况下离线更新 Ubuntu 的步骤。

在很多情况下,你可能需要在没有互联网连接的情况下更新你的 Ubuntu 系统。你可能在外地不方便上网,也可能你需要更新一堆未联网的 Ubuntu,不管是哪种情况,保持你的系统更新最新的软件包总是需要的。

当然,始终建议通过联网来更新系统。

但有时,出于安全考虑,这是不行的。连接到互联网可能需要给你的系统进行额外的加固,以保护它们免受黑客和恶意软件的攻击。

以下的方法使用 apt-offline 来解决这些问题,并概述了在没有互联网的情况下离线更新 Ubuntu 的步骤。

准备环节

  • 一台能连接到网络的 Ubuntu(你朋友的、咖啡馆、实验室系统)
  • 存储了软件包的 U 盘
  • 两个系统都安装了 apt-offline:一个系统离线,另一个系统联网

安装 apt-offline

在两个系统下安装 apt-offline。你可以使用以下命令安装:

sudo apt install apt-offline

如果你想在离线的目标系统安装 apt-offline,你可以提前下载到 U 盘里,然后复制到目标系统,再使用下面的命令安装。

Ubuntu 22.04 LTS 和其他版本的下载链接如下所示。你可以选择一个镜像并下载 deb 文件。

下载 .deb 文件 – apt-offline
sudo dpkg -i name_of_package.deb

如何更新 Ubuntu

在离线的目标系统上打开终端,使用以下命令创建一个 .sig 签名文件:

sudo apt-offline set ~/offline-data.sig

创建签名文件

在这个刚创建的签名文件中,包含下载所需的软件包的路径和详细信息。

签名文件的内容

把签名文件复制到 U 盘中,再插到联网的 Ubuntu 系统上。

在联网的 Ubuntu 上创建一个目录(参见下面)来存放这些文件。

打开一个终端,运行以下命令来下载所需的软件包。记得根据你的系统,更改下载目录和 .sig 签名文件的路径。

apt-offline get -d ~/offline-data-dir offline-data.sig

下载软件包以离线安装

你可以看到文件相应下载,然后复制整个下载目录到 U 盘,再插到离线的 Ubuntu 系统。

运行以下命令将下载的软件包安装到离线系统,记得根据你的系统更改目录路径。

sudo apt-offline install offline-data-dir/

安装软件包

如果一切顺利,你将获得一个更新完的 Ubuntu。

重复以上步骤,就可以保持你的离线 Ubuntu 为最新版本。

希望以上教程能帮到你更新离线的 Ubuntu 系统,如果你遇到任何问题,请在下面的评论框中告诉我。


via: https://www.debugpoint.com/how-to-update-or-upgrade-ubuntu-offline-without-internet/

作者:Arindam 选题:lkxed 译者:littlebirdnest 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

更新 Linux 系统并没有那么复杂,不是吗?毕竟,要更新 Ubuntu 之类的发行版,你只需要使用 apt updateapt upgrade 就行。

如果所有的包都是通过一个包管理器安装的,就会是这样。

但现在情况不再如此。你有经典的 apt/dnf/pacman,还有 Snap、Flatpak、Appimages。不止于此,你还可以使用 PIP(用于 Python)和 Cargo(用于 Rust)安装应用。

使用 Node? NPM 包需要单独更新。Oh My Zsh?需要单独更新。Vim 中的插件、Atom 等也可能不被 apt/dnf/pacman 覆盖。

你现在看到问题了吗?这就是名为 Topgrade 的新工具旨在解决的问题。

Topgrade:处理各种更新的单一程序

Topgrade 是一个 CLI 程序,它会检测你使用的工具,然后运行适当的命令来更新它们。

Topgrade disable system

除了通常的 Linux 包管理器,它还可以检测和更新 Brew、Cargo、PIP、Pihole、Vim 和 Emacs 插件、R 软件包等。你可以在 维基页面 上查看支持的包列表。

Topgrade 的主要特点:
  • 能够更新来自不同的包管理器的软件包,包括固件
  • 你可以如何控制更新包。
  • 高度可定制。
  • 甚至能够在更新包之前进行概览。

所以不要浪费任何时间,让我们跳到安装。

使用 Cargo 在 Linux 中安装 Topgrade

安装过程非常简单,因为我将使用 Cargo 包管理器。

我们已经有了 详细指南,其中包含设置 Cargo 包管理器的多种方法。所以我将在我的示例中使用 Ubuntu 来快速完成。

因此,让我们以最少方式安装依赖项以及 Cargo:

sudo apt install cargo libssl-dev pkg-config

安装 Cargo 后,使用给定的命令安装 Topgrade:

cargo install topgrade

它会抛出一个警告:

cargo error

你只需添加 cargo 路径即可运行二进制文件。这可以通过给定的命令来完成,你需要使用你的用户名替换 sagar

echo 'export PATH=$PATH:/home/sagar/.cargo/bin' >> /home/sagar/.bashrc

现在,重启系统,Topgrade 就可以使用了。但是等等,我们需要安装另一个包来更新 Cargo 以获取最新的包。

cargo install cargo-update

这样我们完成了安装。

使用 Topgrade

使用 Topgrade 非常简单。使用一个命令,就是这样:

topgrade

但这不会给你除了系统包之外的任何控制,但正如我所提到的,你可以将不想更新的仓库列入黑名单。

从 Topgrade 中排除包管理器和仓库

假设我想排除 Snap 和从默认包管理器下载的包,所以我的命令是:

topgrade --disable snap system

Topgrade disable snap system

要进行永久更改,你必须在其配置文件中进行一些更改,这些更改可以通过给定的命令访问:

topgrade --edit-config

对于此示例,我排除了 Snap 和默认系统仓库:

configuring Topgrade

试运行 Topgrade

评估将要更新的过时软件包总是一个好主意,我从 Topgrade 的整个目录中找到了这个最有用的选项。

你只需使用带有 -n 选项的 topgrade 命令,它就会生成过期软件包的摘要。

topgrade -n

summery of Topgrade

检查需要更新的软件包的一种简洁方法。

总结

在使用 Topgrade 几周后,它成为了我的 Linux 武器库中不可或缺的一部分。 像大多数其他 Linux 用户一样,我只是通过我的默认包管理器更新包。 Python 和 Rust 包被完全忽略了。 感谢 Topgrade,我的系统现在完全更新了。

我知道这不是每个人都想使用的工具。那你呢?愿意试一试吗?


via: https://itsfoss.com/topgrade/

作者:Sagar Sharma 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在开始编写应用之前,为手机、物联网设备和边缘计算定义无线更新计划。

过去对系统的更新相对简单。当开发人员需要修改他们已经分发给公众的东西时,会发布一个更新程序供人们运行。用户将运行更新程序,允许用新文件替换旧文件并添加新文件。然而,即使有了这些“相对简单”的更新,也有一个问题。当用户安装好的系统处于意外状态时会发生什么?升级中断时会发生什么?当各种设备都在线时,这些问题同样重要,有时需要重要的安全更新。今天的许多更新都是通过无线、 空中下载技术 over-the-air (OTA)的方式提供的,连接不良、信号突然丢失或断电的可能性可能会对应该是次要更新的内容造成灾难性的影响。这些是你在计划提供 OTA 更新时需要考虑的三大策略。

1、验证

TCP 协议内置了很多验证功能,因此当你 向设备发送数据包 时,通常可以确信每个数据包都已完好无损地收到。但是,TCP 无法报告它不知道的错误,因此由你来验证以下内容:

  • 你是否已发送更新所需的所有文件?设备无法接收没有发送的内容。
  • 收到的文件和你发送的文件一样吗?至少,检查 SHA 和以验证文件完整性。
  • 如果可能,请使用 数字签名 确保文件来自受信任的来源。
  • 在允许更新开始之前,你必须验证设备能够应用更新。在提交更新之前检查权限和电池状态,并确保你的更新过程覆盖任何意外的用户事件,例如计划的重新启动或休眠。
  • 最后,你必须验证声称已成功完成的更新是否已实际完成。在将更新正式标记为系统已完成之前,请检查目标设备上的文件位置和完整性。

2、回退和故障状态

更新的最坏情况是设备处于损坏状态,以至于它甚至不能继续被中止的更新。在这种情况下,更新程序文件存在于目标设备上,但该过程已被中断。这可能会使设备处于未知状态,其中一些文件已被更新版本替换,而其他文件尚未被替换。在最坏的情况下,已更新的文件与尚未更新的文件不兼容,因此设备无法按预期运行。

有一些策略可以解决这个问题。初始更新步骤可能是安装专用于完成更新的特殊引导镜像或环境,并在系统上设置“标志”以确认更新正在进行中。这样可以确保即使设备在更新过程中突然断电,更新过程也会在下次启动时重新启动。仅在验证更新后才删除表示更新成功的标志。

根据目标设备的安全策略和你要更新的内容,特殊的引导镜像可能不可行或不需要。不过,原理还是一样的。当启动后,更新必须建立一个环境,在这个环境中,待处理的更新是解决问题之前的唯一途径

但是,在更新被授予启动权限之前,用户(如果有的话)应该能够延迟或忽略更新。

3、附加更新

在许多边缘和物联网设备中,目标设备的底层是不可变的。更新只会添加到系统的已知状态。 Fedora Silverblue 之类的项目正在证明这种模式可以在许多领域发挥作用,因此这种奢侈的做法可能会变得司空见惯。不过,在那之前,成功应用更新的一部分是了解你将要影响的环境。

不过,你不需要不可变的核心来应用附加更新。你可以构建一个使用相同概念的系统,将更新作为添加库或包的一种方式,而无需修改旧版本。作为此类更新的最后一步,具有更新路径的可执行文件是你所做的唯一实际修订。

OTA 更新

世界越来越无线化。对于手机、物联网设备和 边缘计算,OTA 更新通常是唯一的选择。实施 OTA 更新策略需要仔细规划并仔细考虑不可能的情况。你最了解你的目标设备,因此请在开始编码之前规划好你的更新架构。


via: https://opensource.com/article/22/9/plan-ota-updates-edge

作者:Alan Smithee 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

谷歌利用 AI 优化 AI 芯片架构的设计

报道,本月谷歌发表的一篇论文披露了被称为“第一个可转移的架构探索基础设施” Apollo,这是第一个在不同芯片上工作得越多,就越能更好地探索可能的芯片架构的程序,从而将所学到的知识转移到每个新的任务中。

团队正在开发的芯片本身就是用于人工智能的芯片,因此,这是用 AI 来设计运行 AI 的芯片。在 Apollo 中,将为神经网络和生物合成设计的方法汇集在一起,设计出可能反过来用于神经网络和生物合成设计的电路。

我觉得这就非常神奇,但是我也觉得有点可怕了。

Linux Mint 开发者称可能像 Windows 一样对用户操作系统进行强制更新

之前我们报道过,大约只有 30% 的 Linux Mint 用户在一周内应用了更新。而现在,Linux Mint 开发者似乎正在借鉴微软的做法,计划强制用户进行一些更新。Linux Mint 称,“我们开始对更新管理器进行改进……在某些情况下,更新管理器将能够提醒用户应该进行应用更新。在少数情况下,它甚至可能会显得‘固执己见’”,当然,这种强制性是可配置的,毕竟这是用户的电脑。当然,如何执行还在讨论当中。

所以,微软强制更新 Windows 的策略是对的吗?

谷歌发布了一个 Windows 10 远程代码执行漏洞的概念证明代码

只要访问一个网页就可以利用这个漏洞。这个问题是 Windows 字体渲染器中的一个漏洞。该渲染器也是所有浏览器都会使用的,它容易被特制的 TrueType 字体破坏,从而导致其内存损坏和崩溃,然后可以用来运行内核权限的代码。不过该漏洞已经在 Windows 10 的 2 月累积更新中得到了修复。

远程漏洞是最严重的,尤其这还是一个基于网页就可以进行的攻击。结合上一条,有时候有些补丁真是得强制?

过去,我已经讨论了许多 Ubuntu 更新错误。如果你使用命令行更新 Ubuntu,那可能会遇到一些“错误”。

其中一些“错误”基本上是内置功能,可防止对系统进行不必要的更改。在本教程中,我不会涉及那些细节。

在本文中,我将向你展示如何解决在更新系统或安装新软件时可能遇到的以下错误:

Reading package lists… Error!
E: Unable to parse package file /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease
E: The package lists or status file could not be parsed or opened.

在 Debian 中可能会遇到类似的错误:

E: Unable to parse package file /var/lib/apt/extended_states (1)

即使遇到 The package cache file is corrupted 也完全不必惊慌。这真的很容易“修复”。

在基于 Ubuntu 和 Debian 的 Linux 发行版中处理 “Unable to parse package file” 错误

以下是你需要做的。仔细查看 Ubuntu 报错文件的名称和路径。

Reading package lists… Error!
E: Unable to parse package file /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease
E: The package lists or status file could not be parsed or opened.

例如,上面的错误是在报 /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease 文件错误。

这让你想到这个文件不正确。现在,你需要做的就是删除该文件并重新生成缓存。

sudo rm <file_that_is_not_parsed>

因此,这里我可以使用以下命令:sudo rm /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_bionic_InRelease,然后使用 sudo apt update 命令重建缓存。

给初学者的分步指导

如果你熟悉 Linux 命令,那么可能知道如何使用绝对路径删除文件。对于新手用户,让我指导你安全删除文件。

首先,你应该进入文件目录:

cd /var/lib/apt/lists/

现在删除无法解析的文件:

sudo rm archive.ubuntu.com_ubuntu_dists_bionic_InRelease

现在,如果你再次运行更新,将重新生成 apt 缓存。

sudo apt update

有很多文件无法解析?

如果你在更新系统时有一个或两个文件无法解析,那么问题不大。但是,如果系统报错有十个或二十个此类文件,那么一一删除它们就太累了。

在这种情况下,你可以执行以下操作来删除整个缓存,然后再次生成它:

sudo rm -r /var/lib/apt/lists/*
sudo apt update

解释这为何能解决问题

/var/lib/apt 是与 apt 软件包管理器相关的文件和数据的存储目录。/var/lib/apt/lists 是用于保存系统 source.list 中指定的每个软件包资源信息的目录。

简单点来说,/var/lib/apt/lists 保存软件包信息缓存。当你要安装或更新程序时,系统会在此目录中检查该软件包中的信息。如果找到了该包的详细信息,那么它将进入远程仓库并实际下载程序或其更新。

当你运行 sudo apt update 时,它将构建缓存。这就是为什么即使删除 /var/lib/apt/lists 目录中的所有内容,运行更新也会建立新的缓存的原因。

这就是处理文件无法解析问题的方式。你的系统报某个软件包或仓库信息以某种方式损坏(下载失败或手动更改 sources.list)。删除该文件(或所有文件)并重建缓存即可解决此问题。

仍然有错误?

这应该能解决你的问题。但是,如果问题仍然存在,或者你还有其他相关问题,请在评论栏告诉我,我将尽力帮助你。


via: https://itsfoss.com/unable-to-parse-package-file/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

有时,由于某些应用依赖性,你可能会意外更新不想更新的软件包。这在全系统更新或自动包升级时经常会发生。如果发生这种情况,可能会破坏应用的功能。这会造成严重的问题,你需要花费大量时间来解决问题。

如何避免这种情况?如何从 apt-get 更新中排除软件包?

如果你要从 Yum Update 中排除特定软件包,请参考这篇。

是的,可以在 Debian 和 Ubuntu 系统上使用以下三种方法来完成。

我们将分别详细展示。

方法 1:如何使用 apt-mark 命令排除 Debian/Ubuntu 系统上的软件包更新

apt-mark 用于将软件包标记/取消标记为自动安装。

hold 选项用于将软件包标记为保留,以防止软件包被自动安装、升级或删除。

unhold 选项用于取消先前面的设置,以允许重复执行所有操作。

运行以下命令以使用 apt-mark 命令保留指定的软件包。

$ sudo apt-mark hold nano
nano set on hold.

保留软件包后,请运行以下 apt-mark 命令查看它们。

$ sudo apt-mark showhold
nano

这表明在执行完整的系统更新时,不会升级 nano 包。

$ sudo apt update

Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
  nano
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

运行以下命令,使用 apt-mark 命令取消保留 nano 包。

$ sudo apt-mark unhold nano
Canceled hold on nano.

方法 2:如何使用 dpkg 命令在 Debian/Ubuntu 系统上排除软件包更新

dpkg 命令是一个 CLI 工具,用于安装、构建、删除和管理 Debian 软件包。dpkg 的主要且更用户友好的前端是 aptitude

运行以下命令使用 dpkg 命令阻止给定的软件包。

语法:

$ echo "package_name hold" | sudo dpkg --set-selections

运行以下 dpkg 命令以保留 apache2 包。

$ echo "apache2 hold" | sudo dpkg --set-selections

保留软件包后,请运行以下命令查看它们。

$ sudo dpkg --get-selections | grep "hold"
apache2                        hold

它会显示在执行完整的系统更新时,不会升级 apache2包。

$ sudo apt update

Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
  apache2
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

运行以下命令,使用 dpkg 命令取消对指定软件包的保留。

语法:

$ echo "package_name install" | sudo dpkg --set-selections

运行以下命令,使用 dpkg 命令取消保留 apache2 包。

$ echo "apache2 install" | sudo dpkg --set-selections

方法 3:如何使用 aptitude 命令排除 Debian/Ubuntu 系统上的软件包更新

aptitude 命令是 Debian 及其衍生版本的基于文​​本的软件包管理界面。

它允许用户查看软件包列表并执行软件包管理任务,例如安装、升级和删除软件包。它可以从可视界面或命令行执行操作。

运行以下命令,使用 aptitude 命令保留指定的软件包。

$ sudo aptitude hold python3

保留某些软件包后,请运行以下命令查看它们。

$ sudo dpkg --get-selections | grep "hold"
或者
$ sudo apt-mark showhold

python3

这表明在执行完整的系统更新时,不会升级 python3 软件包。

$ sudo apt update

Reading package lists… Done
Building dependency tree
Reading state information… Done
Calculating upgrade… Done
The following packages have been kept back:
  python3
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

使用 aptitude 命令运行以下命令以解除对 python3 软件包的保留。

$ sudo aptitude unhold python3

via: https://www.2daygeek.com/debian-ubuntu-exclude-hold-prevent-packages-from-apt-get-upgrade/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出