2006年 10月 11日 水曜日
Messages in cipher reflected in the looking glass
(JA) rpm on Solaris(SPARC)
以前、rpmを使ってSolaris用のパッケージを作成し、ソースを管理するということを書きました。
その時はx86版Solarisは OpenSolaris のサイトから rpm をダウンロードして使いましょうということで SPARC版はしませんでした。
ということで SPARC版で rpm を使うまでをまとめてみます。
rpmを別途ビルドするのは面倒なので、バイナリ提供されていれば
そちらを使いたいところです。
それでちょっと調べてみたのですが、Sun U.S. のSolarisサイト(下記URL参照)
にSolaris用フリーウェアの案内があることがわかりました。
Solaris 用 フリーウェアサイト :
http://www.sun.com/software/solaris/freeware/
ここを見ると、
「Shipped with Solaris 10 6/06 OS
Community (not Sun) supported」という項目の
「Application/Utilities」の部分に思い切り「rpm-4.1」
と書いてあります。
ということで、これを利用するというのが良いでしょう。
上記のサイトでは、DVDイメージおよび個別パッケージのダウンロードが提供されていますが、DVDイメージにはrpmは含まれていないようなので、個別にダウンロードします。
個別パッケージダウンロード :
http://www.sun.com/software/solaris/freeware/s10pkgs_download.xml
上記からダウンロードサイトにアクセスし、パッケージのダウンロードを行います。ログインするためにはアカウントが必要です。
ダウンロードするのは以下の2つです。
- Dependency bundle, English : Depend-sparc-pkgs.tar.bz2
- rpm - Red Hat Package Manager, English : SFWrpm.bz2
「Dependency bundle, English : Depend-sparc-pkgs.tar.bz2」は要らないと思うのですが、
「Required (These files must be downloaded for the product to work.)」
と書いてあるので、とりあえずぶち込みます。
インストール方法は以下のような感じです。
出力メッセージは省略しています。
# bunzip2 -c Depend-sparc-pkgs.tar.bz2 | tar xvf - # pkgadd -d . all # bunzip2 SFWrpm.bz2 # pkgadd -d ./SFWrpm
SFWrpmが rpm パッケージなのですが、インストールを行うと以下のエラーが発生し、インストールが部分的に失敗します。
(下記のエラー以外のものはインストールされています。)
[ verifying class <none> ]
ERROR: attribute verification of </opt/sfw/lib/libpopt.a> failed
pathname does not exist
ERROR: attribute verification of </opt/sfw/lib/libpopt.la> failed
pathname does not exist
ERROR: attribute verification of </opt/sfw/lib/libpopt.so.0.0.0> failed
pathname does not exist
Installation of <SFWrpm> partially failed.
パッケージの中身を見ると、
/opt/sfw/lib/libpopt.so , /opt/sfw/lib/libpopt.so.0
は含まれているのですが、エラーの出たものは含まれていないっぽいです。
とりあえず気にしない、気にしない。^-^;
rpm, rpmbuildコマンドのヘルプメッセージを出してみると
ちゃんと出てきますし、問題ないでしょう。
# /opt/sfw/bin/rpm
RPM version 4.1
Copyright (C) 1998-2002 - Red Hat, Inc.
This program may be freely redistributed under the terms of the GNU GPL
Usage: rpm [-a|--all] [-f|--file] [-g|--group] [-p|--package] [--specfile]
[--whatrequires] [--whatprovides] [-c|--configfiles] [-d|--docfiles]
[--dump] [-l|--list] [--queryformat=QUERYFORMAT] [-s|--state]
[--nomd5] [--nofiles] [--nodeps] [--noscript] [--addsign]
[-K|--checksig] [--import] [--resign] [--nodigest] [--nosignature]
[--initdb] [--rebuilddb] [--allfiles] [--allmatches] [--badreloc]
[-e|--erase <package>+] [--excludedocs] [--excludepath=<path>]
[--force] [-F|--freshen <packagefile>+] [-h|--hash] [--ignorearch]
[--ignoreos] [--ignoresize] [-i|--install] [--justdb] [--nodeps]
[--nomd5] [--noorder] [--nosuggest] [--noscripts] [--notriggers]
[--oldpackage] [--percent] [--prefix=<dir>] [--relocate=<old>=<new>]
[--repackage] [--replacefiles] [--replacepkgs] [--test]
[-U|--upgrade <packagefile>+] [-D|--define 'MACRO EXPR']
[-E|--eval 'EXPR'] [--macros=<FILE:...>] [--nodigest] [--nosignature]
[--rcfile=<FILE:...>] [-r|--root ROOT] [--querytags] [--showrc]
[--quiet] [-v|--verbose] [--version] [-?|--help] [--usage]
[--scripts] [--setperms] [--setugids] [--conflicts] [--obsoletes]
[--provides] [--requires] [--info] [--changelog] [--triggers]
[--last] [--filesbypkg] [--redhatprovides] [--redhatrequires]
[--buildpolicy=<policy>] [--with=<option>] [--without=<option>]
# /opt/sfw/bin/rpmbuild --help
Usage: rpmbuild [OPTION...]
Build options with [ <specfile> | <tarball> | <source package> ]:
-bp build through %prep (unpack sources and apply
patches) from <specfile>
-bc build through %build (%prep, then compile)
from <specfile>
-bi build through %install (%prep, %build, then
install) from <specfile>
-bl verify %files section from <specfile>
-ba build source and binary packages from
<specfile>
-bb build binary package only from <specfile>
-bs build source package only from <specfile>
-tp build through %prep (unpack sources and apply
patches) from <tarball>
-tc build through %build (%prep, then compile)
from <tarball>
-ti build through %install (%prep, %build, then
install) from <tarball>
-ta build source and binary packages from <tarball>
-tb build binary package only from <tarball>
-ts build source package only from <tarball>
--rebuild build binary package from <source package>
--recompile build through %install (%prep, %build, then
install) from <source package>
--buildroot=DIRECTORY override build root
--clean remove build tree when done
--nobuild do not execute any stages of the build
--nodeps do not verify build dependencies
--nodirtokens generate package header(s) compatible with
(legacy) rpm[23] packaging
--rmsource remove sources when done
--rmspec remove specfile when done
--short-circuit skip straight to specified stage (only for c,i)
--target=CPU-VENDOR-OS override target platform
Common options for all rpm modes:
-D, --define='MACRO EXPR' define MACRO with value EXPR
-E, --eval='EXPR' print macro expansion of EXPR
--macros=<FILE:...> read <FILE:...> instead of default file(s)
--nodigest don't verify package digest(s)
--nosignature don't verify package signature(s)
--rcfile=<FILE:...> read <FILE:...> instead of default file(s)
-r, --root=ROOT use ROOT as top level directory (default: "/")
--querytags display known query tags
--showrc display final rpmrc and macro configuration
--quiet provide less detailed output
-v, --verbose provide more detailed output
--version print the version of rpm being used
Options implemented via popt alias/exec:
--dbpath=DIRECTORY use database in DIRECTORY
--with=<option> enable configure <option> for build
--without=<option> disable configure <option> for build
Help options:
-?, --help Show this help message
--usage Display brief usage message
Solaris用rpmはバージョン 4.1 と、最新の rpm を追っかけている場合にはちょっと古く感じるかもしれませんが、特に問題は無いと思います。
rpmbuildをちょっとだけ利用するのみですし。
ということで、実際に使ってみます。
今回は、
(JA) Solaris pkg (Part 3) : build pkg using rpm
と同様に rdesktop のパッケージを作ってみます。
実際に利用した SPEC ファイルは次の通りです。
最新版の rdesktop 1.5.0 にしています。
インストール先を /opt/sfw として、パッケージ名を SFWrdesktop にしています。
Summary: rdesktop
Name: rdesktop
Version: 1.5.0
Release: 1
License: GPL
Group: Applications/Communications
Source0: http://prdownloads.sourceforge.net/rdesktop/%{name}-%{version}.tar.gz
Requires: /usr/sfw/lib/libssl.so /usr/sfw/lib/libcrypt.so
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
#Prereq:
%description
rdesktop is an open source client for Windows NT Terminal Server and Windows 2000/2003 Terminal Services,
capable of natively speaking Remote Desktop Protocol (RDP) in order to present the user\'s NT desktop.
Unlike Citrix ICA, no server extensions are required.
%prep
%setup -q -n %{name}-%{version}
%build
%configure --with-openssl=/usr/sfw
gmake
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/opt/sfw/bin
/opt/sfw/bin/install -c rdesktop $RPM_BUILD_ROOT/opt/sfw/bin
/usr/sfw/bin/gstrip $RPM_BUILD_ROOT/opt/sfw/bin/rdesktop
chmod 755 $RPM_BUILD_ROOT/opt/sfw/bin/rdesktop
mkdir -p $RPM_BUILD_ROOT/opt/sfw/share/rdesktop/keymaps/
cp keymaps/?? keymaps/??-?? $RPM_BUILD_ROOT/opt/sfw/share/rdesktop/keymaps/
cp keymaps/common $RPM_BUILD_ROOT/opt/sfw/share/rdesktop/keymaps/
cp keymaps/modifiers $RPM_BUILD_ROOT/opt/sfw/share/rdesktop/keymaps/
chmod 644 $RPM_BUILD_ROOT/opt/sfw/share/rdesktop/keymaps/*
mkdir -p $RPM_BUILD_ROOT/opt/sfw/share/man/man1
cp doc/rdesktop.1 $RPM_BUILD_ROOT/opt/sfw/share/man/man1
chmod 644 $RPM_BUILD_ROOT/opt/sfw/share/man/man1/rdesktop.1
# build solaris pkg
cd $RPM_BUILD_ROOT/opt/sfw
mkpkg SFW%{name}-%{version} -g -p SFWrdesktop -n %{name} -v %{version} -a sparc -b \"/opt/sfw\"
mv SFW%{name}-%{version}.gz %{_topdir}/DIST/.
rm -fr SFWrdesktop
rm pkginfo prototype
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
%post
%postun
%files
%defattr(-,root,root)
/opt/sfw/bin/rdesktop
/opt/sfw/share/man/man1/rdesktop.1
/opt/sfw/share/rdesktop
%changelog
実行は以下のような感じでした。
# rpmbuild -bi rdesktop.spec Executing(%prep): /bin/sh -e /root/rpm/tmp/rpm-tmp.12678 + umask 022 + cd /root/rpm/BUILD + cd /root/rpm/BUILD + rm -rf rdesktop-1.5.0 + tar -xf - .......... ## Validating control scripts. ## Packaging complete. Transferringpackage instance done. + mv SFWrdesktop-1.5.0.gz /root/rpm/DIST/. + rm -fr SFWrdesktop + rm pkginfo prototype + exit 0 Processing files: rdesktop-1.5.0-1 Finding Provides: /opt/sfw/lib/rpm/find-provides Finding Requires: /opt/sfw/lib/rpm/find-requires PreReq: /bin/sh /bin/sh rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 Requires(interp): /bin/sh /bin/sh Requires(rpmlib): rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 Requires(post): /bin/sh Requires(postun): /bin/sh Requires: /usr/sfw/lib/libssl.so /usr/sfw/lib/libcrypt.so libX11.so.4 libXext.so.0 libc.so.1 libcrypto.so.0.9.7 libdl.so.1 libdoor.so.1 libm.so.2 libmd5.so.1 libmp.so.2 libnsl.so.1 libresolv.so.2 libscf.so.1 libsocket.so.1 libuutil.so.1 Checking for unpackaged file(s): /opt/sfw/lib/rpm/check-files /root/rpm/tmp/rdesktop-1.5.0-1-root # ls ../DIST SFWrdesktop-1.5.0.gz
実際に pkgadd を実行してみると、
# gunzip SFWrdesktop-1.5.0.gz
# pkgadd -d ./SFWrdesktop-1.5.0
The following packages are available:
1 SFWrdesktop rdesktop
(sparc) 1.5.0
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:
ということで、SPARC環境のSolarisでもrpmを活用できます。
rpmを利用すると、rpmbuild -bs を利用することにより、
ソース、パッチ、SPEC情報をsrc.rpmにひとまとめに保存することができるので、便利かと思います。
インストールメモ等を別途用意せずに、src.rpm をまとめておけば良いですし。^-^;
(SPECファイルのみでも良い場合もありますが。)
# rpmbuild -bs rdesktop.spec Wrote: /root/rpm/SRPMS/rdesktop-1.5.0-1.src.rpm
Posted at 01:17午後 10 11, 2006 by Yasuhiro Fujitsuki in Linux & Solaris |