无法找到软件包libssl1.1

我正在尝试安装这个依赖项,但一直收到这个错误消息:
这是我在终端中输入的内容:
sudo apt install libssl1.1
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package libssl1.1
E: Couldn't find any package by glob 'libssl1.1'

如何获取libssl1.1
我对Linux非常陌生,所以不知道这是否是一个显而易见的问题。
我正在使用Ubuntu 22.04 LTS。

为什么你需要libssl1.1? - Esther
我只是在按照这个教程将DaVinci安装程序转换成Debian的步骤进行操作。教程链接:https://www.youtube.com/watch?v=NSfZ1nn0cdA&t=243s - Some Guy
1libssl1.1已过时。 - Pilot6
1为什么你想要转换它呢?为什么不去询问或搜索如何在Ubuntu上安装达芬奇的答案呢? - Pilot6
抱歉,作为一个文本模型,我无法直接访问互联网上的特定网页或链接。然而,如果您提供要翻译的英文文本,我将很乐意帮助您将其翻译成中文。 - Esther
我真的不知道,兄弟。我试了一下PDF上的说明,结果是个死胡同,然后我在YouTube上搜索,结果遇到了这个问题,现在我就来到了这个论坛。也许我应该直接来这个论坛。就像我说的,我对所有这些Linux的东西都感到新奇和困惑。 - Some Guy
22.04正在使用libssl3。然而,为了给其他评论提供一个使用案例:我正在尝试安装一个尚未更新到libssl3并且对该应用的支持似乎有限或缓慢的应用程序。这对我来说是一个关键的应用程序,所以我非常需要为这个传统应用程序提供libssl1.1。因此,我有同样的问题,并且快速搜索将我带到了这里。 - David Parks
10你需要明白在Ubuntu 22.04中已经不再使用libssl1.1。所以你有几个选择:1)要么理解你正在做的事情,并通过libssl3使事情正常工作;2)在容器或虚拟机中运行你的旧应用程序,使用较旧版本的Ubuntu(例如20.04),该版本包含libssl1.1。将libssl1.1混合到Ubuntu 22.04中是一个非常糟糕的主意。 - Artur Meinild
@ArturMeinild 这是一个很好的回答,你应该将其发布为正式回答,而不仅仅是评论。假设你对无法混合使用的断言有信心。容器/虚拟机解决方案是一个不错的选择(尽管对于我这种需要手动调整网络路由以使容器解决方案工作的情况来说有些烦人)。如果有一种好的方法来安装libssl1.1并设置一个环境,更新路径到libssl1.1,那对于传统应用程序来说会更容易。打开传统应用程序比容器方法要困难得多,但两者都不太理想。 - David Parks
试试这个教程,来自Blackmagic论坛,我觉得你需要安装libssl-dev。这对我起作用了。 - abu-ahmed al-khatiri
这对我解决了问题。https://gist.github.com/joulgs/c8a85bb462f48ffc2044dd878ecaa786 - Pedro Braude
4个回答

Ubuntu 22.04使用libssl3,因此libssl1.1在此时已被弃用。
为Ubuntu 22.04创建一个使用过时的libssl版本的新软件包似乎是一个非常糟糕的主意。同样地,对于像libssl这样的系统级库进行版本混乱也是一个非常糟糕的主意,可能会在未来产生不可预测的后果。
因此,如果您将继续使用Ubuntu 22.04,一种选择是将您的应用程序转换为使用libssl3。
另一种选择是在虚拟机或容器中运行旧版应用程序,在那里您可以安装一个安装了libssl1.1的较旧版本的Ubuntu(例如20.04)。
在您的情况下,这两个选项似乎是最可行的路径。

好的,Arthur我明白了。然而很不幸,我今天早上在看到你的消息之前已经安装了它。所以现在它已经在我的22.04系统上了。而且似乎无论是apt、dpkg还是aptitude都不愿意移除它(至少不能在不移除其他许多软件包的情况下)。 - Dreamcat4
好的,我能够使用 dpkg 移除那个包(libssl1.1)。然而,apt 在大约十几个包上报错,例如说:Depends: libssl1.1 (>= 1.1.1) but it is not installable,而 libssl3 则一直安装并存在于系统中... 就像它没有意识到它作为一个备选项存在。 - Dreamcat4
在没有任何明确的方法修复apt / dpkg数据库(或者无论以什么样的破损状态,仅仅通过安装libssl1.1导致的),我只能从备份中重新映像整个驱动器。这似乎有些严厉,但是考虑到我刚刚在昨天对驱动器进行了镜像,这是一个非常简单的摆脱困境的方式。不过,如何从这种破坏中恢复(而不卸载700个必要的软件包!)仍然是一个很好的问题!呵呵 - Dreamcat4

虽然我认为Artur给出的建议很好。但是我成功解决了一个旧应用程序(具体来说是easytether-usb)的问题,方法是从1.1版本中获取libcrypto.so.1.1,正如@Nishant在他的回答中提到的那样。我将其安装在我的用户空间下的主目录,并在/lib/libcrypto.so.1.1中创建了一个符号链接。
sudo ln -s ~/openssl/lib/libcrypto.so.1.1 /lib/libcrypto.so.1.1

通常情况下,您可以将~/openss/lib添加到特定应用程序的LD_LIBRARY_PATH中。但在我的情况下,旧版应用程序没有正确查找$LD_LIBRARY_PATH,所以我不得不找出它正在寻找libcrypto.so.1.1的位置,我通过以下方式实现了这一点:
sudo strace -e trace=open,openat,close,read,write,connect,accept easytether-usb

那个给我展示了大约十几次尝试在不同的位置找到文件libcrypto.so.1.1,这就是为什么我知道要在上面添加符号链接到/lib/的原因。
之后,传统应用程序启动并正常工作。其他用例可能需要其他共享库。上面的strace命令应该有助于确定所需的内容。

不错的详细解决方案 - 是的,我同意你应该意识到可能的后果。 - Artur Meinild


2仅仅从Bionic软件源安装libssl1.1可能会在长期内产生不可预测的后果。 - Artur Meinild
2此外,手动安装诸如libssl1.1这样的软件包,将不会自动获得安全更新(而且在不到一年的时间内将不再接收任何更新),似乎是一个极大的安全风险 - 还记得心脏出血漏洞吗? - Artur Meinild
2这是一个非常有用的参考。你可以将libssl1.1放在用户空间的某个位置,并手动引用特定遗留应用程序所需的共享库,正如我在我的答案中详细说明的那样。虽然存在安全风险,但对于遗留应用程序来说,没有太多更好的选择。不过,警告还是要谨慎对待。 - David Parks

一种我推荐的方法是将focal存储库放入22.04 LTS的sources.list中。您只需复制main、universe和multiverse行,并用focal替换jelly。
然后执行sudo apt update命令,它还会从focal存储库更新,然后您可以从focal repo安装预编译的libssl1.1。但请确保稍后将其注释掉,因为它可能会与后续的软件包产生冲突。

显然人们不喜欢有一个更聪明的答案,哈哈 - thecow milk