当前位置:操作系统 > Unix/Linux >>

Slackware 10.1 如何升级到 10.2

著者:Patrick Volkerding
翻译:yangray
版本:1.0

(本人水平有限,难免有错,请大牛直接参考英文原版)

本文解释如何从Slackware 10.1版本升级至10.2版本。
(我的情况是10.0,看来也适用)

-----------------------------------------------------------------------------

在开始升级前,我强烈建议对原来的系统作一个备份,或者,如果不是整个系统,至少要备份/etc目录(目录中保存系统级配置文件)。你会发现为了完成升级,自己会时不时来参考过去的一些配置文件。备份一下吧,要不就测试一下自己的人品border=0

好了,现在所有的东西都安全备份了,让我们开始吧。:-)

要升级,首先你需要Slackware 10.2的软件包(package)。如果你有10.2安装光盘,那么就建一个目录,把安装光盘挂载上去,这样升级过程中就直接拿来用。

代码:
mkdir /packages
mount /dev/cdrom /packages

如果你没有安装光盘(原文:软件包也可以不在光盘上),你也可以复制slackware目录(这个目录包含各个类别的软件包目录,通常在安装光盘上)到你文件系统的某个地方,比如/root/slackware/。其实最重要的是你自己要知道 slackware的软件包放在那里。下面我们假设软件包都在 /root/slackware。(下面是详细步骤)

0. 把系统切换到单用户模式:

代码:
telinit 1

1. 升级你系统中glibc共享库(动态连接库)。这一步很重要,否则下面几步程序会出错(我觉得是因为10.2的程序是依赖于新的glibc动态连接库的,所以要先升级库,因为下面要用到新版本的pkgtool)

代码:
upgradepkg /root/slackware/a/glibc-solibs-*.tgz

2. 升级你系统的包管理工具(package utilities):

代码:
upgradepkg /root/slackware/a/pkgtools-*.tgz

3. 安装sed。你的系统里应该已经有sed里,但因为包管理工具要使用到她,最好装一下保险一点:

代码:
upgradepkg --install-new /root/slackware/a/sed-*.tgz

4. 升级所有的其他东东(并且安装新的包)(高手也许觉得不必添加不必要的包,那么可以把下面的--install-new开关去掉)

代码:
upgradepkg --install-new /root/slackware/*/*.tgz

5. 确保你的系统能正常启动。如果你用LILO作为启动引导器,确保配置/etc/lilo.conf中的路径正确指向有效的内核文件,然后输入"lilo" 重新安装LILO。(切忌一定要运行'LILO'来更新一下。我升级完了以后,内核从2.4.26升到了2.4.31,但是因为upgradepkg为内核文件vmlinuz- 2.4.31作了一个vmlinz的连接,这样lilo.conf就可以不用改,因为lilo.conf中引导的内核名是vmlinuz。所以我一大意,就忘了运行LILO。结果重启后,内核还是2.4.26。但我看/boot里只有2.4.31的内核在那里。然后我运行了一下LILO就好了。我估计 LILO载入内核,是直接使用硬盘的CHS参数来定位的。所以大家切记切记如果变更LILO相关的配置或者内核文件一定要运行LILO来更新引导记录) 。如果你用的是启动软盘,你需要使用makebootdisk命令来建立一个新的启动软盘来引导新的内核。

6. 修正你的配置文件(用移植也许更确切)。这时/etc中的一些配置需要你格外关注。你会发现系统中新升级的软件的配置文件带着一个.new的后缀名。你也许要根据你原来的配置文件信息把更改过的设置加入到新的配置文件之中,然后把新的配置文件替换回来(就是去掉.new的后缀,替换到旧的配置)

你人品足够好??!!那么你可以试试下面这个小脚本来把所有的.new配置文件安装到/etc目录中。但如果你对默认的配置做过变动,把你的变动手工加入到新的配置文件还是无法避免。这个脚本运行完之后,旧的配置文件将被加上.bak后缀另行保存。不管怎样,这个脚本给了你一个很好的起点来移植旧的配置。
下面就是脚本:

代码:
#!/bin/sh
cd /etc
find . -name "*.new" | while read configfile ; do
if [ ! "$configfile" = "./rc.d/rc.inet1.conf.new" \
-a ! "$configfile" = "./group.new" \
-a ! "$configfile" = "./passwd.new" \
-a ! "$configfile" = "./shadow.new" ]; then
cp -a $(echo $configfile | rev | cut -f 2- -d . | rev) \
$(echo $configfile | rev | cut -f 2- -d . | rev).bak 2> /dev/null
mv $configfile $(echo $configfile | rev | cut -f 2- -d . | rev)
fi
done

你也许要编辑你的/etc/X11/xorg.conf,把里面键盘驱动的名字从"Keyboard"改为"kbd"。我不知道为什么要这么改,但是确实要这样。(看来还有Patrick不清楚地东西border=0

7. 切换回多用户模式:

代码: [page_break]
telinit 3

8. 卸载掉过时的软件包。
如果你到/var/log/packages看一下软件包列表

代码:
ls -lt | less

你会看到一些,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,