LinuxSir.cn,穿越时空的Linuxsir!

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

自己动手做 dummy 虚拟(假货)包裹来满足依赖关系

[复制链接]
发表于 2006-7-29 21:42:15 | 显示全部楼层 |阅读模式
事件起因:
装完了 ubuntu 后,dpkg -l |grep ttf 看了一下,发现自动给我装了一大堆 truetype 字体,很多我根本用不上或不喜欢,于是试着删除不需要的字体,比如:
$ aptitude purge ttf-arphic-ukai
它会提示将 ubuntu-desktop 一块删除,查看 ubuntu-desktop 的说明:
$ aptitude show ubuntu-desktop
指示可以安全删除,但它对升级或安装新的软件有作用,故打算采取如下策略:
先将 ubuntu-desktop 删除,然后将不需要的字体删除,再重新装上 ubuntu-desktop 包裹以防后患。

出现问题:
当我重新安装 ubutu-desktop 时,有提示我依赖关系,如下:
  1. $ aptitude install ubuntu-desktop
  2. Reading package lists... Done
  3. Building dependency tree... Done
  4. Reading extended state information
  5. Initializing package states... Done
  6. Building tag database... Done
  7. The following NEW packages will be installed:
  8.   ttf-arabeyes ttf-arphic-ukai ttf-arphic-uming ttf-bengali-fonts ttf-devanagari-fonts ttf-gentium ttf-gujarati-fonts
  9.   ttf-indic-fonts ttf-kannada-fonts ttf-lao ttf-malayalam-fonts ttf-mgopen ttf-oriya-fonts ttf-punjabi-fonts
  10.   ttf-tamil-fonts ttf-telugu-fonts ttf-thai-tlwg ubuntu-desktop
  11. 0 packages upgraded, 18 newly installed, 0 to remove and 0 not upgraded.
  12. Need to get 32.2MB of archives. After unpacking 59.1MB will be used.
  13. Do you want to continue? [Y/n/?]
复制代码
如此以来刚才的活都白干了,咋办?

解决方案:
在确定缺少以上字体确实对系统不会产生问题后,决定制作几个虚拟包裹来欺骗ubuntu-desktop。

使用工具和制作过程:
工具: equivs
hint:man equivs
$ aptitude install equivs
$ mkdir  -p /usr/src/dummy/ttf-arphic-ukai && cd /usr/src/dummy/ttf-arphic-ukai
$ cp /usr/share/equivs/template.ctl ./ttf-arphic-ukai.ctl
参考 aptitude show ttf-arphic-ukai
$ vi ttf-arphic-ukai.ctl
  1. Section: x11
  2. Priority: optional
  3. Version: 0.1.20060108-0.dot.1ubuntu1
  4. Package:  ttf-arphic-ukai-dummy
  5. Provides:  ttf-arphic-ukai
  6. Architecture: all
  7. Description:  ttf-arphic-ukai font dummy package
  8. This package provides dpkg with the information that
  9. the ttf-arphic-ukai font package is installed.
  10. .
  11. Installing ubuntu-desktop etc. won't bug you to
  12. install ttf-arphic-ukai any more
复制代码
  1. $ equivs-build ttf-arphic-ukai.ctl
  2. dh_testdir
  3. touch build-stamp
  4. dh_testdir
  5. dh_testroot
  6. dh_clean -k
  7. dh_clean: Compatibility levels before 4 are deprecated.
  8. # Add here commands to install the package into debian/tmp.
  9. touch install-stamp
  10. dh_testdir
  11. dh_testroot
  12. dh_installdocs
  13. dh_installdocs: Compatibility levels before 4 are deprecated.
  14. dh_installchangelogs
  15. dh_installchangelogs: Compatibility levels before 4 are deprecated.
  16. dh_compress
  17. dh_compress: Compatibility levels before 4 are deprecated.
  18. dh_fixperms
  19. dh_fixperms: Compatibility levels before 4 are deprecated.
  20. dh_installdeb
  21. dh_installdeb: Compatibility levels before 4 are deprecated.
  22. dh_gencontrol
  23. dh_gencontrol: Compatibility levels before 4 are deprecated.
  24. dh_md5sums
  25. dh_md5sums: Compatibility levels before 4 are deprecated.
  26. dh_builddeb
  27. dh_builddeb: Compatibility levels before 4 are deprecated.
  28. dpkg-deb: building package `ttf-arphic-ukai-dummy' in `../ttf-arphic-ukai-dummy_0.1.20060108-0.dot.1ubuntu1_all.deb'.
  29. The package has been created.
  30. Attention, the package has been created in the current directory,
  31. not in ".." as indicated by the message above!
