MacOS X "Tiger"(PPC) 包管理工具的安装和简单使用
请注意:本文仍在施工中,故在这行字被删除之前,将不保证其中任何内容的真实性、准确性
- 本文图片暂未改为从图床加载
本文是一个在MacOS X 10.4安装、配置、使用各种包管理并安装必要工具的简单指南。尽管该系统已经完全过时,但作为PowerPC黄金时期的、在UI设计上完全贯彻了“Aqua”美学的操作系统,其可玩性十分之高,以至于至今仍有许多开发者为其维护包管理工具和软件源仓库。
本文所用平台:一台10.4.11系统的powerbook G4 15’’(2005, “dl-sd”)
截至2026年年初,苹果仍然给10.4系统提供在线更新。在开始前,你应该先进行ota升级,让一切最新。
0.前置
安装Xcode2.5
你必须安装xcode. Xcode2.5是最后支持Tiger的版本,下载安装器并安装它。
下载地址:
配置代理
pass
1.Tigerbrew
本部分全程需要网络连接。强烈建议使用有线网络。
1.1.安装
仓库:https://github.com/mistydemeo/tigerbrew
安装:下载install.txt 然后终端输入(假设你当前位于存放该文件的目录下):
1 | |
进行安装。确保你有网络连接。
如果遇到curl报错指出从服务器返回空内容,那么你应该检查网络并多试几次。安装好后,你应该看到类似:
installbrew.png
![[Pasted image 20260316230828.png]]
1.2.配置
你可能已经注意到上一张图中红色下划线标注的警告。如果你此前没有任何配置,那么如果你像这样检查环境变量PATH的内容:
1 | |
得到的输出中应该不包括/usr/local/bin,这个十分常见的目录不在Tiger——这个古代操作系统的默认环境变量中。
我们知道,对于多数现代Unix软件包管理器,软件默认被安装在/usr/local/bin, tigerbrew自然也遵循这一规范。所以现在你现在为了配置环境变量,应该编辑~/.bash_profile,并加入
1 | |
现在,你应该可以继续了。运行下面的命令来下载必要的依赖
1 | |
然后,你需要安装X11. 最简便的方法是挂载你的MacOS安装盘,找到图示最下方的“optional installs(可选安装项目)”,打开。
如果你找不到你的安装盘了,就随便找一个用来安装Tiger的镜像。
![[Pasted image 20260316233049.png]]
然后,在“应用程序”一栏中选择X11,安装它。
![[Pasted image 20260316233522.png]]
如果你的系统没有安装X11,那么你在使用Tigerbrew安装一些常见程序时大概率会遇到问题。比如
git的依赖项tcl-tk包默认编译时包含了图形支持,其图形部分依赖 X11
现在可以使用了。但是,我强烈建议你阅读下一小节,先进行下述配置。
1.2.1.必要的更新
本部讲解如何更新、安装一些必要的软件包。
请务必遵循我给出的顺序,因为Tigerbrew并不能自行解决所有依赖问题。
GCC
Tiger的工具链非常老旧,只有2005年的GCC4.0.1. 所以为了防止无法进行正常的配置和编译,应该首先安装苹果版GCC4.2
1 | |
你应该不会在这一步碰到除了网络连接之外的问题。安装后,使用gcc --version检查版本,你应该会看到类似的输出:
gcc42.png
![[Pasted image 20260317132314.png]]
然后继续更新GCC,这会使你得到尽可能新的工具链,对于编译一些现代程序而言这是必须的。不过,尽管我没有测试过,但理论上你可以暂时跳过,先安装bash。但注意,apple-gcc42是必须的,没有它你几乎寸步难行。
要更新GCC,你可以
1 | |
但这非常有可能出现各种问题,原因是多方面的。建议手动安装。
所幸有高手专为PowerPC Tiger打包了GCC 14.2.0。它还一并包含了一些静态链接库(gmp、mpfr、libmpc 和 isl )使其可以无需额外依赖就能运作。
原作者的blog
你可以在这里下载powerpc-apple-darwin8.11.0-gcc-14.2.0.tar,然后拷贝到目标机器的硬盘中。然后,根据作者的建议解压到/opt/gcc14:
1 | |
这条命令这么写是因为作者的包内包含/opt/gcc14。考虑到作者日后可能还会更新使得该结构可能发生变化,你需要慎重执行这条命令,或者直接手动解压后拖进去。
接下来,在你的shell配置文件~/.bash_profile中,为环境变量PATH加入如下内容以让你的系统可以找到gcc14
1 | |
然后应用更改。
1 | |
现在,如果你检查gcc版本,应该会看到诸如:
![[Pasted image 20260317200450.png]]
bash
接下来,检查并更新bash版本:
![[Pasted image 20260317024401.png]]
tiger是bash2,十分老旧,许多特性已经过时,需要更新。如果你不这么做,那么一些脚本将无法运行。
更新bash(可以更新到5.2.21)
1 | |
安装后验证
1 | |
![[Pasted image 20260317025405.png]]
OpenSSL
更新OpenSSL会给你带来对现代加密协议的支持,它也是git和python3等常用软件的依赖。让我们先检查当前版本
1 | |
如果你此前没有做过任何操作,那么它将是OpenSSL 0.9.7,十分老旧。让我们安装3.5.4版本。如果你使用brew安装总是报错,建议从源码手动编译。
下载地址(github)
而这需要perl的较新版本(至少需要5.10),如果你没有(你可以用perl --version检查默认使用哪个版本),你应该先用brew安装perl(经测试,可以正常安装5.42)。
如果你安装后发现编译时用的仍然是老版perl,那么你需要编辑环境变量PATH,向~/.bash_profile加入:
1 | |
并应用。
根据 Homebrew 的相关设计,
/usr/local/opt/perl/bin是 Homebrew 安装 Perl 后,当前活跃版本的可执行文件目录。/usr/local/opt/perl是一个符号链接,指向/usr/local/Cellar/perl/5.42.x,便于版本切换。如果(我是说如果)这个目录对你无效,你需要想办法找到它。
随后进行配置-编译-安装三连。但在这之前有三点需要特别注意:
- Tiger的系统库老旧,它不支持
setcontext()(一个POSIX标准的较现代系统调用,用于实现协程),所以在配置时,必须添加参数no-async,否则编译器会因为找不到这个函数而报错。 - 编译OpenSSL需要头文件
Availability.h,但苹果在Leopard才引入它。所以我们有两种解决方式- 从Tiger 本来就有的
AvailabilityMacros.h创建一个名为Availability.h的符号链接,让试图#include <Availability.h>的代码实际读取AvailabilityMacros.h - 添加
Availability.h
- 从Tiger 本来就有的
- 你需要手动指定原子操作库
libatomic的位置,如果你已经根据本文安装了gcc14, 那么它在/opt/gcc14/lib"
对于1)给出我的参数供参考:
1 | |
对于2)这里采用方案1:
1 | |
- 注意,由于 OpenSSL 的编译命令会优先搜索源码内的
include/目录,你还需要在 OpenSSL 源码目录中创建同样的符号链接。
成功安装后,brew并不知道你已经手动安装了 OpenSSL,因为它有自己的独立的目录结构(/usr/local/Cellar)。因此,你需要把手动编译好的文件连接到这里。
1 | |
现在进行验证,你应该可以在输出中看到openssl3
1 | |
补充:根据 PR #27578,一个针对 macOS 10.4 Tiger 和 10.5 Leopard 的兼容性补丁已经于 2025 年 8 月被合并到主线。 故OpenSSL 3.6.0 及更高版本原生支持Tiger,理论上可以用基本配置编译,但为了稳妥起见(我在写这篇文章的时候尚未测试过),本文仍以本人实际配置时使用的3.5.4 为例。
- 尽管我没有遇到相关问题,但你可以尝试根据这条PR中所指出的,在配置参数中增加
no-asm来避免可能的PowerPC汇编代码问题 - 日后我会对其进行测试,然后更新这一小节到3.6+版本。毕竟在多数情况下,尽可能直接使用来自上游的代码能获得更好的支持和稳定性
curl
curl随着Tigerbrew被安装,但是由于:
- 你更新了OpenSSL,但现有的curl 依然是旧版openssl
- 较新的curl是git等常用软件的依赖
我建议你重新编译、安装它。直接从brew安装会遇到编译问题,让我们
1.3.Troubleshuttling
如果你遇到诸如这种错误:
![[Pasted image 20260317173039.png]]
这看起来很反常。你的进度条已经满了,但依然提示下载错误。这种状况很可能体现为,你第一次下载失败,重试时一开始就显示100%。
这时候,你需要清除缓存重试。
1 | |
找到对应软件的包体后删除它(不出意外的话,它应该是一个.incomplete文件),然后重试。
- 也许你应该选择手动安装它。
它的成因可能和ssl协议版本有关,还在研究
2.MacPorts
macports最新版本已不支持Tiger,使用2.9.3版本问题较多,暂未完全解决。本部分暂且鸽住。
todo:ssl证书过期问题
- 已经更新openssl
- 重新编译curl todo
![[Pasted image 20260317193100.png]]