京橋のバイオインフォマティシャンの日常

南国のビーチパラソルの下で、Rプログラムを打ってる日常を求めて、、Daily Life of Bioinformatician in Kyobashi of Osaka

最近、CentOS7で、R言語のインストールでややハマった件

はじめに

CentOS7でのR言語のインストールにハマったので、メモを残しておく。

結局、デフォルトのままだと、EPELリポジトリが無効になっているっぽい。

まずは、パッケージのバージョンを最新版にあげておく、

#リポジトリのアップデートなど
$ sudo yum update

#OR
#Brokenエラーで止まる場合には、--skip-brokenフラッグを入れるらしい。
$ sudo yum update  --skip-broken

EPELリポジトリをダウンロードする

つぎに、EPELリポジトリをダウンロードする。

なぜか、EPELリポジトリのインストールが、 yum でうんともすんともうまくいかないので、wgetでダウンロードする。

#ダウンロード
$ wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-13.noarch.rpm

#Epelをインストールする。
$ sudo rpm -ivh ~/epel-release-7-13.noarch.rpm 

# -i : パッケージのインストール
# -v : 詳細の情報表示
# -h : インストールの経過表示

#いちおう消しておく
#rm -rf epel-release-7-13.noarch.rpm

だが、これでも、まだダメみたい。。。

$ sudo yum install -y R
#=> まだ、うまくインストールできない・・・

リポジトリの有効・無効を調べる

そこで、リポジトリの有効・無効を調べてみる。

$ yum repolist all

読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp-srv2.kddilabs.jp
 * updates: ftp-srv2.kddilabs.jp
リポジトリー ID                      リポジトリー名              状態
C7.0.1406-base/x86_64                CentOS-7.0.1406 - Base      無効
#(中略)
epel/x86_64                          Extra Packages for Enterpri 無効
epel-debuginfo/x86_64                Extra Packages for Enterpri 無効
epel-source/x86_64                   Extra Packages for Enterpri 無効
epel-testing/x86_64                  Extra Packages for Enterpri 無効
epel-testing-debuginfo/x86_64        Extra Packages for Enterpri 無効
epel-testing-source/x86_64           Extra Packages for Enterpri 無効
extras/7/x86_64                      CentOS-7 - Extras           無効
extras-source/7                      CentOS-7 - Extras Sources   無効
fasttrack/7/x86_64                   CentOS-7 - fasttrack        無効
intel-daal-repo                      Intel(R) Data Analytics Acc 無効
intel-ipp-repo                       Intel(R) Integrated Perform 無効
intel-mkl-repo                       Intel(R) Math Kernel Librar 無効
intel-tbb-repo                       Intel(R) Threading Building 無効
intelpython                          Intel(R) Distribution for P 無効
updates/7/x86_64                     CentOS-7 - Updates          有効:  1,580+60
updates-source/7                     CentOS-7 - Updates Sources  無効
repolist: 11,742

どうもepelが無効化されている。。。

yumに--enablerepo=epelのフラッグを追加する

ということで、結局、yumに--enablerepo=epelのフラッグを追加すると、Rがインストールできた。

$ sudo yum --enablerepo=epel install -y R 

#関連パッケージもまとめて、インストール
$ sudo yum install -y libpng-devel libjpeg-turbo-devel libxml2-devel libcurl-devel openssl-devel libssh2-devel

Rのセットアップ

次に、Rのセットアップもついでに行っておく。

# R起動
$ R

############
#パッケージ・リスト
pkg_list = c('tidyverse', 'rmarkdown', 'shiny', 'flexdashboard', 'shinydashboard',                                               
             'devtools', 'testthat', 'roxygen2', 'profvis', 'RSQLite', 
             'RcppArmadillo', 'rbenchmark', 'microbenchmark', 'zoo', 'xts', 'forecast',                                                          
             'maps', 'maptools', 'mapproj', 'mapdata', 'ggmap', 'GGally', 'ggrepel', 'ggraph',
             'cowplot', 'gridExtra', 'patchwork', 'tidytext', 'survey', 'fivethirtyeight', 'nycflights13', 
             'babynames', 'neiss', 'ggplot2movies', 'caTools', 'bitops',
             'PKI', 'RCurl', 'RJSONIO', 'packrat', 'rstudioapi', 'rsconnect', 'miniUI')
             
# Rパッケージのインストール
install.packages(pkg_list,
                 repos = "https://cloud.r-project.org",
                 Ncpus = 2)

