Enghish Version

MandrakeUser.Org - Your Mandrake-Linux Knowledge Base!

* DocIndex - Basics

RPM 第五篇

* 简介
* “什么都没了:源介质、安装组、卸载组”
* “更新源介质后,寻找新 RPM 包时出错”
* “我已经添加了CD 源介质,但却无法显示其中的 RPM 包”
* “rpmdrake 重复列出每个包”

相关资源:

Mdk User Guide, 15

Modified: Mar. 15, 2002
Author: Kevin Masaryk, edited by Tom Berger
Translator: Wu XiaoGuang

* 简介

本篇将介绍我(Kevin Masaryk)在使用‘rpmdrake’(即‘Software Manager’)过程中碰到的问题,及相应的解决办法。

‘rpmdrake’是处理 RPM 文件的一个包管理器,实际上是‘urpmi’的一个图形前端。所以‘rpmdrake’依靠‘urpmi’作引擎。

‘rpmdrake’唯一的文档在 Mandrake Users Guide 中,现在还没有‘rpmdrake’的 man page。

*小提示:每次操作中,‘rpmdrake’可能表现得不完全一致;我的意思是说,每次运行,‘rpmdrake’的动作及显示的信息,可能会有所不同。所以,不少有关‘rpmdrake’的问题,只要简单地退出、重新运行该程序,就可以解决了。

还有,您需要以‘root’身份,来应用下面所示的办法。

* section index * top

* “什么都没了:源介质、安装组、卸载组”

显然,这是最令人恼火的问题,有时新安装的 Mandrake Linux 也会出现这样的情况。

第一步,要确认您安装的 RPM 资料库是否原封未动。一个容易的办法是用‘gnorpm’,或其他类似的工具。
不太可能的情况是,在‘gnorpm’中,您找不到系统中安装的任何 RPM 包。如果是这样,那您的 RPM 资料库可能已经崩溃或遗失了,接下来您需要再建(rebuild),具体作法得看一下‘rpm’的 man pageman rpm…… 或者您想偷懒的话,那就用下面的命令:

rpm --rebuilddb

下一步,请阅读‘urpmi’的 man page。以下列出的是有关‘urpmi’的配置文件,及相应的描述,取材自 urpmi(8) man page:

  • /usr/bin/urpmi
    可执行的 urpmi(是Perl脚本)

  • /var/lib/urpmi/list.*
    其中的列表是 urpmi 知道的所有包及所在位置,  每个源介质(*)都有各自的一个文件。

  • /var/lib/urpmi/hdlist.*
    包含所有已知包的信息,有一段 RPM 包内容的概要,也是每个源介质(*)都有各自的一个文件。

  • /etc/urpmi/urpmi.cfg
    包含每个源介质的名称和地址。

  • /var/lib/urpmi/depslist.ordered
    A simple text file containing all dependencies of all known packages.

  • /var/lib/urpmi/provides
    A simple text file containing all provides and the list of associated packages which contain the provides.

  • /var/lib/urpmi/compss
    A simple text file containing the list of packages for each Group used.

接着,看一下‘/var/lib/urpmi’目录。您应该没有任何‘hdlist.*’文件,如果还有,则用

urpmi.removemedia

删除源介质,或用强制删除(不推荐)
例如:

urpmi.removemedia cdrom1

再看一下‘/etc/urpmi/urpmi.cfg’文件。这个文件应该是空的(因为您已失去了所有源介质),或每行都被注释了(即每行开头都有‘#’记号)
要从头开始的话,用个编辑器,将重复的行全部删除。但愿剩余一些被注释的行,这些是最初安装系统后,Mandrake 的设置。
下面,是 Mandrake 7.2 完全安装后,正常 urpmi.cfg 文件的内容(加上了我新建的一个 FTP 源介质)

cdrom1 removable_cdrom_0://mnt/cdrom/Mandrake/RPMS
cdrom2 removable_cdrom_1://mnt/cdrom/Mandrake/RPMS2
cdrom3 removable_cdrom_2://mnt/cdrom/RPMS3
cdrom4 removable_cdrom_3://mnt/cdrom/RPMS4
ftp_depot file://home/ftp/RPM_depot/ 

现在可用‘urpmi.addmedia’添加源介质。下面是一个例子:

  1. 将 Mandrake Linux CD1 放入光驱。

  2. 键入

    urpmi.addmedia removable_cdrom_0://mnt/cdrom/Mandrake/RPMS

    (上述命令是完整的一行)*如果还不能工作,那就得手动添加这些行,然后用 urpmi.update name

在添加完您的源介质后,您应该可以运行‘rpmdrake’,但愿都已经恢复正常了 ;-) 。

* section index * top

* “更新源介质后,寻找新的 RPM 包时出错”

您可以通过左边的 Package Groups 窗口,看到您刚通过新源介质添加的 RPM 包。在您重启‘rpmdrake’以前,搜索新 RPM 包会返回错误。

* section index * top

* “我已经添加了 CD 源介质,但却无法显示其中的 RPM 包”

如果您通过 User->Preferences->Add media 按钮选择 CDROM 作为介质类型,您只能选择 CD 的名称及 CDROM 确认号("CDROM number" identifier)
这样可能使您无法使用非 Mandrake 发行版 CD 中的 RPM 包,比如 Red Hat 的 CD 。原因是 urpmi 需要知道 RPM 包的确切地址,而‘rpmdrake’可能无法正确报告位置。您可以改正的办法有:在介质类型中选择‘Local’,并填入 RPM 目录的完整路径;或者用‘urpmi.addmedia’添加源介质(这是最佳选择)
以下列出的是 Mandrake 7.2 CD,及其 RPM 包的位置(相对于 CDROM 的载入点)

  • CDROM1 Installation: 'Mandrake/RPMS/'
  • CDROM2 Extension: 'Mandrake/RPMS2/'
  • CDROM3 1st Application: 'RPMS3/'
  • CDROM4 2nd Application: 'RPMS4/'

下面是如何用‘urpmi.addmedia’添加 CD1 :

urpmi.addmedia removable_cdrom_0://mnt/cdrom/Mandrake/RPMS

* section index * top

* “rpmdrake重复列出每个包”

请检查您的‘/etc/urpmi/urpmi.cfg’文件,看其中有没有重复的条目。如果有的话,将其注释掉(#)。或者,您可能要用‘urpmi.removemedia’将重复的源介质删除,然后用‘urpmi.addmedia’重新添加源介质。

* section index * top


Legal: All texts on this site are covered by the GNU Free Documentation License.
Standard disclaimers of warranty apply.