Ubuntu 安装libjpeg-dev 时报错

1. 问题

工作需要安装libjpeg-dev,出现如下错误:

syberos@thinkpad-p15v-1:~/work$ sudo apt-get install libjpeg-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 libjpeg-dev : 依赖: libjpeg8-dev 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

2. 分析和解决问题

查找资料后确认是有其他软件依赖其他版本库. 继续尝试安装他的依赖libjpeg8-dev:

syberos@thinkpad-p15v-1:~/work$ sudo apt-get install libjpeg8-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 libjpeg8-dev : 依赖: libjpeg-turbo8-dev (>= 1.1.90+svn722-1ubuntu6) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

看到下面就有提示信息了, libjpeg8-dev : 依赖 libjpeg-turbo8-dev ,且版本不对,再尝试安装libjpeg-turbo8-dev:

syberos@thinkpad-p15v-1:~/work$ sudo apt-get install libjpeg-turbo8-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:
1.5.2-0ubuntu5.18.04.4 
下列软件包有未满足的依赖关系:
 libjpeg-turbo8-dev : 依赖: libjpeg-turbo8 (= 1.4.2-0ubuntu3.4) 但是 1.5.2-0ubuntu5.18.04.4 正要被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

这样就看出了, 我们已经安装了 ibjpeg-turbo8 1.5.2-0ubuntu5.18.04.4 这个版本,但是 libjpeg-turbo8-dev 库依赖的是libjpeg-turbo8 = 1.4.2-0ubuntu3.4这版本,所以接下来安装libjpeg-turbo8 = 1.4.2-0ubuntu3.4版本的 libjpeg-turbo8库就可以了:

syberos@thinkpad-p15v-1:~/work$ sudo apt-get install  libjpeg-turbo8=1.4.2-0ubuntu3.4
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  aptitude-common libboost-iostreams1.58.0 libcwidget3v5 libsigc++-2.0-0v5 libxapian22v5
使用'sudo apt autoremove'来卸载它(它们)。
下列软件包将被【降级】:
  libjpeg-turbo8
升级了 0 个软件包,新安装了 0 个软件包,降级了 1 个软件包,要卸载 0 个软件包,有 11 个软件包未被升级。
需要下载 111 kB 的归档。
解压缩后将会空出 61.4 kB 的空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 libjpeg-turbo8 amd64 1.4.2-0ubuntu3.4 [111 kB]
已下载 111 kB,耗时 0秒 (332 kB/s)     
debconf: 因为并未安装 apt-utils,所以软件包的设定过程将被推迟
dpkg: 警告: 即将把 libjpeg-turbo8:amd64 从 1.5.2-0ubuntu5.18.04.4 降级到 1.4.2-0ubuntu3.4
(正在读取数据库 ... 系统当前共安装有 267777 个文件和目录。)
正准备解包 .../libjpeg-turbo8_1.4.2-0ubuntu3.4_amd64.deb  ...
正在将 libjpeg-turbo8:amd64 (1.4.2-0ubuntu3.4) 解包到 (1.5.2-0ubuntu5.18.04.4) 上 ...
正在设置 libjpeg-turbo8:amd64 (1.4.2-0ubuntu3.4) ...
正在处理用于 libc-bin (2.27-3ubuntu1.2) 的触发器 ...

接着安装:

syberos@thinkpad-p15v-1:~/work$ sudo apt-get install libjpeg-turbo8-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  aptitude-common libboost-iostreams1.58.0 libcwidget3v5 libsigc++-2.0-0v5 libxapian22v5
使用'sudo apt autoremove'来卸载它(它们)。
下列【新】软件包将被安装:
  libjpeg-turbo8-dev
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 11 个软件包未被升级。
需要下载 254 kB 的归档。
解压缩后会消耗 1,418 kB 的额外空间。
获取:1 http://mirrors.aliyun.com/ubuntu xenial-updates/main amd64 libjpeg-turbo8-dev amd64 1.4.2-0ubuntu3.4 [254 kB]
已下载 254 kB,耗时 2秒 (158 kB/s)          
debconf: 因为并未安装 apt-utils,所以软件包的设定过程将被推迟
正在选中未选择的软件包 libjpeg-turbo8-dev:amd64。
(正在读取数据库 ... 系统当前共安装有 267777 个文件和目录。)
正准备解包 .../libjpeg-turbo8-dev_1.4.2-0ubuntu3.4_amd64.deb  ...
正在解包 libjpeg-turbo8-dev:amd64 (1.4.2-0ubuntu3.4) ...
正在设置 libjpeg-turbo8-dev:amd64 (1.4.2-0ubuntu3.4) ...

最后安装 libjpeg-dev就可以了, 管理器会自动安装依赖 libjpeg8-dev, 如下图:

syberos@thinkpad-p15v-1:~/work/$ sudo apt-get install libjpeg-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  aptitude-common libboost-iostreams1.58.0 libcwidget3v5 libsigc++-2.0-0v5 libxapian22v5
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  libjpeg8-dev
下列【新】软件包将被安装:
  libjpeg-dev libjpeg8-dev
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 11 个软件包未被升级。
需要下载 3,098 B 的归档。
解压缩后会消耗 53.2 kB 的额外空间。
您希望继续执行吗? [Y/n] y
获取:1 http://mirrors.aliyun.com/ubuntu xenial/main amd64 libjpeg8-dev amd64 8c-2ubuntu8 [1,552 B]
获取:2 http://mirrors.aliyun.com/ubuntu xenial/main amd64 libjpeg-dev amd64 8c-2ubuntu8 [1,546 B]
已下载 3,098 B,耗时 0秒 (17.1 kB/s)    
debconf: 因为并未安装 apt-utils,所以软件包的设定过程将被推迟
正在选中未选择的软件包 libjpeg8-dev:amd64。
(正在读取数据库 ... 系统当前共安装有 267794 个文件和目录。)
正准备解包 .../libjpeg8-dev_8c-2ubuntu8_amd64.deb  ...
正在解包 libjpeg8-dev:amd64 (8c-2ubuntu8) ...
正在选中未选择的软件包 libjpeg-dev:amd64。
正准备解包 .../libjpeg-dev_8c-2ubuntu8_amd64.deb  ...
正在解包 libjpeg-dev:amd64 (8c-2ubuntu8) ...
正在设置 libjpeg8-dev:amd64 (8c-2ubuntu8) ...
正在设置 libjpeg-dev:amd64 (8c-2ubuntu8) ...

至此,我们就解决了这个问题了,.

3. 总结

下列软件包有未满足的依赖关系:
libjpeg-dev : 依赖: libjpeg8-dev 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
类似依赖问题,应该就是软件版本不对导致依赖不能安装,找到对应依赖库的版本,就可以正常安装了.

上一篇:数码相框-----------字符编码


下一篇:第六章学习笔记