hogashi.*

日記から何から

Ubuntu16.04にJavaをインストールしてjenvで管理する

TL;DR

 Ubuntu16.04 に Java をインストールして jenv で管理する。
 jenv ではなく、デフォルトの alternatives を使うこともできる(らしい)。やっていません。

手順

jenv のインストール

 jenv は anyenv でインストールした。 anyenv のインストールは省略。

$ anyenv install jenv
$ exec $SHELL -l   # jenv へのパスを環境変数PATHに反映
java のインストール

 java 8 と 9 をインストールした。 apt-getopenjdk-8-jdkopenjdk-9-jdk を入れておいて、後から jenv add して管理する。

$ sudo apt-get install openjdk-8-jdk openjdk-9-jdk

 なんか update-alternatives: /usr/bin/jlink (jlink) を提供するために自動モードで /usr/lib/jvm/java-9-openjdk-amd64/bin/jlink を使います とかって警告がずらっと出たりするけど、これは多分システム側で *env 的なことをする alternatives なるソフトウェアがログを出しているだけっぽいので、やってくれてるなって感じで見守る。使いたい人はそちらを使えば良さそう、僕はバイナリをひとつひとつやるのは大変そうかなって思ったので jenv でやります。

jenv に登録

 インストールできたら、 jenv に管理する java のパスを追加する。
 それぞれのバージョンがどこにインストールされているのかは、 which java したり、シンボリックリンクを追ったりすれば多分たどり着ける。今回は alternatives が頑張ってくれているので、巡り巡って /etc/alternativesシンボリックリンクがあり、そこから実ファイルへ参照していた。

$ which java
/usr/bin/java
$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22  3月 11 22:01 /usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 42  3月 11 22:01 /etc/alternatives/java -> /usr/lib/jvm/java-9-openjdk-amd64/bin/java  # ゴール
$ ls /usr/lib/jvm
# (略)
java-9-openjdk-amd64  # java9 の実ファイルの場所
java-8-openjdk-amd64  # java8 の実ファイルの場所

 見つけたパスを追加していく。でき次第設定して完了。

$ jenv add /usr/lib/jvm/java-8-openjdk-amd64
$ jenv add /usr/lib/jvm/java-9-openjdk-amd64
$ jenv versions  # 確認
* system (set by /home/ほげ/.anyenv/envs/jenv/version)
  1.8
  1.8.0.151
  9-internal
  openjdk64-1.8.0.151
  openjdk64-9-internal
$ jenv global 1.8  # java 8 に設定
$ java -version  # 確認
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
$ javac -version  # 確認2
javac 1.8.0_151

 一括で切り替えができて便利。 java 8 と 9 を切り替えまくるときがあるかどうかは不明。

 今さっき Raspbian で apt-get upgradeしてるタイミングで ssh 接続が切れて、つなぎ直してやり直そうとしたらだめだった。それはそう。ぶっ壊れてて、というか「dpkg の lock ファイルがまだあるよ」みたいな感じで、何も考えずに再起動してしまった後にやり直したら「ぶっ壊れてるのでこれやって」って出た。めっちゃ教えてくれてありがたい。

$ sudo apt-get upgrade
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
$ sudo reboot
# ...
$ sudo apt-get upgrade
E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem. 

 言われたとおり打ったら Setting up hoge ...みたいなのが沢山出つつ、 light-dm の設定が変わってた?か何かで大丈夫かって確認が来て、dって打ったら git diff みたいなのが出て分かりやすかった(1行コメントが外れた、みたいな差分が見れた)。違いがわからんかったのでyにしておいた。ほとんど ssh しかしないし……だめかな……

Configuration file '/etc/lightdm/lightdm.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** lightdm.conf (Y/I/N/O/D/Z) [default=N] ?

 こういうことは nohup でやるとか tmux でやるとかしたほうがいい。

おうち活版印刷

 この間友人に「大人の科学 小さな活版印刷機」を誕生日プレゼントされたので、印刷した。この記事異常に長いように見えるけど画像とツイートばっかりなのでなんとかなります。

……

続きを読む

電子書籍に移行したい

 最近、本棚の空間という意味での物理的な制約から、電子書籍に移行したいと思っていて、少しずつ手を出している。出しているものの、なかなか移行できていない。

 僕は紙の本が好きでほとんど紙で買っていたのだけれど、よく言う「電子書籍への根拠のない嫌悪感」とか「紙への異常な執着」とか言われてしまうことに違和感があって、その正体はなんだろうな、と思っていた。今まで漫画が多かったので電子書籍にしても漫画のものはそれなりに体験していて、まああんまり変わりはないね、という感覚だった。
 ところが、小説のkindle版を買って読むと、タップの一操作がページめくりとメニュー出現とリンククリックの3種類くらいに対応していて位置を気をつける必要があったり(これは慣れかもしれない/android端末だからかもしれない)、画面下に"章を読み終えるまで~分"とか"~%"とか出されていて気になってしまうけど設定項目に無いので表示を消せなかったり、ままならない……をいくつか感じてしまった。多分電子書籍に抵抗を覚えるのはこういうところなのだと思う。

 逆に言えば、こうしたいという欲求に自然に応えられるデバイス/ソフトができればよさそうですね、という予想があって、このあたりを個人が(プログラミングまでいかずとも)設計とか実装とかできる仕組みができたら嬉しいな、と思っている。

 とりあえずkindleアプリは画面下に付箋とか貼ってしのぎます。

 朝外に出て歩いたところ歩き方を忘れていてぎこちなかった。時折こうなるのであまり気にしないようにしているけれど、これまで正しい歩行を習った覚えがない。高校の授業で自分で考えたりしたものの、足を上げるとよさそうとか、腕を振るとよさそうとかみたいな局所的なものだけで、歩行の型の全体の答えはわからなかった。どう歩行するのが正解なのか未だに不明。