LinuxSir.cn,穿越时空的Linuxsir!

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

打破Debian神话之一:urpmi系列工具(未完成前请勿跟帖)

[复制链接]
发表于 2004-12-10 20:52:49 | 显示全部楼层 |阅读模式
注意:本文只适合Mandrakelinux用户,请Redhat/Fedora、SUSE、Turbolinux等用户走开。尤其欢迎Debian用户前来批评指正(仅限技术方面)

前言
本文写作的目的,并不是想要将Debian用户争取到Mandrakelinux阵营来,更不是贬低Debian的技术含量。作为一个社区维护的项目,Debian为Linux的发展做出了很大的贡献。我只是希望让大家知道,Mandrakelinux作为一个商业与社区并重的发行版,有着自己的技术特色和优势。某些人混淆视听,说出的一些话让我十分不满,这也是我起这个标题的原因。
 楼主| 发表于 2004-12-10 20:59:24 | 显示全部楼层

urpmi是什么东西

准确的说,urpmi是一组以urpm开头的命令。它的作用是来取代Redhat发明的rpm命令。rpm是一项伟大的发明,但它所带来的依赖性问题解决起来总是十分的困难。所以,各种各样的rpm辅助工具就开发出来了,urpmi系列就是其中的一种。它不但可以帮你解决依赖性问题,还提供了更多的功能,诸如安装介质管理。
 楼主| 发表于 2004-12-10 21:03:26 | 显示全部楼层

urpmi系列有哪些命令

这个问题似乎很好解决。你在控制台下输入urpm然后按两次tab键就可以看到了。注意,非特权用户只开放了urpmf和urpmq两个命令,而root可以使用包括urpmi、urpme在内的全部命令。

我在本文中会主要介绍urpmi命令的使用,其它命令的功能会在后面简单提一下,更详细的大家可以看man或者help。
 楼主| 发表于 2004-12-10 21:07:46 | 显示全部楼层

起点:urpmi --help

我们会看到类似于如下的输出:
  1. urpmi 版本 4.5
  2. 版权 (C) 1999-2004 Mandrakesoft。
  3. 这是自由软件,可以依照 GNU GPL 重新发布。

  4. 用法:
  5.   --help         - 打印帮助信息。
  6.   --update       - 只使用升级介质。
  7.   --media        - 只使用列出的介质,介质之间用逗号分隔。
  8.   --excludemedia - 不使用给定介质,介质之间用逗号分隔。
  9.   --sortmedia    - 根据用逗号分隔的子字符串排序介质。
  10.   --synthesis    - 使用指定的综合文件而不是 urpmi db。
  11.   --auto         - 自动选中软件包。
  12.   --auto-select  - 自动选择升级系统的软件包。
  13.   --no-uninstall - 从不询问卸载软件包,直接中断安装。
  14.   --keep         - 如果有可能就保留已有软件包,拒绝导致删除的软件包。
  15.   --split-level  - 如果将要安装或升级的软件包多于给定的软件包,就拆分为
  16.                    较小的交易。默认为 20。
  17.   --split-length - 小交易长度,默认为 1。
  18.   --fuzzy        - 利用模糊查询(和 -y 一样)。
  19.   --src          - 下一个软件包是源程序包(和 -s 一样)。
  20.   --install-src  - 只安装源代码包(无二进制文件)。
  21.   --clean        - 首先删除缓存中的rpm。
  22.   --noclean      - 保留缓存中没有使用的rpm。
  23.   --force        - 强制执行, 即使某些软件包并不存在。
  24.   --allow-nodeps - 允许要求用户不经过依赖性检验
  25.                    就安装软件包。
  26.   --allow-force  - 允许提示用户安装软件包而不
  27.                    检查依赖性和完整性。
  28.   --parallel     - 在多个机器上分布的运行 urpmi。
  29.   --root         - 使用另一个 root 安装 rpm。
  30.   --use-distrib  - 配置 urpmi 实时从发行树中抓取,特别用于在 --root 选项
  31.                    下安装 chroot。
  32.   --wget         - 用 wget 取远程文件。
  33.   --curl         - 用 crul 取远程文件。
  34.   --limit-rate   - 降低下载速度。
  35.   --resume       - 续传未下载完成的文件
  36.                    (--no-resume 禁用它,默认是禁用的)。
  37.   --proxy        - 使用指定的 HTTP 代理,默认的端口号是
  38.                    1080(格式如 <proxyhost[:port]>)。
  39.   --proxy-user   - 指定用于代理认证的用户和
  40.                    口令(格式如 <用户: 口令>)。
  41.   --bug          - 输出故障报告
  42.                    下一个参数指定输出目录。
  43.   --env          - 使用指定的环境(特别是进行故障报告时)。
  44.   --X            - 使用 X 界面。
  45.   --best-output  - 根据运行环境选择最好的界面:
  46.                    X 或文本模式。
  47.   --verify-rpm   - 安装之前验证 rpm 签署。
  48.                    (--no-verify-rpm 禁止它,默认是激活的)。
  49.   --test         - 验证安装是否可以正确进行。
  50.   --excludepath  - 排除按逗号分隔的路径。
  51.   --excludedocs  - 排除文档文件。
  52.   --skip         - 安装要跳过的软件包。
  53.   --more-choices - 如果找到了多个软件包,则提供多个选择而不是默认选择。
  54.   -a             - 在命令行选择所有匹配。
  55.   -p             - 允许在提供的项目中寻找软件包。
  56.   -P             - 不搜索提供标签中的软件包。
  57.   -y             - 利用模糊查询(和 --fuzzy 一样)。
  58.   -s             - 下一个软件包是源程序包(和 --src 一样)。
  59.   -q             - 安静模式。
  60.   -v             - 详细的提示。

  61.   命令行给出的软件包名或 rpm 文件将会被安装。
