拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

codex-desktop-linux打包体系揭秘:一套源码如何产出deb/rpm/pacman/AppImage/Nix五种格式

codex-desktop-linux打包体系揭秘:一套源码如何产出deb/rpm/pacman/AppImage/Nix五种格式 codex-desktop-linux打包体系揭秘一套源码如何产出deb/rpm/pacman/AppImage/Nix五种格式【免费下载链接】codex-desktop-linuxUnofficial ChatGPT desktop app for Linux (formerly the Codex app), built locally from OpenAI’s official macOS app. Includes Chat, Work, and Codex. Packages for Debian/Ubuntu (.deb), Fedora/openSUSE (.rpm), Arch (pacman), Nix/NixOS, and AppImage, with Wayland and X11 support.项目地址: https://gitcode.com/gh_mirrors/co/codex-desktop-linuxcodex-desktop-linux 是一个为 Linux 打造的非官方 ChatGPT 桌面应用含 Chat、Work 与 Codex 三大模块它把 OpenAI 官方签名 Linux 包作为唯一上游经过校验、可选特性补丁后用同一套构建流水线产出deb、rpm、pacman、AppImage、Nix五种安装包并原生支持 Wayland 与 X11。本文带你完整看懂这套 Linux 打包体系的设计与执行过程帮你在自己的发行版上一键装好。 先看懂整体官方 .deb 进五种安装包出整套打包体系的核心思路是单一上游 多路输出上游只认一种格式OpenAI 官方签名的 Linux.deb包支持 amd64 / arm64无论最终产出什么格式原料都来自它。中间产物统一先构建出本地应用树codex-app/官方 Electron 运行时、原生模块、内置codex与rg命令行工具全部原样复用。五种输出各自封装每个格式由独立脚本负责但共用同一套内容暂存逻辑保证五种包里装的东西一致。官方签名 .deb ──► 校验/解包 ──► codex-app/ 应用树 ──┬──► .deb (Debian/Ubuntu/Mint) ├──► .rpm (Fedora/openSUSE) ├──► pkg.tar (Arch/Manjaro) ├──► .AppImage (任意发行版) └──► Nix flake (NixOS/Nix)构建入口是根目录的 Makefile所有命令都围绕它展开。 第一步构建应用树签名校验是硬性关卡运行make build-app后install.sh 会执行一条严格的安全链路使用仓库内置的固定密钥assets/openai-codex-linux-repository-key.gpg.base64逐级验证InRelease → Packages → 安装包 SHA-256解包并记录版本、架构、SHA-256 到.codex-linux/build-info.json构建元数据若启用了 Linux 特性才会解包resources/app.asar打补丁未启用任何特性时app.asar 与官方包逐字节一致。你也可以用UPSTREAM_DEB/path/to/xxx.deb make build-app指定一个已下载的官方包仍会校验包名、架构与完整性。详细规则见 docs/build-and-packaging.md。️ 五种格式五条构建命令git clone https://gitcode.com/gh_mirrors/co/codex-desktop-linux cd codex-desktop-linux make bootstrap-native # 推荐自动装依赖 构建 打包 安装 # 或者分别构建指定格式 make deb make rpm make pacman make appimage所有产物统一输出到dist/目录。下面逐个拆解每种格式的实现要点。deb 包dpkg-deb 直建依赖直接继承官方包scripts/build-deb.sh 的工作流创建dist/deb-root暂存目录调用公共逻辑铺入应用内容渲染 packaging/linux/control 模板——其中的Depends、Recommends等字段直接从官方包的 control 元数据继承保证运行依赖与官方一致生成DEBIAN/postinst / prerm / postrm维护脚本含 AppArmor 策略加载执行dpkg-deb --root-owner-group --build完成打包。rpm 包rpmbuild spec 模板版本号智能拆分scripts/build-rpm.sh 使用 packaging/linux/codex-desktop.spec 模板有几个值得注意的细节RPM 版本号不允许含脚本会把形如2.1.2abc123的版本号自动拆分为 version 与 release支持MAX_BUILD_THREADS8参数切换zstdio多线程压缩加快打包架构映射x86_64 →x86_64aarch64 →aarch64。pacman 包PKGBUILD 模板渲染scripts/build-pacman.sh 基于 packaging/linux/PKGBUILD.template 渲染出临时 PKGBUILD并配合 packaging/linux/codex-desktop.install 钩子脚本安装后刷新桌面菜单最后交给makepkg产出pkg.tar.zst。版本号策略与 RPM 相反后缀保留在pkgver中pkgrel留给发行版重建。AppImage免安装便携版最轻的一条路AppImage 构建最简见 scripts/build-appimage.sh核心文件在 packaging/appimage/ 目录AppRun 负责自解压后调用start.sh启动器复用官方内置的codexCLI 与运行时库不会自动添加--no-sandbox——系统若禁用用户命名空间会给出诊断提示而非不安全回退不包含更新器服务删除文件即卸载适合原子化桌面如 Fedora Silverblue与不确定发行版的场景。Nix flake哈希钉死一切的终极可复现Nix 输出走的是完全独立的一条可复现构建链路入口是 flake.nix用pkgs.fetchurl按 nix/upstream-linux-packages.json 中钉死的 SRI 哈希下载官方包在派生构建内执行同一个install.sh再用 nix/elf-runtime.cjs 审计并修复 ELF 动态链接器路径patchelf确保官方二进制能在 Nix store 中运行启用特性时按需编译 Rust 原生助手computer-use、read-aloud、record-replay 等并支持 cachix 二进制缓存加速NixOS 下还有一个定制的 bubblewrap 包装器处理沙箱环境。常用输出包括codexDesktop、computerUse、remoteMobile等可override变体文档见 docs/nix.md。 隐藏的功臣一份公共暂存层统一五种包五种格式虽然构建脚本各写各的但包内内容完全同源——都来自 scripts/lib/package-common.sh 中的stage_common_package_files内容安装位置说明应用本体/opt/codex-desktop官方运行时 启动器 特性资源命令入口/usr/bin/codex-desktop转发到start.sh桌面项codex-desktop.desktop菜单名ChatGPT Community与官方 ChatGPT 明确区分图标assets/codex-linux.png带蓝色 C 标识的社区图标AppArmor 策略/etc/apparmor.d/由模板按包名动态渲染更新器codex-update-manager用户服务见 packaging/linux/codex-update-manager.service此外启用任一 Linux 特性时公共层还会运行该特性的打包钩子run_linux_feature_package_hooks把特性声明的依赖与文件自动合并进对应格式的依赖清单——这是特性框架 × 五种格式能同时工作的关键机制。 原生包自带更新器事务式更新 一键回滚三种原生包默认内置 Rust 编写的codex-update-manager源码在 updater/src/用户级 systemd 服务轮询同一份签名 APT 元数据按 版本/架构/SHA-256 缓存官方包用当前启用的特性重新构建本地原生包等应用完全退出后再晋升保留上一个受管版本随时codex-update-manager rollback回滚。不想要自动更新PACKAGE_WITH_UPDATER0 make package即可产出纯手动更新版本桌面菜单中的检查更新项也会自动移除。✅ 质量保障跨格式冒烟测试由于五种格式共享应用树与公共暂存层任何一处改动都可能波及全部格式。仓库为此提供两级验证bash tests/scripts_smoke.sh # 快速冒烟 ./scripts/ci-local.sh all # 完整本地 CI 套件最终包还会人工/自动核查官方 ELF 是否完整、干净app.asar是否逐字节一致、桌面项是否显示ChatGPT Community、架构是否匹配构建机、是否未混入 OpenAI 的 APT 源配置。 常见问题速答Q1五种格式选哪个Debian/Ubuntu 系选make debFedora/openSUSE 选make rpmArch/Manjaro 选make pacmanNixOS 选 flake其余发行版含原子化桌面选 AppImage。make package会自动探测发行版选择对应格式。Q2为什么包名叫 codex-desktop 而菜单显示 ChatGPT Community包标识保持codex-desktop、安装路径保持/opt/codex-desktop方便脚本化运维菜单名与带蓝 C 的图标则让用户一眼区分官方ChatGPT包与社区版两者可共存但不应同时运行。Q3构建需要什么环境Bash、curl、gpgv、dpkg-deb、Node.js 20、Python 3、C/C 工具链Rust 用于更新器与特性原生助手。bash scripts/install-deps.sh支持 apt / dnf / zypper / pacman 四种源自动装齐。总结codex-desktop-linux 的打包体系是一份源码、五种格式的典范设计单一上游保证所有格式的内容基线与官方完全一致未启用特性时 app.asar 逐字节相同公共暂存层scripts/lib/package-common.sh 消除格式间的内容漂移特性打包钩子让 30 个可选 Linux 特性自动适配每一种包格式事务式更新器 冒烟测试守住安装后的持续可靠性。对普通用户你只需要记住一句话装好依赖后执行make bootstrap-native剩下的交给 Makefile。【免费下载链接】codex-desktop-linuxUnofficial ChatGPT desktop app for Linux (formerly the Codex app), built locally from OpenAI’s official macOS app. Includes Chat, Work, and Codex. Packages for Debian/Ubuntu (.deb), Fedora/openSUSE (.rpm), Arch (pacman), Nix/NixOS, and AppImage, with Wayland and X11 support.项目地址: https://gitcode.com/gh_mirrors/co/codex-desktop-linux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表