使用Nix在本地构建GitHub页面

问题描述 投票:2回答:1

我在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 zlibnix-shell -p zlibStaticnix-shell -p zlib libxml2nix-shell -p zlib pkgconfig等)。

从谷歌上搜索,似乎Nokogiri是一个非常普遍的依赖(例如Rails依赖它),所以我猜大多数人都克服了我遇到的困难。我错过了什么?

ruby github-pages zlib nix nixos
1个回答
1
投票

短路

如果您真正需要的是构建一个github页面,您只需要输入一个带有nix-shell -p jekylljekyll build的shell,因为现在jekyll被打包为一个应用程序

当你希望在同一个Gemfile中有jekyll和其他宝石时使用的长路径

你可以在这里找到详细的说明:Building a Jekyll Environment with NixOS(即使NixOS没有特定的东西)

我认为这是--magic标志的问题(或者我没有得到它的真实用法)并且它没有使用一些宝石在nixpkgs中的特殊配置。

所以为了避免那个标志你可以(post above中的完整说明):

  1. 像你一样创建一个裸Gemfile,没有'group'指令
  2. 在一个shell中用捆绑器调用bundler lock来获取Gemfile.lock
  3. 打电话给bundix没有任何参数来获得gemset.nix
  4. 创建一个在buildInputs中有bundlerEnv的派生,如手册中所述。 博客的default.nix的奖励积分因为它在你键入nix-shell时启动jekyll本地服务器
© www.soinside.com 2019 - 2024. All rights reserved.