linux下依赖库的版本问题引起的安装失败:libssl-dev版本问题无法安装 :libssl-dev : 依赖: libssl1.0.0 (= 1.0.1-4ubuntu3) 但是 1.0.1-4ubuntu5.31 正要被安装

依赖库版本问题引起的安装失败解决方法如下有两种:

1、是由于源需要更新,如下操作:

libssl-dev : 依赖: libssl0.9.8 (= 0.9.8o-1ubuntu4) 但是 0.9.8o-1ubuntu4.4 正要被安装 解决方法

进入“系统->系统管理->更新管理器->设置”,在弹出的“软件源”对话框中选“更新”标签页,选中“Ubuntu 更新”下面的四个复选框,关闭后

在终端先执行“sudo apt-get update”就ok了。

转自:http://baalwolf.iteye.com/blog/1511259

2、使用aptitude软件包管理器来解决这个依赖问题,aptitude是可以选择合适的版本与匹配软件安装。

libssl-dev版本问题无法安装 : Depends: libssl1.0.0 (= 1.0.1t-1+deb7u2) but 1.0.1t-1+deb8u6 is to be installed

问题现象:

在安装libssl-dev 的时候提示错误:

  1. sudo apt-get install libssl-dev

  2.  

    Reading package lists... Done

  3.  

    Building dependency tree

  4.  

    Reading state information... Done

  5.  

    Some packages could not be installed. This may mean that you have

  6.  

    requested an impossible situation or if you are using the unstable

  7.  

    distribution that some required packages have not yet been created

  8.  

    or been moved out of Incoming.

  9.  

    The following information may help to resolve the situation:

  10.  

  11.  

    The following packages have unmet dependencies:

  12.  

    libssl-dev : Depends: libssl1.0.0 (= 1.0.1t-1+deb7u2) but 1.0.1t-1+deb8u6 is to be installed

  13.  

    Recommends: libssl-doc but it is not going to be installed

  14.  

    E: Unable to correct problems, you have held broken packages.

解决方法:

linux的版本依赖问题很令人纠结,不过我们可以通过使用aptitude软件包管理器来解决这个依赖问题,aptitude是可以选择合适的版本与匹配软件安装。

首先安装aptitude工具

sudo apt-get install aptitude

再利用aptitude来安装libssl-dev

sudo aptitude install libssl-dev
  1. The following NEW packages will be installed:

  2.  

    libssl-dev{b} libssl-doc{a}

  3.  

    0 packages upgraded, 2 newly installed, 0 to remove and 12 not upgraded.

  4.  

    Need to get 2,755 kB of archives. After unpacking 6,426 kB will be used.

  5.  

    The following packages have unmet dependencies:

  6.  

    libssl-dev : Depends: libssl1.0.0 (= 1.0.1t-1+deb7u2) but 1.0.1t-1+deb8u6 is installed.

  7.  

    The following actions will resolve these dependencies:

  8.  

  9.  

    Keep the following packages at their current version:

  10.  

    1) libssl-dev [Not Installed]

  11.  

  12.  

  13.  

  14.  

    Accept this solution? [Y/n/q/?] n

  15.  

    The following actions will resolve these dependencies:

  16.  

  17.  

    Downgrade the following packages:

  18.  

    1) libssl1.0.0 [1.0.1t-1+deb8u6 (now) -> 1.0.1t-1+deb7u2 (oldoldstable)]

  19.  

  20.  

  21.  

  22.  

    Accept this solution? [Y/n/q/?] y

  23.  

    The following packages will be DOWNGRADED:

  24.  

    libssl1.0.0

  25.  

    The following NEW packages will be installed:

  26.  

    libssl-dev libssl-doc{a}

  27.  

    0 packages upgraded, 2 newly installed, 1 downgraded, 0 to remove and 12 not upgraded.

  28.  

    Need to get 3,825 kB of archives. After unpacking 6,420 kB will be used.

  29.  

    Do you want to continue? [Y/n/?] y

  30.  

    Get: 1 http://mirrors.aliyun.com/raspbian/raspbian/ wheezy/main libssl1.0.0 armhf 1.0.1t-1+deb7u2 [1,070 kB]

  31.  

    Get: 2 http://mirrors.aliyun.com/raspbian/raspbian/ wheezy/main libssl-dev armhf 1.0.1t-1+deb7u2 [1,528 kB]

  32.  

    Get: 3 http://mirrors.aliyun.com/raspbian/raspbian/ wheezy/main libssl-doc all 1.0.1t-1+deb7u2 [1,227 kB]

  33.  

    Fetched 3,825 kB in 5s (753 kB/s)

  34.  

    Preconfiguring packages ...

  35.  

    dpkg: warning: downgrading libssl1.0.0:armhf from 1.0.1t-1+deb8u6 to 1.0.1t-1+deb7u2

  36.  

    (Reading database ... 115760 files and directories currently installed.)

  37.  

    Preparing to unpack .../libssl1.0.0_1.0.1t-1+deb7u2_armhf.deb ...

  38.  

    Unpacking libssl1.0.0:armhf (1.0.1t-1+deb7u2) over (1.0.1t-1+deb8u6) ...

  39.  

    Selecting previously unselected package libssl-dev.

  40.  

    Preparing to unpack .../libssl-dev_1.0.1t-1+deb7u2_armhf.deb ...

  41.  

    Unpacking libssl-dev (1.0.1t-1+deb7u2) ...

  42.  

    Selecting previously unselected package libssl-doc.

  43.  

    Preparing to unpack .../libssl-doc_1.0.1t-1+deb7u2_all.deb ...

  44.  

    Unpacking libssl-doc (1.0.1t-1+deb7u2) ...

  45.  

    Processing triggers for man-db (2.7.5-1~bpo8+1) ...

  46.  

    Setting up libssl1.0.0:armhf (1.0.1t-1+deb7u2) ...

  47.  

    Setting up libssl-dev (1.0.1t-1+deb7u2) ...

  48.  

    Setting up libssl-doc (1.0.1t-1+deb7u2) ...

  49.  

    Processing triggers for libc-bin (2.19-18+deb8u10) ...

