Ubuntu 18.04 下 OpenCV 依赖安装:从 libjasper-dev 困境到系统级构建优化
最近在给一台老旧的测试服务器配置计算机视觉环境,系统是 Ubuntu 18.04 LTS。当我像往常一样,准备通过 apt 安装 OpenCV 的构建依赖时,熟悉的 libjasper-dev 报错再次出现:“无法定位软件包 libjasper-dev”。这个错误对于仍在维护 18.04 系统的开发者来说,几乎成了一个“成人礼”。它不仅仅是一个简单的包缺失问题,其背后折射出的是软件源生命周期、系统版本维护策略以及开源软件依赖链的复杂性。对于从事机器人、嵌入式视觉或需要复现旧有研究项目的开发者而言,学会优雅地解决此类问题,是保证开发环境稳定和可复现性的关键一步。本文将不仅仅提供三种解决 libjasper-dev 问题的方法,更会深入探讨每种方案背后的原理、潜在风险,并延伸至如何在 Ubuntu 18.04 这个“经典但渐老”的系统上,构建一个健壮、可维护的 OpenCV 开发环境。
1. 理解问题根源:为什么 libjasper-dev 会“消失”?
在着手解决之前,我们有必要先搞清楚 libjasper-dev 这个包为何会从默认的软件源中“消失”。这并非 Ubuntu 的 bug,而是一个有意的设计决策。
libjasper-dev 是 JasPer 库的开发文件,JasPer 是一个用于处理 JPEG-2000 图像编码的软件库。在早期 OpenCV 的构建中,它是一个可选的但经常被默认启用的依赖项,用于支持 JPEG-2000 格式。然而,大约在 2020 年左右,Ubuntu 在其主仓库和 security.ubuntu.com 中移除了 libjasper1 及其开发包 libjasper-dev。主要原因在于 JasPer 库被发现存在多个安全漏洞(CVE),而该库的维护状态并不活跃,上游更新缓慢。出于系统安全性的考虑,Ubuntu 官方选择从活跃的软件源中移除存在已知安全隐患的软件包。
这对于 Ubuntu 20.04 及更新版本的用户影响不大,因为 OpenCV 在新系统的仓库中可能已经更新了依赖配置,或者提供了替代方案。但对于 Ubuntu 18.04 用户,尤其是那些系统 sources.list 配置仍指向官方标准仓库的用户,在尝试安装旧版 OpenCV(如 3.x 或早期 4.x)的构建依赖时,就会撞上这堵墙。系统试图从一个已经不提供该包的仓库里拉取它,自然会导致“无法定位”的错误。
理解这一点至关重要:我们不是在修复一个破损的链接,而是在一个官方已不再支持特定软件包的系统中,寻找一个安全、可靠的替代来源来获取它。 所有解决方案都围绕这个核心展开。
2. 解决方案一:启用 Ubuntu 旧版本安全仓库(推荐初学者的稳妥路径)
这是最直接、也是网络上流传最广的解决方案。其核心思路是,虽然 Ubuntu 18.04 (bionic) 的主仓库移除了该包,但更早的 Ubuntu 16.04 LTS (xenial) 的安全仓库中仍然保留着这些包。我们可以临时添加这个旧系统的安全仓库来安装所需依赖。
操作步骤如下:
-
备份现有源列表(良好的习惯):
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup -
添加 Ubuntu 16.04 (Xenial) 的安全仓库: 执行以下命令,这会在你的系统中添加一个针对
xenial版本的安全更新源。sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"注意:
add-apt-repository命令会自动处理 GPG 密钥,通常无需手动添加。如果遇到密钥错误,可能需要额外执行sudo apt-key adv命令,但在此场景下较少见。 -
更新软件包列表:
sudo apt update此时,
apt会从所有已启用的仓库(包括刚添加的xenial-security)拉取最新的软件包索引信息。 -
安装 libjasper 库:
sudo apt install libjasper1 libjasper-dev现在,
apt应该

&spm=1001.2101.3001.5002&articleId=154390514&d=1&t=3&u=d5d9d8939b23409f8db10d334788427c)
7007

被折叠的 条评论
为什么被折叠?



