比 rpm 强大得多的 urpmi 常见问题!

比 rpm 强大得多的 urpmi 常见问题!
说明:

很多从Redhat转移到Mandrake的使用者都不知道MDK提供的 urpmi 命令. 其实这个命令比
rpm要强大的多, 最大的优点就是可以自己解决安装rpm包时烦人的依赖关系. 只要你
预先指定了要搜索的文件源(本地或者网络上的), 只要一个urpmi <package> 就自动为你安
装rpm包, 解决依赖关系.

下面是经常出没于 irc/Freenode 频道的garrick写的 urpmi 常见问题. 觉得翻译出来对大
家有帮助. 他的网页:http://speculation.org/garrick 上还有其它有用的东东.


------------------------------------------
upmi 常见问题
------------------------------------------


作者: garrick
翻译: monpython


Q: 什么是urpmi?
A: 'urpmi' 是Mandrake处理rpm文件来源的工具. 它是一个rpm的打包程序,可以让使用着更容易的进行安装.


Q: 它有什么样的文件来源?
A: 'urpmi' 能够处理像你的mandrake CD这种可拆卸媒体上的文件源,也可以是硬盘上rpm文件,或者是ftp,http服务器上的文件源.
缺省状态下,'urpmi' 已经知道mandrake CD上的文件源的位置.


Q: 怎么用'urpmi'安装文件包?
A: 让我们拿BitchX这个文件举个例子: 'urpmi BitchX' 'urpmi' 将会搜索文件源的索引,查找名为"BitchX"的文件包.
如果找到该包,它会进一步寻找"BitchX"所需要的其它包 (这就时urpmi一个很酷的功能,自动解决相依性问题).还有,
如果需要,它会要求你插入光盘.


Q: 提示"command not found", 是不是'urpmi'有问题?
A: 不是,用'su -'命令再试试.


Q: 有哪些文件来源?
A: Mandrake有三种文件源: main(一般分别放在三个CD上),contrib目录,和updates.如果你的系统是从CD上安装的,
那么urpmi将会预先根据三个CD设置好main和contrib目录.(所以看起来就好像是四个安装来源,因为三片光盘
上既有main又有contrib目录).如果你的系统是从ftp上安装的,那么它会预先根据ftp服务器设置好main和contrib.
不管是以上哪种情况,你都要用一个ftp镜像站点配置一个update安装源.


Q: 到哪里去找urpmi的安装源?
A: 去http://plf.zarb.org/~nanardon/ 这个叫"Easy Urpmi"的网页. 首先选择你mandrake版本和你的体系结构(如果你不知道你的
机器体系,就选i586),点下一步.然后为main,contrib和updates选择地理位置接近的镜像. 如果你要的软件包没有到侵权和其它
法律问题, 可以选择一个plf镜像. 如果你自己可以处理一些情况,还可以选择一个texstar镜像.接下来点击下一步.在网页的底部
把得出的 urpmi.addmedia 命令拷贝粘贴到有root执行权的shell中.


Q: 什么是PLF(Penguin Liberation Front)?
A: http://plf.zarb.org, 该站上有因为法律原因无法通过mandrake发行的mandrake文件包. 像DVD解码,mp3编码等软件可以在那里找到.
PLF很方便的组织成一个urpmi的文件源,你可以访问该站获得更多的信息.


Q: 我如何加入新的文件源?
A: 用 'urpmi.addmedia' 命令. 用法是这样的:

urpmi.addmedia [--update] <name> <location> with <hdlist>

下面是加入我的mandrake ftp镜像的例子: (要整行输入):

Mandrake 9.1:

urpmi.addmedia usc-main ftp://mirrors.usc.edu/pub/linux/dis...6/Mandrake/RPMS with ../base/hdlist.cz
urpmi.addmedia usc-contrib ftp://mirrors.usc.edu/pub/linux/dis....1/contrib/RPMS with ../../i586/Mandrake/base/hdlist2.cz
urpmi.addmedia --update usc-update ftp://mirrors.usc.edu/pub/linux/dis...pdates/9.1/RPMS with ../base/hdlist.cz

Mandrake 9.0:
urpmi.addmedia usc-main ftp://mirrors.usc.edu/pub/linux/dis...6/Mandrake/RPMS with ../base/hdlist.cz
urpmi.addmedia usc-contrib ftp://mirrors.usc.edu/pub/linux/dis....0/contrib/RPMS with ../../i586/Mandrake/base/hdlist2.cz
urpmi.addmedia --update usc-update ftp://mirrors.usc.edu/pub/linux/dis...pdates/9.0/RPMS with ../base/hdlist.cz

Mandrake 8.2:
urpmi.addmedia usc-main ftp://mirrors.usc.edu/pub/linux/dis...6/Mandrake/RPMS with ../base/hdlist.cz
urpmi.addmedia usc-contrib ftp://mirrors.usc.edu/pub/linux/dis....2/contrib/i586 with ../../i586/Mandrake/base/hdlist2.cz
urpmi.addmedia --update usc-update ftp://mirrors.usc.edu/pub/linux/dis...pdates/8.2/RPMS with ../base/hdlist.cz

