当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于依赖包的问题
帖子发表于 : 2015-12-04 9:46 
头像

注册: 2008-10-31 15:28
帖子: 910
地址: 中国上海
送出感谢: 0 次
接收感谢: 4
我一直有这样的疑问:
1、如果说YUM和APT是自动解决依赖关系的很好的机制,它是如何做到的??有时候我们手动安装DEB包会提示缺少xx,通常这个缺少的东东只是库文件,根本不是对应的软件包。网上搜了一大把,也没人详细说明这个缺少的库文件应该通过安装什么软件包来实现。当然了,有些名字上是有关联了,但不代表全部是这样。
2、既然YUM和APT能解决这个问题,说明他们是能够知道包所依赖的库文件通过其它安装其它什么包来实现。那为何不让我们也知道知道 ????

代码:
 sudo apt-get install ntop
将会安装下列额外的软件包:
  libdbi1 librrd4 ntop-data python-mako python-markupsafe
建议安装的软件包:
  graphviz geoip-database-contrib libjs-jquery libjs-jquery-ui python-beaker
  python-mako-doc
下列【新】软件包将被安装:
  libdbi1 librrd4 ntop ntop-data python-mako python-markupsafe


_________________
家乡:湖南张家界


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 关于依赖包的问题
帖子发表于 : 2015-12-04 9:56 
头像

注册: 2010-04-10 16:14
帖子: 2904
系统: Arch Linux
送出感谢: 8
接收感谢: 69
rpm 我不是太熟,但 dpkg -i 的时候提示缺少的一般是包名吧?
代码:
[email protected]:/var/cache/apt/archives# dpkg -i crafty_23.4-6_amd64.deb
Selecting previously unselected package crafty.
(Reading database ... 58940 files and directories currently installed.)
Unpacking crafty (from crafty_23.4-6_amd64.deb) ...
dpkg: dependency problems prevent configuration of crafty:
 crafty depends on libnuma1 (>= 2.0.5); however:
  Package libnuma1 is not installed.

dpkg: error processing crafty (--install):
 dependency problems - leaving unconfigured
Processing triggers for man-db ...
Errors were encountered while processing:
 crafty


_________________
dz,U,EIS. cies.
[email protected]
小香猪杀手@cc98.org


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 关于依赖包的问题
帖子发表于 : 2015-12-04 10:42 
头像

注册: 2008-09-18 13:11
帖子: 2797
送出感谢: 1
接收感谢: 456
你误会了。apt-get列出来的都是包名,和包中有没有库文件、库文件是什么名字没有必然联系。
名字上的相似是发行版打包政策的结果,包依赖机制上并没有硬性要求。
一个deb包中,会记录其依赖的其他包的包名,所以只要递归检查就行了
举个例子,某个源里有四个deb包:
包A依赖:包B、包C
包B依赖:包D
包C依赖:包D
包D依赖:无
然后你要安装包A,跟着依赖一层层走下去就知道还需安装BCD包

rpm包的基本原理也差不多,只是它直接列出依赖的库
举个例子,另一个源里有四个rpm包:
包A依赖:库X,库Y
包B提供:库X;依赖:库Z
包C提供:库Y;依赖:库Z
包D提供:库Z;依赖:无
你要安装包A,然后检查源里哪个包提供了库X和Y,查出来是B和C,继续查哪个提供了B和C需要的库Z,查到是D,最后知道需要额外安装BCD包


最后由 astolia 编辑于 2015-12-04 11:11,总共编辑了 1 次

页首
 用户资料  
 
4 楼 
 文章标题 : Re: 关于依赖包的问题
帖子发表于 : 2015-12-04 11:06 
头像

注册: 2008-10-31 15:28
帖子: 910
地址: 中国上海
送出感谢: 0 次
接收感谢: 4
astolia 写道:
一个deb包中,会记录其依赖的其他包的包名,所以只要递归检查就行了
至于yum,由于只能从rpm包中了解到依赖的库文件,所以yum自己会去根据包的内容和依赖关系维护一个数据库,加快递归查找的速度

哈哈,听君一席话。也就是说,DEB包头信息记录的直接是所依赖的包名称。以吗?比如下面信息:
代码:
Depends: libc6 (>= 2.15), libpcre3, libssl1.0.0 (>= 1.0.2~beta3), zlib1g (>= 1:1
.1.4), init-system-helpers (>= 1.18~), adduser

而RPM包只记录到库,所以YUM机制比APT更复杂???


_________________
家乡:湖南张家界


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 关于依赖包的问题
帖子发表于 : 2015-12-04 11:18 
头像

注册: 2008-09-18 13:11
帖子: 2797
送出感谢: 1
接收感谢: 456
稍微修改了一下3楼的。yum需要多做一步库名到包名的转换,其他的原理上和apt差不多


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 关于依赖包的问题
帖子发表于 : 2015-12-04 11:48 

注册: 2009-08-04 16:33
帖子: 16952
送出感谢: 21
接收感谢: 1836
引用:
依赖包

1. APT 工具
http://manpages.ubuntu.com/manpages/wil ... nds.1.html
apt-rdepends - performs recursive dependency listings similar to pt-cache

1-1. sudo apt-rdepends 套件名稱
可以遞迴列出 所有該套件名稱所依賴的套件
意思是 安裝這個套件 會把所有該套件套件名稱遞迴依賴的套件還沒安裝的一起安裝

1-2. sudo apt-rdepends -r 套件名稱
可以遞迴列出 所有依賴於該套件名稱的套件
意思是 移除這個套件套件名稱 可能會把所有依賴於該套件名稱的套件 一起移除
實際上 會不會移除 還有其它過濾條件 比較複雜 在此先略過

1-3. 補充
1-3-1. 上面的套件名稱 並不限於已安裝套件
1-3-2. 參考上述 manpage 下方 Bug 段 看看 還有哪些限制

2. YUM
yum 與 rpm 也有類似功能 但是發展中 還不完備

2-1. http://linux.die.net/man/1/repoquery
repoquery is a program for querying information from YUM repositories similarly to rpm queries.
使用 depend 或 require 搜尋

2-2. http://stackoverflow.com/questions/1684 ... e-from-yum
Is there any way to retrieve a dependency tree from yum?


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 关于依赖包的问题
帖子发表于 : 2018-01-09 16:27 

注册: 2018-01-05 15:19
帖子: 6
系统: Ubuntu
送出感谢: 1
接收感谢: 0 次
我也遇到过缺少advection.h这样文件的,而不是包。搜索了一下,这个文件又包含在某些包中所以可能还要安装包。。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译