至此,问题解决,以后遇到版本不对导致依赖不对应的问题也可以采用上述的方法进行解决。

转自:https://blog.csdn.net/MENGHUANBEIKE/article/details/78052317?locationNum=10&fps=1

关于“ubuntu 安装软件的一些命令aptitude,apt-get”

aptitude

安装:

原文:http://www.isspy.com/aptitude-%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3/

aptitude aptitude 是 Debian GNU/Linux 系统中, 非常神奇的的软件包管理器,基于大名鼎鼎的 APT 机制, 整合了 dselect 和 apt-get的所有功能, 并提供的更多特性,特别是在依赖关系处理上。   aptitude与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用 的包,整个系统更为干净。   以下是一些常用 aptitude命令,仅供参考。

命令 作用
aptitude update 更新可用的包列表
aptitude upgrade 升级可用的包
aptitude dist-upgrade 将系统升级到新的发行版
aptitude install pkgname 安装包
aptitude remove pkgname 删除包
aptitude purge pkgname 删除包及其配置文件
aptitude search string 搜索包
aptitude show pkgname 显示包的详细信息
aptitude clean 删除下载的包文件
aptitude autoclean 仅删除过期的包文件

定义与介绍

要使用 aptitude, 只要打开您喜爱的终端, 键入如下命令即可。   de>#de> aptitude5 aptitude 的主视图组织的非常有条理,而且界面布局清爽.上部窗口列出的是软件包根据类别和它们在本地系统的状态排序。   aptitude是以树状结构组织的,相关节点以细线相连.可以使用方向键, [PageUp] 和 [PageDown] 进行定位.[Return] 或[Enter] 用于展开或收起某个节点.aptitude 的开视图分为四列: 软件包状态和请求动作, 软件包名称, 当前安装版本(或de><de>nonede>>de>), 最新版本.   aptitude软件包列表中的软件包状态:

v 虚拟
B 损坏
u 解包
C 预配置
H 预安装
c 卸载未清除
p 清除软件包
i 已经安装
E 内部错误
   

在aptitude软件包列表中的请求操作:

h 保持
p 清除
d 删除(卸载)
B 损坏
i 安装
r 重装
u 升级

快速开始

对于任何程序来说, 您首先知道的就是如何退出 — 在aptitude的主视图中键入[q](quit), 即可退出 aptitude. 任何时候您键入[?](help), 都可以唤出帮助信息.   aptitude是基于apt机制的, 因此在进一步操作前你需要正确的配置sources.list文件.并确保 软件包列表得到了及时的更新. [u](update)命令就是为此设计的, 这类似于 apt-get update 操作.   如果出现了新的软件包(也就是说, 至上次软件包列表更新时, 仍为出现的软件包), 将会在 New Packages 选项下显示. 您可以键入[f](forget that packages are new)命令, 将它们清除到可用软件包选项中去.   移动光标到您感兴趣的行, 然后键入回车, 将选项展开. 选定一个软件包后, 有关软件包的信息将会出现在屏幕底部. 如果要查看更详细的信息, 则需要键入[i](information). 键入 [q] (quit)则会退出信息显示屏幕.   对于没有安装的软件包(位于 New Packages 或 Not Installed Packages 区域), 可以选定后, 键入[+](add package), 以标示安装.   对于已经安装的软件包, 则可以进行保持, 删除, 或清除等操作. 保持[=](hold)是指保持软件包的现有版本, 而禁止对其升级. 删除 [-](remove package) 标记已安装软件包为删除状态. [_](purge package) 命令则将软件包标记为清除状态.   一旦您标记完感兴趣的软件包, 就可以键入 [g](go )以保存修改, 使其生效.

