1.ツールができること
"srpm2html.py"は、SRPMソースコードを展開、Gnu global処理、その他諸々を自動化する自作ツールです。
具体的には、このツールを使うと以下の一連の作業をサボることができます。
- SRPMパッケージを所定のウェブサイトからダウンロードして
- SRPMをインストールして
- SRPMからソースコードを展開(rpmbuild -bpコマンド実行)して
- Gnu globalでコードをタギング解析してhtml化して
- globalで作成したhtmlファイルと、ソースコードの2つをそれぞれsquashfs化して
- squashfsのマウント先ディレクトリを作成して
- "/etc/fstab"に作成したsquashfsファイルのマウントエントリーを追加して
- squashfsをマウントしてくれる
コードはgithub(gist)に登録してあります。
- GitHub(gist)登録先: srpm2html.py
- ライセンス:Apache License, Version 2.0
2.インストール方法
2.1 前提環境
Linuxであれば多分動くと思います。(私は、CentOS6,AmazonLinux上で利用しています)
2.2 前提パッケージ
この自作ツールを実行するためには以下のrpmパッケージが必要です。*1*2
sudo yum install rpm-build squashfs-tools gcc make ncurses-devel
2.3 Gnu Globalのインストール
Gnu globalはソースコードをダウンロードしてmakeします。
wget http://tamacom.com/global/global-6.5.6.tar.gz tar -xxvf global-6.5.6.tar.gz cd global-6.5.6 ./configure make sudo make install
2.4 ツールのセットアップ
srpm2html.pyは、githubに登録してあるのでそこからダウンロードします。
cd "セットアップしたいディレクトリパスを指定" wget https://gist.githubusercontent.com/Noppy/027ea703dd7084be0c3d4d99ce618109/raw/1e3eefeb83c7542d37c8c455701a0f727df128d4/srpm2html.py chmod +x srpm2html.py
2.5 ディレクトリの準備
デフォルトでは下記ディレクトリが必要になります。ディレクトリは実行時の引数(後述)または、pythonの先頭のデフォルト設定を書き換えることで変更可能です。
- 必要なディレクトリ
- /tmp : srpmのダウンロードと追加するfstabの作成に使用。容量は利用しない。
- /data/rpmbuild : srpmインストール、コード展開、globl解析をするメイン作業用。
- /data/squshfs : 作成したsquashfsファイルの格納先
- /data/kernel : Globalが生成したhtmlのsquashfs化したもののマウントポイントを作成するディレクトリ(kernelのsrpmを解析した場合)
- /data/tools : 上記と同じ(kernel以外の、srpmを解析した場合)
- /data/source:ソースコードをsquashfs化したもののマウントポイントを作成するディレクトリ
2.6 sudo設定
最後のfstab更新とマウント実行時に、sudoコマンドを利用しています。srpm2html.py実行ユーザがsudoでroot昇格できるように設定を事前にして下さい。またパスワード入力が面倒な方は、NOPASSWDもして下さい。
3.使い方
3.1 簡単な使い方
簡単な使い方は以下のとおりです。
./srpm2html.py "SRPMファイルのURL"
例えば、CentOS7.3のカーネルソースを展開したい場合は以下の通りになります。
srpm2html.py http://vault.centos.org/7.3.1611/os/Source/SPackages/kernel-3.10.0-514.el7.src.rpm
3.2 引数の説明
- 構文
usage: srpm_to_html.py [-h] [-d] [-t TMPDIR] [-r RPMBUILDDIR] [-s SQUASHFSDIR] [-K HTTP_KERNELSDIR] [-T HTTP_TOOLSDIR] [-S SOURCEDIR] SRPM_FilePath_or_URL
- 必須引数
- 主なオプション詳細
- -h, --help : ヘルプの表示
- -t TMPDIR, --tmpdir TMPDIR : tmpディレクトリの指定
- -r RPMBUILDDIR, --rpmbuilddir RPMBUILDDIR : srpmの展開先と作業用ディレクトリの指定
- -s SQUASHFSDIR, --squashfsdir SQUASHFSDIR : squashfsファイルの格納先ディレクトリ指定
- -K HTTP_KERNELSDIR, --http_kernelsdir HTTP_KERNELSDIR : マウントポイントを作成するディレクトリ指定(kernel)
- -T HTTP_TOOLSDIR, --http_toolsdir HTTP_TOOLSDIR : マウントポイントを作成するディレクトリ指定(kernel以外)
- -S SOURCEDIR, --sourcedir SOURCEDIR : マウントポイントを作成するディレクトリ指定(ソースコード)