Kubuntu and ...

暑中お見舞い申し上げます。

そして、某市の皆さまへは

祝、日本国内最高気温達成

ってのをお贈りします。

なに、暑かったら、サーバールームへ避暑に行けば宜しい。寒いぞ。

switch to kubuntu

前回ウブ起動時にfsckを走らされた。こういうケチの付いたOSは、縁起が悪いと思うぞ。何時再発するか、怯えながら使うのも、いかがなものかと思うぞ。

それでなくても、前々から気になっていた事がある。一つは、メモリー使いすぎ疑惑。感覚なので、定量的に比較出来るようにしとく。下記は起動した直後。Desktopを開かないで、sshで入っての採取。

sakae@ub:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        486M        1.0G        1.5M        455M        1.3G
Swap:          1.9G          0B        1.9G

次は、VMWareから割り当てられるIPアドレスが、1週間ぐらいの間に2度も変わった事。DHCPで割り当てられるんだけど、DebianとかOpenBSDとか、今まで一度もそんな事は無い。何か、裏でこそこそやってる予感。気持ち悪い。

GUIでログインして、Desktopの面積をマウスでバーと広げるんだけど、そこでGUIが固まってしまうという事が、何度も有った。多分、open-vm-toolsとの協調動作だと思うんだけど、なんだかなーの仕打ちに頭が痛い。

そして、お次はこれ。

sakae@ub:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            957M     0  957M   0% /dev
tmpfs           198M  1.4M  196M   1% /run
/dev/sda1        40G  9.6G   28G  26% /
tmpfs           986M     0  986M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           986M     0  986M   0% /sys/fs/cgroup
/dev/loop0      3.4M  3.4M     0 100% /snap/gnome-system-monitor/36
/dev/loop1       13M   13M     0 100% /snap/gnome-characters/101
/dev/loop2      2.4M  2.4M     0 100% /snap/gnome-calculator/178
/dev/loop3       87M   87M     0 100% /snap/core/4917
tmpfs           986M   56K  985M   1% /tmp
/dev/loop4      140M  140M     0 100% /snap/gnome-3-26-1604/64
/dev/loop5       87M   87M     0 100% /snap/core/4486
/dev/loop6      141M  141M     0 100% /snap/gnome-3-26-1604/59
/dev/loop7       15M   15M     0 100% /snap/gnome-logs/37
/dev/loop9      3.8M  3.8M     0 100% /snap/gnome-system-monitor/45
/dev/loop8       13M   13M     0 100% /snap/gnome-characters/69
/dev/loop10      21M   21M     0 100% /snap/gnome-logs/25
/dev/loop11     1.7M  1.7M     0 100% /snap/gnome-calculator/154
/dev/loop12      87M   87M     0 100% /snap/core/4830
tmpfs           198M   16K  197M   1% /run/user/120
tmpfs           198M     0  198M   0% /run/user/1000

ウブの売りの一つ、snapだけど、これには付き合いたくない。オイラーは、GUIに重きを置いて いないから、正直 gnomesなんてほどほどで良い。だったら、そんなの切れよと言われそう。

じゃ、うぶ全体と縁を切ろう。もう一方の雄、qt系に鞍替えだな。

install kubuntu

前回調べておいたkubuntuのサイトからIOSを取ってくる。32Bitバージョンも置いてあるので間違い無いように。1.8Gの容量だった。このあたりはうぶとさほど変わらず。

VMWareに入れる。例のおまかせコースが有効になってた。IOSファイルのどこにもうぶなんて明示してないのに、勝手にうぶの仲間と認定されてる。

インストールが始まって、いきなり壁紙が出てきた。お試ししますかも、あったものじゃない。ずっと壁紙が表示されたままで、公告も出てこないものだから、果たしてインストールが進んでいるかプチ不安。まあ、diskやCDのアクセスランプ相当が、Lチカしてるんで、問題ないだろう。

再起動されて、ログイン画面が出てた。多分この間10分ぐらいのものかね。生憎、open-vm-toolsがインストールされたのかは不明。GUIの端をマウスで引っ張ると、自在な大きさになったので、インストールされてるんだろうね。

それから、ウブの血筋は争えないもので、プリンター関係と音関係は、VMWareでは扱えないようだ。起動時に警告が出て来る。

注目のファームウェアは、ウブと同じく全部入り状態だった。これで、もしもの時にKubuntuへすんなり移行出来るな。

kubuntu vs ubuntu

忘れないように、比較データを載せておく。

sakae@ubuntu:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        288M        1.3G        1.1M        312M        1.5G
Swap:          1.9G          0B        1.9G

やっぱり、メモリーに優しいね。