软件包的选择

可以通过浏览,然后按下对应键进行操作:

de>[+]de> 选定要安装的软件包.
de>[-]de> 选定要删除的软件包.
de>[_]de> 选定要清除的软件包.
de>[=]de> 保持软件包的当前版本,阻止其被升级.
de>[:]de> 仅在aptitude会话期间锁定软件包.
de>[L]de> 请求重装软件包.
de>[M]de> 将软件包标记为自动安装.自动安装的软件包
  在手动安装的包对其没有依赖需求时会自动删除.
de>[m]de> 将软件包标记为手动.
de>[R]de> 请求重新配置软件包.
de>[I]de> 请求立即安装软件包(以其依赖包)并暂时锁定其它升级和
  安装的软件包.作用与apt-get install de><package>de>相同.
de>[F]de> 禁止安装某个版本的软件包.但是,对更高版本正常使用.
de>[B]de> 调用reportbug,申报一个软件包的错误.
de>[C]de> 下载并显示一个软件包的变更日志.
de>[g]de> 进入所有请求变更的预览窗口.如果在预览屏键入此键,
  将执行变更操作.
de>[d]de> 查询相关软件包: suggest/recommanded/depends
de>[r]de> 查询依赖包
de>[/]de> 搜索
de>[\]de> 继续搜索
   

注: Control-u组合键可用于取消上一步的动作.

apt-get

注意:ubuntu新版本中apt和apt-get一样,apt是新版本

在Ubuntu下,apt-get近乎是最常用的shell命令之一了,因为他是Ubuntu通过新立得安装软件的常用工具命令。

本文列举了常用的APT命令参数:

  • apt-cache search package 搜索软件包
  • apt-cache show package  获取包的相关信息,如说明、大小、版本等
  • sudo apt-get install package 安装包
  • sudo apt-get install package --reinstall   重新安装包
  • sudo apt-get -f install   修复安装
  • sudo apt-get remove package 删除包
  • sudo apt-get remove package --purge 删除包,包括配置文件等
  • sudo apt-get update  更新源
  • sudo apt-get upgrade 更新已安装的包
  • sudo apt-get dist-upgrade 升级系统
  • apt-cache depends package 了解使用该包依赖那些包
  • apt-cache rdepends package 查看该包被哪些包依赖
  • sudo apt-get build-dep package 安装相关的编译环境
  • apt-get source package  下载该包的源代码
  • sudo apt-get clean && sudo apt-get autoclean 清理无用的包
  • sudo apt-get check 检查是否有损坏的依赖

deb 文件安装 及与 rpm 互转

  1. $sudo apt-get install alien ##alien默认没有安装,所以首先要安装它

  2.  

  3.  

    $sudo alien xxxx.rpm ##将rpm转换为deb,完成后会生成一个xxxx.deb

  4.  

  5.  

    $sudo dpkg -i xxxx.deb ##这样xxxx软件就可以安装完成了

  6.  

    dpkg -l 软件模糊名× 查看已经安装过的软件

  7.  

    $sudo dpkg -r xxxx 删除软件不删除配置,xxxx为软件名字,不是包名,可以用 dpkg -l 软件模糊名×查看

  8.  

    $sudo dpkg -P xxxx.deb 删除软件和相应的配置

dpkg是一个debian包管理工具。能够对包进行安装、卸载、获取信息等操作。
用法:
    安装(解包并配置):
       dpkg -i package_file
       dpkg --install package_file

解包:
       dpkg --unpack package_file
          该命令仅对“package_file“进行解包操作,不会执行包配置工作。

配置包:
       dpkg --configure package
          
    卸载包:
       dpkg -r package
       dpkg --remove package
          该命令删除包,但保留配置文件。
       dpkg -P package
       dpkg --purge package
          该命令删除包,且删除配置文件。

获取、设置、清除包的选择状态:
       dpkg --get-selections [package]
          输出到标准输出,可以使用管道或重定向。
       dpkg --set-selections
          从标准输入获取,可以使用管道或重定向。
       dpkg --clear-selections 
          将所有包都标记为卸载。

apt 源配置

apt-get 源配置文件 vim /etc/apt/sources.list

转自:https://blog.csdn.net/u013378306/article/details/70146194/

原文地址:https://www.cnblogs.com/liushui-sky/p/9304495.html

时间: 2024-08-03 06:09:46

linux下依赖库的版本问题引起的安装失败:libssl-dev版本问题无法安装 :libssl-dev : 依赖: libssl1.0.0 (= 1.0.1-4ubuntu3) 但是 1.0.1-4ubuntu5.31 正要被安装的相关文章

谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH PKG_CONFIG_PATH

谈谈Linux下动态库查找路径的问题 ldconfig LD_LIBRARY_PATH  PKG_CONFIG_PATH 转载自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=23069658&id=4028681 学习到了一个阶段之后,就需要不断的总结.沉淀.清零,然后才能继续“上路”.回想起自己当年刚接触Linux时,不管是用源码包编译程序,还是程序运行时出现的和动态库的各种恩恩怨怨,心里那真叫一个难受.那时候脑袋里曾经

Linux下静态库与动态库

一.基本概念 1.1.什么是库        在 windows 平台和 linux 平台下都大量存在着库. 本质上来说库是一种可执行的二进制代码(但不可以独立执行),可以被操作系统载入内存执行. 由于 windows 和 linux 的平台不同(主要是编译器.汇编器和连接器 的不同),因此二者库的二进制是不兼容的. 本文仅限于介绍 linux 下的库. 1.2. 库的种类 linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同: 静态库的代码在编译过程中已经被

linux下静态库和动态库一些东西

http://www.cnblogs.com/changefuture/archive/2011/12/22/2297460.html Linux  动态链接库和静态库示例 文件预览 文件目录树如下,如你所见,非常简单. libtest/ |-- lt.c |-- lt.h `-- test.c 代码 #lt.c /* lt.c * */ #include <stdio.h> void myprint(void) { printf("Linux library test!\n&quo

Linux下动态库生成和使用

Linux下动态库生成和使用 一.动态库的基本概念 1.动态链接库是程序运行时加载的库,当动态链接库正确安装后,所有的程序都可以使用动态库来运行程序.动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的.库中函数和变量的地址是相对地址,不是绝对地址,其真实地址在调用动态库的程序加载时形成. 2.动态链接库的名称有别名(soname), 真名(realname)和链接名(linker name).别名由一个前缀lib,然后是库的名字,再加上一个后缀“.so”构成.真名是

Linux下动态库的使用

[简介] linux环境下的动态库一般名为libxxx.so, 用ldd命令分析某个可执行程序,可以看到该程序依赖哪些动态库,以及路径. 如 ldd ./test linux-vdso.so.1 =>  (0x00007fffaab52000) libc.so.6 => /lib64/libc.so.6 (0x0000003c4c800000) /lib64/ld-linux-x86-64.so.2 (0x0000003c4c000000) 如果有依赖库找不到,程序会无法正常运行. [创建一个

Linux下的库操作工具-nm、ar、ldd、ldconfig和ld.so

Linux下的库操作工具-nm.ar.ldd.ldconfig和ld.so 1.nm [options] file 列出file中的所有符号 [option] -c 将符号转化为用户级的名字 -s 当用于.a文件即静态库时,输出把符号名映射到定义该符号的模块或成员名的索引 -u 显示在file外定义的符号或没有定义的符号 -l 显示每个符号的行号,或为定义符号的重定义项 2.ar {dmpqrtx} [member] archive file 用于操作高度结构化的存档文件(.a) [option

linux下的库链接

linux下的编译一般都是需要一些头文件或者库文件的支持,头文件或者库文件一般的默认路径是在/usr/include/ 和/usr/lib/下的,但是当你需要的文件没有在默认的路径下,该怎么办尼,这里提供了几种链接到的方法: 1.$ gcc foo.c -I /home/liuru/include -o foo                                               链接到/home/liuru/include 下的头文件,使用-I选项 2.$ gcc foo

linux下动态库的编写和调用

linux下动态库的编写和调用 linux下编写和调用一个简单的动态库大概分为以下几个步骤: - 创建动态库程序文件 add.c int add(int a,int b) { return a+b; } 创建引用头文件 head.c #ifndef _HEAD_ #define _HEAD_ int add(int a,int b); #endif 生成目标文件 生成要加编译器选项 -fpic gcc -fpic -c add.c 然后生成动态库 注意使用链接器选项 -shared gcc -s

Linux下静态库和动态库的制作与使用

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 10.5pt; font-family: "Times New Roman", serif } h2 { margin-top: 14.0pt; margin-right: 0cm; margin-bottom: 14.0pt; margin-left: 28.8pt;

Linux下静态库生成和使用

Linux下静态库生成和使用 一.静态库概念 1.库是预编译的目标文件(object  files)的集合,它们可以被链接进程序.静态库以后缀为”.a”的特殊的存档(archive file)存储. 2.标准系统库可在目录/usr/lib与/lib中找到.比如,在类Unix系统中C语言的数序库一般存储为文件/usr/lib/libm.a.该库中函数的原型声明在头文件/usr/include/math.h中. 3.C标准库本身存储为/usr/lib/libc.a,它包含ANS1/ISO标准指定的函