В этом ответе будет установлена последняя версия Ruby (на момент написания) вместе с последней совместимой версией Tcl.
Примечание: после установки Ruby 2.7.0, $ gem install tk
говорит: «Tcl / Tk8.6 не поддерживается [;] он не будет работать правильно». Поэтому вместо этого мы должны ограничить использование Tcl версией 8.5. Мы сделаем это, установив ActiveTcl версии 8.5.
Эти шаги предназначены для Debian Stretch, то есть для Fedora 31, YMMV. :)
Создайте несколько каталогов:
$ mkdir ~/install
$ mkdir ~/install/temp
$ mkdir ~/progra
Используя веб-браузер, загрузите ActiveTcl 8.5 из ActiveState. Затем установите его:
$ pushd ~/install/temp
$ tar zxf ~/Downloads/ActiveTcl-8.5*.tar.gz
$ cd ActiveTcl-8.5*
$ ./install.sh
Ответьте на вопросы по установке:
Please specify the installation directory.
Path [/opt/ActiveTcl-8.5]: ~/progra/ActiveTcl-8.5
Please specify the directory for the demos.
Path [~/progra/ActiveTcl-8.5/demos]:
Please specify the runtime installation directory.
Path [~/progra/ActiveTcl-8.5]:
$ echo 'export PATH="$HOME/progra/ActiveTcl-8.5/bin:$PATH"' >> ~/.bashrc
$ echo 'export MANPATH="$HOME/progra/ActiveTcl-8.5/bin/man:$MANPATH"' >> ~/.bashrc
Установите некоторые системные пакеты, необходимые для rvm
:
$ sudo apt-get install curl dirmngr gnupg
Установите rvm (Ruby enVironment Manager), выполнив следующие действия в соответствии с инструкциями :
$ \curl -sSL https://get.rvm.io | bash -s -- --ignore-dotfiles
$ echo '# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.' >> ~/.bashrc
$ echo 'export PATH="$PATH:$HOME/.rvm/bin"' >> ~/.bashrc
$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*' >> ~/.bashrc
$ exit
Проверьте и используйте rvm
:
$ type rvm | head -n 1 # It should say, 'rvm is a function'.
$ rvm list known
$ rvm install 2.7.0 --enable-shared --enable-pthread --with-tk --with-tcl
Установите системный пакет, необходимый для гема Tk:
$ sudo apt-get install libx11-dev
Установите гем Tk и проверьте установку Tk:
$ gem install tk
$ ruby -W0 -e "require 'tk'; p Tk::TK_PATCHLEVEL"
$ ruby -W0 -e "require 'tk'; require 'tkextlib/iwidgets'; p 'ok'"
Теперь, когда Запускаю вашу программу, вижу виджет календаря.