【发布时间】:2019-06-12 03:39:39
【问题描述】:
我正在关注需要ruby 和tk 支持的programming languages course。我的笔记本电脑运行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 ];
}
test.rb
#!/usr/bin/env ruby
require 'tk'
root = TkRoot.new do
title "Ruby/Tk Test"
end
Tk.mainloop
【问题讨论】:
-
我不能专门为 NixOS 说话,但我相信 Ruby/tk 不再维护(几年了)。 Ruby 的 GUI 情况令人震惊,没有太多积极的前景。 Qt4 有一些不错的绑定,当需要 GUI 时,它们可能是最广泛使用的绑定,但即使它们已经过时,构建在较旧的技术之上。可悲的是,尝试使用 Ruby 实现现代 GUI 是一种自虐形式。
-
@ForeverZer0 我正在按照课程说明使用 ruby-2.3
-
你可以尝试在github.com/ruby/tk 上打开一个问题,但考虑到最后一次提交已经超过 1 年,我也担心它不再被维护了。我的印象是 ActiveState 仍然支持它,而且由于他们声称也支持 Linux,这可能是一个选择。当然,这意味着您还必须安装 Ruby 和 Tcl 的 ActiveState 端口。您可能想先在code.activestate.com/lists/ruby-talk 询问这是否可行。