sakae@ubuntu:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            957M     0  957M   0% /dev
tmpfs           198M  1.2M  196M   1% /run
/dev/sda1        40G  8.7G   29G  24% /
tmpfs           986M     0  986M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           986M     0  986M   0% /sys/fs/cgroup
tmpfs           986M  4.0K  986M   1% /tmp
tmpfs           198M     0  198M   0% /run/user/118
tmpfs           198M  8.0K  197M   1% /run/user/1000

そして、ループを使ってマウントするなんて言う、新人類仕様は避けている。オイラー的には、こちらの方が好きです。

但し、gtk関連がまともに入っていないので、こんな目を引く警告を受ける事があります。

sakae@ubuntu:~$ wxmaxima

(wxmaxima:1831): Gtk-WARNING **: 14:45:43.081: Unable to locate theme engine in module_path: "adwaita",

(wxmaxima:1831): Gtk-WARNING **: 14:45:43.086: Unable to locate theme engine in module_path: "adwaita",

こういう場合は、入れればいいしょと、テーマを入れるのだそうです。

sakae@ubuntu:~$ sudo apt install gnome-themes-standard

公文つの人は、gtk系のアプリは毛嫌いしてるんでしょうか? 2大巨匠なんだから、もう少し友好的であっても、良いと思いますよ。

UbuntuにRStudioをインストールする方法 が掲載されてた。これって技評が出版してる RユーザのためのRStudio[実践]入門 の番宣だよな。番組じゃないんで、正しくは番本か。最近はこんなのばっかりだな。NHKも盛大にやってるから、国家公認の消費推進運動。資本主義の極みです。(MatLabを持っていないと、使えないという罠があるぞ)

Ubuntu Server + VcXsrv

Kubuntuも良い選択だと思うんだけど、これもオフィスが有ったり印刷機構が有ったりして、 オイラーの普段使いと乖離してる。

オイラーがやる事と言ったら、普段CUI上で生活してて、たまにGUIアプリ(ex. gnuplot)を 使いたい程度。

だったらCUIの環境に必要なGUIアプリを入れれば済む話。そんなのは巷に溢れているよ。 WSLはCUIな環境。GUIをやるにはXが必要だけど、そこまでM$は面倒を見てくれない。 そこで、

WSL+ubuntu18.04+VcXsrv+OpenAI Gym 動くまでのメモ

こういう記事がわーと出てくるのだ。オイラーもWSLを入れたんで、一口乗ってみるかね。 まてまて、WSLの環境は物書きで固定しておこう。

じゃ、どうする? そんなのWSLの代わりにUbuntu Server で代替させればいいじゃん。この 環境なら、勝手が知れてるからね。VMWareに入れたよ。

X関係は、昔はXmingだったけど、今はVcXsrvがトレンドらしい。落としてきて数回のクリックでインストール完了。一度XlunchでXを起動し、設定ファイルを作成。

普通にやると、安全側に振られてlocalhostからしか接続出来ないので、セキュリティーに眼をつぶる事にした。(-acのオプションが使えるとか)

出来上がった、config.xlaunchを所定の場所に配置する。いわゆるWindows10の起動時にXも起動させちゃうというアレ。

win+R で、shell:startup と入力。出て来た場所にファイルを置くだけー。正式な場所は、M$のいじわるにより、階層が深い所にある。

C:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

で、勿論、ウブ側は、

export DISPLAY=WindowIP:0.0

を、.profileに書いておく。

firefoxを起動してみた。

sakae@usvr:~$ firefox
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

(firefox:1503): LIBDBUSMENU-GLIB-WARNING **: 16:33:10.032: Unable to get session bus: Failed to execute child process “dbus-launch” (No such file or directory)
[Parent 1503, Gecko_IOThread] WARNING: pipe error (40): Connection reset by peer: file /build/firefox-oscv9o/firefox-61.0.1+build1/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 353

まあ、これでも動いているから良しとしよう。

sakae@usvr:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        160M        1.5G        1.1M        250M        1.6G
Swap:          2.0G          0B        2.0G

これ、起動直後の状態。使用メモリー少ないな。いかにGUI系で無駄に使われていたか、分かるってもんです。

sakae@usvr:~$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
udev              978792        0    978792   0% /dev
tmpfs             201736     1128    200608   1% /run
/dev/sda2       41019616 12203624  26702612  32% /
tmpfs            1008664        0   1008664   0% /dev/shm
tmpfs               5120        0      5120   0% /run/lock
tmpfs            1008664        0   1008664   0% /sys/fs/cgroup
tmpfs            1008664        0   1008664   0% /tmp
/dev/loop0         89088    89088         0 100% /snap/core/4917
/dev/loop1         88704    88704         0 100% /snap/core/4486
tmpfs             201732        0    201732   0% /run/user/1000

