LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1341|回复: 15

关于包管理的问题

[复制链接]
发表于 2010-4-6 11:18:52 | 显示全部楼层 |阅读模式
如果软件A的安装依赖于库B
那么删除软件A的时候能删除库B吗?
发表于 2010-4-6 11:36:42 | 显示全部楼层
不会
不过如果没有其他软件依赖b的话
可以通过autoremov 删除
这是我的理解
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-6 11:41:01 | 显示全部楼层
我不是debian用户,你的意思是其实是可以删除是吗?

举个例子,例如安装mplayer, smplayer, xine, gxine之后会安装很多库。

突然,我决定将这些都删除掉,使用vlc作为播放器,那么,除了人工排查的方式,其实是可以采用某种命令或方式自动删除这些依赖库的,是吗?

当然,我说的删除都是指的“孤立”的情形,即没有其他程序依赖于该库。

我使用suse,做到这样的事情,必须要人工检查(或者我不知道其他解决方案)
回复 支持 反对

使用道具 举报

发表于 2010-4-6 11:46:31 | 显示全部楼层
sudo apt-get remove mplayer smplayer xine gxine --purge
sudo apt-get autoremove --purge

当然 --purge是可选的
回复 支持 反对

使用道具 举报

发表于 2010-4-6 16:52:39 | 显示全部楼层
Post by gnwd;2080996
我不是debian用户,你的意思是其实是可以删除是吗?

突然,我决定将这些都删除掉,使用vlc作为播放器,那么,除了人工排查的方式,其实是可以采用某种命令或方式自动删除这些依赖库的,是吗?

当然,我说的删除都是指的“孤立”的情形,即没有其他程序依赖于该库。

我使用suse,做到这样的事情,必须要人工检查(或者我不知道其他解决方案)


Debian下一般不需要你人工检查

apt-get autoremove
或者 aptitude autoremove
正如其名 autoremove会自动的删除 “不必存在”的孤立包
回复 支持 反对

使用道具 举报

发表于 2010-4-6 16:55:38 | 显示全部楼层
一个例子,比如我要删除moc软件
那么系统会提示我有一系列的包将不再有用
你可以使用apt-get remove 来删除他们
就是这么简单
当然加入--purge选项会把该包相关的配置文件之类的也删除掉
属于更干净的卸载
作为Debian用户,如果所有的包都通过系统工具安装的话
出现问题的机会很小 很是方便

  1. LiuDebian:/home/kasion# apt-get remove moc
  2. Reading package lists... Done
  3. Building dependency tree      
  4. Reading state information... Done
  5. The following packages were automatically installed and are no longer required:
  6.   libresid-builder0c2a libtagc0 libsidutils0 libsamplerate0 libsidplay2
  7.   libid3tag0 libmodplug0c2 libsndfile1 libfaad0
  8. Use 'apt-get autoremove' to remove them.
  9. The following packages will be REMOVED:
  10.   moc
  11. 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
  12. After this operation, 602kB disk space will be freed.
  13. Do you want to continue [Y/n]?
复制代码
回复 支持 反对

使用道具 举报

发表于 2010-4-6 17:33:20 | 显示全部楼层
To: thorneliu
现在apt-get这么先进了?我记得以前为了回避这个问题导致我从来不用apt-get来管理包,而一直使用aptitude,就是为了把相关无用的被依赖包清理干净。不用apt-get好多年……
To: 楼主
如果对apt-get不放心的话,可以一直使用aptitude,他会记录一个包的安装是为了直接使用还是为了满足他人依赖,若是后者,依赖其的包将通过某个行为变得不存在时,他也将进入删除队列。
回复 支持 反对

使用道具 举报

发表于 2010-4-6 18:26:34 | 显示全部楼层
Post by quhan;2081084
To: thorneliu
现在apt-get这么先进了?我记得以前为了回避这个问题导致我从来不用apt-get来管理包,而一直使用aptitude,就是为了把相关无用的被依赖包清理干净。不用apt-get好多年……
To: 楼主
如果对apt-get不放心的话,可以一直使用aptitude,他会记录一个包的安装是为了直接使用还是为了满足他人依赖,若是后者,依赖其的包将通过某个行为变得不存在时,他也将进入删除队列。


apt-get一直可以...aptitude在这方面的优势是可以手动设置为"手动安装"或"自动安装"...但是apt有个命令apt-mark同样可以做这些事...

aptitude其它方面的优势在于出现依赖问题时给出选择, 以及更强大的正则, 但是在我看来, 选择都是没用的选择和危险的选择, 正则也可以通过其它传递实现, 所以装完基本系统后, 我都是sudo apt-get purge aptitude nano...
回复 支持 反对

使用道具 举报

发表于 2010-4-6 18:27:49 | 显示全部楼层
To: thorneliu
现在apt-get这么先进了?我记得以前为了回避这个问题导致我从来不用apt-get来管理包,而一直使用aptitude,就是为了把相关无用的被依赖包清理干净。不用apt-get好多年……

是的  apt-get 是一个前端
不知道你所说的“以前”是什么时候?
我还以为这是apt-get一直以来就有的功能呢
回复 支持 反对

使用道具 举报

发表于 2010-4-6 19:31:41 | 显示全部楼层
Post by adaml;2081092
apt-get一直可以...aptitude在这方面的优势是可以手动设置为"手动安装"或"自动安装"...但是apt有个命令apt-mark同样可以做这些事...

aptitude其它方面的优势在于出现依赖问题时给出选择, 以及更强大的正则, 但是在我看来, 选择都是没用的选择和危险的选择, 正则也可以通过其它传递实现, 所以装完基本系统后, 我都是sudo apt-get purge aptitude nano...


我用的testing,前一两个月用apt-get install时发现不能正确标记哪些包是自带安装的哪些不是
特别是命令行提供多个软件包名称做参数时
然后apt-get remove和apt-get autoremove经常让我感到意外
进aptitude界面一看,自动标记乱了,只好手工修正。
现在我都不敢用apt-get,只用aptitude装卸软件,也不知道apt-get的这个问题有没有修正,以前是没问题的,就这几个月有问题。

至于adaml提到的“出现依赖问题时给出选择”,我倒是认为aptitude更安全,因为apt-get总是自动从这些依赖问题的解决方案中选择一个,虽然大部分时候就是你想要的,但apt-get不会提醒你它做了这个工作,你就觉察不到潜在的危险。
而aptitude至少会提示你,会让你做出选择而不是它自己自动完成而你一无所知。
你在apt-get中看不到这些并不代表这些依赖问题不存在。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表