Browse Month: October 2016

CentOS 7 で手軽に Ruby 2.3 を使う方法

CentOS 7 の System Ruby は、2.0 系です。System Ruby はそのままに、2.3 系を手軽に使う方法を紹介したいと思います。

まず、EPEL が入っている環境で CentOS SCLo Software Collections をインストールします


# yum -y install centos-release-scl-rh centos-release-scl

Ruby 2.3 をインストールします。


$ yum -y install rh-ruby23

あとは、/etc/profile.d/ruby23.sh を、次のように作成します。


# /etc/profile.d/ruby23.sh - ruby 2.3

source /opt/rh/rh-ruby23/enable
export X_SCLS="`scl enable rh-ruby23 'echo $X_SCLS'`"

これで、ログインし直させば、自動的に Ruby 2.3 に PATH が通っていますので、Ruby 2.3 を手軽に使うことが出来ます。

xargs のちょっとした Tips

xargs を使うと手軽にコマンドを並列実行できて便利ですが、xargs を使ったいくつかのちょっとした Tips を紹介したいと思います。

基本は、次のようなになります。


$ echo a"\n"b | xargs -t -P 2 -n 1 echo "command"
echo command a
command a
echo command b
command b

この例だと、”command (a|b)” を表示するコマンドになりますが、echo をとることで任意のコマンドの末尾に自由にパラメータを渡すことができます。

末尾ではなく、コマンドの途中のパラメータを渡したいときは、次のようにするとできます。


$ echo -e a"\n"b | xargs -t -P 2 -n1 -I '{}' echo "command {} param2"
echo command a param2
command a param2
echo command b param2
command b param2

-I オプションを使うと、任意のパラメータに置換することができます。上の例だと、{} になります。xargs に渡すパラメータが改行区切りでないといけないので注意してくさい。
そのままやってしまうと、次のようになります。


$ echo a"\n"b | xargs -t -n1 -P 2 -I '{}' echo "{} command"
echo a b command
a b command

ちゃんとコマンドを並列実行する場合は、GNU Paralell を使うのが定番ですが、インストールする必要があるので、お手軽にやりたいときには xargs を使うと便利です。

# 10/19 追記
コメントにあった指摘で、-P オプションを付与するように修正しました。