だいぶ時間が空きましたが、続きです。
rpm作成用環境の準備
http://blog.goo.ne.jp/thaniwa/e/d187f537b1e0eb1bfdf239f21b9dd96e
xrdp 4.1 のパッチの準備、ビルド
http://blog.goo.ne.jp/thaniwa/e/9b776ad1721686a4984b31170fbcf09d
を前提にしています。今回は xrdp を rpm 化しておきます。
rpm 化する利点は2つ。
- インストール・削除が簡単になる(使いまわせる)
- specファイル、src.rpm によるメモ効果
autoconfを利用したソフトの場合、
./configure, make, make install を使うと簡単にインストールできることが多いんですが、
メモを取らないことが多いので、いざ、バージョンアップするときに以前の設定が
分からないというオチが待っていることがあります。
src.rpm 化しておけば、それが防げるので、多少面倒ですが、
中途半端でも specファイルを書いておく方が良いのではないかと思ってます。
#私の spec ファイルもかなり中途半端ですしね。^-^;
簡単な作り方です。
1) ソースファイル、パッチは rpm/SOURCES におく。
# cp xrdp-4.1.tar.gz xrdp-0.4.1-ja.diff /home/username/rpm/SOURCES
2) rpm/SPECSディレクトリで specファイルを作成 (詳細は後述)
# cd /home/username/rpm/SPECS
# vi xrdp-4.1-1.spec
3) rpm, src.rpm パッケージの作成
ここは、何度も繰り返しながら完成に近づける…という感じでしょうか。
spec ファイルが完璧なら繰り返す必要はありませんが。^-^;
パッチの適用、コンパイル、パッケージのインストールがちゃんと行えるか
どうかをチェックする場合は、下記のオプションを利用するとよいです。
%prep まで行う (ソースの展開とパッチの適用)
# rpmbuild -bp xrdp-4.1-1.spec
%build まで (makeに該当)
# rpmbuild -bc xrdp-4.1-1.spec
%install まで (make installに該当)
# rpmbuild -bi xrdp-4.1-1.spec
バイナリ作成がうまくできる場合は、下記のオプションを利用し、
rpmを作成します。
rpm のみを作成
# rpmbuild -bb xrdp-4.1-1.spec
src.rpm を作成
# rpmbuild -bs xrdp-4.1-1.spec
rpm, src.rpm を作成
# rpmbuild -ba xrdp-4.1-1.spec
src.rpm を元に作る場合は下記の通り。
src.rpm をインストールした後に上記を使うのもありです。
# rpmbuild --rebuild xrdp-4.1-1.src.rpm
===========================================================
spec ファイル
===========================================================
spec ファイルにはパッケージの概要、ソースファイル、パッチ、
ビルド方法、パッケージの構成ファイル、チェンジログなどが
含まれています。
CentOS などの場合、バイナリ・ライブラリ・開発者向けパッケージのように
複数の rpm パッケージに分けられている場合があります。
bzip2 の場合:
- bzip2-1.0.3-4.el5_2
- bzip2-libs-1.0.3-4.el5_2
- bzip2-devel-1.0.3-4.el5_2
このような形で作成する場合も spec ファイルは 1つで済みます。
今回はそこまでこだわっていないので xrdp-4.1-1.rpm という
ファイル1つのみ作成するようにしています。
(分ける必要があるほどの内容ではないので)
下記は spec ファイルの内容の簡単な説明です。
xrdp-4.1用のspecファイルはかなり大雑把に作っています。
気が向いたら、そのうち修正するかもしれません。
Summary: 概要
Name: パッケージの名前
Version: バージョン
Release: 内部リリース
License: ライセンス
Group: パッケージのグループ(情報は/usr/share/doc/rpm-*/GROUPSに書いてある)
Source0: %{name}-%{version}.tar.gz
ソースファイル名、複数ある場合は Source1, Source2 のようにする
Patch0: %{name}-%{version}-ja.diff
パッチファイル名、複数ある場合は Patch1, Patch2 のようにする
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
rpm作成時に利用するディレクトリ
Provides: /bin/sh
Requires: vnc-server
利用時に必要なパッケージ、コマンド
これら以外にバイナリ作成に必要なパッケージの定義などが行えます。
これらの変数は %{name} のようにすることで、使い回せます。
(ソース、パッチを参照)
%description は詳細情報
%prep は準備(rpm -bp で行う)を定義
%setup -q -n %{name}-%{version} はセットアップ用のマクロです。
tar.gz, tar.bz2 等を自動的に補完し、ソースファイルを
rpm/BUILD 以下に展開します。
%patch0 -p1 はパッチの適用マクロです。
ここでは Patch0 で定義されたパッチを適用します。
オプションはpatchコマンドのもので、必要な場合は追加します。
%build はバイナリの作成部分。
マクロだけではなく、コマンドをそのまま書くこともできます。
今回は make コマンドを記述。
%install は make install 部分。
$RPM_BUILD_ROOT はバイナリインストール先。
作業用ディレクトリを作成している場合は一回削除しています。
その後、インストール。
./configure, make, make install を利用するアプリケーションの場合、
Makefile にインストール先を変更できるようにされていたりするので、
make prefix="RPM_BUILD_ROOT" install
とすれば良かったりします。
#この場合、1行で済む
今回の xrdp はそこまでちゃんと作られていないため、
Makefile から install 部分を抽出して、インストール先を変更しています。
そのため、かなり長くになっています。
%clean は make clean と同じ
%post は rpm をインストール後にファイルの書き換え等の作業を行いたい場合、
定義します。
%postun は rpm のアンインストール時に作業を行いたい場合に書きます。
%files はrpm作成時のファイルを定義。
ディレクトリを定義することで、それ以下のファイルをすべてパッケージに加えます。
%changelog は変更時のメモ。ここに記述しておくと rpm コマンドで確認できる。
今回は面倒だったので省略。^-^;
と大体こんな感じ。
rpm作成用環境の準備
http://blog.goo.ne.jp/thaniwa/e/d187f537b1e0eb1bfdf239f21b9dd96e
xrdp 4.1 のパッチの準備、ビルド
http://blog.goo.ne.jp/thaniwa/e/9b776ad1721686a4984b31170fbcf09d
を前提にしています。今回は xrdp を rpm 化しておきます。
rpm 化する利点は2つ。
- インストール・削除が簡単になる(使いまわせる)
- specファイル、src.rpm によるメモ効果
autoconfを利用したソフトの場合、
./configure, make, make install を使うと簡単にインストールできることが多いんですが、
メモを取らないことが多いので、いざ、バージョンアップするときに以前の設定が
分からないというオチが待っていることがあります。
src.rpm 化しておけば、それが防げるので、多少面倒ですが、
中途半端でも specファイルを書いておく方が良いのではないかと思ってます。
#私の spec ファイルもかなり中途半端ですしね。^-^;
簡単な作り方です。
1) ソースファイル、パッチは rpm/SOURCES におく。
# cp xrdp-4.1.tar.gz xrdp-0.4.1-ja.diff /home/username/rpm/SOURCES
2) rpm/SPECSディレクトリで specファイルを作成 (詳細は後述)
# cd /home/username/rpm/SPECS
# vi xrdp-4.1-1.spec
3) rpm, src.rpm パッケージの作成
ここは、何度も繰り返しながら完成に近づける…という感じでしょうか。
spec ファイルが完璧なら繰り返す必要はありませんが。^-^;
パッチの適用、コンパイル、パッケージのインストールがちゃんと行えるか
どうかをチェックする場合は、下記のオプションを利用するとよいです。
%prep まで行う (ソースの展開とパッチの適用)
# rpmbuild -bp xrdp-4.1-1.spec
%build まで (makeに該当)
# rpmbuild -bc xrdp-4.1-1.spec
%install まで (make installに該当)
# rpmbuild -bi xrdp-4.1-1.spec
バイナリ作成がうまくできる場合は、下記のオプションを利用し、
rpmを作成します。
rpm のみを作成
# rpmbuild -bb xrdp-4.1-1.spec
src.rpm を作成
# rpmbuild -bs xrdp-4.1-1.spec
rpm, src.rpm を作成
# rpmbuild -ba xrdp-4.1-1.spec
src.rpm を元に作る場合は下記の通り。
src.rpm をインストールした後に上記を使うのもありです。
# rpmbuild --rebuild xrdp-4.1-1.src.rpm
===========================================================
spec ファイル
===========================================================
spec ファイルにはパッケージの概要、ソースファイル、パッチ、
ビルド方法、パッケージの構成ファイル、チェンジログなどが
含まれています。
CentOS などの場合、バイナリ・ライブラリ・開発者向けパッケージのように
複数の rpm パッケージに分けられている場合があります。
bzip2 の場合:
- bzip2-1.0.3-4.el5_2
- bzip2-libs-1.0.3-4.el5_2
- bzip2-devel-1.0.3-4.el5_2
このような形で作成する場合も spec ファイルは 1つで済みます。
今回はそこまでこだわっていないので xrdp-4.1-1.rpm という
ファイル1つのみ作成するようにしています。
(分ける必要があるほどの内容ではないので)
下記は spec ファイルの内容の簡単な説明です。
xrdp-4.1用のspecファイルはかなり大雑把に作っています。
気が向いたら、そのうち修正するかもしれません。
Summary: 概要
Name: パッケージの名前
Version: バージョン
Release: 内部リリース
License: ライセンス
Group: パッケージのグループ(情報は/usr/share/doc/rpm-*/GROUPSに書いてある)
Source0: %{name}-%{version}.tar.gz
ソースファイル名、複数ある場合は Source1, Source2 のようにする
Patch0: %{name}-%{version}-ja.diff
パッチファイル名、複数ある場合は Patch1, Patch2 のようにする
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
rpm作成時に利用するディレクトリ
Provides: /bin/sh
Requires: vnc-server
利用時に必要なパッケージ、コマンド
これら以外にバイナリ作成に必要なパッケージの定義などが行えます。
これらの変数は %{name} のようにすることで、使い回せます。
(ソース、パッチを参照)
%description は詳細情報
%prep は準備(rpm -bp で行う)を定義
%setup -q -n %{name}-%{version} はセットアップ用のマクロです。
tar.gz, tar.bz2 等を自動的に補完し、ソースファイルを
rpm/BUILD 以下に展開します。
%patch0 -p1 はパッチの適用マクロです。
ここでは Patch0 で定義されたパッチを適用します。
オプションはpatchコマンドのもので、必要な場合は追加します。
%build はバイナリの作成部分。
マクロだけではなく、コマンドをそのまま書くこともできます。
今回は make コマンドを記述。
%install は make install 部分。
$RPM_BUILD_ROOT はバイナリインストール先。
作業用ディレクトリを作成している場合は一回削除しています。
その後、インストール。
./configure, make, make install を利用するアプリケーションの場合、
Makefile にインストール先を変更できるようにされていたりするので、
make prefix="RPM_BUILD_ROOT" install
とすれば良かったりします。
#この場合、1行で済む
今回の xrdp はそこまでちゃんと作られていないため、
Makefile から install 部分を抽出して、インストール先を変更しています。
そのため、かなり長くになっています。
%clean は make clean と同じ
%post は rpm をインストール後にファイルの書き換え等の作業を行いたい場合、
定義します。
%postun は rpm のアンインストール時に作業を行いたい場合に書きます。
%files はrpm作成時のファイルを定義。
ディレクトリを定義することで、それ以下のファイルをすべてパッケージに加えます。
%changelog は変更時のメモ。ここに記述しておくと rpm コマンドで確認できる。
今回は面倒だったので省略。^-^;
と大体こんな感じ。
Summary: xrdp - An open source remote desktop protocol(rdp) server. Name: xrdp Version: 0.4.1 Release: 1 License: GPL Group: Applications/Communications Source0: %{name}-%{version}.tar.gz Patch0: %{name}-%{version}-ja.diff BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root Provides: /bin/sh Requires: vnc-server %description Based on the work of rdesktop, xrdp uses the remote desktop protocol to present a GUI to the user. The goal of this project is to provide a fully functional Linux terminal server, capable of accepting connections from rdesktop and Microsoft's own terminal server / remote desktop clients. Unlike Windows NT/2000/2003/2008 server, xrdp will not display a Windows desktop but an X window desktop to the user. %prep %setup -q -n %{name}-%{version} %patch0 -p1 %build make %install [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT DESTDIR="${RPM_BUILD_ROOT}/usr/local/xrdp" CFGDIR="${RPM_BUILD_ROOT}/etc/xrdp" PIDDIR="${RPM_BUILD_ROOT}/var/run" MANDIR="${RPM_BUILD_ROOT}/usr/local/man" DOCDIR="${RPM_BUILD_ROOT}/usr/doc/xrdp" mkdir -p ${DESTDIR} mkdir -p ${CFGDIR} mkdir -p ${PIDDIR} mkdir -p ${MANDIR} mkdir -p ${DOCDIR} #make -C vnc install install vnc/libvnc.so ${DESTDIR}/libvnc.so #make -C libxrdp install install libxrdp/libxrdp.so ${DESTDIR}/libxrdp.so #make -C xrdp install install xrdp/ad256.bmp ${DESTDIR}/ad256.bmp install xrdp/xrdp256.bmp ${DESTDIR}/xrdp256.bmp install xrdp/cursor0.cur ${DESTDIR}/cursor0.cur install xrdp/cursor1.cur ${DESTDIR}/cursor1.cur install xrdp/Tahoma-10.fv1 ${DESTDIR}/Tahoma-10.fv1 install xrdp/xrdp.ini ${CFGDIR}/xrdp.ini install xrdp/rsakeys.ini ${CFGDIR}/rsakeys.ini install xrdp/xrdp ${DESTDIR}/xrdp #make -C rdp install install rdp/librdp.so ${DESTDIR}/librdp.so #make -C sesman install install sesman/sesman ${DESTDIR}/sesman install sesman/startwm.sh ${DESTDIR}/startwm.sh install sesman/sesman.ini ${CFGDIR}/sesman.ini install sesman/sessvc ${DESTDIR}/sessvc #make -C tools install install sesman/tools/sesrun ${DESTDIR}/sesrun install sesman/tools/sestest ${DESTDIR}/sestest #make -C libscp install install sesman/libscp/libscp.so ${DESTDIR}/libscp.so #make -C xup install install xup/libxup.so ${DESTDIR}/libxup.so #make -C docs install #make -C docs installdeb mkdir ${MANDIR}/man8 install docs/man/sesman.8 ${MANDIR}/man8/sesman.8 install docs/man/sesrun.8 ${MANDIR}/man8/sesrun.8 install docs/man/xrdp.8 ${MANDIR}/man8/xrdp.8 mkdir ${MANDIR}/man5 install docs/man/sesman.ini.5 ${MANDIR}/man5/sesman.ini.5 install docs/man/xrdp.ini.5 ${MANDIR}/man5/xrdp.ini.5 if [ -d /etc/pam.d ]; then [ "$RPM_BUILD_ROOT" != "/" ] && mkdir ${RPM_BUILD_ROOT}/etc/pam.d install instfiles/pam.d/sesman ${RPM_BUILD_ROOT}/etc/pam.d/sesman; fi install instfiles/xrdp_control.sh ${DESTDIR}/xrdp_control.sh %clean [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT %post %postun %files %defattr(-,root,root) /usr /etc /var %changelog
※コメント投稿者のブログIDはブログ作成者のみに通知されます