2024年09月13日 [Python] llama.cppを使ってElyza 7bを動かしてみる
_ [Python] llama.cppってなんやねん
流行りが通り過ぎてイマイチ使えるかどうかわかんねえなとか,ちょっと文脈の最尤度を優先しすぎて事実と異なることを出してくんなとか,色々とメッキが剥がれつつある大規模言語モデルだけど,ある一定の可能性を示している現状だと使ってみたくなるよね? だから大規模言語モデルを利用して推論するエンジン,llama.cppを試すやり方を書いておくよ.
% git clone https://github.com/ggerganov/llama.cpp.git % cd llama.cpp % make -j
これでllamap.cppのビルドはokay.
_ [Python] LLMのモデル
LLMのデータベースとして
があるんだけどどれを使ったらいいかわかんないよね.だったら某研究室からスピンアウトしたベンチャーが作っているLLMを手軽に選んで使ってみよう.
% wget https://huggingface.co/mmnga/ELYZA-japanese-Llama-2-7b-fast-instruct-gguf/resolve/main/ELYZA-japanese-Llama-2-7b-fast-instruct-q4_0.gguf % cd .. % ./llama-cli -m 'models/ELYZA-japanese-Llama-2-7b-fast-instruct-q4_0.gguf' -n 32 -p '富士山の高さは?'
こんな感じ
2024年02月22日 [SQUID] SQUIDでblastをビルドしてみよう
_ [SQUID] blastってなんやねん
久しぶりに更新したと思ったらみんな大好きncbi blastの話だよ! ncbi blastってバイオインフォ界隈では超有名な相同性検索ソフトウェアスイートなんだ.とりあえずDNA配列とかアミノ酸配列が判明したらデータベースと突き合わせたいじゃん? タンパク質構造予測で名を馳せているAlphaHold2もまずは同様のアルゴリズムで候補を絞るんだ.
んで決して遅くはない(むしろ高速)んだけど,より速いに越したことはないblastをSQUIDでビルドして動かしてみようぜって話なんだ.とりあえずSQUIDのアカウントとかは持っている前提で話を進めるよ!ちなみにSQUIDのOSはRHEL8.6互換だと思ってもらえればいい.
まず準備としてSQLiteのソースファイルがいるので,それのdev版をyumとかrpmで入れられたらいいんだけど,共用計算機は自前で必要なものは揃える必要がある.だからSQLiteのビルドからだよ!
_ [SQLite] SQLiteをソースからビルド
とりあえずSQUIDの場合,ワークディレクトリに実行ファイル,ライブラリファイルをおいておいた方が速いので,ワークディレクトリで作業してね!
% wget https://www.sqlite.org/2023/sqlite-autoconf-3440200.tar.gz % tar zxvf sqlite-autoconf-3440200.tar.gz % cd sqlite-autoconf-3440200 % ./configure % make
_ [blast] ncbi blastをソースからビルド
ncbi blastのLATESTはURLがコロコロ変わるからみんなも気をつけてね!2024年現在では以下のURLだったよ.
https://ftp.ncbi.nih.gov/blast/executables/blast+/LATEST/
% wget https://ftp.ncbi.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.15.0+-src.tar.gz % tar ncbi-blast-2.15.0+-src.tar.gz % cd ncbi-blast-2.15.0+-src/c++ % ./configure --without-debug --with-mt --without-sybase --without-fastcgi --without-sssdb --without-sss --without-geo --without-sp --without-orbacus --without-boost --with-sqlite3=/sqfs/work/Gxxxxx/vxxxxx/sqlite-autoconf-3440200 --includedir=/sqfs/work/Gxxxxx/vxxxxx/sqlite-autoconf-3440200 % make
GxxxxxやvxxxxxはSQUIDアカウントのグループ名とアカウント名だよ.SQLiteを指定する必要があるから,この指定は大事だよ! じゃあね!
2022年01月31日 [CentOS7][python] apacheでFlaskをWSGIで動かしてみよう
_ [CentOS7][python] WSGIってなんやねん
今回はみんな大好きPythonでのWebアプリケーションサーバを作ろうって話だよ!
なんとなくmicroserviceとかを立ち上げようっかなーとか,一体どこに需要があるかどうか全くわからない情報だよ! まずWSGI (Web Server Gateway Interface) ってのは,Pythonアプリ<-WSGI->Webサーバという感じで,Webサーバ(今回の場合,apache)とPythonアプリをつなげるインターフェースモジュールっす. Flaskって軽量Webアプリケーションサーバとして超有名で,某巨大動画配信サービスもFlaskベースのmicroserviceで成立してるってよ!
じゃあ早速インストールしていこうと思うけど,ひとまず安定しているCentOS 7!での話だよ!ちゃんと後からUbutu 20.04とかでもやるから安心して!
_ httpd-develとpython-devel, gccをインストール
WSGIモジュールは,pip3でインストールするときにバイナリをビルドするため,またリンカとしてhttpdやpythonを参照するので,先にこれらをインストールしておく必要がある.
% yum update % yum upgrade % yum install httpd-devel python3-devel gcc
_ Flaskおよびmod_wsgi
% pip3 install --upgrade pip % pip3 install flask % pip3 install mod_wsgi
yumでCentOS7のmod_wsgiパッケージがあるが,あれはインストールしてはいけない.あれはPython 2.x系用のモジュールなので,今流行のPython3.x系(例えばGoogle Speech Recognitionなど)を使うようなmicroserviceの場合はダメ(当然). もしyumでmod_wsgiがインストールしてあるなら
# yum remove mod_wsgi
としておく.
_ apacheでのWSGI設定ファイル
基本的には/etc/httpd/conf.d/wsgi.confとして設定ファイルを作成する.ユーザ名やグループはWSGIを動かすアカウントユーザ名なので,user=apache, group=apacheとしておく またflaskアプリを置く場所は /var/www/html/myapp/ として,以下のようにwsgi.confファイルを編集する
#wsgi.conf LoadModule wsgi_module /usr/local/lib64/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so <VirtualHost *:80> serverName XXX.XXX.XXX.XXX WSGIDaemonProcess myapp user=apache group=apache threads=5 WSGIScriptAlias / /var/www/html/myapp/flask.wsgi <Directory /var/www/html/myapp/> WSGIProcessGroup myapp WSGIApplicationGroup %{GLOBAL} WSGIScriptReloading On Require all granted </Directory> </VirtualHost>
_ FlaskアプリとFlask設定ファイル
設定ファイルとして,wsgi.confで記述したflask.wsgiファイルを用意する.このファイルはPythonファイルであり,実際WSGIが呼び出すこととなる.更にこのflask.wsgiがFlaskアプリファイルを呼び出す.なのでFlaskアプリのpythonファイルに追記すると1ファイルで完結するが,ローカルのFlaskで開発しているファイルをそのまま指定することで,apacheに対応できるので,こういうワンクッションあるような形式で呼び出すことを採用している.
/var/www/html/myapp/flask.wsgi
# coding: utf-8 import sys sys.path.insert(0, '/var/www/html/myapp/') from myapp import app as application
/var/www/html/myapp/myapp.py
#-*- coding: utf-8-*- import sys sys.path.append('/usr/local/lib64/python3.6/site-packages/') sys.path.append('/usr/local/lib/python3.6/site-packages/') from flask import Flask, request, redirect, url_for, render_template, g
app = Flask(__name__) @app.route('/') def index(): return 'Hello, World!' if __name__ == "__main__": app.run()
その後
% systemctl restart httpd
で,Webサーバをリスタート.これで動くぜ!apache+Flask
2021年10月26日 [mac][python] PyAudioをインストールした時の話
_ [mac][python] PyAudioをインストールしようとしたらエラーがたくさん出る
最近流行ってるじゃん?機械学習だAIだディープニューラルネットワークだフェデレーテッドラーニングだ,と.で,なんでかよくわからないけど流れで音声解析することになってmacで環境作ろうとしたら,ふむなるほどとりあえずPyAudioをインストールしてみっか,ってなったらエラーがうわーってでてくる. 具体的にはこんな感じ.
% pip install pyaudio Collecting pyaudio Using cached PyAudio-0.2.11.tar.gz (37 kB) Building wheels for collected packages: pyaudio Building wheel for pyaudio (setup.py) ... error ERROR: Command errored out with exit status 1: command: /Users/kido/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-install-rr2nf4mo/pyaudio/setup.py'"'"'; __file__='"'"'/private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-install-rr2nf4mo/pyaudio/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-wheel-83vkx2lv cwd: /private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-install-rr2nf4mo/pyaudio/ Complete output (16 lines): running bdist_wheel running build running build_py creating build creating build/lib.macosx-10.9-x86_64-3.8 copying src/pyaudio.py -> build/lib.macosx-10.9-x86_64-3.8 running build_ext building '_portaudio' extension creating build/temp.macosx-10.9-x86_64-3.8 creating build/temp.macosx-10.9-x86_64-3.8/src gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/kido/anaconda3/include -arch x86_64 -I/Users/kido/anaconda3/include -arch x86_64 -DMACOSX=1 -I/Users/kido/anaconda3/include/python3.8 -c src/_portaudiomodule.c -o build/temp.macosx-10.9-x86_64-3.8/src/_portaudiomodule.o src/_portaudiomodule.c:29:10: fatal error: 'portaudio.h' file not found #include "portaudio.h" ^~~~~~~~~~~~~ 1 error generated. error: command 'gcc' failed with exit status 1 ---------------------------------------- ERROR: Failed building wheel for pyaudio Running setup.py clean for pyaudio Failed to build pyaudio Installing collected packages: pyaudio Running setup.py install for pyaudio ... error ERROR: Command errored out with exit status 1: command: /Users/kido/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-install-rr2nf4mo/pyaudio/setup.py'"'"'; __file__='"'"'/private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-install-rr2nf4mo/pyaudio/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-record-q9fjahjy/install-record.txt --single-version-externally-managed --compile --install-headers /Users/kido/anaconda3/include/python3.8/pyaudio cwd: /private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-install-rr2nf4mo/pyaudio/ Complete output (16 lines): running install running build running build_py creating build creating build/lib.macosx-10.9-x86_64-3.8 copying src/pyaudio.py -> build/lib.macosx-10.9-x86_64-3.8 running build_ext building '_portaudio' extension creating build/temp.macosx-10.9-x86_64-3.8 creating build/temp.macosx-10.9-x86_64-3.8/src gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/kido/anaconda3/include -arch x86_64 -I/Users/kido/anaconda3/include -arch x86_64 -DMACOSX=1 -I/Users/kido/anaconda3/include/python3.8 -c src/_portaudiomodule.c -o build/temp.macosx-10.9-x86_64-3.8/src/_portaudiomodule.o src/_portaudiomodule.c:29:10: fatal error: 'portaudio.h' file not found #include "portaudio.h" ^~~~~~~~~~~~~ 1 error generated. error: command 'gcc' failed with exit status 1 ---------------------------------------- ERROR: Command errored out with exit status 1: /Users/kido/anaconda3/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-install-rr2nf4mo/pyaudio/setup.py'"'"'; __file__='"'"'/private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-install-rr2nf4mo/pyaudio/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/pv/yknnpbz533vfgwpd1ygkdjk80000gn/T/pip-record-q9fjahjy/install-record.txt --single-version-externally-managed --compile --install-headers /Users/kido/anaconda3/include/python3.8/pyaudio Check the logs for full command output. %
まあようするにportaudioをインストールしろよってのと,portaudio.hが見つかってねえこのぼんくらっていうエラーメッセージなのね. そうですかportaudioを入れればいいのね?
% brew install portaudio
ってするとあっさりportaudioは入る.だから
% pip install pyaudio
って続けて打つとまた同じエラー..
とりあえずportaudioがインストールしたportaudio.hを見つけて,そのリンク先ライブラリも指定するかってなって
% sudo env LDFLAGS="-L/opt/homebrew/Cellar/portaudio/19.7.0/lib" CFLAGS="-I/opt/homebrew/Cellar/portaudio/19.7.0/include" pip install pyaudio WARNING: The directory '/Users/kido/Library/Caches/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. Collecting pyaudio Downloading PyAudio-0.2.11.tar.gz (37 kB) Building wheels for collected packages: pyaudio Building wheel for pyaudio (setup.py) ... done Created wheel for pyaudio: filename=PyAudio-0.2.11-cp38-cp38-macosx_10_9_x86_64.whl size=23395 sha256=036d69d59371d4c0de2b7f8b99958ab5f59e382be1df098287330ed5779f28a2 Stored in directory: /private/tmp/pip-ephem-wheel-cache-lc1upr5l/wheels/cf/be/f6/06f4d9fb96713a3ba58a480dd5739b3bf66ff0430de58a38c1 Successfully built pyaudio Installing collected packages: pyaudio Successfully installed pyaudio-0.2.11 %
とするとちゃんとインストールできたよ!じゃあね!
2021年09月21日 [mac] ssh経由でX Windowを表示するだけの話 / Rをjupyter notebookで使う話
_ [mac] ssh経由でX Windowを表示できたはずなのに...
ssh ホスト名 -X
ってするとリモートのX Windowを表示できたじゃん?でも気づいたらmacでは表示できなくなってた.あれー?ということで/etc/ssh/ssh_configに以下を追記するよ
XAuthLocation /usr/X11/bin/xauth
で,macのXQuartzに飛ばしてくれるよ!じゃあね!
_ [R応用] みんな大好きjupyter notebookでRを使えるようにするよ
Rをターミナルで立ち上げるじゃん?
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest')) devtools::install_github('IRkernel/IRkernel') IRkernel::installspec()
ってすると,IR kernelがインストールされてjupyter notebookの実行環境にRが追加されちゃうよ.みんなも試してみてね!R4.xでも確認したよ!
2021年09月14日 [OpenCV][ubuntu] Jawmotion Web Application
_ [OpenCV] 試しにリリース
Jawmotion Web Applicationを整理してみた. とりあえず,setupとinstallationは書いてみたんだけど,まあ雑です.
OpenFace自体,更新が2016年に止まっているような遺産っぽいプロジェクトなんだけど,Githubの方は地味に更新している.なので試しにUbuntu 20.04でbuildしてみたら動いた. だから,僕らのJawmotionもUbuntu 20.04で動くので,お試しリリースしてみた.
Githubの方ではあんまり書いてないんだけど顎関節の動きをキャプチャするアプリなんだよね.でも精度が上がらないからほぼお蔵入り状態なんだ. 顎に1cmくらいのシールをつけて顎を動かすと,キャプチャしてくれるんだ.そんなアプリが何に役に立つのかは内緒なんだけど,興味あるんなら試してみて!じゃあね!
_ [OpenCV][ubuntu] OpenFace 2.2.0のインストール
先にも書いたけど,OpenFaceって終わったプロジェクト感を出してて,もう使えないのかな?って思うんだけど,それは気の所為で実はほんのり活動している. それは一部のcontributorによるものだけど,それはそれですごくありがたい.おかげでUbuntu 20.04 LTSで動く. でもちょっとあれなので,OpenFace 2.2.0のインストール方法を書き留めておく.まずgithubからcloneしてインストールスクリプトを動かしていくよ!
git clone https://github.com/TadasBaltrusaitis/OpenFace.git cd OpenFace ./install.sh ... -- Configuring done CMake Error: install(EXPORT "OpenCVModules" ...) includes target "opencv_core" which requires target "tbb" that is not in any export set. CMake Error in CMakeLists.txt: export called with target "opencv_core" which requires target "tbb" that is not in any export set.
てな感じでinstall.shを動かすとOpenCV 4.1.0をダウンロードしてcmakeしようとするんだ.そこでtbbが見つからないぜ!っていうCMake Erroがでて終了しちゃう.あーやっぱ終わったプロジェクトってあれだなーって思うのはちょっと待ってほしい.実はちゃんとMakefileができているんだ.
cd opencv-4.1.0/build make -j4
ってやってほしい.opencv 4.1.0のmakeは僕の環境では死ぬほど時間がかかったけどちゃんとできる. 後は,install.shができなかったことをやるだけなんだ.まずはdlibをbuildしていくよ!
wget http://dlib.net/files/dlib-19.13.tar.bz2 tar xf dlib-19.13.tar.bz2 mkdir -p dlib-19.13/build cd dlib-19.13/build cmake .. cmake --build . --config Release sudo make install sudo ldconfig
最後にOpenFace本体だ.
cd ../.. mkdir -p build cd build cmake -D CMAKE_CXX_COMPILER=g++-8 -D CMAKE_C_COMPILER=gcc-8 -D CMAKE_BUILD_TYPE=RELEASE .. make
んで最後に顔モデルをhttps://github.com/TadasBaltrusaitis/OpenFace/wiki/Model-downloadからダウンロードしてOpenFace/build/bin/model/patch_expertsに置くとFaceLandmarkVidとかのアプリがちゃんと動くようになる.
どうやらmacOSでもbuildできるっぽいから,また試してみるよ!じゃあね!
2021年09月11日 [子供の数学] 最近の中学生ってこんなん解いてるの?
_ [子供の数学] 12個の玉
子供と遊んでいると,ある問題に出くわした.初見,簡単じゃね?って思ってたら,思いの外,難しかった.というか,え?あれ?ってなった.なので備忘録的に残しておく.
んで,問題.
12個の玉がある.うちひとつだけ重さが違うものが存在する.天秤を3回だけつかい,そのひとつを特定せよ.またその際,他の玉と重いのか軽いのかも特定せよ.
てな感じ.まあよくありそうな問題.
じゃあ解決編いくよー.
4つずつ、3つのグループに分ける。それぞれA,B,Cとする。また、重量の違う玉をxとする。 AとBを天秤にかける。(1回目) | +-傾いた場合 | ABの8つの玉のうちにxが混じっていることが解る。でかつ重い可能性がある玉が4つ、軽い可能性がある玉が4つとなる。 | その8つの玉を次のようにグループ分けする。 | 重軽軽・・・D | 重軽軽・・・E | 重重・・・・F | で、次にDとEを天秤にかける(2回目) | | | +-Dに傾いた場合 | | Dの重い玉、もしくはEの2つの軽い玉のいずれかにxがあると特定できる。つまり3つに特定できる。 | | でEにあった2つの軽い玉を天秤にかける(3回目) | | +-傾いた場合 | | | 軽かった方が、x | | +-つりあった場合 | | 天秤にかけなかった、重い玉がx | | | +-Eに傾いた場合 | | Eの重い玉、もしくはDの2つの軽い玉のいずれかに、以下同文。 | | | +-つりあった場合 | Fの2つのいずれかがxであると特定できる。よって、Fの2つを天秤にかける(3回目) | 傾いた方が、x | +-1回目の天秤でつりあった場合 Cの4つの玉にxが混じっていることが解る。またABはすべて同じ重さということが解る。 Cのうち3つを選択し、またAのうち3つを選択し天秤にかける(2回目) | +-元Cに傾いた場合 | 天秤にかけた元Cの3つが重いことが解る。 | 3つのうち2つを天秤にかける。(3回目) | +-傾いた場合、 | | 2つのうち重い方がx | +-つりあった場合 | 残りの1つがx | +-元Aが傾いた場合 | 天秤にかけた元Cの3つが軽いことが解る。 | 上記と同様に、以下同文。 | +-つりあった場合 天秤にかけなかった1にxが特定される。 で、同じ重さの玉と、xを天秤にかけてると(3回目)xが軽いか重いが解る。
なにこれ,こんな場合分けしなきゃいけないの!? じゃあね!
2021年09月07日 [Web] VisCloud
_ [Web] レスポンシブデザイン
たぶん誰一人として見てないであろうVisCloudのホームページを更新して,レスポンシブデザインを適用してみた.スマホやタブレットからでも見れるんだけど左端に置いてるメニューが邪魔で,画面小さい端末ではメニューを隠れるようにしてみた. 久しぶりにCSSとか触って気が狂いそうに.
それとついでこの日記(tdiary5.x)もレスポンシブっぽくしてみた. S-blueのテーマを使っているのですが,画面が小さいと左のメニューは邪魔なので,それを消してみるデザインにCSSを付け加えてみた.
.sidebar { display: block; } div.main { margin-left: 20%; } body { margin-right: 8%; margin-left: 8%; } pre { font-family: Consolas, Menlo, 'Liberation Mono', Courier, monospace; font-size: 0.95em; letter-spacing: 0.03em; overflow: auto; } @media screen and (max-width: 1000px){ .sidebar { display: none; } div.main { margin-left: 0%; } body { margin-right: 0px; margin-left: 0px; } img.photo { width: 100%; } }
2021年08月10日 [tDiary]ubuntu 20.04へtDiaryのインストール
_ [ubuntu] ubuntu 20.04でtDiary5.1.6をインストールしてみる.
tDiaryってね,一昔前に流行ったweb日記,ブログツールなのね.例えばレンタルサーバなどで提供されているツールだったりするの.それがね,rubyで動いてるんですよ奥さん. rubyっていうと1.8系,2.0系とバージョンが変わるたびにライブラリとかの使い方とかが変わっちゃって下位互換性を無視してくれた提供をしてくれることで有名なんだけど色々と大変です.さらに「えっ!?今どきtDiary?」みたいな感じで,最新に近いOSで動かすとかtipsがあんまりないんだよね. ということでubuntu 20.04 LTSにインストールしてみるよ!rootでよろしく!
apt install libapache2-mod-ruby apt install ruby-bundler apt install ruby-dev apt install rbenv tar zxvf tdiary-v5.1.6.tar.gz cd tdiary-v5.1.6 bundle install
で,次はrubyのパッケージを
gem install date -v '3.1.1' --source 'https://rubygems.org/' gem install time -v '0.1.0' --source 'https://rubygems.org/' gem install net-ftp -v '0.1.2' --source 'https://rubygems.org/' gem install mini_portile2 -v '2.5.2' --source 'https://rubygems.org/' gem install racc -v '1.5.2' --source 'https://rubygems.org/' gem install nokogiri -v '1.11.6' --source 'https://rubygems.org/' gem install rack -v '2.2.3' --source 'https://rubygems.org/' gem install rack-test -v '1.1.0' --source 'https://rubygems.org/' gem install regexp_parser -v '2.1.1' --source 'https://rubygems.org/' gem install xpath -v '3.2.0' --source 'https://rubygems.org/' gem install capybara -v '3.35.3' --source 'https://rubygems.org/' gem install childprocess -v '3.0.0' --source 'https://rubygems.org/' gem install json -v '2.5.1' --source 'https://rubygems.org/' gem install docile -v '1.4.0' --source 'https://rubygems.org/' gem install simplecov -v '0.10.2' --source 'https://rubygems.org/' gem install simplecov-html -v '0.10.2' --source 'https://rubygems.org/' gem install simplecov -v '0.16.1' --source 'https://rubygems.org/' gem install sync -v '0.5.0' --source 'https://rubygems.org/' gem install tins -v '1.29.1' --source 'https://rubygems.org/' gem install term-ansicolor -v '1.7.1' --source 'https://rubygems.org/' gem install thor -v '1.1.0' --source 'https://rubygems.org/' gem install coveralls -v '0.8.23' --source 'https://rubygems.org/' gem install debase-ruby_core_source -v '0.10.12' --source 'https://rubygems.org/' gem install debase -v '0.2.4.1' --source 'https://rubygems.org/' gem install diff -v '1.4.4' --source 'https://rubygems.org/' gem install diff-lcs -v '1.4.4' --source 'https://rubygems.org/' gem install faraday-em_http -v '1.0.0' --source 'https://rubygems.org/' gem install faraday-em_synchrony -v '1.0.0' --source 'https://rubygems.org/' gem install faraday-excon -v '1.1.0' --source 'https://rubygems.org/' gem install faraday-net_http -v '1.0.1' --source 'https://rubygems.org/' gem install faraday-net_http_persistent -v '1.1.0' --source 'https://rubygems.org/' gem install multipart-post -v '2.1.1' --source 'https://rubygems.org/' gem install ruby2_keywords -v '0.0.4' --source 'https://rubygems.org/' gem install faraday -v '1.4.2' --source 'https://rubygems.org/' gem install fastimage -v '2.2.3' --source 'https://rubygems.org/' gem install jasmine -v '2.99.2' --source 'https://rubygems.org/' gem install jasmine-core -v '2.99.2' --source 'https://rubygems.org/' gem install phantomjs -v '2.1.1.0' --source 'https://rubygems.org/' gem install jasmine -v '2.99.0' --source 'https://rubygems.org/' gem install launchy -v '2.5.0' --source 'https://rubygems.org/' gem install mime-types-data -v '3.2021.0225' --source 'https://rubygems.org/' gem install mime-types -v '3.3.1' --source 'https://rubygems.org/' gem install sawyer -v '0.8.2' --source 'https://rubygems.org/' gem install octokit -v '4.21.0' --source 'https://rubygems.org/' gem install pit -v '0.0.7' --source 'https://rubygems.org/' gem install power_assert -v '2.0.0' --source 'https://rubygems.org/' gem install racksh -v '1.0.0' --source 'https://rubygems.org/' gem install redcarpet -v '3.5.1' --source 'https://rubygems.org/' gem install rexml -v '3.2.5' --source 'https://rubygems.org/' gem install rspec-support -v '3.10.2' --source 'https://rubygems.org/' gem install rspec-core -v '3.10.1' --source 'https://rubygems.org/' gem install rspec-expectations -v '3.10.1' --source 'https://rubygems.org/' gem install rspec-mocks -v '3.10.2' --source 'https://rubygems.org/' gem install rspec -v '3.10.0' --source 'https://rubygems.org/' gem install ruby-debug-ide -v '0.7.2' --source 'https://rubygems.org/' gem install rubyzip -v '2.3.0' --source 'https://rubygems.org/' gem install selenium-webdriver -v '3.142.7' --source 'https://rubygems.org/' gem install sequel -v '5.44.0' --source 'https://rubygems.org/' gem install sqlite3 -v '1.4.2' --source 'https://rubygems.org/' gem install test-unit -v '3.4.1' --source 'https://rubygems.org/' gem install webrick -v '1.7.0' --source 'https://rubygems.org/'
こんだけのパッケージを追加でインストールしなければいけないんだよね.大変だね!
2020年10月13日 [OSX] macOSのDockerでUbuntuを動かしてX Windowの画面に出す
_ [Docker] macOSのDockerでubuntu 18.04を動かす
Dockerで便利だよね.軽いし.でもDockerって直感的じゃないんだよね.起動コマンドもdocker runとかdocker startとか違いとか,docker attachとdocker execの違いとか,イメージとかコンテナとかの関係性も初見殺しっぽいし.イメージを取得/作成するにしてDockerfileを用意する場合とレポジトリから取得する場合もあるし. んで,今回はレポジトリからdockerコマンドで取得する方法をざっくり書いていくね.あとDocker for macはインストールしたものとして,話をずんずん進めていくよ.
まずコンテナの素であるDockerイメージがどれだけあるか確認するコマンド,docker imagesからだ.
nigawa:~ kido$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE xeyes latest 13060792b6cd 19 hours ago 9.95MB alpine latest a24bb4013296 4 months ago 5.57MB nigawa:~ kido$
IMAGE IDはDockerイメージを特定するIDで,これを元にコンテナを作らなきゃいけないのね.コンテナが仮想OSのインスタンスね. で,ubuntu 18.04のイメージをレポジトリから持ってくるコマンドがこちら.
nigawa:~ kido$ docker pull ubuntu:18.04 18.04: Pulling from library/ubuntu 171857c49d0f: Pull complete 419640447d26: Pull complete 61e52f862619: Pull complete Digest: sha256:646942475da61b4ce9cc5b3fadb42642ea90e5d0de46111458e100ff2c7031e6 Status: Downloaded newer image for ubuntu:18.04 nigawa:~ kido$ nigawa:~ kido$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE xeyes latest 13060792b6cd 19 hours ago 9.95MB ubuntu 18.04 56def654ec22 2 weeks ago 63.2MB alpine latest a24bb4013296 4 months ago 5.57MB nigawa:~ kido$
これでイメージは取得できた. で,普通に
docker run --name test_ubuntu1804 -itd ubuntu:18.04 /bin/bash
ってすると,test_ubuntu1804っていうCONTAINER NAMEのコンテナが作成,起動しちゃうんだけど,今回はX Windowアプリを画面に出したいのね.だからちょっと変える.
_ [Docker] DockerコンテナからのX Windowアプリの表示を許す
macOSはX WindowがXQuartz というX11の実装を用意している.これを起動しておく必要がある.んで,XQuartzの環境設定からセキュリティyを
- 接続を認証(Authenticate connections
- ネットワーク・クライアントからの接続を許可(Allow connections from network clients
のチェックを入れておくのだ.これで事前準備オッケー.
で,Dockerのイメージ作成からやりなおし.
docker run -it -d --name test_ubuntu1804 -e DISPLAY=$(hostname):0 -v ~/.Xauthority:/root/.Xauthority ubuntu:18.04
これでDISPLAYでXサーバのホスト名(localhostでも127.0.0.1でもオッケー)を指定し,macOSの.Xauthorityをubuntuの/root/.Xauthorityとしてマウントするの.そうするとX Windowアプリが表示されるようになるぜ.その前に,ubuntuのパッケージ郡を更新しておいてね.
nigawa:~ kido$ docker exec -it test_ubuntu1804 /bin/bash root@ecef00f1fad9:/# apt-get -y update ... root@ecef00f1fad9:/# apt-get -y upgrade ... root@ecef00f1fad9:/# apt install x11-apps ... root@ecef00f1fad9:/# xeyes
これでDocker ubuntuのX Windowアプリが動く環境をmacOSで作れたぜ! もしX Windowアプリが表示されないときはDockerを再起動すればいいよ!じゃあね!