HOME / コンピュータTips / Solaris / パッケージ作成用開発環境の作成(SFE)
Date: 2010/03/21 | | Tags: Solaris, SFE, CBE, JDS
※この環境はOpenSolarisのIPS用パッケージ制作環境(OSD-CBE)をベースにつくられています。通常のドキュメントは、Solaris10を中心に、OpenSolarisをベースとして書かれていますが、このドキュメントはOpenSoalrisをベースに、Solaris10の違いを敢えて記載してます。
そのため、特に差は無いとは思うのですが、このドキュメントはOpenSolaisの上のSolaris10 Branded Zoneの上で作ったものとなっています。
SVr4用のパッケージを作る標準環境SFEの為(独自のパッケージファイルでも、SFE用でも)に、仮想マシンであっても良いので、Zoneを1つ用意するのがよいでしょう。
HOMEディレクトリに様々なファイルを設置するために、既存のHOMEで利用するよりは、仮想マシン上のHOMEで作ることをおすすめします。
下記は、Build用のZoneを作成したことを前提に記載しています。
この辺はパッケージがあるので、純正の物を使う。
pfexec pkgadd -d . SUNWgpch SUNWgtar SUNWwgetu SUNWflexlex SUNWbison SUNWgmake SUNWgm4
なお、後でファイルが無くなったときのために、CDROMの中の下記のディレクトリをすべてコピーしておくと良い。
/Solaris_10/Product/
ヘッダファイルやライブラリが足りない場合は、
egrep 'bin/stdio.h' /Solaris_10/Product/*/pkgmap
などをして、検索をする。
いくつかのファイルは、Solaris10にはないので、CSWの力を借りる。
wget -m http://dist.justplayer.com/csw/pkgutil_i386.pkg pfexec pkgadd -d . pkgutil_i386.pkg
pfexec pkgutil -yi \ mercurial \ emacs
注意
cswのパッケージに対して「実行依存」することを行ってはいけない。
cswに依存する物を作る場合は、cswへのコントリビュートを考えた方がよい。
これは、実行依存が出来てしまう場合、実質的にレポジトリ間に依存が作られてしまうためである。
また、PATHを通してしまうと、何かの拍子に依存が作られてしまうおそれがあるので、PATHを通さず、利用するコマンドはaliasを設定したりする方が、無難。
ZONE名 | s10cbe |
オペレータユーザ | osduser |
プロファイル | Primary Administrator,Software Installation |
HOME | /export/home/osduser |
SHELL | /bin/zsh |
初期パスワード | osduser |
pfexec useradd -m -d /export/home/osduser -s /bin/zsh -P 'Primary Administrator,Software Installation' osduser pfexec chown osduser:other /export/home/osduser pfexec passwd osduser
zshは僕の趣味です
既にあるユーザをオペレーションユーザにしたい場合
既にあるユーザを利用する場合、オペレーションユーザにPrimary Administratorの権限をつけておきます。この作業をした後は、シェルの再起動をする必要があります。
pfexec usermod -P 'Primary Administrator,Software Installation' ユーザ名
反映させるため、利用しているシェルの起動しなおしをします。
以後、上記で作成したユーザでコマンドを実行します。
コンパイラはStudio12u1をインストールします。
下記より、Studio12u1をダウンロードし、インストールします。
従来、SUN Studioは、/opt/SUNWsproにインストールされておりました。いくつかのソフトは自分がコンパイルされた環境を覚えており、拡張モジュールのコンパイルに自分と同じコンパイラを要求します。
Studio12u1は、/opt/sunstudio12.1にインストールします。そこで、下記の様にシンボリックリンクを張っておきます。
pfexec ln -s /opt/sunstudio12.1 /opt/SUNWspro
以後、オペレーションは、osduserでログインしておきます。
OpenSolarisでは、1.7.0-rc1以降を利用します。Solaris10では、おそらく1.6系がStableなのですが、OpenSolaris側となるべく共通にしたいので、1.7.0RC1を敢えて使います。
mkdir ~/tmp && cd ~/tmp wget \ http://dlc.sun.com/osol/jds/downloads/cbe/test/desktop-cbe-1.7.0-rc1-x86.tar.bz2 gtar jxvf desktop-cbe-1.7.0-rc1-x86.tar.bz2 cd desktop-cbe-1.7.0-rc1
./cbe-install
Desktop Common Build Environment (CBE) Installer version 1.7.0-rc1 Using "pkg" packaging system Checking for required packages... All required packages are installed. Starting from pkgbuild 1.1.0 (CBE 1.5) there is no system-wide build directory (%_topdir), instead, each user has their own. The default directory is $HOME/packages. If you wish to use a different build directory, you can define it in $HOME/.pkgbuildmacros as follows: %_topdir /path/to/my/build/area Would you like to do this now? [no]:
ENTERを押す。
The default topdir (/export/home/osduser/packages) will be used Locating compilers... 1 - GNU gcc 3.4.3 (3) in /usr/sfw/bin 2 - Sun Studio Express 5.10 (Ceres) in /opt/SUNWspro/bin 3 - Sun Studio Express 5.10 (Ceres) in /usr/bin Would you like to configure more compilers for use with the Desktop CBE? [no]:
ENTERを押す。
The following compilers were found on your system: 1 - GNU gcc 3.4.3 (3) in /usr/sfw/bin 2 - Sun Studio Express 5.10 (Ceres) in /opt/SUNWspro/bin 3 - Sun Studio Express 5.10 (Ceres) in /usr/bin Please select the default compiler [3]: 3
コンパイラ(開発環境)は、gcc-dev、ss-dev(StudioExpress)、Studio12、StudioExpressなどが選べますが、ここで選んだもの以外でも、specファイル内で明記しておけば、利用は可能です。
OpenSolarisはON(OS+NET)がStudio12でコンパイルされているため、これを拡張するモジュール群はONと同じコンパイラを要求することがあります。トラブルを避けるためには、デフォルトをStudio12にしておくとよいのですが、12のインストールはちょっと面倒なので、ここでは簡単に利用出来る12u1を利用します。
The Desktop CBE includes tools for building GNOME, KDE and/or SFE packages It also includes some optional tools. Please select the tools you wish to install. Would you like install the tools for GNOME? [yes]: Would you like install the tools for KDE? [yes]: Would you like install the tools for SFE? [yes]: The following tools are optional: rsync cvs Would you like install the optional tools? [yes]:
このへんはひたすらENTERを連打。
Installing package SFpkgbuild Installation of <SFpkgbuild> was successful. Installing package CBEant Installation of <CBEant> was successful. Installing package CBEautoconf Installation of <CBEautoconf> was successful. Installing package CBEautomake Installation of <CBEautomake> was successful. Installing package CBEbison Installation of <CBEbison> was successful. Installing package CBEcmake Installation of <CBEcmake> was successful. Installing package CBEcoreutils Installation of <CBEcoreutils> was successful. Installing package CBEcvs Installation of <CBEcvs> was successful. Installing package CBEdiff Installation of <CBEdiff> was successful. Installing package CBEflex Installation of <CBEflex> was successful. Installing package CBEgettext Installation of <CBEgettext> was successful. Installing package CBEgawk Installation of <CBEgawk> was successful. Installing package CBEsed Installation of <CBEsed> was successful. Installing package CBElibtool Installation of <CBElibtool> was successful. Installing package CBEm4 Installation of <CBEm4> was successful. Installing package CBEmake Installation of <CBEmake> was successful. Installing package CBErsync Installation of <CBErsync> was successful. Installing package CBEsvn Installation of <CBEsvn> was successful. Installing package CBEyasm Installation of <CBEyasm> was successful. Building CBEenv INFO: Copying %use'd or %include'd spec files to SPECS directory INFO: Processing spec files INFO: Installing package CBEenv Summary: package | status | details ---------------------------------+-------------+------------------------------- CBEenv | INSTALLED | CBE setup complete Run . /opt/dtbld/bin/env.sh [environment] or source /opt/dtbld/bin/env.csh [environment] depending on your shell, to use this build environment. You can also run /opt/dtbld/bin/env.sh [environment] to start subshell. Installation log saved in /tmp/desktop-cbe-install-2010-03-21-17:42.log
ods-cbeに含まれているpkgbuildは古いため、最新版に入れ替えます。
1.3.1をアンインストール
pfexec pkgrm SFpkgbuild
最新版は、http://sourceforge.net/projects/pkgbuild/ からダウンロード出来ます。
まずは、環境を適応
. /opt/dtbld/bin/env.sh
wget http://prdownloads.sourceforge.net/pkgbuild/pkgbuild-1.3.101.tar.bz2 gtar jxvf pkgbuild-1.3.101.tar.bz2 cd pkgbuild-1.3.101/ ./configure --prefix=/usr pfexec make install
CBE m4関連のファイルが見つからないと、コンパイル時にACLOCALでエラーが出ることがあります。/opt/dtbld/share/aclocal/dirlistに、/opt/dtbld/share/aclocalがあるか、確認する必要があります。
正しい例( /opt/dtbld/share/aclocal/dirlist )
/usr/share/aclocal /usr/sfw/share/aclocal /opt/dtbld/share/aclocal
正しくなければ、追加します。
pfexec sh -c 'echo "/usr/sfw/share/aclocal\n/opt/dtbld/share/aclocal" >> /opt/dtbld/share/aclocal/dirlist'
cbe-setupによって、~osduser/packages/以下に、ワークディレクトリが作られているはずです。
packages/ |-- BUILD | `-- CBEenv-1.7.0-rc1 |-- PKGMAPS | |-- copyright | |-- depend | | `-- CBEenv.depend | |-- pkginfo | | |-- CBEenv-src.pkginfo | | `-- CBEenv.pkginfo | |-- proto | | |-- CBEenv-src.proto | | `-- CBEenv.proto | `-- scripts | `-- CBEenv.preremove |-- PKGS | `-- CBEenv | |-- install | | |-- depend | | `-- preremove | |-- pkginfo | |-- pkgmap | `-- reloc | `-- bin | |-- env.csh | |-- env.sh | |-- env_include.sh | |-- gendiff | `-- ld-wrapper |-- SOURCES | |-- env.csh | |-- env.sh | |-- env_include.sh | |-- gendiff | `-- ld-wrapper |-- SPECS | |-- CBE.inc | `-- default-depend.inc `-- SPKGS `-- CBEenv-src |-- pkginfo |-- pkgmap `-- reloc `-- share `-- src `-- CBEenv-1.7.0-rc1 |-- SOURCES | |-- env.csh | |-- env.sh | |-- env_include.sh | |-- gendiff | `-- ld-wrapper `-- SPECS |-- CBE.inc |-- CBEenv.spec `-- default-depend.inc
cbe-setupの最後に書かれているメッセージの通り、下記の通り設定すると、環境が読み込まれます。
sh系
. /opt/dtbld/bin/env.sh
csh系
source /opt/dtbld/bin/env.csh
osduserは、専用のユーザなので、/opt/dtbld/bin/env_include.shを投入しておきます。
echo . /opt/dtbld/bin/env_include.sh >> ~/.zshrc echo init_dt_cbe >> ~/.zshrc
私が配布しているVirtualBox環境では、.zshrcに(私の用の)小細工をしてあります :)
適当に掘っておきます。
mkdir ~/work/
サンプルのspecファイルを取得します。
spec-filesのincludeファイルと、いろいろなincludeファイルを取得します。下記の例ではtrunkを引っ張ってきます。
ダウンロード(レポジトリから取得なので多少時間はかかります)
cd ~/work/ svn co svn+ssh://anon@svn.opensolaris.org/svn/jds/spec-files/trunk spec-files
gnomeなどのbuild環境が必要であるならば、下記を参照してください。
特別gnome系のソースがいらない場合は、この中にある基本的なspecファイル用のincludeファイルがあります。これをコピーします。
cp ~/work/spec-files/include/*.inc ~/packages/SPECS/