みねこあ

mineko. A! ―from mi-neko online.

2016-02-21

[][] GNU Smalltalk 3.2.91 のインストールメモ (Chromebook Flip(ARM Cortex-A17)/crouton/Ubuntu 14.04) 21:27  GNU Smalltalk 3.2.91 のインストールメモ (Chromebook Flip(ARM Cortex-A17)/crouton/Ubuntu 14.04)を含むブックマーク

GNU Smalltalk 3.2.91 が去年の11月にリリースされていたのですが、年末年始がいそがしかったので今頃インストールしてみます。その前が2013年の4月でしたから、随分久しぶりのリリースです。

今回は、今のモバイルメインマシンである Chromebook Flip にインストールしてみるのですが、Ubunt 14.04 とはいえ、ARM マシンですし、本当にビルドできるのかな?と半信半疑。あんまりうまくイカないかもしれないね、とおもいつつ、とりあえずトライしてみましょうくらいの気持ちでやってみました。

ちなみに過去のインストールメモはこれら↓です。

いつもどおり、ftp://alpha.gnu.org/gnu/smalltalk/smalltalk-3.2.91.tar.gz から、tarball をダウンロードしてきて解凍します。

ビルドに必要なライブラリーをインストールします。

$ sudo aptitude install gawk libgtk2.0-dev libglib2.0-dev tcl8.4-dev tk8.4-dev texinfo libsigsegv-dev libltdl-dev libffi-dev

で、configure。

$ ./configure --with-tcl=/usr/lib/tcl8.4 --with-tk=/usr/lib/tk8.4 2>&1 | tee ../gst3.2.91config.log 

configure は、一応 tcl/tk のパスを通してビルド。blox/Tk を使うことも無いと思うけれども。(そして、ちゃんと動くかは微妙だけれども)

$ make 2>&1 | tee ../gst3.2.91make.log
$ make check 2>&1 | tee ../gst3.2.91makecheck.log
## -------------------------------- ##
## GNU Smalltalk 3.2.91 test suite. ##
## -------------------------------- ##

Regression tests.

  1: arrays.st                                       ok
  2: classes.st                                      ok
  3: blocks.st                                       ok
・
・
 14: geometry.st                                     ok
 15: cobjects.st                                     FAILED (testsuite.at:45)
 16: compiler.st                                     ok
・
・
129: Seaside-Core                                    ok
130: Sockets                                         expected failure (testsuite.at:168)
131: Sport                                           ok
・
・
ERROR: 130 tests were run,
2 failed (1 expected failure).
5 tests were skipped.

およ、cobjects と Sockets のテストがコケます。気になるのですけれども、もう時間も時間ですし、調べるのめんどいなーと思い、とりあえず怠惰に make install。うまく動かなかったらちゃんと考えましょう、うん。

$ sudo make install 2>&1 | tee ../gst3.2.91makeinst.log

gst も gst-browser も起動するし、自前アプリもいちおうそれっぽく動いたのでまぁよしとします。Sockets はともかく cobjects は大丈夫なんじゃないかな(希望的観測)

で、動かしてみたけれども、gst-browser は重いなぁ。Ubuntu のデスクトップをChromeのタブ内に表示する Chrome拡張「Crouton Integration」が結構重いので、これをやめれば軽くなりそうではあるのですが、試していません。

このままではちょっと厳しいかもと思ったり。

[] Chromebook の容量枯渇問題 23:21  Chromebook の容量枯渇問題を含むブックマーク


足りてないって怒られた

なんか Chromebook の容量がいっぱいになったとメッセージが出ます。

f:id:minekoa:20160221231049p:image

確認してみれば、

f:id:minekoa:20160221231048p:image

はふぅ、1.1GBしか無いってばよ。

丁度 GNU Smalltalk をビルドした直後だったので、Crouton の Ubuntu がいっぱいということかな、と思ったので、du で確認してみました。

$ sudo du -s -h /mnt/stateful_partition/crouton
3.6G    /mnt/stateful_partition/crouton

3.6GB。いろいろやる前はどのくらいだったのか見ていないのだけれども、思ったより健闘(?)しています。それでも確かに、16GB のフル容量に対してしまえば、それなりにインパクトがあるのですが、うーん、これを削るのは難しそうです。全体を df で見てみましょう。

