Jupyterlabの導入
$ conda install jupyterlab
$ conda install pandas numpy scikit-learn seaborn matplotlib
$ conda install jupyterlab
$ conda install pandas numpy scikit-learn seaborn matplotlib
RStudioは統計解析のためのR言語を用いた解析を行うときに便利な統合解析環境 (IDE) であり、データ解析をしている際にも多用するプラットフォームである。NGSデータのバイオインフォマティクスのようなライフサイエンス分野の解析でも頻繁に使用されるプラットフォームだが、これまでRStudio Desktop版を主に利用してきた。比較的リソースが豊富なubuntuのlinuxマシンを利用したいのだが、実際の端末としては発表資料やオフィスソフトを使っているMacやWindowsなどを使いたいとも思う。それで、Desktop版ではなくubuntu機にserver版をインストールして、ゲストのbrowserからアクセスすることを考えた。対象マシンにはVS codeでssh接続し、主に公式の手順に則って作業を進めた。
基本的に公式のインストール手順の通りに進めていくことで実施できた。対象のマシンはubuntuなので、Debian10/Ubuntu20を選択した。
対象の環境には既にRがインストールされていたので、このステップは省略した。現在インストールされているのはR ver4.1.2だった。
R version 4.1.2 (2021-11-01) -- "Bird Hippie"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
端末で、以下のコマンドを実行しインストール作業を行なった。
$ sudo apt-get install gdebi-core
gdebi-coreについては、参考のリンクを見て調べた。
"gdebi を使うと、ローカルの deb パッケージをその依存関係を解決しながら インストールできます。apt は同じ動作をしますが、インストールできるのはリモート (http, ftp) にあるパッケージのみです。"
続けて、wgetで.debをダウンロードした。
$ wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-2023.03.1-446-amd64.deb
ダウンロード先のディレクトリに移動し、先ほどのgdebiを用いてインストールする。
$ sudo gdebi rstudio-server-2023.03.1-446-amd64.deb
インストールの最後で、Serverが起動したことが表示された。
● rstudio-server.service - RStudio Server
Loaded: loaded (/lib/systemd/system/rstudio-server.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-05-22 23:08:17 JST; 1s ago
Process: 6534 ExecStart=/usr/lib/rstudio-server/bin/rserver (code=exited, status=0/SUCCESS)
Main PID: 6535 (rserver)
Tasks: 4 (limit: 309319)
Memory: 4.1M
CPU: 670ms
CGroup: /system.slice/rstudio-server.service
└─6535 /usr/lib/rstudio-server/bin/rserver
May 22 23:08:17 XXXXX systemd[1]: Starting RStudio Server...
May 22 23:08:17 XXXXX systemd[1]: Started RStudio Server.
手元Macのsafariから以下のアドレスに対してアクセスすると、ブラウザでRStudioの画面が表示された。
http://{serverマシンのIPアドレス}:8787/
ubuntuマシンのuser nameとpasswordを入力するとログインすることができた。
今回のRStudio serverの導入により、RStudioのインターフェイスは日常使用するPCから利用し、かつ計算は比較的スペックが高いubuntuのマシンを使うことが可能になった。この方法はDesktop版よりも便利なような気がする。解析結果のreportやコミュニケーションのことを考えると、officeなども完備している手元のパソコンを使いたいが、計算自体は多少重めの場合など、serverを使った方が便利に進めることができるだろう。
前回、こんがらがってよく分からなくなっていた古いanaconda3環境を一度アンインストールして、新しくminiconda3で環境構築を実施することにした。かれこれ4年間ほどcondaを利用してきたが、その間に所属も変わり、ライセンスの変更でconda-forgeを利用することになるなど、色々と変遷はあるが、今しばらくはpython環境はcondaで構築する状況が続くように思う。
今回環境構築するのは、自分のsmall projectに使っているubuntu上である。
$ cat /etc/issue
Ubuntu 20.04.6 LTS \n \l
自分の環境下のanaconda3をアンインストールした。
https://tyoshidalog.blogspot.com/2023/05/ubuntuanaconda3.ht
ダウンロード後、ハッシュ値の確認を実施する。
$ cat sha256sum.check.txt
aef279d6baea7f67940f16aad17ebe5f6aac97487c7c03466ff01f4819e5a651 Miniconda3-latest-Linux-x86_64.sh
$ sha256sum -c sha256sum.check.txt
Miniconda3-latest-Linux-x86_64.sh: OK
# hash値を書いてあるファイルは、"hash"+"スペース"+"ファイルパス"になっている。
インストールを実施する。home下にminiconda3のディレクトリができる。
$ bash ./Miniconda3-latest-Linux-x86_64.sh
新しいターミナルを立ち上げると、プロンプトが(base)になっている。
$ conda list
# Name Version Build Channel
_libgcc_mutex 0.1 main
_openmp_mutex 5.1 1_gnu
boltons 23.0.0 py310h06a4308_0
brotlipy 0.7.0 py310h7f8727e_1002
bzip2 1.0.8 h7b6447c_0
ca-certificates 2023.01.10 h06a4308_0
certifi 2022.12.7 py310h06a4308_0
cffi 1.15.1 py310h5eee18b_3
charset-normalizer 2.0.4 pyhd3eb1b0_0
conda 23.3.1 py310h06a4308_0
conda-content-trust 0.1.3 py310h06a4308_0
conda-package-handling 2.0.2 py310h06a4308_0
conda-package-streaming 0.7.0 py310h06a4308_0
cryptography 39.0.1 py310h9ce1e76_0
idna 3.4 py310h06a4308_0
jsonpatch 1.32 pyhd3eb1b0_0
jsonpointer 2.1 pyhd3eb1b0_0
ld_impl_linux-64 2.38 h1181459_1
libffi 3.4.2 h6a678d5_6
libgcc-ng 11.2.0 h1234567_1
libgomp 11.2.0 h1234567_1
libstdcxx-ng 11.2.0 h1234567_1
libuuid 1.41.5 h5eee18b_0
ncurses 6.4 h6a678d5_0
openssl 1.1.1t h7f8727e_0
packaging 23.0 py310h06a4308_0
pip 23.0.1 py310h06a4308_0
pluggy 1.0.0 py310h06a4308_1
pycosat 0.6.4 py310h5eee18b_0
pycparser 2.21 pyhd3eb1b0_0
pyopenssl 23.0.0 py310h06a4308_0
pysocks 1.7.1 py310h06a4308_0
python 3.10.10 h7a1cb2a_2
readline 8.2 h5eee18b_0
requests 2.28.1 py310h06a4308_1
ruamel.yaml 0.17.21 py310h5eee18b_0
ruamel.yaml.clib 0.2.6 py310h5eee18b_1
setuptools 65.6.3 py310h06a4308_0
six 1.16.0 pyhd3eb1b0_1
sqlite 3.41.1 h5eee18b_0
tk 8.6.12 h1ccaba5_0
toolz 0.12.0 py310h06a4308_0
tqdm 4.65.0 py310h2f386ee_0
tzdata 2023c h04d1e81_0
urllib3 1.26.15 py310h06a4308_0
wheel 0.38.4 py310h06a4308_0
xz 5.2.10 h5eee18b_1
zlib 1.2.13 h5eee18b_0
zstandard 0.19.0 py310h5eee18b_0
今回の環境は商業活動に関係のない個人的なものだが、商用の利用では、anacondaのデフォルトチャンネルの使用が有償化されているので、conda-forgeなどの利用を検討した方が良い。これらの情報については、下記のリンクでわかりやすい説明を見つけることができる。
Anacondaの有償化に伴いminiconda+conda-forgeでの運用を考えてみた
conda-forgeとは?主な使い方や活用のポイントをご紹介
https://github.com/conda-forge
色々と環境がこんがらがってきて、ubuntu上にanaconda3で構築していた環境を削除したくなった。しばしばcondaの環境を削除する作業をしているような気がして、手順を記録として残しておくことにした。
$ rm -rf ./anaconda3
これで、anacondaのファイルの大部分が削除される。
下記の記述があるので、エディタで.bashrcを開いて削除する。
これまでのバージョン、あるいはOSなのかもしれないが、.bashrcに記述がある場合と、.bash_profileの場合があったような気がする。現在のubuntuの場合は.bashrcだった。
# >>> conda initialize >>>
~~~~~~~~
# <<< conda initialize <<<
homeディレクトリ下にあるconda関係のファイルやディレクトリを削除した。
$ rm -rf .condarc .conda
たまに聞く話として、サーバにVS codeを使ってremote SSHでアクセスしている場合に、アップデートをしたタイミングからssh接続できなくなることがある。最初はアップデートされたextentionの問題なのではないかと考え、前バージョンへのダウン等でトラブルシューティングを試みたのだがうまくいかない。remote SSHしようとする時に、ホストにサーバーがインストールできないというエラーメッセージが表示されており、途中からホストのホームディレクトリに書き込みできない状態になっているのではないかと考えたて確かめていくと解決することがある。
ホームディレクトリに移ってduで使用状況を調べてみた。
$ du -sh ~
すると、決められたdisk quotaを2GBほど超過した状態であることがわかった。どこに大きなファイルがあるのかを調べてみた。
$ du -sh ~/*
隠しファイルについても以下のように調べた。
$ du -sh ~/.[^.]*
大きなものとしては、使用しているcondaのディレクトリや、.cache/firefoxなどが肥大化しているようだった。.cache/firefoxはfirefoxのキャッシュファイルだが、こんなに大きくなっているとは思わなかった。これらのファイルを削除したり、別に移したりすることで、disk quota内に収めたのち、改めて手元のPCからVS codeでssh接続してみると、今度は無事に接続することができた。
思い返すと、過去にもdisk quota超過での書き込み不可によるトラブルを経験しているのが思い出された。conda updateでアップデートしたり新しいアプリケーションをインストールしたりしようとしたときにできない、ということがあり、ホーム下のminiconda3のディレクトリに書き込めなくなっていることが原因だった。VS Codeもsshアクセス先のホーム下に.vscode-serverというフォルダを作っていたが、disk quota超過によりここに書き込めなくなっていることが今回の原因だったらしい。この.vscode-serverディレクトリも1.4Gほどあり、かなり大きかった。
ホームディレクトリを大きくする原因の一つは、.cache下のファイルもあるが、miniconda3が大きくなることが一番の原因のように思われた。いくつもアプリケーションを導入したり、環境をたくさん作ったりすると、すぐに5G、10Gに肥大化してしまう。
一つの解決策としては、conda cleanを使用して不要になったファイルを削除することだと思う。ただ、--allを使うと不具合が生じると述べているサイトもあり(問題なかったとする人もいる)、今回は--tarballsでtarballのみ削除することにした。
あるいは、ホーム下のcondaの設定ファイルの.condarcの中に、pkgs_dirsの記述で別のパスを記載することで、そちらにpkgsの大きいファイルを格納するようにしたら、ホーム下のサイズは小さくすることができると思う。
pkgs_dirs:
- /path/to/conda-pkgs/pkgs
また、envのフォルダを別の場所にとりあえず移動し、リンクを張ることでホーム下miniconda3のサイズを削除できるようだった、この方法でリンクを張った後でもその環境を使うことができた。このようにした方がいいのか、あるいは、ホーム下.conda/environments.txtに各environmentのパスが書かれていたので、こちらを編集した方が良いのかもしれない。
envのディレクトリの位置は、プロジェクトのフォルダ下に作って共有するといったやり方もあるらしく、これは解析の時にも便利なように思った。disk quotaを気にせずにそれぞれの解析ごとに環境を準備することもできるので、次回以降試してみたいと思った。
今回のこともあり、ホームディレクトリのディスク使用量をたまに確認することにした。隠しファイルについても表示するための"disk_quota_check"というエイリアスを新しく.bash_aliasesに記述した。
alias disk_quota_check='echo "---total---" && du -sh ~ && echo "--- dir --" && du -sh ~/* && echo "---invisible---" && du -sh ~/.[^.]*'
また、.bashrcに以下の記述をした。
if [ -f ~/.bash_aliases ]; then
~/.bash_aliases
fi