Archive:利用 YaST 本地更新系统

跳转至: 导航, 搜索

YaST 是一个强大的 RPM 包管理器和系统设置软件,包管理功能能协调解决依赖性问题,为大规模软件升级提供了便利。YaST 中这个功能叫做“系统更新”。用户只需简单增加一个安装源,就可以升级含有多个包的大的程序(比如 KDE)。

但由于安装源大部分都在国外,网络条件不好的话,源更新的成功率较低。因此,把相关文件下载到本地,再把本地目录设为安装源,这样可以提高升级成功率,而且稳定,不易出错。

更新“真” YaST 源

1. 找到安装源的 URL。一般来说都是个 ...../yast-sourse/ 的地址。

2. 在安装源的根目录找到 content 文件,下载打开,可以分析这个安装源的目录结构。

一个真 YaST 源不仅包含 RPM 包,还包含描述那些包的文件。在下载到本地时,这些文件都要下载。

一般来说,描述包的文件有如下几个:

  media.1/
         `- media
  content
  directory.yast
  setup/descr/
             `- packages
             `- packages.DU
             `- packages.en

一般来说 media.1 目录下的 media 文件是固定的,根目录下 directory.yast 和 content 文件是位置固定的。

如果其它不是默认情况,content 文件中会明示各个路径。文件中关键词 DESCRDIR 对应安装包描述信息的位置,DATADIR 对应 RPM 包的存放目录。

RPM 包在目录 DATADIR/架构名称 下面存放。比如 DATADIR 是 suse/rpm,那64位的包就应该在 根目录/suse/rpm/x86_64,其它架构的包就是 根目录/suse/rpm/i386 或者 i586、i686。

描述包信息的文件,一般是三个文件 packages、packages.DU、packages.xx。.xx 是语言简写代码,一般是英语,如 packages.en。德语就是packages.de。

3. 在本地建立一个目录,准备镜像安装源。

4. 根据第二步的分析,下载你需要的文件。

你不仅需要那些 RPM 包,也需要那些描述包的文件。当然具体情况你可以根据 content 文件分析。下载时请严格按照原有的目录结构下载。使本地和服务器目录结构上一致。

在选择你的架构后,请不要完全忽略 noarch 目录下的包,noarch 的意思是所有架构通用,并非你不需要用。

尽量不要整个目录都下载,选择你需要的文件。

5. YaST - 安装源,把本地目录加入安装源,只打开刚加的源和初始安装盘的源。

6. YaST - 系统更新。

例子

这里以 SUSE 10.0 64bit 更新到 KDE 3.5.1 为例说明:

1. 找到安装源地址

这里只是举例,升级用到了 SUSE 服务器上提供的 Yast 源—— KDE supplementary 3.5 update。这里并没有用官方的地址,而是用了 ftp.jaist.ac.jp 服务器上作的镜像,因为这个服务器在日本,速度相对快些。

你并不一定要使用这个地址,如果你知道更快的 SUSE 服务器镜像,把 http://www.xxx.com/A/B/ 作为你找到的官方镜像,32 位把 x86_64 换成i386 或者 i586,只是要符合您的情况,如 http://www.xxx.com/A/B/suse/x86_64/supplementary/KDE/update_for_10.0/yast-source/。

2. 分析根目录下的 content 文件。

  PRODUCT supplementary KDE 3.5.x
  VERSION 3.5
  DISTPRODUCT KDE-3.5-supplementary
  DISTVERSION 3.5-0
  BASEPRODUCT SuSE Linux
  BASEVERSION 10.0-0
  VENDOR SuSE Linux AG
  ARCH.x86_64 x86_64 i686 i586 i486 i386 noarch
  DEFAULTBASE x86_64
  REQUIRES distribution-release
  LABEL supplementary KDE 3.5 update
  LABEL.de inoffizielles KDE 3.5 update
  DESCRDIR suse/setup/descr
  DATADIR suse
  FLAGS update
  TIMEZONE Europe/Berlin

其中 DESCRDIR suse/setup/descr 这行是说对包的描述文件在 根目录/suse/setup/descr 里面,这里是文件 packages、packages.DU、packages.en、packages.de。

DATADIR suse 这行则是说我们需要的 RPM 包存在 根目录/suse/架构名称 下面。

3. 建立本地目录 /home/xxx/kde-up/

4. 按照原来的目录结构下载以下文件到 /home/xxx/kde-up/

  media.1/
         `- media
  content
  directory.yast
  suse/setup/descr/
             `- packages
             `- packages.DU
             `- packages.en
             

当然如果你希望那个看到德语的包信息简介,就下载 packages.de 文件,而不是 packages.en。

下载我们需要的包,先是下载整个 suse/x86_64/ 的文件到 /home/xxx/kde-up/suse/x86_64/。当然如果您很明确知道自己不需要什么就不要下那个包。比如说我就不用 amarok 用 xmms,那么 amarok.rpm 就没有必要下载。

然后在 /home/xxx/kde-up/suse/noarch/ 下载 kdelibs3-devel-doc.rpm、kde3-i18n-zh_CN.rpm。如果你用 Koffice,继续下 koffice-i18n-zh_CN.rpm。之所以只下有 zh_CN 的 RPM 包是因为这些 kde3-i18n-*.rpm 或 koffice-i18n-*.rpm 是语言包,下一大堆根本不用的语言没有意义。如果您使用繁体中文就下载相应的 zh_TW 的 RPM 包。

5. YaST - 安装源,把目录 /home/xxx/kde-up/ 加入安装源。只打开刚加的源和初始安装盘的源。

6. YaST - 系统更新,如果还显示少什么包,去 http://rpm.pbone.net/ 搜索,手动解决。