具有tk支持的ruby

具有tk支持的ruby,ruby,tk,nix,Ruby,Tk,Nix,我正在关注一个需要ruby和tk支持的应用程序。我的笔记本电脑运行的是nixos。简单地向我的系统包中添加tk和ruby并不能解决这个问题。使用这两种方法创建nix shell也不会产生任何效果。我如何构造一个使用tk支持编译ruby的派生 shell.nix { pkgs ? import <nixpkgs> {} }: with pkgs; let myRuby = ruby_2_3.overrideAttrs (old: { configureFlags = [

我正在关注一个需要
ruby
tk
支持的应用程序。我的笔记本电脑运行的是
nixos
。简单地向我的系统包中添加tk和ruby并不能解决这个问题。使用这两种方法创建nix shell也不会产生任何效果。我如何构造一个使用tk支持编译ruby的派生

shell.nix

{ pkgs ? import <nixpkgs> {} }:

with pkgs;

let
  myRuby = ruby_2_3.overrideAttrs (old: {
    configureFlags = [
      "--with-tcl-dir=${tcl}"
      "--with-tk-dir=${tk}"
      "--enable-tcl-thread"
      "--enable-pthread"
    ];
    buildInputs = [
      ruby_2_3
      zlib
      gdbm
      libffi
      openssl
      readline
    ];
    propagatedBuildInputs = [
      tk
      tcl
    ];

  });

in
  mkShell {
    buildInputs = [ myRuby tk tcl ];
  }

我决定只构建一个派生并安装它。这管用

{ pkgs ? import <nixpkgs> {} }:

with pkgs;

let
  myRuby = ruby_2_3.overrideAttrs (old: {
    configureFlags = [
      "--with-tcl-dir=${tcl}"
      "--with-tk-dir=${tk}"
      "--enable-tcl-thread"
      "--enable-pthread"
    ];
    buildInputs = [
      ruby_2_3
      zlib
      gdbm
      libffi
      openssl
      readline
    ];
    propagatedBuildInputs = [
      tk
      tcl
    ];

  });

in
  myRuby
{pkgs?导入{}}
有pkgs;
让
myRuby=ruby\u 2\u 3.overrideAttrs(旧:{
配置标志=[
“--使用tcl dir=${tcl}”
“--使用tk dir=${tk}”
“--启用tcl线程”
“--启用pthread”
];
构建输入=[
ruby_2_3
兹利布
gdbm
利菲
openssl
阅读线
];
propagatedBuildInputs=[
传统知识
tcl
];
});
在里面
红宝石

我不能具体地为NixOS说话,但我相信Ruby/tk已经不再被维护了(现在已经有几年了)。Ruby的GUI状况令人震惊,没有多少积极的前景。Qt4有一些不错的绑定,在需要GUI时可能是最广泛使用的,但即使是它们也已经过时了,它们是在旧技术的基础上构建的。遗憾的是,试图用Ruby实现一个现代GUI是一种自我受虐的形式。@ForeverZer0我一直按照课程说明使用Ruby-2.3,您可以尝试在上打开一个问题,但考虑到上一次提交已经超过1年,我也担心它不再被维护。我的印象是ActiveState仍然支持它,而且因为他们声称也支持Linux,所以这可能是一种选择。当然,这意味着您还必须安装Ruby和Tcl的ActiveState端口。你可能想首先问一下这是否是一个可行的方法。
{ pkgs ? import <nixpkgs> {} }:

with pkgs;

let
  myRuby = ruby_2_3.overrideAttrs (old: {
    configureFlags = [
      "--with-tcl-dir=${tcl}"
      "--with-tk-dir=${tk}"
      "--enable-tcl-thread"
      "--enable-pthread"
    ];
    buildInputs = [
      ruby_2_3
      zlib
      gdbm
      libffi
      openssl
      readline
    ];
    propagatedBuildInputs = [
      tk
      tcl
    ];

  });

in
  myRuby