$ df -h
Filesystem                                                    Size  Used Avail Use% Mounted on
/dev/root                                                     1.2G  873M  332M  73% /
devtmpfs                                                      2.0G     0  2.0G   0% /dev
tmp                                                           2.0G  3.3M  2.0G   1% /tmp
run                                                           2.0G  376K  2.0G   1% /run
shmfs                                                         2.0G  160M  1.9G   8% /dev/shm
/dev/mmcblk0p1                                                 11G  7.9G  1.9G  82% /home
/dev/mmcblk0p8                                                 12M   24K   12M   1% /usr/share/oem
/dev/mapper/encstateful                                       3.1G   76M  3.0G   3% /var
media                                                         2.0G     0  2.0G   0% /media
none                                                          2.0G     0  2.0G   0% /sys/fs/cgroup
/home/.shadow/3314e1fd7f1317c0e5f28abbe37227f8a48af75b/vault   11G  7.9G  1.9G  82% /home/chronos/user
tmpfs                                                         128K   12K  116K  10% /run/crw
/dev/mmcblk1p1                                                 58G  487M   58G   1% /media/removable/SD Card

/home/.shadow の下がいっぱい容量を食べています。11GBの全体サイズにたいして約8GB持っていってます。このフォルダはユーザーランドになっていて、ChromeOS では Chromeやそのアプリ以外の プログラムが動かせない領域になっているそうです。ふーむぅ。

ということは、Chromeアプリ自体や、そのキャッシュで結構容量を使い果たしているのですね。たしかに Kindle とかいっぱい本がダウンロードしてありますし(のんのんびより 全巻とか)、電子書籍アプリも自前領域にコピーしてキャッシュしてるっぽいので、これらが効いていそうです。

なのでアプリからセコセコ削除してみたのですが、再び容量を確認してもサイズが縮まっておりません。ふにー、どうしたら開放されるの? (T△T

Crouton を避けるしかない?

うにゅー。仕方がないので、Crouton を外部ストレージに避けるしかないのかな?といろいろ調べ始めたのですが、ちょっと問題ありありです。

まず、Chromebook に増設できるストレージは、SDカードか、USBメモリーです*1。ならば、ここに Crouton の chroot 先を作ればよいわけです。

となれば、指しっぱなしでも取り扱いが安心の SDカードで行きたいところですが(今も64GB のマイクロSD を指しっぱなしにしていますし)、少し調べてみたら、Chromebookって SDカードがスリープさせると毎にアンマウント/マウントされる仕様なんだそうですよ。……全然しらなんだ。

そうすると、ここにUbuntu環境を作ってしまうとスリープするたんびに落ちてしまうわけで、それは全く嬉しくないです。

そんなわけなので、Chromebook ユーザ界隈では 出っ張らない USB 3.0 のメモリーを指しっぱにして、そこに Crouton を入れるのが定番になっているそうですが、実は Chromebook Flip って、USB 3.0 のポート無いのですよね......orz

もちろん USB2.0 のポートはあるので、そこで Croutonってのは出来るのですが、流石に速度がたりませんにゃ。

うーん、ニントモカントモ。

*1:SSD の換装が出来る機種もごくまれにありますが、殆どの機種が eMMC でボード直付けです

斎藤斎藤 2016/03/13 00:47 はじめまして。本題と関係ない内容ですみません。
過去の記事を読んで次GNU Smalltalk話題が出たら申し上げようと思ってたんですがGNU Smalltalkでも下記みたいな昔ながらのChunk構文が使えるんですよ。ご存じでしたか?

Androidに入れて遊んでますが私は拡張構文使わずChunk構文で書いてます。宣言無しで局所変数を使おうとすると無視せず例外を出してくれて便利ですよ。

"新しい名前空間を作る"
Smalltalk addSubspace: #Example.
"作った名前空間を切り替える"
Namespace current: Smalltalk Example.

Object
subclass: #Something
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Example'.

Something methodsFor: 'accessing'
!
value

^ 0.
!!

"Exampleのままに保存しないよう名前空間を戻す"
Namespace current: Smalltalk.
"Imageに保存する。"
ObjectMemory snapshot.

minekoaminekoa 2016/04/09 02:04 斎藤さん、はじめまして。

>ご存じでしたか?

ご存知でしたよ♪

わたしは、新しいGNU Smalltalk の ファイルベースらしい UNIX に溶け込もうとする姿が、いかにも GNU らしくって、古い姿よりも気に入っております。その一部として、新しい構文も大いに気に入っております。(ただし、あたらしいGtkスケスケのGUIライブラリより、古いBLOX のほうが好きです)

なので、個人の好みとして、新しい構文ばっかり使ってますね。

ただ、Chunk構文のほうが宣言的でなく、オブジェクトと直接戯れている感があって Smalltalk らしいとは思います。その意味では魅力的ですね〜。