Re:(ΦωΦ)

No Curious, No Life.

AlmaLinux8.7 で Submin を使う ~3.Subversion/Subminの導入~

CentOS6で利用していたSubversion(なんと2014/11構築!!)をAlmaLinux8.7に移すことにしました.

Subversionの管理にSubminを使います.
SubminはPython2を使用するため,AlmaLinux9ではなく,Python2が使える8.7にしました.
実はSubminとSubversionをつなぐモジュールが簡単に手に入らず,Subversionコンパイルからやっています.
いろんな方の記事を参考にして,本件向けに手順をまとめなおしています.
感謝です!

最終回です.
いよいよSubversionコンパイルしてモジュールを入手して環境を構築します.

[目次]

※ 現在の仕事上,Linuxはまれに触れる程度ですので盛大な勘違いや思い込みがあるかも?
※ その時は教えてくださいね.

作業方針

  • 本構築前のお試しなのでWindows10/11上でHyper-Vにて構築します.
  • 「su -」は使わず,「sudo」で進めます.

1.Python2.xのインストール

Subversion 1.10.2 および Submin はPyrhon2で動作します.
swig-pyの作成にPython.h が必要なので, python2-devel もインストールします.

#Python2のインストール
sudo dnf install python2 python2-devel -y
#シンボリックリンクを作成
sudo ln -s python2.7 /usr/bin/python
#動作確認
python -V

2.SQLiteのインストール

※ SubminはSQLiteのデータベースを用いて,SVNのユーザやリポジトリの管理をします.
Subversionコンパイルsqliteのライブラリ が必要なので, sqlite-devel もインストールします.
Subversion はいくつかの内部データベースを管理するために SQLite を使用します.

sudo dnf install sqlite sqlite-devel -y

⇒ 3.26.0 がインストールされる

3.Subversion のソースを入手する

※ 下記の Source Download > 文中の archive download site に過去のソースがあります.

subversion.apache.org

今回は dnf info subversion で表示されたバージョン 1.10.2 に合わせました.

curl -OL https://archive.apache.org/dist/subversion/subversion-1.10.2.tar.gz ↲
tar -zxvf subversion-1.10.2.tar.gz ↲

4.SWIG のソースを入手する

swig-py(SubversionからPythonプログラムを呼び出すためのモジュール)を作成するために必要です
※ 本編はswig-pyを入手するために苦労した手順なのです.
http://www.swig.org/より過去のソースを探す(Download > Download area > All releases > swig
Subversion 1.10.2 では,SWIGは1.3.24以降となっています.
Subversion のソース解凍後にできる,フォルダ直下の subversion/bindings/swig/INSTALL より )
SWIG 4.x はPython3対応となります.Python2を使う今回の構成では使用できません.

curl -L https://sourceforge.net/projects/swig/files/swig/swig-1.3.40/swig-1.3.40.tar.gz > swig-1.3.40.tar.gz
tar -zxvf swig-1.3.40.tar.gz

5.SWIGをインストールする

cd ~/swig-1.3.40
./configure --with-python=/usr/bin/python2.7
make
sudo make install

6.Subversionをインストールする

#作業のためにSubversionのソースツリーのトップへ移動します.
cd ~/subversion-1.10.2

#この後の作業には,APR,APRUTIRITY のライブラリが必要...
sudo dnf install apr-devel apr-util-devel 

#Subversionのコンパイルとインストールをします.
./configure --with-apr=/usr/bin/ --with-apr-util=/usr/bin/ PYTHON=/usr/bin/python2.7 --with-lz4=internal --with-utf8proc=internal
make (まぁまぁ時間かかる)
sudo make install

※mod_dav_svn は dnf で手に入るのであとで.

7.Python連携モジュールのインストール準備

#上記と同じ「~/subversion-1.10.2」 で実行します.

make swig-py
make check-swig-py

⇒ けっこう時間かかる...(今回の例では12分)
(結果)
Ran 127 tests in 729.084s
OK

8.Python連携モジュールのインストール

参考:Masanoriのプログラミング日誌++: さくらのVPSへSubversion1.7.2+Submin2.0.2を導入

sudo make install-swig-py

#Python2.7のライブラリディレクトリ上へシンボリックリンクを張ります.
sudo ln -s /usr/local/lib/svn-python /usr/lib/python2.7/site-packages/svn-python
sudo ln -s /usr/local/lib/svn-python/svn /usr/lib/python2.7/site-packages/svn
sudo ln -s /usr/local/lib/svn-python/libsvn /usr/lib/python2.7/site-packages/libsvn

9.ApacheSQLiteの連携モジュールのインストール

sudo dnf install mod_dav_svn -y
sudo dnf install apr-util-sqlite -y

10.Submin のインストール

git clone https://github.com/mjholtkamp/submin.git ~/.submin
cd ~/.submin
sudo python setup.py install --record install-files.txt

#Apacheの設定(シンボリックリンクの作成)
sudo ln -s /var/lib/submin/conf/apache-2.4-webui-cgi.conf /etc/httpd/conf.d/z001_submin.conf
sudo ln -s /var/lib/submin/conf/apache-2.4-svn.conf /etc/httpd/conf.d/z002_submin-svn.conf

#Submin環境の初期設定
sudo submin2-admin /var/lib/submin initenv your@email.address
(※/var/lib/submin は変更可能.このフォルダ配下に環境が作られる.)
(※conf/submin.db が SQLiteのデータ)
(※conf/authz は ユーザ・グループ・アクセス権の情報らしい)
(※conf/mailer.py.conf はリポジトリ変更時のメール自動送信の設定らしい)

#下記内容で応答する
Which features do you want to enable? [svn, git, apache, nginx]> svn, apache
Path to the repository? [svn]> (あたらしく作るのでそのまま エンターキー )
⇒ /var/lib/submin に svnディレクトリ が作られて,そこが親リポジトリになる

Hostname? [localhost.localdomain]> サーバのIPアドレス:80 
(例.172.27.32.87:80 ↲ ⇒ メールのリンク等に使われる)

HTTP base? [/]> (そのまま エンターキー  ⇒ url は ~/submin/ となる)

Email from envelope? [Submin <root@localhost.localdomain>]> Submin <Subversion管理者のメールアドレス>
(メール送信元の記述になる.これは一例)
⇒ メールが届けばOK

#gitの使用を停止<br>
sudo submin2-admin /var/lib/submin config set vcs_plugins svn 

#状態の確認
sudo submin2-admin /var/lib/submin config get 
(結果)
auth_type          sql
base_url_git       /git
base_url_submin    /submin
base_url_svn       /svn
base_url_trac      /trac
commit_email_from  Submin <Subversion管理者のメールアドレス>
database_version   11
dir_bin            static/bin
enabled_trac       no
env_path           /bin:/usr/bin:/usr/local/bin:/opt/local/bin
git_dir            git
http_vhost         172.27.32.87:80
session_salt       Pi8e1wpO/GLAgyQS
smtp_from          Submin <Subversion管理者のメールアドレス>
svn_authz_file     conf/authz
svn_dir            svn
trac_dir           trac
vcs_plugins        svn

#httpdの再起動
sudo systemctl restart httpd

Subversion管理者のメールアドレスにメールが届いているはずなのでそのリンクをクリックして,パスワードの変更をしてください.

以降は,「 http://172.27.32.87/submin 」で Submin の画面が表示されます.
これで,GUIを用いた,リポジトリ/ユーザ/グループの管理ができるようになりました.

以上で作業終了です.