## Bioconductor - EBImageのインストール
install.packages("BiocManager", repos = "https://cloud.r-project.org")
BiocManager::install("EBImage")

これで、CentOSでのR言語のセットアップは完了である。

参考資料

qiita.com

qiita.com

www.atmarkit.co.jp

Mac brew で、pythonの古いバージョンを管理するときのTips 〜「python3」から「python」にコマンド名を書き換える〜

pythonの古いバージョンのインストール

pythonの古いバージョン(例えば、3.8とか)をインストールしたいとき、 パッケージのlinkをしないと、それが使えなくなっている。

今回、python3.8をbrewでインストールして、パッケージのlinkをやり直して、 コマンド名を「python」に書き換えるまでをやってみる。

#pythonのパス確認 => /usr/bin内のpythonが参照されている。
$ which python
/usr/bin/python

#python@3.8のインストール
$ brew install python@3.8

#...
#...
#==> Summary
#🍺  /usr/local/Cellar/tcl-tk/8.6.11_1: 3,041 files, 51.6MB
#==> Installing python@3.8
#==> Pouring python@3.8-3.8.7_2.catalina.bottle.tar.gz
#==> /usr/local/Cellar/python@3.8/3.8.7_2/bin/python3 -s setup.py --no-user-cfg i
#==> /usr/local/Cellar/python@3.8/3.8.7_2/bin/python3 -s setup.py --no-user-cfg i
#==> /usr/local/Cellar/python@3.8/3.8.7_2/bin/python3 -s setup.py --no-user-cfg i
#==> Caveats
#Python has been installed as
#  /usr/local/opt/python@3.8/bin/python3
#
#Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
#`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
#  /usr/local/opt/python@3.8/libexec/bin
#
#You can install Python packages with
#  /usr/local/opt/python@3.8/bin/pip3 install <package>
#They will install into the site-package directory
#  /usr/local/lib/python3.8/site-packages
#...

ただ、これだけでは、pythonがアップデートされていない。

#pythonのパス確認
$ which python
/usr/bin/python

#python3のパス確認
$ which python3
/usr/bin/python3

python@3.8へとlinkを書き換える

そこで、python@3.8へとlinkを書き換える。

そうすると、/usr/local/bin内の、python3が参照される。

#リンクの上書き
$ brew link --overwrite python@3.8

#パス確認
$ which python3
/usr/local/bin/python3

pythonとpip関連コマンドのエイリアス名を書き換える

次に、/usr/local/bin内で、pythonとpip関連コマンドのエイリアス名を書き換える。

#pythonとpip関連コマンドの表示
$ ls /usr/local/bin | grep -e "py" -e "pip"

#pip3
#pip3.8
#pydoc3
#pydoc3.8
#python3
#python3-config
#python3.8
#python3.8-config

#エイリアス名の書き換え
mv /usr/local/bin/pip3 /usr/local/bin/pip
mv /usr/local/bin/pydoc3 /usr/local/bin/pydoc
mv /usr/local/bin/python3 /usr/local/bin/python
mv /usr/local/bin/python3-config /usr/local/bin/python-config 

上記を行うと、python、pipコマンドがそれぞれ、python3.8と紐づけられる。

$ which python
/usr/local/bin/python

$ python -V
Python 3.8.7

$ which pip
/usr/local/bin/pip

$ pip -V
pip 20.3.3 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

以上、おしまい。

補足

2021年3月4日現在、brew infoで調べたところ、python@3.7以上しか、リポジトリにはないらしい。

$ brew info python@3.6

Error: No available formula or cask with the name "python@3.6".
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.


$ brew info python@3.7

python@3.7: stable 3.7.10 (bottled) [keg-only]
Interpreted, interactive, object-oriented programming language
https://www.python.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/python@3.7.rb
License: Python-2.0
==> Dependencies
Build: pkg-config ✔
Required: gdbm ✔, mpdecimal ✘, openssl@1.1 ✔, readline ✔, sqlite ✔, xz ✔
==> Requirements
Required: x86_64 architecture ✔
==> Caveats
Python has been installed as
  /usr/local/opt/python@3.7/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
  /usr/local/opt/python@3.7/libexec/bin

You can install Python packages with
  /usr/local/opt/python@3.7/bin/pip3 install <package>
They will install into the site-package directory
  /usr/local/lib/python3.7/site-packages

See: https://docs.brew.sh/Homebrew-and-Python

python@3.7 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

