#はじめに
CentOSは公式リポジトリが古く、場合によってはサーバにインストールされているソフトが古すぎて自分で新しいバージョンをインストールしなければならなくなることがあります。通常、ソフトのインストールにはroot権限が必要ですが、ここで紹介する方法はroot権限が不要です。動作の検証はCentOS6.xで行っております。恐らく他のバージョン・ディストリビューションでも可能だと思いますが、保証対象外です。また、サーバのOSがDebian系などの場合はyum
を適当なコマンド(apt-get
・aptitude
など)に、x86_64-redhat-linux
を適当なものに読み替えてください。(gcc --version
などで出てきます)さらに、「最新」という表現がいくつか出てきますが、2015年9月現在の時点です。
#ソフトをインストールするディレクトリ
通常、ソフトは/usr/bin
(管理者がyum
でインストールしたもの)、もしくは/usr/local/bin
(管理者がコンパイルしてインストールしたもの)にインストールされます。このディレクトリはroot権限がないと書き込みができません。そこで、ホームディレクトリ以下に適当なディレクトリを作成してインストールしましょう。個人的には
~/local/bin
がおすすめです。以下はこのディレクトリにソフトをインストールすることを前提にして解説します。別のディレクトリにインストールする場合は適宜読み替えてください。
#porgをインストールする
ソフトをソースからコンパイルしてインストールする時、インストールは(sudo )make install
だけでできるので楽なのですが、アンインストール時にはインストールした際に生成されたMakefileが必要です。(コマンドは(sudo )make uninstall
のみ)更に、ソフトによっては(GCC・Gitなど)コマンドでのアンインストールができないこともあります。そこで、ソースからコンパイルしてインストールしたソフトの管理を行うソフトporgを最初にインストールします。これをインストールするコマンドは次のようになります。
wget http://sourceforge.net/projects/porg/files/porg-0.8.tar.gz
tar xf porg-0.8.tar.gz
cd porg-0.8
nice -n 19 ./configure --host=x86_64-redhat-linux --build=x86_64-redhat-linux --prefix=$HOME/local CFLAGS='-march=core2 -O3' --disable-grop --with-porg-logdir=$HOME/local/root/var/log/porg/
nice -n 19 make
nice -n 19 make install
nice -n 19 make logme
ここで、nice -n 19
は実行プログラムの優先度を下げるコマンドです。C Shell・tcshではnice +19
を使います。CentOS6.xの場合、./configure
の際に--disable-grop
を入れてGUIを無効にしないとコンパイルが通りません。また、root権限がない場合、--with-porg-logdir
でファイルの記録場所を変えなければなりません。(デフォルトではroot権限が必要な場所に設定される)ここでは、
~/local/root/var/log/porg
としています。変更する場合は上のコマンドを読み替えてください。
#パスを通す
コンパイルしたソフトはこのままではコマンドとして使用できません。.bashrc・.tcshrc・.zshrcなどの末尾に~/local/bin
にパスを通し、コマンドとして使用できる記述を加えます。但し、注意しなければならないことがあります。パスの順番です。LinuxではWindowsとは異なり、前のディレクトリにあるソフトほど優先されて実行されます。従って、サーバの管理者がインストールした古いソフトが入っている/usr/bin
・/usr/local/bin
より前に~/local/bin
を加えなければなりません。また、パスの区切りはWindowsでは「;」ですが、Linuxでは原則「:」です。(ただし、fishなど当てはまらないシェルもあります)パスを通す設定コマンドはBashなどBourne Shell系の場合は次のようになります。
export PATH=$HOME/local/bin:$PATH
C Shell・tcshの場合は次のようになります。
setenv PATH ${HOME}/local/bin:${PATH}
fishの場合は次のようになります。
set -x PATH $HOME/local/bin $PATH
#例: gnuplotをソースからコンパイル・インストール
実例としてgnuplotの最新版(※執筆当初; 2016/7現在の最新版は5.0.4です)、ver. 5.0.1をソースコードからコンパイル・インストールしてみます。その場合のコマンドは以下のようになります。(wget・コンパイラ・必要なライブラリがあることが前提)
wget http://sourceforge.net/projects/gnuplot/files/gnuplot/5.0.1/gnuplot-5.0.1.tar.gz #tarballを取得
tar xf gnuplot-5.0.1.tar.gz #解凍
cd gnuplot-5.0.1
nice -n 19 ./configure --host=x86_64-redhat-linux --build=x86_64-redhat-linux --prefix=$HOME/local CFLAGS='-march=core2 -O3' #~/local以下にインストールする場合; CentOS7の場合はサーバのCPUに合わせて-march=core-avx2(Haswell) core-avx-i(IvyBridge) corei7-avx(SandyBridge)とする; niceはサーバ管理者に睨まれないように優先度を下げる役割; C Shell/tcshの場合はnice +19 ~とする
nice -n 19 make #サーバ管理者に睨まれないように優先度を下げてコンパイル
nice -n 19 make check #念のため(ソフトによっては不要な場合もあります)
nice -n 19 porg -lp gnuplot "nice -n 19 make install" #-lpの後がパッケージ名(gnuplot-5.0.1でも可)
コンパイルの作業は他のユーザも使うであろうサーバのリソースをごっそり持っていく行為なので「nice -n 19
」をつけて優先度を下げたほうがいいと思います。また、make install
の際に、porg -lp
でporgの管理下に置かなければなりません。
追記: gnuplotはQt4・WxWidgetsのライブラリがなくてもインストールができますが、ターミナルの種類が減ります。ライブラリもソースビルドするか諦めてください。またQt4のライブラリがあってもオプションで--with-qt=qt4
を指定しないとQtターミナルが使用できません。詳しくは./configure
の後すぐにmake
せずに./configure
の最後の方のメッセージを見てください。他のソフトも同様です。
#パーミッションについて
通常、make install
でインストールしたファイルは誰からもアクセス可能です。インストールされたソフトを他人に使われたくない場合には~/local
のパーミッションを700にするなどの対策が必要です。また、porg関連のソフトを実行されたくない場合には、porgのインストール後に~/local/bin
に移動し、
chmod go-rwx porg* *porg
を実行するのがいいと思います。