2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

学内限定サーバーでしかオンラインアクティベートできないMathematicaを学外からアクティベートする方法(MacOS)

Last updated at Posted at 2020-05-24

はじめに

Mac使いでMathematicaを使いたいが、ライセンスサーバーが学内にあるので学外からアクティベートできず使えない!

こんな経験がある方はこの記事を見れば解決します。(ただしVer.11以前のMathematicaでは成功していません。)

sshでDynamic Port Forwardingを飛ばしてしまえば解決するはずだったのですが、どうやらMathematicaはMacのネットワーク設定からsocksプロキシを設定しても見てくれないようです。。。
この現象によって筆者はずっと悩んでいましたが、tsocksというソフトを利用することによって解決しました。

(また、この記事はMacOSを標的としていますが、LinuxやWindows Subsystem for Linux(WSL)でも同様の手順で解決するはずです。
純正Windowsはtsocksが使えないのでもう少し工夫する必要がありそうです。)

環境

  • MacOS Mojave 10.14.6
  • Mathematica 12.0

※ Mathematica 11.1以前の32bit版を使用している方は後ろの方のMathematica 11.1で起動しない問題も参照してください。

Dynamic Port Forwarding

まず、Mathematicaのライセンスサーバーにpingが通る踏み台サーバーを用意し、
sshでDynamic Port Forwardingします。
Dynamic Port Forwardについての詳細な説明は省きます。
詳しくはググるか、sshによるポートフォワーディングまとめなどを参照してください。

$ ssh {ユーザー名}@{学内に置いてある踏み台サーバーIP} -D 10080

ここでは10080ポートを利用していますが、基本何でもいいです。ただし、小さい数字はすでに何かのサービスが専有している可能性があるので10000以上を指定するのが無難です。

本来はここまでやってsocksプロキシを設定すればよいのですが、今回は追加の手順が必要です。

tsocks

tsocksは任意のアプリケーションの通信を強制的にsocksプロキシ経由にするソフトです。
githubで公開されています。

homebrew版もありますが、上手く動かなかったのでソースからビルドします。

まず別のターミナルを開いて、ローカルにcloneします。(今回は~/optを作業ディレクトリとします。)

$ cd ~/opt
$ git clone https://github.com/pc/tsocks.git

あとはgithubで記された手順に従って作業しますが、/usrにソフトをインストールすることは推奨されていませんし、SIPで保護されているので、/usr/local以下にインストールするように変更します。

以下の手順を実行してください。

$ cd tsocks
$ autoconf
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

次に/usr/local/bin/tsocksを以下のdiffのように修正します。

$ vi /usr/local/bin/tsocks
diff
45c45
< LIBDIR="/lib"
---
> LIBDIR="/usr/local/lib"

さらにtsocks用の設定ファイルを作ります。

$ sudo vi /etc/tsocks.conf
$ cat /etc/tsocks.conf
server = 127.0.0.1
server_type = 5
server_port = 10080

ここでのserver_portは先程ポートフォワーディングで設定したポートです(今回は10080)。

実際に起動する

以下で起動します。

$ tsocks /Applications/Mathematica.app/Contents/MacOS/Mathematica

これでsocksプロキシ経由でMathematicaを起動することができました。

毎回これを入力するのはめんどくさいので、エイリアスを設定しておくと良いです。

$ echo "alias math-socks='tsocks /Applications/Mathematica.app/Contents/MacOS/Mathematica'" >> ~/.bashrc

次回からは以下でsocksプロキシを経由して起動できます。

$ math-socks

あとは起動したMathematica上でいつものようにネットワークアクティベートすればOKです。

Mathematica 11.1で起動しない問題

同様の手順でMathematica 11.1を起動しようとすると、

$ tsocks /Applications/Mathematica.app/Contents/MacOS/Mathematica
dyld: could not load inserted library '/usr/local/lib/libtsocks.dylib' because no suitable image found.  Did find:
	/usr/local/lib/libtsocks.dylib: mach-o, but wrong architecture
	/usr/local/lib/libtsocks.dylib: stat() failed with errno=1

[1]    66718 abort      tsocks ./Mathematica

と怒られます。
これはVer.11以前のMathematicaが32bitアプリであるため発生している現象です。

これに対応するためにはtsocksを32bitでmakeする必要があると思われますが、、、勉強不足でやり方がよくわかりません。
どなたか教えて下さい。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?