复制代码
  1. $ dpkg -i ttf-arphic-ukai-dummy_0.1.20060108-0.dot.1ubuntu1_all.deb
复制代码
  1. $ dpkg -l |grep ttf-arphic-ukai
  2. ii  ttf-arphic-ukai-dummy                  0.1.20060108-0.dot.1ubuntu1           ttf-arphic-ukai font dummy package
复制代码

其它字体类似制作,之后安装 ubuntu-desktop 将不会再提示依赖关系,因为已经有个 dummy 包欺骗了 dpkg。

总结:
当然解决问题的途径不只一种,可能此法有点繁琐,只是提供一种解决问题的思路。

参考链接:
http://sdn.vlsm.org/share/Debian ... /ch-helpers.en.html
http://www.wickle.com/wiki/index ... endencies_on_debian
发表于 2006-7-29 21:44:45 | 显示全部楼层
dummy package 跟 virtual package 有啥不同?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 22:29:07 | 显示全部楼层
以我的理解,可能不够准确,从上面的 apt howto 链接的信息看来:
先讨论 virtual package, 以 mail-transport-agent 为例:
  1. $ aptitude show mail-transport-agent
  2. No candidate version found for mail-transport-agent
  3. Package: mail-transport-agent
  4. State: not a real package
  5. Provided by: courier-mta, postfix, exim4-daemon-light, exim4-daemon-heavy, zmailer, xmail, ssmtp, smail, sendmail-bin,
  6.              nullmailer, masqmail, hula-manager, exim, esmtp-run, courier-mta, postfix, exim4-daemon-light,
  7.              exim4-daemon-heavy
  8. $ aptitude search mail-transport-agent
  9. v   mail-transport-agent
复制代码
mail-transport-agent 是一个 virtual package, 它的功能可以由许多种邮件传输代理的其中一个来提供,甚至可以是你自己从某个源代码编译的邮件传输代理程序。在这个例子中它相当于一个泛称。

而 dummy package,指的是实实在在存在提供某种功能的包裹,但对于用户来说该功能并不需要,但为了满足某种依赖关系,而不得不安装之,故可以采取 dummy 的方法来欺骗 packae 系统。

不过很多场合,感觉没什么区别。
回复 支持 反对

使用道具 举报

发表于 2006-7-29 22:44:05 | 显示全部楼层
個多月求 virtual package 的製作方法不果,其實這個正是我需要的,http://www.linuxsir.cn/bbs/showthread.php?t=261817

精上,希望 quanliking 兄日後再賜教,謝謝!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-29 23:50:51 | 显示全部楼层
d00m3d 兄太客气,equivs 是很多人惯用的伎俩了,不必加精,倒是我觉得一个个制作 dummy package,未免过于繁琐,有没有一种如下方法:
  1. Package: ttf-dummy-for-ubuntu-desktop
  2. Provides: ttf-arabeyes ttf-arphic-ukai ttf-arphic-uming ttf-bengali-fonts ttf-devanagari-fonts ttf-gentium ttf-gujarati-fonts ttf-indic-fonts ttf-kannada-fonts ttf-lao ttf-malayalam-fonts ttf-mgopen ttf-oriya-fonts ttf-punjabi-fonts ttf-tamil-fonts ttf-telugu-fonts ttf-thai-tlwg
复制代码
只做一个包裹,一次性满足所有以来关系。
回复 支持 反对

使用道具 举报

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

本版积分规则

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