Mandrake 8.1 (mdk8.1 has been End-of-Lifed):
urpmi.addmedia usc-main ftp://mirrors.usc.edu/pub/linux/dis...6/Mandrake/RPMS with ../base/hdlist.cz
urpmi.addmedia usc-contrib ftp://mirrors.usc.edu/pub/linux/dis....1/contrib/RPMS with ../../i586/Mandrake/base/hdlist2.cz
urpmi.addmedia --update usc-update ftp://mirrors.usc.edu/pub/linux/dis...pdates/8.1/RPMS with ../base/hdlist.cz

对于 mdk 8.2, 我自己有一些更新的软件包,你也许会兴趣.你在那里总可以找到最新的 Mozilla, Galeon 和 Fluxbox:
urpmi.addmedia --update garrick.update ftp://polop.usc.edu/pub/rpms with hdlist.cz


你可以用 --update 参数, 把文件源标记为 "updates" (稍后再讨论)


** mandrake 9.0 的新功能! 你现在可以更方便的从任何 ftp 镜像加入整个安装和contrib文件源:
urpmi.addmedia --distrib ftp://ftp-linux.cc.gatech.edu/pub/l...ndrake/8.2/i586

** 注意, 这个功能在 8.2上就有, 但是不起作用 =/



Q: 我能不能把我喜欢的任何本地目录加入为文件源?
A: 可以, 很简单:
urpmi.addmedia --update 自己取个名字 file://some/directory/path


Q: 我能否把我喜欢的网络目录(ftp或http地址)加入为文件源?
A: 不行. 文件源目录还需要一些特殊的文件. 除了用mandrake镜像作为文件源, Penguin Liberation Front网站 (http://plf.zarb.org/) 拥有最大的
网上文件源. 你可以访问 "Easy Urpmi" 以获得最有名的完整文件源列表.

你可以加入任何你要的本地目录, urpmi.addmedia 命令将会立刻创建所需的文件.


Q: 如何删除文件源?
A: 'urpmi.removemedia <name>' (只键入 'urpmi.removemedia' 将会列出所有可以删除的预设名称.)


Q: 能否用 urpmi 安装 rpm ?
A: 当然! 'urpmi foobar-<version>.i586.rpm' (或其它软件包) 将会自动安装任何所需的相关软件包. 但是记住并不保证非mandrake rpms能够
运行. 实际上, 我很不愿意推荐第三方的rpm安装包. 相反, 应该找一个 src.rpm 自己从源代码编译一个新的rpm包. 参考 rpm 常见问题.


Q: 如何升级软件?
A: 第一, 你需要标记为 "updates" 的 rpm 安装源. 注意, 这是镜像上的一个不同的目录.
下面是一个和上面类似的升级软件的例子:
urpmi.addmedia --update update_gatech ftp://ftp-linux.cc.gatech.edu/pub/l...dates/8.2/RPMS/ with ../base/hdlist.cz
注意: 这个例子用了 --update 参数和一个略微不同的地址

现在我们已经为 urpmi 加入了合适的升级文件源. 只要打入:
'urpmi --update <package>' urpmi 就会只在文件源搜索标记为 "update" 的包.


Q: 如何自动升级所有需要升级的包?
A: 'urpmi --update --auto-select'


Q: 哪个包里有某某文件?
A: 'urpmf' 程序可以用来在 urpmi 数据库中查找某个文件. 只需键入'urpmf foobar.something' 就可能会显示
"foobar:/usr/bin/foobar.something". 说明你要的文件在 "foobar" 这个包中.

技巧一: 如果你找的是程序或命令名称, 那么在所查找的名称前面加入 bin/ 比如: bin/ls'.

技巧二: 如果你找的是库文件, 那么在库文件的前面加入 lib/ 比如: 'urpmf lib/libssl'.


Q: ftp上的文件源已经改变, 如何升级我的本地索引?
A: 'urpmi.update <name>' 注意: main 和 contrib 从来不会改变. 但是 升级和 PLF 安装源经常更新.


Q: 非 root 权限的人可以用 urpmi 安装软件吗? 
A: 根据文档, 是可以的. 但是这个功能不起作用.


Q: 我不喜欢 urpmi, 有没有其它选择?
A: 当然, 有很多. 可以到 http://rpm.org/software/updaters/ 看到很长的列表. 我喜欢 'yum' 网址是 http://www.linux.duke.edu/projects/yum/.
yum 的一个好处是你从来不需要去升级一个文件源 (用 yum 术语叫做文件仓库)! yum 已经打包在 9.1 的 contrib 中,
键入 'urpmi yum' 修改你的 /etc/yum.conf . 到下面的地址参照我的样本:
http://speculation.org/garrick/yum.conf

用法:
yum list updates - 列出任何升级
yum update - 进行升级
yum info <package> - 就像 'rpm -qi', 但是是你的文件仓库的任何包
yum list <file> - 就像 'urpmf <file>', 但是你必须用完整路径
yum install <package> - 就像 'urpmi <package>'