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/