(评论)
(comments)
原始链接: https://news.ycombinator.com/item?id=39720007
很高兴听到您有兴趣为 Guix 做出贡献并更新 Erlang 和 Elixir 的版本。 以下是帮助指导您完成此过程的一些步骤:
1. **分叉 Guix 存储库**:首先将 [官方 Guix GitHub 存储库](https://github.com/guix/guix) 分叉到您自己的帐户。
2. **创建新分支**:分叉存储库后,为您的更改创建一个新分支。 使用描述性名称来解释您计划进行的更改的性质。
````嘘
$ git checkout <你的用户名>/guix
$ git checkout -b erlang-elixir-update
``````
3. **查找现有的包定义**:在 Guix 存储库中查找现有的 Elixir 和 Erlang 包定义。 使用 GitHub 上的搜索功能或导航到适当的目录。
4. **更新版本号**:打开相应的包定义文件并将版本号相应更新为所需的值。 请务必测试更新的软件包,以验证它们在更新后是否正常工作。 保存更改。
````嘘
$ git checkout master # 暂时切换到master分支
$ nano path/to/package.scm # 打开包定义文件
$ git checkout erlang-elixir-update # 切换回你的分支
$ git add . # 将修改后的文件添加到暂存区
$ git commit -m "将 Erlang 和 Elixir 更新到最新版本"
``````
5. **重建Guix系统**:由于更新这些软件包可能会影响整个系统,因此重建Guix以确保新版本顺利集成非常重要。
````嘘
$ guix 拉
$ guix 系统重新配置 --verify /etc/config.scm
``````
6. **提交拉取请求**:测试新构建的系统后,提交拉取请求以将您的分支合并到官方 Guix 存储库中。 写一条清晰简洁的消息来解释您所做的更改。
7. **监控进度**:跟踪您的拉取请求的状态,并及时回复 Guix 维护人员的任何评论或反馈,以促进您的更改被接受。
I have 2 systems running Nix, and I'm afraid to touch them. I've already broken both of them enough that I had to reinstall from scratch in the past (yes yes - it's supposed to be impossible I know), and now I've forgotten most of it. In theory, Nix is idempotent and deterministic, but the problem is "deterministic in what way?" Unless you intimately understand what every dependent part is doing, you're going to get strange results and absolutely bizarre and unhelpful errors (or far more likely: nothing at all, with no feedback). Nix feels more like alchemy than science. Like trying to get random Lisp packages to play nice together.
Documentation is just plain AWFUL (as in: complete and technically accurate, but maddeningly obtuse), and tutorials only get you part of the way. The moment you step off the 80% path, you're in for a world of hurt, because the underlying components are just not built to support anything else. Sure, you can always "build your own", but this requires years of experiential knowledge and layers upon layers of frustration that I just don't want to deal with anymore (which is also why I left Gentoo all those years ago). And woe unto you if you want to use a more modern version than the distribution supports!
The strength of Docker is the chaos itself. You can easily build pretty much anything, without needing much more than a cursory understanding of the shell and your distro's package manager. Or you can mix and match whatever the hell you want! When things break, it's MUCH easier to diagnose and fix the problems because all of the tooling has been around for decades, which makes it mature enough to handle edge cases (and breakage is almost ALWAYS about edge cases).
Nix is more like Emacs: It can do absolutely anything if you have the patience for it and the deep, arcane knowledge to keep it from exploding in a brilliant flash of octarine. You either go full-in and drink the kool aid, or you keep it at arm's length - smiling and nodding as you back slowly towards the door whenever an enthusiast speaks.
reply