これ、必要な物を入れた状態。何が必要だったか? じゃなくて将来の方向性だな。

python3

久しぶりにpython3をちゃんとするかと思って、miniconda3を入れたんだ。そしてジュピターもね。

sakae@usvr:~$ ipython
Python 3.7.0 (default, Jun 28 2018, 13:15:42)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

3.7来てた。相変わらず進化してるな。

Pythonの機械学習ライブラリ「scikit-learn」で実践する「教師あり学習」「教師なし学習」

Jupyter事始め

Pythonでの並行処理と並列処理

Python高速化 【multiprocessing】【並列処理】

Lubuntu

物は次いでと言うんで、Lubuntuを入れてみた。

sakae@lxde:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        154M        1.6G        3.0M        213M        1.6G
Swap:          947M          0B        947M

軽い事にかけては、天下一品である。

ウブ系のDNAなんだろうと思うけど、サーバー版もこのLubuntuもしっかりと、ファームウェアは同梱されてた。この分だとXubuntuも同様だろうね。

このLubuntuは、open-vm-toolsによって任意のサイズのDesktop広さは作れなかった。preferencesメニューにある、monitor-settingsを選び出して、画面サイズを1280x960とかに調整する必要がある。こちらの方式の方が、気分的に安定するだろうって予感がする。

インストール時に、VMWareのお任せモードは働かず、普通にインストールさせられた。起動時の画面で、お試しモードが出てきたのは、Debianでやったのと一緒だな。場所の設定で日本がデフォで選ばれていたのと、apt元が日本のサーバーに最初からなってた。グローバルIPが日本の企業が持ってるかで判断してるのだな。インストーラの中に組み込まれているの?

gauche

Gaucheが久しぶりにUpdateされてたので、入れてみた。まずは試しに、Ubunt serverへ。そして機能メニューの所にある動作プラットフォームを見ると、最近はNetBSDが忘れ去られているんで、人柱の積りで試してみた。

あっさりコンパイル成功。日本語のinfoも作ってくれたんだけど、それがemacsのinfoからは文字化けして読めない。 しょうがないので、リナから貰ってきた。

リリースノートを見ると、今回の売りは、スタンドアロン実行可能ファイルを作れる事。以前から待ち望まれていたやつだ。

例に載ってたぞ。

nb$ cat sample-repl.scm
(use gauche.interactive)

