我在NixOS上,我想在本地构建一些GitHub页面。
GitHub seems to indicate,我应该创建一个Gemfile
包含:
gem "github-pages", group: :jekyll_plugins
继Nixpkgs manual section on Ruby之后,我做了:
$ cat > Gemfile
source 'https://rubygems.org'
gem "github-pages", group: :jekyll_plugins
$ $(nix-build '<nixpkgs>' -A bundix --no-out-link)/bin/bundix --magic
导致Nokogiri的构建失败:
An error occurred while installing nokogiri (1.8.1), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.8.1'` succeeds before bundling.
构建失败如下:
zlib is missing; necessary for building libxml2
我已经确认问题是通过运行来构建Nokogiri:
gem install nokogiri -v '1.8.1'
在各种环境中(与nix-shell -p zlib
,nix-shell -p zlibStatic
,nix-shell -p zlib libxml2
,nix-shell -p zlib pkgconfig
等)。
从谷歌上搜索,似乎Nokogiri是一个非常普遍的依赖(例如Rails依赖它),所以我猜大多数人都克服了我遇到的困难。我错过了什么?
短路
如果您真正需要的是构建一个github页面,您只需要输入一个带有nix-shell -p jekyll
和jekyll build
的shell,因为现在jekyll被打包为一个应用程序
当你希望在同一个Gemfile中有jekyll和其他宝石时使用的长路径
你可以在这里找到详细的说明:Building a Jekyll Environment with NixOS(即使NixOS没有特定的东西)
我认为这是--magic
标志的问题(或者我没有得到它的真实用法)并且它没有使用一些宝石在nixpkgs中的特殊配置。
所以为了避免那个标志你可以(post above中的完整说明):
bundler lock
来获取Gemfile.lock
bundix
没有任何参数来获得gemset.nix
buildInputs
中有bundlerEnv
的派生,如手册中所述。
博客的default.nix
的奖励积分因为它在你键入nix-shell
时启动jekyll本地服务器