使用 pixi 和 rattler_build 打包AI帮我写的程序
之前我已经尝试了修改和添加recipe到conda的频道,这次试试把我的DevSSH 打包上传到我自己的频道内。这次我想试试自己打conda包。
为什么选择pixi和rattler-build? 这次其实是个巧合… 本来想注册anaconda帐号用conda-build,结果他们官网不知道抽什么风,就是注册不成功,于是直接转prefix.dev了,正好学习一下更新的共苦
rattler-build简介 rattler-build是开发pixi团队开发的新一代conda包构建工具,它用Rust编写,自然就拥有更快的构建速度,它一定程度上与conda-forge的构建系统兼容,并且与pixi互相进行了一定程度的集成。
配置pixi.toml pixi的基本功能是配置开发环境,但是其实它也可以用来配置软件包的构建环境。进行相关的配置需要用到package关键字,同时需要在[workspace]内开启实验性质的pixi-build特性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [workspace] authors = ["Sylens Wong <qiumin14@163.com>" ]channels = ["conda-forge" ]name = "DevSSH" platforms = ["linux-aarch64" , "linux-64" ]version = "0.1.1" preview = ["pixi-build" ] [tasks] build = {cmd = "go build -o bin/devssh cmd/devssh/main.go" , cwd = "./" }[activation.env] CGO_ENABLED = "0" [dependencies] go = ">=1.25.4,<2" [package] name = "DevSSH" version = "0.1.1" [package.build.backend] name = "pixi-build-rattler-build" version = "0.3.*"
编写rattler-build的recipe rattler-build使用YAML格式的recipe文件来定义如何构建包,它与conda-build下的recipe是兼容的,不过并不支持所有的conda-build recipe语法。
以下是为DevSSH编写的recipe:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 package: name: devssh version: 0.1 .1 source: path: . use_gitignore: true build: number: 0 script: | # 构建二进制文件 go build -o "$PREFIX/bin/devssh" cmd/devssh/main.go requirements: build: - ${{ compiler('go-nocgo') }} - patchelf about: homepage: https://github.com/SilenWang/DevSSH license: MPL-2.0 license_file: LICENSE summary: 'A CLI tool to quickly set up remote development tools over SSH' description: | A CLI tool to quickly set up remote development tools over SSH repository: https://github.com/SilenWang/DevSSH
构建和上传包 1. 本地构建 如果配置文件设置无问题,执行构建命令应该就能得到conda格式的包了。
1 2 3 4 5 pixi build pixi build -t linux-64
如果有问题,就一点点问AI,不过值得注意的是,现在rattler-build可能不是太主流,得到的答案经常会是按照conda-build来答的,还是需要自己对着文档去鉴别尝试。
2. 配置prefix.dev账户并上传 上传前还是需要登录了,需要在账户下创建频道和设置API_TOKEN。
1 2 pixi auth login --token YOUR_API_TOKEN prefix.dev
设置好了,直接把编译好的内容上传就是,网速好的话很快就完成了。
1 pixi upload prefix devssh-0.1.1-hb0f4dca_0.conda -c sylens
3. 通过频道安装包 用 pixi 或者 conda 都可以安装。
1 2 3 pixi global install -c https://prefix.dev/sylens devssh conda install -c https://prefix.dev/sylens devssh