hashiwa’s blog

技術的なメモを徒然と置いていきます。

GitLabインストール時にはまったこと

GitLabのインストール時にはまったこと

Google Compute Engine の Ubuntu 16.10 上にGitLabをインストールした時にはまったこと。

about.gitlab.com

を見ながらインストールしてたら、gitlab-ceが入らなかった。

$ sudo apt-get install gitlab-ce
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package gitlab-ce

gitlab.com

を見てたら、yakketyはいまは使用できないらしい。

$ cat /etc/apt/sources.list.d/gitlab_gitlab-ce.list 
# this file was generated by packages.gitlab.com for
# the repository at https://packages.gitlab.com/gitlab/gitlab-ce

deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ yakkety main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ yakkety main

yakketyをtrustyに変えたらgitlab-ceをインストールできた。

$ cat /etc/apt/sources.list.d/gitlab_gitlab-ce.list 
# this file was generated by packages.gitlab.com for
# the repository at https://packages.gitlab.com/gitlab/gitlab-ce

deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ trusty main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ trusty main
$ sudo apt-get update
$ sudo apt-get install gitlab-ce

以上

Node.js事始め

インストール&セットアップ

  1. https://nodejs.org/ja/から推奨版(このときはV6.9.4)をダウンロードしてくる
  2. 任意のディレクトリに展開
  3. アプリを書く
  4. 実行

※本筋とは関係ないけど、xz形式ファイルの解凍が初めてでやり方わからなかったのですが、xzコマンドなんてあるんですね。

$ xz -dc node-v6.9.4-linux-x64.tar.xz | tar xfv -

アプリは、Node.js公式ページのExampleを参考にしました。

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World!\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

nodeコマンドで実行。

$ node-v6.9.4-linux-x64/bin/node example.js
Server running at http://127.0.0.1:3000/

ブラウザでhttp://127.0.0.1:3000/を開いて、Hello World! が表示されればOK。

GraalVMとTruffle

GraalVM

Graalは、Java Virtual Machine(JVM)用の新しいJITコンパイラです。そしてGraalVMとは、GraalコンパイラをもったJVMです。詳しくは、Oracle Labs GraalVM: Programming Languages and Runtimes Overviewを参照。

Graalは、Javaプログラミング言語以外にも、JavaScriptRubyなどのスクリプト言語JVM上で動かす際のJITコンパイラにもなるようです。

ここで、少し触ってみます。Oracle Labが公開しているバイナリをダウンロードします(私は GraalVM preview for Linux (v0.19), Development Kit をダウンロードしました)。ダウンロードするにはOTNアカウントを作る必要があると思います。

まずはJava

$ ./graalvm/bin/java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.71-b01-internal-jvmci-0.23, mixed mode)

$ cat A.java
class A {
  public static void main(String[] args) {
    System.out.println("Hello world!");
  }
}

$ ./graalvm/bin/java A
Hello world!

このバイナリはRubyとかも実行できます。

$ ./graalvm/bin/ruby -v
jruby 9.1.7.0-SNAPSHOT (2.3.1) 2016-12-07 00938d2 Java HotSpot(TM) 64-Bit Server VM 25.71-b01-internal-jvmci-0.23 on 1.8.0_111-b14 +jit [linux-x86_64]

$ cat A.rb
print "Hello world!\n"

$ ./graalvm/bin/ruby A.rb
Hello world!

Truffle

そして、以下のTruffleを使えば、オレオレプログラミング言語を作ってJVM上で動かすことができるらしいです。(んで、JITコンパイルも使える?)

GitHub - graalvm/truffle: The Truffle Language Implementation Framework.

以下がサンプル。これを参考にすれば言語作れるかも。

GitHub - graalvm/simplelanguage: A simple example language built using the Truffle API.

こうやって使える。

$ cat tests/HelloWorld.sl
function main() {  
  println("Hello World!");  
}


$ ./sl tests/HelloWorld.sl
== running on Graal Truffle Runtime
Hello World!

やってみたいけど、まだまだ調べが必要かな・・・