CentOS 6.3 に Ruby 1.9.3 をインストールする
CentOS 6.3 に yum を使って Ruby の標準パッケージをインストールする場合、バージョンは1.8系の1.8.7となる。 ところが一部の Ruby 製アプリケーション(ex. Gitlab )では1.9系が求められるケースがあるため、 今回はソースから Ruby の最新版をインストールすることにした。
依存パッケージをインストール
Ruby のコンパイルに必要なパッケージをインストールする(要EPEL)。
[user@localhost ~]$ sudo yum install --enablerepo=epel make gcc zlib-devel openssl-devel readline-devel ncurses-devel gdbm-devel db4-devel libffi-devel tk-devel libyaml-devel
ダウンロード → コンパイル
Ruby のダウンロードのページから1.9系の最新版をダウンロードして解凍、コンパイルする。 2012年12月20日現在の最新版は 1.9.3-p327 だった。
[user@localhost ~]$ cd /usr/local/src
[user@localhost src]$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz
[user@localhost src]$ tar xf ruby-1.9.3-p327.tar.gz
[user@localhost src]$ cd ruby-1.9.3-p327
[user@localhost ruby-1.9.3-p327]$ ./configure --prefix=/usr/local
[user@localhost ruby-1.9.3-p327]$ make
RPM化 → インストール
コンパイルに成功したら checkinstall を使って RPM化してインストールする(checkinstall のインストール手順はこちら)。
[user@localhost ruby-1.9.3-p327]$ sudo checkinstall --fstrans=no
(中略)
**********************************************************************
Done. The new package has been saved to
/root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p327-1.x86_64.rpm
You can install it in your system anytime using:
rpm -i ruby-1.9.3-p327-1.x86_64.rpm
**********************************************************************
[user@localhost ruby-1.9.3-p327]$ sudo rpm -ivh --nodeps /root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p327-1.x86_64.rpm
checkinstall のオプションに --fstrans=no を付けないとエラーになる。 また、checkinstall 実行時「それらをパッケージから除外しますか?(yesと答えることをおすすめします) [y]:」に素直に yes と答えると処理が進まなくなる罠がある。no と答えても問題ないのでここは no と答えておく。 さらに rpm のインストール時に --nodeps を指定しないとエラーになるので注意。
参考
CentOS 6.3 に checkinstall をインストールする
64bit版 CentOS 6.3 に checkinstall をインストールする。
要点
- 64bit版 CentOS 6.3 では、2012年12月19日現在の最新版 1.6.2 をダウンロードして make しようとしてもエラーで失敗する。
- 公開されている git リポジトリから最新版を clone して一部を修正し、コンパイル → インストールする。
依存パッケージをインストール
checkinstall をコンパイル・実行するためには gettext をインストールする必要がある。
[user@localhost ~]$ sudo yum install gettext rpm-build
ソースコードを入手 → 修正
http://checkinstall.izto.org/ で公開されている git リポジトリから ソースコード一式を入手しファイルを修正する。
[user@localhost ~]$ cd /usr/local/src
[user@localhost src]$ git clone http://checkinstall.izto.org/checkinstall.git
[user@localhost src]$ cd checkinstall
[user@localhost checkinstall]$ vi Makefile
[user@localhost checkinstall]$ vi checkinstallrc-dist
[user@localhost checkinstall]$ vi installwatch/Makefile
修正後の diff は次の通り。
[user@localhost checkinstall]# git diff
diff --git a/Makefile b/Makefile
index 2e28adc..b6d217c 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
PREFIX=/usr/local
BINDIR=$(PREFIX)/sbin
LCDIR=$(PREFIX)/lib/checkinstall/locale
-CONFDIR=$(PREFIX)/lib/checkinstall
+CONFDIR=$(PREFIX)
all:
for file in locale/checkinstall-*.po ; do \
diff --git a/checkinstallrc-dist b/checkinstallrc-dist
index d4feb4e..fe5f56e 100644
--- a/checkinstallrc-dist
+++ b/checkinstallrc-dist
@@ -117,7 +117,7 @@ RESET_UIDS=0
NEW_SLACK=1
# Comma delimited list of files/directories to be ignored
-EXCLUDE=""
+EXCLUDE="/selinux"
# Accept default values for all questions?
ACCEPT_DEFAULT=0
diff --git a/installwatch/Makefile b/installwatch/Makefile
index ae34fc1..fb41eb3 100644
--- a/installwatch/Makefile
+++ b/installwatch/Makefile
@@ -11,7 +11,7 @@ PREFIX=/usr/local
VERSION=0.7.0beta7
BINDIR=$(PREFIX)/bin
-LIBDIR=$(PREFIX)/lib
+LIBDIR=$(PREFIX)/lib64
all: installwatch.so
コンパイル → インストール
修正が完了したら make → make install でインストール。
[user@localhost ~]$ make
[user@localhost ~]$ sudo make install
実行
まずは checkinstall 自体を rpm 化して上書きインストールする。 /root/rpmbuild/SOURCES というディレクトリが必要になるので先に作成しておく。
[root@localhost ~]# mkdir -p ~/rpmbuild/SOURCES
[root@localhost ~]# cd /usr/local/src/checkinstall
[root@localhost checkinstall]# checkinstall
いくつか入力を求められるので入力していくと次のような結果が表示される。
**********************************************************************
Done. The new package has been saved to
/root/rpmbuild/RPMS/x86_64/checkinstall-20121220-1.x86_64.rpm
You can install it in your system anytime using:
rpm -i checkinstall-20121220-1.x86_64.rpm
**********************************************************************
生成された rpm をインストール&確認する。
[root@localhost ~]# rpm -ivh /root/rpmbuild/RPMS/x86_64/checkinstall-20121220-1.x86_64.rpm
準備中... ########################################### [100%]
1:checkinstall ########################################### [100%]
[root@localhost ~]# rpm -qi checkinstall
rpm -qi checkinstall
Name : checkinstall Relocations: (not relocatable)
Version : 20121220 Vendor: (none)
Release : 1 Build Date: 2012年12月20日 00時04分10秒
Install Date: 2012年12月20日 00時09分59秒 Build Host: localhost
Group : Applications/System Source RPM: checkinstall-20121220-1.src.rpm
Size : 453050 License: GPL
Signature : (none)
Packager : checkinstall-1.6.3
Summary : CheckInstall installations tracker, version 1.6.2
Description :
CheckInstall installations tracker, version 1.6.2
CheckInstall keeps track of all the files created or
modified by your installation script ("make install"
"make install_modules", "setup", etc), builds a
standard binary package and installs it in your
system giving you the ability to uninstall it with your
distribution's standard package management utilities.
参考
CentOS 6.3 に openssh-ldap を導入する
CentOS5 時代に書いた記事 が時代遅れになっていたので、2012年12月現在の最新版 CentOS6.3 で OpenSSH + LDAP による RSA鍵管理についてまとめてみた。
openssh-ldap とは?
openssh-ldap は openssh が導入されている環境に追加することで、LDAPサーバーに格納されている RSA公開鍵を使って SSH にログインできるようになる CentOS6 標準のパッケージ。 CentOS5 では、openssh そのものをサードパーティー製のパッケージに置き換える必要があったことを考えると、 標準でサポートされているのはうれしい限り。
要件と仮定
便宜上、設定等については次の通り仮定する。
LDAP サーバーの設定
LDAP サーバーが LPK(LDAP-Public-Key) に対応していない場合、次の手順で設定する。 設定・対応済の場合は次の手順へ。
CentOS6 の場合
openssh-ldap をインストールし /usr/share/doc/openssh-ldap-5.3p1 以下にインストールされるスキーマを OpenLDAP サーバーで使えるようにする。 具体的には /etc/openldap/slapd.conf に次の行を追加すればOK。
include /usr/share/doc/openssh-ldap-5.3p1/openssh-lpk-openldap.schema
最後に LDAP サーバーを再起動する。
[root@localhost ~]# yum ldap restart
CentOS5 の場合
外部からスキーマを入手して使用する。
[root@localhost ~]# cd /etc/openldap/schema
[root@localhost schema]# wget http://dev.inversepath.com/openssh-lpk/openssh-lpk_openldap.schema
次に /etc/openldap/slapd.conf から読み込むように設定する。
include /etc/openldap/schema/openssh-lpk_openldap.schema
最後に LDAP サーバーを再起動する。
[root@localhost ~]# yum ldap restart
インストール済のパッケージを確認
openssh および openssh-server が導入されていることを確認する。
[user@localhost ~]$ yum list installed | grep openssh
openssh.x86_64 5.3p1-81.el6_3 @updates
openssh-server.x86_64 5.3p1-81.el6_3 @updates
インストールされていない場合は yum を使ってインストールする。
[user@localhost ~]$ sudo yum install openssh-server
openssh-ldap のインストールと設定
yum を使って openssh-ldap をインストールする
[root@localhost ~]# yum install openssh-ldap
次に /etc/ssh/ldap.conf を編集する(存在しない場合は作成する)。
[root@localhost ~]# cat > /etc/ssh/ldap.conf <<__EOF__
uri ldap://ldap.example.jp/
base dc=example,dc=jp
host hostname.example.jp
ssl no
#ssl start_tls
#tls_cacertdir /etc/openldap/cacerts
#tls_cacertfile /etc/pki/tls/certs/ca-bundle.crt
#tls_checkpeer no
__EOF__
[root@localhost ~]# chmod 600 /etc/ssh/ldap.conf
/etc/ssh/ldap.conf の設定が完了すると /usr/libexec/openssh/ssh-ldap-wrapper コマンドを使ってユーザーのRSA鍵が取得できるようになる 下記コマンドを実行し、RSA鍵が返ってくればOK。返ってこない場合は ldap.conf または LDAPサーバー側の設定を見直す。
[root@localhost ~]# /usr/libexec/openssh/ssh-ldap-wrapper username
続いて /etc/ssh/sshd_config に次の2行を追加する。
AuthorizedKeysCommand /usr/libexec/openssh/ssh-ldap-wrapper
AuthorizedKeysCommandRunAs root
もちろん RSAAuthentication および PubkeyAuthentication が yes である必要がある。 設定が間違いないか確認し、sshd を再起動する。
[root@localhost ~]# service sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]
試しにRSA鍵を使ってログインしてみて、無事に認証できればOK。
参考
CentOS 5.6 上のリポジトリを Subversion から Git に移行する
svn2git を使って Subversion のリポジトリを Git に移行した時のメモ。
1. git, git-svn をインストール
git をインストールするのはもちろんのこと、 svn2git が内部で使用する「git svn」コマンドを実行するためには git-svn パッケージも必要となる。両方とも yum でインストール可能。
[user@localhost ~]$ sudo yum install git git-svn
2. svn2git をインストール
Subversion から git への移行ツール svn2git をインストール。 svn2git は ruby スクリプトなので gem でインストールする。
[user@localhost ~]$ sudo gem install svn2git [sudo] password for user: sudo: gem: command not found
gem がない……
[user@localhost ~]$ which gem /usr/bin/which: no gem in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin) [user@localhost ~]$ which ruby /usr/bin/which: no ruby in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin)
gem も ruby も入っていませんでした(´Д`)
3. Ruby + RubyGems をソースからインストール
CentOS 5.6 の yum で ruby をインストールすると 1.8.5 がインストールされ、そのままだと svn2git をインストールすることができない(gem install svn2git が失敗してしまう)。そこでソースから Ruby および RubyGems をインストールする。yum でインストール済の場合は yum erase で ruby を一旦アンインストールする。
3-1. Ruby のインストール
とりあえず make まで
[user@localhost ~]$ cd /usr/local/src [user@localhost src]$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p358.tar.gz [user@localhost src]$ tar xzf ruby-1.8.7-p358.tar.gz [user@localhost src]$ cd ruby-1.8.7-p358 [user@localhost ruby-1.8.7-p358]$ ./configure --prefix=/usr/local [user@localhost ruby-1.8.7-p358]$ make
通常のインストール手順
[user@localhost ruby-1.8.7-p358]$ sudo make install
checkinstall を使う場合のインストール手順
[user@localhost ruby-1.8.7-p358]$ sudo checkinstall --fstrans=no [user@localhost ruby-1.8.7-p358]$ rpm -ivh /usr/src/redhat/RPMS/x86_64/ruby-1.8.7-p358-1.x86_64.rpm
確認
[user@localhost ~]$ which ruby /usr/local/bin/ruby [user@localhost ~]$ ruby --version ruby 1.8.7 (2012-02-08 patchlevel 358) [x86_64-linux]
3-2. RubyGems のインストール
[user@localhost ~]$ cd /usr/local/src [user@localhost src]$ wget http://rubyforge.org/frs/download.php/76011/rubygems-1.8.22.tgz [user@localhost src]$ tar xvzf rubygems-1.8.22.tgz [user@localhost src]$ cd rubygems-1.8.22 [user@localhost rubygems-1.8.22]$ sudo ruby setup.rb
確認
[user@localhost ~]$ which gem /usr/local/bin/gem [user@localhost ~]$ gem --version 1.8.22
4. 今度こそsvn2git をインストール
[user@localhost ~]$ sudo gem install svn2git [sudo] password for user: Fetching: svn2git-2.2.1.gem (100%) Successfully installed svn2git-2.2.1 1 gem installed Installing ri documentation for svn2git-2.2.1... Installing RDoc documentation for svn2git-2.2.1... [user@localhost ~]$ which svn2git /usr/local/bin/svn2git
インストールできた!(´∀`)
5. svn2git を実行する
ポイントは「svn+ssh 経由で実行しない」こと。Subversion のリポジトリに svn+ssh 経由でアクセスすると「Malformed network data ...」とかいうエラーが頻発してまともに変換ができない。そのために今回は CentOS 上に svn2git 環境を構築することでサーバー内で完結できるようにした。
svn2git のコマンドは次のようになる。
svn2git <SVNリポジトリURL> --verbose --authors /path/to/authors
ここで最後に指定している「authors」と呼ばれるファイルは、subversion 上の author 情報を git の author 情報に変換するためのマッピング定義ファイルで、次のような内容であらかじめ作成する。
john = John Smith <john_smith@example.com>
左辺が Subversion 上に記録されている author 名、右辺が git に保存する author名+メールアドレスとなる。Subversion 上に未定義の author が出現するとエラーとなるので、必要な情報を随時追加していってもよい。
というわけで、ローカルの SVNリポジトリをGitリポジトリにインポートするコマンドは次の通り。
[user@localhost ~]$ cd /path/to/git [user@localhost git]$ svn2git file:///path/to/svn --verbose --authors /path/to/authors
上記手順で、 /path/to/git ディレクトリ以下に .git ディレクトリ および作業コピーが生成される。
おつかれさまでした。
CentOS 5.6 に Jenkins をインストールする
CentOS 5.6 に Jenkins をインストールした時のメモ。
1. Jenkins をインストールする
このページを参考に下記の通りコマンドを実行する。
[user@localhost ~]$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo [user@localhost ~]$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key [user@localhost ~]$ sudo yum install jenkins
上記手順で
2. Java 環境を構築する
今回は Java の実行環境がインストールされていなかったため、下記の通りインストールを実施した。
[user@localhost ~]$ sudo yum install java-1.6.0-opensdk [user@localhost ~]$ which java /usr/bin/java
3. Jenkins を起動する
[user@localhost ~]$ sudo service jenkins start
4. アクセスしてみる
http://localhost:8080 にアクセスしてみると下記の様なページが表示される。
おしまい。