我正在使用 Ubuntu 21.10顽皮的因德里。
对于某些特定的硬件支持,我建议升级到内核 5.16(主线)。我尝试手动安装.deb
文件并使用 安装它们dpkg -i
。但是,我遇到了依赖性问题:
The following packages have unmet dependencies:
linux-headers-5.16.0-051600-generic : Depends: libssl3 (>= 3.0.0~~alpha1) but it is not installable
我运行sudo apt -f install
后,系统建议删除 5.16 内核包。因此,我暂时删除了它们。
如何在 Ubuntu 21.10 上安装内核 5.16顽皮的因德里? 我已启用所有存储库,无需额外的 PPA。
答案1
总结:您可以从 22.04 存储库手动安装该包。
Ubuntu 主线内核 5.15.7+ 和 5.16 将要求从libssl1.1 (>= 1.1.0)
提高到libssl3 (>= 3.0.0~~alpha1)
。但是,libssl3
软件包不是 适用于 Ubuntu 21.10顽皮的因德里。。 这只是适用于 Ubuntu 22.04果酱水母尚未发布。
libssl3
进一步取决于libc6
>=2.34
以及debconf
哪个可在 21.10 存储库中使用。
因此,你可以libssl3
从 Jammy Jellyfish 存储库手动安装。除非你对系统做了一些非常奇怪的事情,否则你这样做不会遇到任何问题。
要在 Ubuntu 21.10 上安装libssl3
,请运行以下命令:
sudo apt update
sudo apt install libc6 debconf
wget http://mirrors.kernel.org/ubuntu/pool/main/o/openssl/libssl3_3.0.1-0ubuntu1_amd64.deb
sudo dpkg -i libssl3_3.0.1-0ubuntu1_amd64.deb
sudo apt -f install
现在,您可以在 Ubuntu 21.10 上安装内核 5.16 而不会出现任何问题。
请记住,主线内核尚未在其 Ubuntu 版本中测试。这意味着您正在进行测试。您可能会遇到意外情况。Ubuntu 更喜欢稳定的 LTS 内核,而不是不稳定的主线内核。
您可以使用以下命令安装未签名的内核 5.16(除非你使用安全启动,否则不要担心未签名):
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-headers-5.16.0-051600_5.16.0-051600.202201092355_all.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-headers-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-image-unsigned-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16/amd64/linux-modules-5.16.0-051600-generic_5.16.0-051600.202201092355_amd64.deb
sudo dpkg -i linux*.deb
sudo apt -f install
答案2
手动安装的替代方法libssl3
是固定该包。固定的说明见社区帮助 Wiki。
您需要编辑 3 个文件。sudo touch <filename>
如果它们尚不存在,请先创建它们。这可确保权限和所有权设置正确。
/etc/apt/apt.conf.d/01ubuntu
APT::Default-Release "impish";
这使得impish
安装软件包成为默认的 Ubuntu 版本。
/etc/apt/sources.list.d/ubuntu-jammy.list
deb http://mirror.example.com/ubuntu/ jammy main
这将添加jammy
(22.04) 存储库。Ubuntu 实际上默认不使用它,因为 的值APT::Default-Release
。我再说一遍,我再怎么强调也不为过:Ubuntu 永远不会从这个(或任何其他)jammy
存储库安装任何软件包,除非以下条件之一成立:
- 您明确告诉
apt
安装仅存在于存储库中的特定版本jammy
(这假设您知道自己在做什么!) - 某个包(的特定版本)被作为依赖项引入
- 您使用固定功能创建了一般规则的例外 - 请参阅下一个文件。
- 该软件包不存在于主 Ubuntu 存储库中,仅存在于添加的第三方存储库(如 PPA)中。
/etc/apt/preferences.d/libssl3
Package: libssl3
Pin: release n=jammy
Pin-Priority: 900
libssl3
这会为来自存储库的包赋予更高的优先级jammy
,并且仅此包。因此对于所有包,impish
这是默认设置,而对于则libssl3
有例外。
现在运行sudo apt update
。在编辑完所有 3 个文件之前请勿运行它!
要查看要安装的软件包,请运行apt-cache policy
:
$ apt-cache policy libssl3
libssl3:
Installed: (none)
Candidate: 3.0.1-0ubuntu1
Version table:
3.0.1-0ubuntu1 900
500 http://mirror.unix-solutions.be/ubuntu jammy/main amd64 Packages
100 /var/lib/dpkg/status
libssl3
如您所见,存储库中只有一个安装候选项jammy
。
$ apt-cache policy linux-image-generic
linux-image-generic:
Installed: 5.13.0.35.44
Candidate: 5.13.0.35.44
Version table:
5.15.0.22.24 500
500 http://mirror.unix-solutions.be/ubuntu jammy/main amd64 Packages
*** 5.13.0.35.44 990
990 http://mirror.unix-solutions.be/ubuntu impish-updates/main amd64 Packages
990 http://mirror.unix-solutions.be/ubuntu impish-security/main amd64 Packages
100 /var/lib/dpkg/status
5.13.0.19.30 990
990 http://mirror.unix-solutions.be/ubuntu impish/main amd64 Packages
该软件包linux-image-generic
可用:
- 在版本
5.15.0.22.24
中jammy/main
,优先500
- 在版本中
5.13.0.35.44
,在impish-updates/main
和中impish-security/main
,优先990
- 在 版本
5.13.0.19.30
(发布时来自 USB 或 DVD 安装程序的原始版本),在 中impish/main
,优先于990
。
表示***
将安装哪个版本。
在我的特定用例中,我必须安装许多内核:,,,,5.13
。我目前安装了 35 个内核:5.14
5.15
5.16
5.17
$ ls -1 /boot/initrd* | wc --lines
35
为了演示libssl
在需要时自动作为依赖项安装,我安装了 Ubuntu 内核5.15.0-22-generic
,它也来自 Jammy:
$ sudo apt install linux-{image,headers,modules,modules-extra}-5.15.0-22-generic
Reading package lists... Done
Building dependency tree... Donesudo apt install linux-{image,headers,modules,modules-extra}-5.15.0-22-generic
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libssl3 linux-headers-5.15.0-22
Suggested packages:
fdutils linux-doc | linux-source-5.15.0
The following NEW packages will be installed:
libssl3 linux-headers-5.15.0-22 linux-headers-5.15.0-22-generic linux-image-5.15.0-22-generic linux-modules-5.15.0-22-generic linux-modules-extra-5.15.0-22-generic
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 103 MB of archives.
After this operation, 565 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Reading state information... Done
The following additional packages will be installed:
libssl3 linux-headers-5.15.0-22
Suggested packages:
fdutils linux-doc | linux-source-5.15.0
The following NEW packages will be installed:
libssl3 linux-headers-5.15.0-22 linux-headers-5.15.0-22-generic linux-image-5.15.0-22-generic linux-modules-5.15.0-22-generic linux-modules-extra-5.15.0-22-generic
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 103 MB of archives.
After this operation, 565 MB of additional disk space will be used.
Do you want to continue? [Y/n]
如您所见,该包libssl3
已自动作为依赖项引入。
如果不需要 5.15 内核,那么可以直接安装libssl3
:
$ sudo apt install --yes libssl3
尽管如此,你仍然没有安装主线内核,我非常同意所有关于永久添加内核 PPA 的警告。作为替代方案,你可以使用Ubuntu 主线内核安装程序(UMKI),一个用于安装最新主线内核的图形工具。它从主线内核 PPA 获取列表,而实际上不需要将 PPA 添加到您的源中。您可以.deb
从 GitHub 发布页面安装该软件包,或者执行以下操作:
sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update
sudo apt install mainline
如果您不喜欢(或不能使用)GUI,它还有一个 CLI:
$ mainline
mainline 1.0.15
Distribution: Ubuntu 21.10
Architecture: amd64
Running kernel: 5.13.0-22-generic
mainline 1.0.15 - Ubuntu Mainline Kernel Installer
Syntax: mainline <command> [options]
Commands:
--check Check for kernel updates
--notify Check for kernel updates and notify current user
--list List all available mainline kernels
--list-installed List installed kernels
--install-latest Install latest mainline kernel
--install-point Install latest point update for current series
--install <name> Install specified mainline kernel(1)
--uninstall <name> Uninstall specified kernel(2)
--uninstall-old Uninstall kernels older than the running kernel
--download <name> Download specified kernels(2)
--clean-cache Remove files from application cache
Options:
--include-unstable Include unstable and RC releases
--hide-unstable Hide unstable and RC releases
--debug Enable verbose debugging output
--yes Assume Yes for all prompts (non-interactive mode)
--user Override user
Notes:
(1) A version string taken from the output of --list
(2) One or more version strings (comma-separated) taken from the output of --list
例如sudo mainline --install-latest --include-unstable
当前安装主线内核5.17.0-rc7
。
到目前为止,我已经使用 UMKI 安装了 12 个不同的内核,我对此非常满意。
只要您严格按照上述步骤操作,此方法是安全的,只需安装libssl
。不相信?没问题。在虚拟机等安全环境中亲自尝试一下。还是不相信?删除(或注释掉)该文件/etc/apt/sources.list.d/ubuntu-jammy.list
安装后立即再次libssl
运行sudo apt update
。
还有一件事要完成:如果你决定从 升级impish
到jammy
,那么你只需要删除(或注释)这 3 个文件/etc/apt/apt.conf.d/01ubuntu
,/etc/apt/sources.list.d/ubuntu-jammy.list
,/etc/apt/preferences.d/libssl3
在开始升级之前。第一个是必须的,其他两个只是一些日常工作,因为你不再需要它们。
此答案引用自Ubuntu 主线内核安装程序 GitHub 问题 127并构成了他们的基础关于安装 libssl 的 wiki 页面。您还可以阅读我的博客。