以下是如何将 Yellow Dog Linux 从 2.3 (Dayton) 更新到 3.0 (Sirius) 的方法。这假设在完成基本安装后立即进行(即:安装的软件包非常少)
如果我们正在运行 X (以下内容基于“基本”安装,所以我们可能没有运行),切换到文本模式 (/sbin/init 3)。我们假设我们有一些网络访问,越快越好。我们将手动下载一些软件包,所以请检查您是否能够做到这一点。一些基于控制台的下载工具,如 ncftp (ftp) 或 lynx (http) 可能会派上用场。
以下注意事项:如果您从 rpm 收到此处未提及的错误,您可以随时执行
rm -f /var/lib/rpm/__* ; rpm --rebuilddb这在大多数情况下会修复 rpm 数据库。
首先,确保我们正在运行所有软件的最新版本。这可能不是必要的,但无论如何。
apt-get update; apt-get dist-upgrade现在我们更改 /etc/apt/sources.list 以包含 3.0 的存储库。请注意,3.0 只有三个存储库:base、main、update。启动您最喜欢的编辑器(至少应该安装了 vi)并更新该文件。一个可用的 sources.list 可能如下所示
rpm ftp://ftp.uninett.no/linux/yellowdog/apt 3.0 base main update rpm-src ftp://ftp.uninett.no/linux/yellowdog/apt 3.0 base main update现在让我们更新软件包列表并检查完整的 dist-upgrade 有多遥不可及
apt-get update apt-get -s dist-upgrade哇!那里有很多错误。让我们解决其中最糟糕的一些。首先删除大量软件包。请注意,在此之后,我们将无法读取 man 页面。
rpm -e kudzu kernel-pcmcia-cs rpm-python yup yi pspell aspell groff man现在的状态是什么?
apt-get -s dist-upgrade again仍然有错误,而且非常难以解决。我们必须采取一些更底层的操作。真正的痛苦是安装新版本的 rpm,所以让我们从它开始。手动下载以下软件包
glibc-2.3.1-51a.ppc.rpm glibc-common-2.3.1-51a.ppc.rpm libelf-0.8.2-2.ppc.rpm popt-1.7-9d.ppc.rpm rpm-4.1-9d.ppc.rpm librpm404-4.0.4-8x.27.ppc.rpm apt-0.5.5cnc4.1-1b.ppc.rpm libgcc-3.2.2-2a.ppc.rpm libstdc++-3.2.2-2a.ppc.rpm expat-1.95.4-1.ppc.rpm fontconfig-2.1-3.ppc.rpm freetype-2.1.3-4.ppc.rpm XFree86-libs-4.3.0-2.1c.ppc.rpm XFree86-libs-data-4.3.0-2.1c.ppc.rpm XFree86-Mesa-libGL-4.3.0-2.1c.ppc.rpm我们暂时不需要 apt,所以让我们删除它
rpm -e apt到目前为止,一切顺利。现在,让我们升级 glibc 和 rpm。这是最关键的部分。如果我们在这方面取得成功,剩下的就很简单了。如果我们搞错了,重新安装可能是唯一的解决方案。rpm 有一些依赖项,所以我们现在必须包含它们。
rpm -Uvh glibc-common-2.3.1-51a.ppc.rpm \ glibc-2.3.1-51a.ppc.rpm \ libelf-0.8.2-2.ppc.rpm \ popt-1.7-9d.ppc.rpm \ rpm-4.1-9d.ppc.rpm \ librpm404-4.0.4-8x.27.ppc.rpm如果您的设置和我的一样,我们会被以下无法解决的错误卡住
rpmlib(PartialHardlinkSets) <= 4.0.4-1 is needed by glibc-common-2.3.1-51a这似乎是 YellowDog 的打包者所忽视的问题(老实说,我认为他们从 RedHat 继承了这个错误),所以我们只是忽略它,使用一些强制手段,并希望这不会在以后咬我们一口。
rpm -Uvh --nodeps --force glibc-2.3.1-51a.ppc.rpm \ glibc-common-2.3.1-51a.ppc.rpm \ libelf-0.8.2-2.ppc.rpm \ popt-1.7-9d.ppc.rpm \ rpm-4.1-9d.ppc.rpm \ librpm404-4.0.4-8x.27.ppc.rpm哎哟。来自 rpm 的难看错误。让我们检查一下 rpm 数据库是否仍然工作。
rpm -qa好吧,看起来我们真的搞砸了。现在怎么办?很抱歉告诉你,但我已经诱骗你毁坏了你的计算机安装。出去找点生活乐趣,而不是盯着这些旧的灰尘收集器。开玩笑的。幸运的是,rpm 能够重建它的数据库,所以我们只需删除旧的数据库并构建一个新的。
rm -f /var/lib/rpm/__* rpm --rebuilddb现在数据库应该再次工作了吧?
rpm -qa如果这可行,我们将获得 250 奖励积分和两颗银星,并且可以继续我们对 3.0 的探索。找到匕首并将其投向龙。
如果我们对 nsswitch 和 gconv-modules 没有任何特殊参数,我们将使用新的参数(如果存在)
mv -f /etc/nsswitch.conf.rpmnew /etc/nsswitch.conf mv -f /usr/lib/gconv/gconv-modules.rpmnew /usr/lib/gconv/gconv-modules现在让我们重新安装 apt。它也有很多依赖项需要修复
rpm -Uvh apt-0.5.5cnc4.1-1b.ppc.rpm \ expat-1.95.4-1.ppc.rpm \ freetype-2.1.3-4.ppc.rpm \ fontconfig-2.1-3.ppc.rpm \ libgcc-3.2.2-2a.ppc.rpm \ libstdc++-3.2.2-2a.ppc.rpm \ XFree86-libs-4.3.0-2.1c.ppc.rpm \ XFree86-libs-data-4.3.0-2.1c.ppc.rpm \ XFree86-Mesa-libGL-4.3.0-2.1c.ppc.rpm \我有时会让 rpm 卡在这里。这是 rpm 中的一个已知错误,随时可能发生。如果您遇到这种情况,请获取另一个终端(如果您在主控制台上,则为 Alt+F2),杀死 rpm,然后删除并重建数据库。然后再次执行所需的 rpm 命令。
killall -9 rpm rm -f /var/lib/rpm/__* rpm --rebuilddb现在;apt 的安装可能已经更改了我们的 sources.list,所以检查一下,如果您愿意,请复制回原始文件。
mv /etc/apt/sources.list /etc/apt/sources.list.3.0.orig mv -f /etc/apt/sources.list.rpmsave /etc/apt/sources.list我们现在可能应该重新同步本地 apt 数据库并检查状态
apt-get update && apt-get -s dist-upgrade仍然有一些未解决的依赖项,但我们正在接近目标。安装了 apt 后,剩下的就像嚼煮熟的鱼一样。没什么好担心的。哎哟!一根骨头。
apt-get install pam拖入以下软件包:chkconfig cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain db4 hesiod openldap openssh openssh-clients openssh-server openssl perl perl-Filter python sendmail
除非您已完成一些特殊的 pam 配置,否则请使用系统身份验证的新值。然后继续更新。
mv -f /etc/pam.d/system-auth.rpmnew /etc/pam.d/system-auth apt-get install passwd拖入以下软件包:glib2 libuser
apt-get install kbd拖入以下软件包:initscripts util-linux
apt-get install compat-db compat-pwdb拖入以下软件包:compat-libstdc++
apt-get -s dist-upgrade如果没有错误,我们就完成了所有困难的部分。很好!现在是最后的障碍:完整的 dist-upgrade。执行一个
apt-get -y dist-upgrade并享受到达这个任务的终点。您将获得所有积分。只需亲吻青蛙,您也会得到公主。您可能需要重新启动,只是为了检查一切是否都如您所愿。
您可能想要再次重新安装一些软件包。例如,“man”可能会派上用场。
apt-get install kudzu rpm-python pspell aspell groff man这就是全部内容。这并不难,是吗?