(define (main argc)
  (print "Welcome to my standalone REPL application!")
  (read-eval-print-loop #f #f #f (^[] (display "sample-repl> ") (flush)))
  0)

こういう自前のreplを実行可能にするとな。

nb$ gosh build-standalon sample-repl.scm
*** ERROR: cannot find "build-standalon" in ("/usr/local/share/gauche-0.9/site/lib" "/usr/local/share/gauche-0.9/0.9.6/lib" "/usr/local/share/gauche/site/lib" "/usr/local/share/gauche/0.9/lib")
Stack Trace:
_______________________________________

で、早速エラーの洗礼。

nb$ locate build-standalone
/usr/local/share/gauche-0.9/0.9.6/lib/build-standalone

ちゃんとPATHに有るんですけどね。

nb$ cd /usr/local/share/gauche-0.9/0.9.6/lib/
nb$ gosh build-standalone
Usage: build-standalone [-o outfile][-I dir][--header-dir dir][--library-dir dir] main.scm lib/library.scm ...

  -o outfile  Specify output file name.  When omitted, the basename of
              the main source file is used.
       :
  --keep-c-file
              Do not delete intermediate C file after compilation.  This is
              for troubleshooting.

The file <main.scm> is the main script file; usually it contains 'main'
procedure.  Other files <lib/library.scm> ... are extra library files needed
by <main.scm>.  They are loaded before executing main.scm.

NetBSD 7.1.2特有の何かが有るのかしらん? こういう時は、みんなが使ってる環境でやってみるのが鉄則。そういう事でリナで実験。

sakae@usvr:/tmp$ gosh build-standalon repl.scm
*** ERROR: cannot find "build-standalon" in ("/usr/local/share/gauche-0.9/site/lib" "/usr/local/share/gauche-0.9/0.9.6/lib" "/usr/local/share/gauche/site/lib" "/usr/local/share/gauche/0.9/lib")
Stack Trace:
_______________________________________

ふむ、同じエラーだな。PATHの問題なんだろうから、そこで立ち往生するのもつまらん。さっさと先へ進む。

sakae@usvr:/tmp$ gosh /usr/local/share/gauche-0.9/0.9.6/lib/build-standalone repl.scm
gcc -fPIC  -I/usr/local/lib/gauche-0.9/0.9.6/include -o repl replMOeDsE.c -L/usr/local/lib/gauche-0.9/0.9.6/x86_64-pc-linux-gnu -lgauche-static-0.9  -lz -ldl -lcrypt -lutil -lrt -lm -lpthread

スクリプトの在処を絶対PATH指定して実行。色々な物を抱え込んでるなあ。出来上がったアプリを試してみる。

sakae@usvr:/tmp$ ./repl
Welcome to my standalone REPL application!
sample-repl> (car '(a b c))
a
sample-repl> (* 1 2 3 4 5)
120
sample-repl> (map (lambda (x) (* x x)) '(1 2 3 4 5))
(1 4 9 16 25)
sample-repl> (exit)

そして、リナとの親和度確認

sakae@usvr:/tmp$ ldd ./repl
        linux-vdso.so.1 (0x00007fff15bb4000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8fb91ef000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f8fb8feb000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f8fb8de8000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f8fb8be0000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8fb8842000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8fb8623000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8fb8232000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8fba364000)

ありきたりのライブラリィーを要求してるだけで、gaucheの匂いが消えている。これなら狭い範囲に流通してるウブユーザーに配って、使ってもらえるね。サイズは21Mあるけど。

infoを漁ったら、解決策が見つかったので、NetBSDで再度試す

nb$ export GAUCHE_LOAD_PATH=/usr/local/share/gauche-0.9/0.9.6/lib
nb$ gosh build-standalone repl.scm
gcc -std=gnu99 -fPIC -DPIC  -I/usr/local/lib/gauche-0.9/0.9.6/include -o repl replNZnqjK.c -L/usr/local/lib/gauche-0.9/0.9.6/x86_64-unknown-netbsd7.1 -lgauche-static-0.9  -lz -lcrypt -lutil -lrt -lm -lpthread

実行

nb$ ./repl
Welcome to my standalone REPL application!
sample-repl> (cons 123 '())
(123)

解剖と言うか、性ですな。

nb$ file repl
repl: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for NetBSD 7.1.2, not stripped
nb$ ldd repl
repl:
        -lz.1 => /usr/lib/libz.so.1
        -lgcc_s.1 => /usr/lib/libgcc_s.so.1
        -lc.12 => /usr/lib/libc.so.12
        -lcrypt.1 => /usr/lib/libcrypt.so.1
        -lutil.7 => /usr/lib/libutil.so.7
        -lrt.1 => /usr/lib/librt.so.1
        -lm.0 => /usr/lib/libm.so.0
        -lpthread.1 => /usr/lib/libpthread.so.1
nb$ ls -lh repl
-rwxr-xr-x  1 sakae  wheel   16M Jul 24 16:10 repl*

info

gaucheのPATH問題、ちゃんと解決しとけよ。それには、懇切丁寧に日本語で書かれたマニュアルが有るじゃないですか。Webにアクセスする? ネット人間もいいけど、手元で解決するのが良い。ちゃんと info が有るじゃないですか。そんな訳で、emacsからinfoを読むのを習っておく。

原稿を、/usr/shere/infoの中に突っ込んで、dirに登録する。

The Algorithmic Language Scheme
* Gauche (ja): (gauche-refj.info).
                                An R7RS Scheme implementation.

Emacs/Infoファイルの追加

意外と知らない?EmacsでのInfoの読み方

うぶのinfoとNetBSDのそれを比べると、うぶの方が貧弱。何が不足してるかと言うとemacs系が欠落してる。どうせ読まないんでしょと言う態度。まずは探してみるか。

emacs25-common-non-dfsg

emacsの場合は特殊な名前みたいだけど、他のものは、docを付ければいいみたい。

sakae@usvr:~$ apt-cache search gcc-doc
gcc-doc - Documentation for the GNU C compilers (gcc, gobjc, g++)

Software development と一括りにされてるものは、他にも沢山あるな。いちいち探して入れるのも面倒なので、NetBSDのそれを参照すればいいか。

gaucheの例で出て来た、read-eval-print-loopの引数が何を意味するか? infoで引くには、 次のようにする。

emacs
C-hi
mgauche
iread-eval-print-loop

これだけの操作で、

 -- Function: read-eval-print-loop :optional reader evaluator printer
          prompter
     `gosh'のデフォルトのread-eval-printループをアプリケーションに エク
     スポートします。それぞれの引数は、Gaucheのデフォルトの手続きを使う
     ことを 示す`#f'であっても良いですし、以下の条件を満たす手続きであっ
     ても構いません。
        :

出て来たぞ。素晴らしい。infoを引く時に、目的の所で、T つ告げるだけで、htmlの展開 された形が表示される。いわゆるtocだ。何の略かと思ってたら、Table of Contents なのね。infoの所で ? したら、出てた。