复制代码
当然,我们不会在每条命令都用到urpmi的全部选项。
 楼主| 发表于 2004-12-10 21:15:32 | 显示全部楼层

最简单的一个例子

我已经先行在这篇帖子里用到urpmi命令了,注意看里边的第四步。所以,urpmi比较简单的通用格式就是urpmi file.rpm

那么请各位看官记住了,在Mandrakelinux下安装软件,用的命令不是 rpm -i,而是urpmi。
 楼主| 发表于 2004-12-10 21:25:37 | 显示全部楼层

让人吃惊的一幕

你也许会注意到,10.1 Official的默认情况下没有为我们安装xmms,而是选择了amaroK作为默认的音乐播放器。如果你想要再用到xmms,应该怎么办呢?

比较笨的人一般会从rpmfind.net上搜索xmms+mdk。稍微聪明一点的人会知道把Disc1的ISO挂上来,找到xmms.rpm,然后用上面刚学到的urpmi命令来安装。哪有那么麻烦?直接输入urpmi xmms不就行了?看看多省事!不相信?你可以再用kget做个例子,这也是个系统自带的软件。

在执行urpmi xmms和urpmi kget的时候,系统会问你:
  1. 为了满足依赖性,需要安装以下软件包:
  2. xxx.rpm,yyy.rpm
复制代码
你有的选择吗?你只能选择“是”。如果你觉得每次都选“是”不太方便,那么就需要使用一个特殊的参数。从上面的参数列表里好好找找,我相信你一定能一眼就看见--auto这个参数。
 楼主| 发表于 2004-12-10 21:44:26 | 显示全部楼层

其它的命令

我并不打算在这里为每个选项各举例子,况且我对其中某些选项也不是十分清楚:p

与安装软件类似的,urpme用来删除软件,urpmf用来查找文件,urpmq是用来查询软件的包。这个和rpm命令都差不多。

比如,如果你要装一个软件,人家需要一个库libxxx.so.4,但你不知道这个库在哪个包里,可以使用urpmf libxxx.so.4来查询。

又如,你想知道现在系统自带的gcc版本是多少,可以用urpmq -f gcc来查询。如果碰巧系统没有自动安装gcc的话,你该怎么安装呢?对了,urpmi gcc
 楼主| 发表于 2004-12-10 21:57:09 | 显示全部楼层

来做个例子吧。

比如我们现在要来安装webmin这个系统维护工具。我们不太确定Mandrakelinux在光盘上是否为我们提供了这个东西,所以我们现用urpmq来查询一下
  1. [color=red]urpmq webmin[/color]
复制代码
看起来很不错,我们找到了。但webmin需要哪些依赖性要求呢?
  1. # [color=red]urpmq -d webmin[/color]
  2. SysVinit
  3. bash
  4. bootloader-utils
  5. bzip2
  6. chkconfig
  7. coreutils
  8. cpio
  9. cracklib-dicts
  10. diffutils
  11. drakxtools-backend
  12. e2fsprogs
  13. elfutils
  14. findutils
  15. gawk
  16. gettext-base
  17. glibc
  18. grep
  19. ifplugd
  20. info-install
  21. initscripts
  22. iproute2
  23. iputils
  24. ldconfig
  25. ldetect-lst
  26. libbeecrypt6
  27. libbzip2_1
  28. libcrack2
  29. libdb4.2
  30. libelfutils1
  31. libext2fs2
  32. libgdbm2
  33. libglib1.2
  34. libgpm1
  35. libintl3
  36. libncurses5
  37. libopenssl0.9.7
  38. libpam0
  39. libpcre0
  40. libpwdb0
  41. libselinux1
  42. libslang1
  43. libtermcap2
  44. lsof
  45. make
  46. mingetty
  47. mktemp
  48. modutils
  49. mount
  50. ncurses
  51. openssl
  52. pam
  53. perl
  54. perl-Authen-PAM
  55. perl-CGI
  56. perl-MDK-Common
  57. perl-Net_SSLeay
  58. perl-base
  59. popt
  60. procps
  61. psmisc
  62. pwdb-conf
  63. rpm
  64. rpm-helper
  65. sash
  66. sed
  67. setup
  68. shadow-utils
  69. sound-scripts
  70. tar|rmt
  71. unzip
  72. util-linux
  73. webmin
  74. which
  75. zlib1
复制代码
看起来还不少的样子。没关系,我们直接来安装好了,系统会提示你依次插入相应的光盘。
  1. # [color=red]urpmi webmin[/color]
  2. 为了满足依赖性要求,将另外安装以下5个软件包(25 MB):
  3. lsof-4.71-1mdk.i586
  4. perl-Authen-PAM-0.14-4mdk.i586
  5. perl-CGI-3.05-1mdk.noarch
  6. perl-Net_SSLeay-1.25-3mdk.i586
  7. webmin-1.150-3.1.101mdk.noarch
  8. 这样好了吗?(是(Y)/否(n))[是]
复制代码
呀,不小心按了一下No!算了,还是用auto比较省事:
  1. [color=red]urpmi --auto webmin[/color]
复制代码
 楼主| 发表于 2004-12-10 22:00:42 | 显示全部楼层

课后作业

给大家留个作业,系统里已经安装好了amaroK这个软件。我现在想要知道amarok这个软件的可执行二进制程序被安装到哪里了。要求用urpm系列命令和grep命令组合完成。不得使用其它命令,如find、whereis、rpm。
发表于 2004-12-10 22:05:34 | 显示全部楼层
urpmf amarok|grep bin
??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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