cp oldmachine/bloatedfont.so /usr/lib/bloatedfont.from-my-old-machine.so

cp oldmachine/bloatedfont.so /usr/lib/bloatedfont.from-my-old-machine.so

我需要将我的 FreeBSD 7.0 i386 服务器转移到另一个主机。我还想升级到 64 位版本(以消除 4GB 内存限制)。该服务器有常见的开源软件:apache2、mod_perl、mysql51、perl5、python26。

我想知道它是否能顺利转移到 64 位服务器。64 位 FreeBSD 上是否存在任何已知的陷阱/限制?

答案1

所有配置和数据文件在 i386 和 amd64 上都是相同的。将网站转移到另一台服务器的相同程序在这里也可以正常工作。

确保备份现有系统。验证备份!制作两个备份也不错。导出已安装端口的列表也是一个好主意(pkg_info -ao | grep "/" > PkgList.txt或类似做法)。

根据你现在运行的版本和软件的具体情况,你可能能够就地升级到新版本;只需安装基础版本和内核。有时这就足够了,通常您必须为新库重建端口(portupgrade -af安装 portupgrade 端口后)。如果您想尝试此方法,我强烈建议您在实时服务器上执行此操作之前,使用您的备份副本之一在另一台机器上尝试此操作。

答案2

我认为您需要做的就是备份配置文件(如/etc和)/usr/local/etc,还要备份/usr/ports/usr/src以节省以后的带宽使用量,并且不要忘记备份/var。在 FreeBSD 64Bit 中,我发现某些端口只能在 i386 架构下工作。

答案3

由于几乎所有东西(至少比其他操作系统更多)都是向后兼容的,您可以将旧东西安装在子目录中,然后只需将其 chroot 即可保持所有东西的运行方式与以前完全相同。jail 会更好,但不是必需的。

确保 compat4、compat6、compat-whatever 兼容性端口与旧的动态链接二进制文件兼容。

在某些情况下,我只是通过在旧系统(或 chroot 系统)中制作静态链接和编译的二进制文件来确保安全,然后它们不依赖任何东西并且可以停留在任何版本的 FreeBSD 中,无论是较新的还是较旧的。

ldconfig -32 对我来说有点奇怪。这是 ldconfig 的新版本,允许 32 位程序使用特殊库与 64 位库进行交互。如果出错,可能会有点令人沮丧,因为出于某种奇怪的原因,他们没有像为 32 位配置文件那样制作纯文本版本的 64 位配置文件。

但是如果您依赖端口和预编译软件,那么就应该没问题。

但是如果你好奇,ldconfig -r 和 ldconfig -32 -r 将显示它正在使用的库。

在版本之间切换时丢失库的情况并不少见(因为我有诵读困难症并且经常乱搞),所以我经常只是继续运行该程序,收到“找不到 .so”消息,然后将“.so”从旧操作系统复制到新操作系统并将其放在 /usr/lib 或其他地方,然后对 <whatever12.so> 等重复此操作,直到它正常工作。

但是为了跟踪我正在做的事情(不制造更大的混乱),我会在移动文件时重命名文件并重新创建符号链接,以便它能够在“ls”的输出中有效地记录下来。

cp oldmachine/bloatedfont.so /usr/lib/bloatedfont.from-my-old-machine.so

cd /usr/lib

ln -s bloatedfont.from-my-old-machine.so bloatedfont.so

当然,有很多方法可以编写脚本并实现自动化。不确定是否有适合这种修补工作的软件,但同样,您真的不需要它。:-)

相关内容