LinuxSir.cn,穿越时空的Linuxsir!

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

如何指定软件包的依赖关系或者让系统不强迫安装源内的某个软件(包)呢?

[复制链接]
发表于 2007-9-25 13:59:41 | 显示全部楼层 |阅读模式
最近,我打算安装一个软件asymptote,该软件在源中也有,但是
  1. sudo apt-get install asymptote
复制代码
会附带安装一大堆我不需要的(主要是latex-base,这个我也是自己安装的,没有采用apt-get install安装的方式),因此我采用的方式是自己下载源码并编译安装,安装后也一切正常。

现在的问题,只要我运行
  1. sudo apt-get update
复制代码
或者想通过apt-get install安装别的什么软件,都会出现如下提示
  1. ~$ sudo apt-get upgrade
  2. 正在读取软件包列表... 完成
  3. 正在分析软件包的依赖关系树
  4. Reading state information... 完成
  5. 您也许需要运行“apt-get -f install”来纠正上面的错误。
  6. 下列的软件包有不能满足的依赖关系:
  7.   asymptote: 依赖: python-tk 但是它还没有被安装
  8.              依赖: imagemagick
  9.              依赖: texlive-latex-base 但是它还没有被安装 或
  10.                      tetex-bin 但是它还没有被安装
  11.              依赖: texlive-base-bin 但是它还没有被安装 或
  12.                      tetex-bin 但是它还没有被安装
  13.              依赖: texlive-pstricks 但是它还没有被安装 或
  14.                      tetex-extra 但是它还没有被安装
  15.              依赖: libgc1c2 但是它还没有被安装
  16.              依赖: libgsl0ldbl (>= 1.9) 但却无法安装它
  17. E: 不能满足依赖关系。不妨试一下 -f 选项。
复制代码

而我一旦加了-f,apt-get install又会强迫删除我自己安装的asymptote,然后再次试图装一堆
他所认为必须的,如下:
  1. ~$ sudo apt-get -f install
  2. 正在读取软件包列表... 完成
  3. 正在分析软件包的依赖关系树
  4. Reading state information... 完成
  5. 正在更正依赖关系... 完成
  6. The following packages were automatically installed and are no longer required:
  7.   texlive-base texlive-common texlive-pstricks texlive-base-bin blt python-tk
  8.   libkpathsea4 libpoppler1 texlive-generic-recommended tcl8.4 texlive-latex-base
  9.   tk8.4 imagemagick libgc1c2 texlive-doc-base tex-common
  10. Use 'apt-get autoremove' to remove them.
  11. 将会安装下列额外的软件包:
  12.   blt imagemagick libgc1c2 libkpathsea4 libmagick9 libpoppler1 python-tk tcl8.4
  13.   tex-common texlive-base texlive-base-bin texlive-common texlive-doc-base
  14.   texlive-generic-recommended texlive-latex-base texlive-pstricks tk8.4
  15. 建议安装的软件包:
  16.   blt-demo html2ps lpr libwmf-bin tix tclreadline
  17. 推荐安装的软件包:
  18.   dvipdfmx lmodern perl-tk
  19. 下列软件包将被【卸载】:
  20.   asymptote
  21. 下列【新】软件包将被安装:
  22.   blt imagemagick libgc1c2 libkpathsea4 libmagick9 libpoppler1 python-tk tcl8.4
  23.   tex-common texlive-base texlive-base-bin texlive-common texlive-doc-base
  24.   texlive-generic-recommended texlive-latex-base texlive-pstricks tk8.4
  25. 共升级了 0 个软件包,新安装了 17 个软件包,要卸载 1 个软件包,有 0 个软件未被升级 。
  26. 有 1 个软件包没有被完全安装或卸载。
  27. 需要下载 76.9MB 的软件包。
  28. 解压缩后会消耗掉 140MB 的额外空间。
  29. 您希望继续执行吗?[Y/n]
复制代码
我试过
  1. ~$ sudo echo "asymptote hold" | sudo dpkg --set-selections
复制代码
还是不行。

我不想装这些阿,何况asymptote我已经有了,为何一定要强迫我安装呢?
请高手支招,谢谢!
忘记说了,我的系统是debian/etch.
发表于 2007-9-25 16:16:39 | 显示全部楼层
那你的那个asymptote可以不通过deb的方式安装 或者干脆改个其他名字
apt需要保持系统的完整性 不能有破坏依赖性的软件出现
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-25 16:56:32 | 显示全部楼层
谢谢你的回复!
deb包好像也一样需要安装那些。改名字没试过,不知道是否可行,但估计难度有点大,不知道从何改起,因为配置文件估计也得逐一改过来,可能还不一定可行。
apt方便是方便,可是也会安装一些根本不需要的东西,比如,安装kile的时候,也是要安装texlive-base什么的,但debian的那个texlive实在是比较差劲,不知为何总是要我装他那个,呵呵。
我想这个问题并不是不普遍啊,debian应该还是允许自己定制安装软件吧,第一,它并不能保证该软件是最新的,第二,它不应该强迫我安装他自己的啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-25 17:22:19 | 显示全部楼层
暂时解决办法:

  1. ~$ sudo apt-get -f install
复制代码

先将那些软件包安装,然后再卸载:

  1. ~$ sudo apt-get autoremove --purge texlive-base texlive-common
复制代码

还好,依赖的东东不是太多,否则要晕死!
回复 支持 反对

使用道具 举报

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

本版积分规则

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