==> Analytics
install: 33,684 (30 days), 73,067 (90 days), 197,222 (365 days)
install-on-request: 27,647 (30 days), 63,841 (90 days), 141,223 (365 days)
build-error: 0 (30 days)


$ brew info python@3.8

python@3.8: stable 3.8.8 (bottled) [keg-only]
Interpreted, interactive, object-oriented programming language
https://www.python.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/python@3.8.rb
License: Python-2.0
==> Dependencies
Build: pkg-config ✔
Required: gdbm ✔, mpdecimal ✘, openssl@1.1 ✔, readline ✔, sqlite ✔, tcl-tk ✔, xz ✔
==> Caveats
Python has been installed as
  /usr/local/opt/python@3.8/bin/python3

Unversioned symlinks `python`, `python-config`, `pip` etc. pointing to
`python3`, `python3-config`, `pip3` etc., respectively, have been installed into
  /usr/local/opt/python@3.8/libexec/bin

You can install Python packages with
  /usr/local/opt/python@3.8/bin/pip3 install <package>
They will install into the site-package directory
  /usr/local/lib/python3.8/site-packages

See: https://docs.brew.sh/Homebrew-and-Python

python@3.8 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

==> Analytics
install: 348,989 (30 days), 851,949 (90 days), 4,803,149 (365 days)
install-on-request: 187,812 (30 days), 509,836 (90 days), 1,521,919 (365 days)
build-error: 0 (30 days)

Mac Dockerインストール後に、docker-compose のバージョンを「1.27.4」から「1.28.4」にアップグレードさせるTips

はじめに

Dockerインストール後に、docker-compose のバージョンが合わないということがある。

今回、「1.27.4」から「1.28.4」にアップグレードさせる実行例を取り上げる。

#Docker のインストール
brew install --cask docker

#Docker.appの起動
open /Applications/Docker.app

#実行許可を聞かれる >> OK
#Docker Desktop needs privileged access. >> OK

#Dockerのパス確認
which docker
#/usr/local/bin/docker

#Dockerのバージョン
docker -v
#Docker version 20.10.2, build 2291f61

#docker-composeのパス確認
which docker-compose
#/usr/local/bin/docker-compose

#docker-composeのバージョン
docker-compose -version
#docker-compose version 1.27.4, build 40524192

docker-compose のバージョンが違うと、dockerfileがうまく立ち上がらない問題がある*1

そういうときには、docker-compose のバージョンを合わせる必要がある。

docker-compose 1.28.4 をGitHubリポジトリからダウンロード・インストール

docker-compose 1.28.4 をGitHubリポジトリからダウンロードして、権限設定、パス設定を行う。

ここに、docker-compose のリリース・ページがある。

github.com

#現在のdocker-composeのバージョン
docker-compose -version
#docker-compose version 1.27.4, build 40524192

#docker-compose 1.28.4のダウンロード
wget #https://github.com/docker/compose/releases/download/1.28.4/docker-compose-Darwin-x86_64

#名前の変更
mv docker-compose-Darwin-x86_64 docker-compose

#実行権限の付与
chmod +x ./docker-compose 

#ファイルの移動(上書き)
mv -f ./docker-compose /usr/local/bin/

which docker-compose 
#/usr/local/bin/docker-compose

docker-compose -version
#docker-compose version 1.28.4, build cabd5cfb

【追記 2021/4/13】Mac docker-compose 1.26.2 を 1.27.4 にアップグレードする

#現在のdocker-composeのバージョン
docker-compose -version
#docker-compose version 1.26.2, build eefe0d31

#docker-compose 1.27.4のダウンロード
wget https://github.com/docker/compose/releases/download/1.27.4/docker-compose-Darwin-x86_64

#名前の変更
mv docker-compose-Darwin-x86_64 docker-compose

#実行権限の付与
chmod +x ./docker-compose 

#一度、動かす
./docker-compose -version
#docker-compose version 1.27.4, build 40524192

#ファイルの移動(上書き)
mv -f ./docker-compose /usr/local/bin/

#パス確認
which docker-compose 
#/usr/local/bin/docker-compose

#バージョン確認
docker-compose -version
#docker-compose version 1.27.4, build 40524192

まとめ

Dockerは便利なんだけど、docker-compose のバージョン問題はハマると厄介な問題である。

パッケージソフトウェアの更新と合わないとか、 歩調を合わせて欲しいところである。。

*1:そもそも、brew で管理されているdockerのバージョンのアップデートがやや遅いというのがある。