トップページに戻る

OpenIndiana, OmniOS 環境構築方法詳細

(Omni) → omnios-170cea2 (OI) → OpenIndiana 151a8 で検証

一番最初にここを見ましょう 最初からすべてを理解する必要はありません。このページといったりきたりしましょう。

  • OmniOS で 2015/5/16 以前に環境構築されたかたは、バージョン 20150516 をもう一度実行してください。ビルド番号を取得する関数に OmniOS 用のパッチを当てました。
  • Oracle VirtualBox でもいけます。 Windows は 32 bit でも (OI) (Omni) は 64 bit でインストールできます。
  • (Omni) は CloudStack 上で検証
  • マシン名は oi64 で、/etc/hosts に oi64 を登録してひけるようにしておきます。
  • CBE 環境構築のための一般ユーザーは cbe を使っています。
  • http://tom.bn-ulm.de/bootstrap-sfe-latest-os20nn がベースですが、最近 http://tom.bn-ulm.de/bootstrap-sfe-latest-os20nn が OmniOS 用に作られたものであることがわかり、これもマージしています。

更新履歴

  • 2012/3/21 初版
  • (OI) 2014/5/20 OpenIndiana 151a9 で再検証。
  • (Omni) 2014/11/11 追加
  • (Omni) 2015/5/5 再検証。 2015/5/16 再検証。

(Omni) X 関連がごっそりありません

OmniOS は用途特化型のため、 X 依存の GUI 系ものが Java に至るまで徹底的に排除されています。下記、bootstrap-sfe-latest-os20nn スクリプトで必要なパッケージを自動インストールしつつ、パッケージ構築できる環境を準備しますが、OmniOS 版では、自動インストールするパッケージから、 X に関するものをすべて除外しました。

ISO からインストールする (OI) OpenIndiana 151a8 (Omni) OmniOS

  • (Omni) stable で試験しています
  • 始める前に 全体 update をかけておく 。
    • (OI) 151a1 のまま(ちょっと古いバージョン)だと、CBE 環境構築スクリプトを実行すると次回リブート時に起動しなくなります。次のコマンドでカーネルも含めて全部 update します。
    • (OI) 少なくとも 151a8 のときは 151a9 にしないと追加パッケージ自動インストールの際に複数 a8 と a9 がごちゃごちゃになって適当なパッケージが選べずとまります(2014/5/20 追記)。
    • (Omni) ISO ファイルのリリースより新しいリリースがあるので、 update をかける。
# pkg image-update

image-update についての説明は IPS(pkgコマンド)の利用方法 | 瀧(TAKI,Yasushi)/紅呪(kohju)のBlog

(Omni) パッケージが割れているので加える。 そのままだと subversion が見つかりません。

  • perl についても加えておきます。
    # pkg set-publisher -g http://pkg.omniti.com/omniti-ms/ ms.omniti.com
    # pkg set-publisher -g http://pkg.omniti.com/omniti-perl/ perl.omniti.com
    

参考: Configure Publishers OmniOS Packaging

CBE 環境構築スクリプトの実行

subversion のインストール

  • (OI)
    [cbe@oi64 ~]$ sudo pkg install developer/versioning/subversion
    
  • (Omni)
    [cbe@oi64 ~]$ sudo pkg install omniti/developer/versioning/subversion
    

Oracle Solaris Studio 12.3 SunStudio をとってくる

Oracle Solaris Studio 12.3
対象ファイル SolarisStudio12.3-solaris-x86-bin.tar.bz2

アカウントが必要なのでなかったら無料なんでその場で作ってください。ダウンロードはとても遅いので firefox のアクセラレータなどを使ってください。ダウンロードしたら、 (OI) bootstrap-sfe-latest-os20nn (Omni) bootstrap-sfe-latest-os20nn-omnios と同じディレクトリに放り込こんでおきます。

bootstrapスクリプトをダウンロードして実行

  • cbe ユーザー(今回の環境構築のための一般ユーザー)から sudo と pfexec が実行可能にしておく
    visudo より末尾に、
    cbe ALL=(ALL) ALL
    
    vi より /etc/user_attr の末尾に、
    cbe::::type=normal;profiles=Primary Administrator
    
  • pfexec についてはなくてもいいです。

(OI) 一度目の実行

  • ./bootstrap-sfe-latest-os20nn cbe ← ユーザー名です。今回は cbe を使いました。
  • http://tom.bn-ulm.de/bootstrap-sfe-latest-os20nn は不定期にサイトが停止していることがあります。サイトが止まっているときは bootstrap-sfe-latest-os20nn からダウンロードしてください。2015 年 5 月時点で最新のものです(とういうかここ数年更新はないようです)。
    [cbe@oi64 ~]$ wget http://tom.bn-ulm.de/bootstrap-sfe-latest-os20nn
    [cbe@oi64  ~]$ chmod 775 bootstrap-sfe-latest-os20nn
    [cbe@oi64  ~]$ export CCOMPILERTARBALLFILE=/home/cbe/SolarisStudio12.3-solaris-x86-bin.tar.bz2
    [cbe@oi64  ~]$ ./bootstrap-sfe-latest-os20nn cbe 2>&1 | tee bootstrap.log
    
  • sudo のみで pfexec の設定がないときは、途中で sudo のパスワードをきいてきます。 root のパスワードではありません
  • 途中経過 /tmp/desktop-cbe-install-日付&時間.log 例: desktop-cbe-install-2014-11-02-23:12.log
  • 一度目の実行の最後にこのような指示が出ます。もう一度実行します。
    Exiting this script *now*, logout and login again to re-run this script.
    

(Omni) 一度目の実行

  • bootstrap-sfe-latest-os20nn-omnios cbe ← ユーザー名です。今回は cbe を使いました。
  • bootstrap-sfe-latest-os20nn-omnios からダウンロードしてください。 OmniOS で動作するように改造しています。2015 年 5 月の bootstrap-sfe-latest-os20nn を元に作成しています。
  • bootstrap-sfe-latest-os20nn-omnios と同じディレクトリに次の 4 ファイルをダウンロードしておきます
  • 実行します。
    [cbe@oi64  ~]$ chmod 775 bootstrap-sfe-latest-os20nn-omnios
    [cbe@oi64  ~]$ export CCOMPILERTARBALLFILE=/home/cbe/SolarisStudio12.3-solaris-x86-bin.tar.bz2
    [cbe@oi64  ~]$ ./bootstrap-sfe-latest-os20nn-omnios cbe 2>&1 | tee bootstrap.log
    
  • sudo のみで pfexec の設定がないときは、途中で sudo のパスワードをきいてきます。 root のパスワードではありません
  • 途中経過 /tmp/desktop-cbe-install-日付&時間.log 例: desktop-cbe-install-2014-11-02-23:12.log
  • 一度目の実行の最後にこのような指示が出ます。もう一度実行します。
    Exiting this script *now*, logout and login again to re-run this script.
    

二度目の実行、三回目の実行(うまくいくまで何回か実行する)

(OI) 実行二回目

[cbe@oi64  ~]$ ./bootstrap-sfe-latest-os20nn cbe 2>&1 | tee bootstrap2.log

以下のように終了

Then * * * re-run this script * * *. It will use the environment variable from above *or*

(OI) 実行三回目

[cbe@oi64  ~]$ ./bootstrap-sfe-latest-os20nn cbe 2>&1 | tee bootstrap3.log
  • 延々と必要パッケージを自動的にダウンロードしてインストールします。

(Omni) 実行二回目

[cbe@oi64  ~]$ ./bootstrap-sfe-latest-os20nn-omnios cbe 2>&1 | tee bootstrap2.log 

以下のように終了

Then * * * re-run this script * * *. It will use the environment variable from above *or*

(Omni) 実行三回目

[cbe@oi64  ~]$ ./bootstrap-sfe-latest-os20nn-omnios cbe 2>&1 | tee bootstrap3.log
  • 延々と必要パッケージを自動的にダウンロードしてインストールします。

(OI)(Omni) 三回目の終了完了

最後に

  ****************************************************************************
                    I M P O R T A N T  N O T E S  B E L O W ...
                     Don't ask if you don't read them first :)
  ****************************************************************************
と出るとうまくいっている。残念ながらエラーが出ている場合もあるので、下記を参照すること。 終わったらリブートせよと出ている。 (Omni) インストールされるパッケージ名が違うので下記のようにはなりません。
A clone of openindiana exists and has been updated and activated.
On the next boot the Boot Environment openindiana-4 will be mounted on '/'.
Reboot when ready to switch to this updated BE.

Install second (NOT allowed to fail): SUNWgpch SUNWwget SUNWgtar
                  SUNWxorg-headers SUNWpkgcmds SUNWperl-xml-parser
                  SUNWgmake SUNWgnu-automake-110 SUNWgnome-doc-utils
                  SUNWgsed SUNWgawk SUNWgnu-diffutils SUNWgnu-coreutils
                  SUNWgnome-base-libs SUNWgnome-common-devel SUNWgnu-gettext
                  SUNWggrp SUNWgnu-findutils SUNWgnu-coreutils SUNWgm4
                  SUNWdoxygen SUNWunzip
                SUNWxcu4 SUNWxcu6 SUNWgnome-xml
                SUNWcar SUNWkvm
                SUNWPython SUNWTcl SUNWTiff SUNWTk SUNWadmap
                  SUNWadmlib-sysid SUNWadmr SUNWarc SUNWatfs SUNWbash SUNWbzip
                SUNWsvn
                SUNWaconf SUNWbison SUNWflexlex SUNWlibtool
                packages/SUNWxwinc

(OI) 二度目の実行でエラーがでるとき

パッケージがないとかいっている。

省略
sudo pkg install packages/SUNWbip
Creating Planpkg: The following pattern(s) did not match any packages in the current catalog.
Try relaxing the pattern, refreshing and/or examining the catalogs:
        packages/SUNWbip
省略

入らなくてもいいみたいです。中見てみるとこのようなコメントがあります。

# those package are allowed to fail the install, newer osbuilds usually do incorportate the files in other packages
#>=130 SUNWsfwhea is gone >=133 SUNWhea is gone
PACKAGESADDIPSALLOWEDFAIL="SUNWhea SUNWsfwhea
                           SUNWbip packages/SUNWbip

#Workaround: on OI151devA it knows about e.g. SUNWj6rt but it fails, why?
PACKAGESADDIPSALLOWEDFAIL="$PACKAGESADDIPSALLOWEDFAIL
                           SUNWj6dmo SUNWj6cfg SUNWj6rt SUNWj6rtx
                           SUNWj6man SUNWj6dvx SUNWj6dev SUNWj6dmx SUNWbtool

パッケージ cbe/desktop/CBEenv が入らない

  • 途中で自動的に入るはずなのですが
  • もう一度 bootstrap-sfe-latest-os20nn cbe を実行してみる

/opt/dtbld/bin/env.sh がない

bootstrap-sfe-latest-os20nn のログでこういうのが出ていませんか?

CBE setup FAILED
Installation log saved in /tmp/desktop-cbe-install-2012-03-13-12:08.log

/tmp/desktop-cbe-install-2012-03-13-12:08.log を追いかけると、/tmp/CBEenv.log にログが出ていて、 CBE のパッケージコンパイルがうまくいっていない。automake がないっていっている。

cbe@oi64:/home/cbe$ less /tmp/CBEenv.log
--- date stamp --- Tue Mar 13 13:15:50 JST 2012
--- date stamp --- Tue Mar 13 13:15:50 JST 2012

INFO: Checking if CBEenv is installed
INFO: Checking dependencies of CBEenv
INFO: Finding sources
INFO: copying sources to /home/cbe/packages/SOURCES
INFO:    gendiff found in //home/cbe/packages/SOURCES
INFO:    copying gendiff
INFO:    ld-wrapper found in //home/cbe/packages/SOURCES
INFO:    copying ld-wrapper
INFO:    env_include.sh found in //home/cbe/packages/SOURCES
INFO:    copying env_include.sh
INFO:    env.csh found in //home/cbe/packages/SOURCES
INFO:    copying env.csh
INFO:    env.sh found in //home/cbe/packages/SOURCES
INFO:    copying env.sh
INFO: Running pkgbuild -ba [...] CBEenv.spec (CBEenv)
INFO: Log file: /tmp/CBEenv.log
INFO: Build command: "/usr/bin/pkgbuild --define 'cbe_prefix /opt/dtbld' --define 'cbe_version 1.8.0' --define 'build_user cbe' -ba /var/tmp/cbe/desktop-cbe-mini-1.8.0/CBEenv.spec"
INFO: Starting pkgbuild build engine at Tue Mar 13 13:15:51 JST 2012

INFO: Build engine output is written to /tmp/pkgbuild.out.9380
INFO: and will be appended to this log when completed.
--- command output follows --- started at Tue Mar 13 13:15:51 JST 2012

pkgbuild: Name "main::lines" used only once: possible typo at /usr/bin/../lib/pkgbuild-1.3.103/pkgbuild.pl line 1860, <MACROS> line 210.
pkgbuild: Package format is filesystem
pkgbuild: Executing(%prep): /bin/bash /var/tmp/pkgbuild-cbe/pkgbuild-tmp-1.9672
pkgbuild: + umask 022
pkgbuild: + uname -a
pkgbuild: SunOS oi64 5.11 oi_151a i86pc i386 i86pc Solaris
pkgbuild: + cd /home/cbe/packages/BUILD
pkgbuild: + mkdir -p CBEenv-1.8.0
pkgbuild: + exit 0
pkgbuild: Executing(%install): /bin/bash /var/tmp/pkgbuild-cbe/pkgbuild-tmp-2.9672
pkgbuild: + umask 022
pkgbuild: + uname -a
pkgbuild: SunOS oi64 5.11 oi_151a i86pc i386 i86pc Solaris
pkgbuild: + cd /home/cbe/packages/BUILD
pkgbuild: + rm -rf /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build
pkgbuild: + mkdir -p /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin
pkgbuild: + cp /home/cbe/packages/SOURCES/env.sh /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin
pkgbuild: + cp /home/cbe/packages/SOURCES/env.csh /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin
pkgbuild: + cp /home/cbe/packages/SOURCES/env_include.sh /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin
pkgbuild: + cp /home/cbe/packages/SOURCES/ld-wrapper /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin
pkgbuild: + cp /home/cbe/packages/SOURCES/gendiff /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin
pkgbuild: + chmod 755 /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin/env.csh /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin/env.sh /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin/env_include.sh /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin/gendiff /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/bin/ld-wrapper
pkgbuild: + mkdir -p /var/tmp/pkgbuild-cbe/CBEenv-1.8.0-build/opt/dtbld/lib/cbe-env
pkgbuild: + test -f /usr/bin/automake-1.10
pkgbuild: + echo 'automake-1.10 not found'
pkgbuild: automake-1.10 not found
pkgbuild: + exit 1
pkgbuild: Bad exit status from /var/tmp/pkgbuild-cbe/pkgbuild-tmp-2.9672 (%install)
--- command output ends --- finished at Tue Mar 13 13:15:56 JST 2012

INFO: pkgbuild -ba finished at Tue Mar 13 13:15:56 JST 2012

ERROR: CBEenv FAILED
INFO: Check the build log in /tmp/CBEenv.log for details

automake-1.10 を探す

cbe@oi64:/home/cbe$ pkg search -r automake-1.10
INDEX      ACTION VALUE                   PACKAGE
basename   dir    usr/share/automake-1.10 pkg:/developer/build/automake-110@1.10-0.151.1.1
basename   file   usr/bin/automake-1.10   pkg:/developer/build/automake-110@1.10-0.151.1.1
basename   file   usr/bin/automake-1.10   pkg:/developer/build/automake-110@1.10-0.151.1.2
basename   file   usr/bin/automake-1.10   pkg:/developer/build/automake-110@1.10-0.151.1
basename   dir    usr/share/automake-1.10 pkg:/developer/build/automake-110@1.10-0.151.1.2
basename   dir    usr/share/automake-1.10 pkg:/developer/build/automake-110@1.10-0.151.1

いれる、リブートする

cbe@oi64:/home/cbe$ sudo pkg install pkg:/developer/build/automake-110
Password:
               Packages to install:     4
                Packages to update:    47
           Create boot environment:   Yes
DOWNLOAD                                  PKGS       FILES    XFER (MB)
Completed                                51/51   4810/4810    85.0/85.0

PHASE                                        ACTIONS
Removal Phase                                154/154
Install Phase                                556/556
Update Phase                               5603/5603

PHASE                                          ITEMS
Package State Update Phase                     98/98
Package Cache Update Phase                     47/47
Image State Update Phase                         2/2

A clone of openindiana exists and has been updated and activated.
On the next boot the Boot Environment openindiana-6 will be mounted on '/'.
Reboot when ready to switch to this updated BE.

/etc/xml/docbook-xmlcatalog がなぜか空っぽ

add command failed なんて画面にエラーがでるとき

Running /usr/share/sgml/docbook/docbook-catalog-install.sh ...
This may take a while ...
[bootstrap-sfe] YOUR password:[bootstrap-sfe] YOUR password:/etc/xml/docbook-xmlcatalog:1: parser error : Document is empty

^
/etc/xml/docbook-xmlcatalog:1: parser error : Start tag expected, '<' not found

^
add command failed
add command failed

入れなおし

cbe@oi64:/home/cbe$ sudo pkg uninstall pkg:/data/docbook
cbe@oi64:/home/cbe$ sudo pkg install pkg:/data/docbook
               Packages to install:     1
           Create boot environment:    No
               Services to restart:     1
DOWNLOAD                                  PKGS       FILES    XFER (MB)
Completed                                  1/1     703/703      2.0/2.0

PHASE                                        ACTIONS
Install Phase                                788/788

PHASE                                          ITEMS
Package State Update Phase                       1/1
Image State Update Phase                         2/2

このあたり、該当するものがあったら削除するみたい

なかったのでエラーが出ている。

2012-03-13 12:08:12 (163 KB/s) - `desktop-cbe-mini-1.8.0.tar.bz2' saved [239018/239018]

rm: /var/tmp/cbe/desktop-cbe-inputfile.[0-9]*: No such file or directory
desktop-cbe-mini-1.8.0.tar.bz2
pkgrm: ERROR: no package associated with <SFpkgbuild>
pkgrm: ERROR: no package associated with <SFpkgbuild.2>
pkgrm: ERROR: no package associated with <SFpkgbuild.3>
pkgrm: ERROR: no package associated with <CBEenv>
pkgrm: ERROR: no package associated with <CBEenv.2>
pkgrm: ERROR: no package associated with <CBEenv.3>

IMPORTANT NOTES BELOW ... package repository の作成

最後にこのように表示されているはず

  • 途中 : No such file or directory とでてますが、メッセージ表示で echo" となっているためです(echo と " の間にスペースがないので単なるコマンドとして解釈されている)。
  • bootstrap-sfe-latest-os20nn-omnios では直しています。
      ****************************************************************************
                        I M P O R T A N T  N O T E S  B E L O W ...
                         Don't ask if you don't read them first :)
      ****************************************************************************
    
    
     Installation finished. Please "source" the build-environment by typing the
     following into your login shell:
    
          . /opt/dtbld/bin/env.sh
    
    
     Test your fresh CommonBuildEnvironment by running the following commands:
     (Read: see above, you need to source the env.sh script before!)
    
             cd spec-files-extra
             pkgtool --download build-only SFEbvi.spec
             (or to really install:  pkgtool --download --svr4 build SFEbvi.spec)
             (leave out the --svr4 if you already have a local IPS server ready and
              set read/write)
    
             To get prerequisite packages build automatically in the correct order,
             then use:  pkgtool --autodeps --download build SFEbvi.spec
             (note: "build-only" does not make sense in that --autodeps case!)
    
             You may want to autoinstall prerequisite OS packages with:
             resolveipspackages SFEbvi.spec
    
    
    
    You might need some manual manipulation of your system.
    This is outside the scope of this script at the moment, so please carefully
    check the following items:
    
    Checking compiler configuration...
    Checking system privileges...
    Detecting repository settings...
    
     Issue: local package server is not started/initialized
     ------------------------------------------------------------------------------
    
     The result: pkgbuild runs fine, but you cannot send the packages to your
     local pkg repository
    
     Occurs only if you have a really fresh system where a local package server was
     never enabled by someone (that's you?).
     You may skip this step, if you are certain that your local package server
     is already running properly.
    
     Check for enabled/online with: "svcs -v application/pkg/server"
    
     Solution: enable your local package server now and refresh the catalog
         (taken from and read more on:
         https://sourceforge.net/apps/mediawiki/pkgbuild/index.php?title=Pkgbuild_on_OpenSolaris#Image_Packaging_System
         )
    
    
     Note: Run these commands as privileged user! You may use:   pfexec bash
    
    
     All builds:
     # Create separate filesystem (optional, this is an example, use your preferred path):
      pfexec zfs create -p -o mountpoint=/var/pkglocal rpool/pkglocal
      pfexec /usr/sbin/svccfg -s application/pkg/server setprop pkg/inst_root=/var/pkglocal
     #  (note: the line below might fail on older OS builds, normally not a problem)
      pfexec /usr/sbin/svccfg -s pkg/server setprop pkg/inst_root = /var/pkglocal
    
     # Beginning from build 127 and newer: (older builds skip this step)
      pfexec pkgrepo create --version 4 /var/pkglocal
      pfexec pkgsend -s file:///var/pkglocal create-repository \
                        --set-property publisher.prefix=localhost
    
    
    
     # Continue, all builds: (note: pkg/readonly is available with new pkg server versions only)
      pfexec /usr/sbin/svccfg -s pkg/server setprop pkg/port=10000
      pfexec /usr/sbin/svccfg -s svc:/application/pkg/server setprop pkg/readonly = false
      pfexec /usr/sbin/svcadm refresh pkg/server
      pfexec /usr/sbin/svcadm enable -s pkg/server
      pfexec /usr/sbin/svcadm restart pkg/server # for reloading config, if it's already enabled
      sleep 5                  # wait a few seconds for things to settle down
      #note: publishing with unlimited file-size is only possible file://-based
      pfexec pkg set-publisher -G '*' -g file:///var/pkglocal localhost
      #(else, not recommended, max 100MB files: pfexec pkg set-publisher -G '*' -g http://localhost:10000 localhost )
    
      pfexec pkg rebuild-index
    
     please check /etc/security for sufficient rights to operate on pkg repositories.
     Solaris 12 (11)
          /etc/security/exec_attr.d/package:pkg
    Software Installation:solaris:cmd:::/usr/bin/pkgrepo:uid=0
    Software Installation:solaris:cmd:::/usr/bin/pkgsend:uid=0
    Software Installation:solaris:cmd:::/usr/bin/pkgrecv:uid=0
    
    
     OpenIndiana (e.g. oi 151a8
    ./bootstrap-sfe-latest-os20nn: line 2200: echo
          /etc/security/exec_attr:
    Software Installation:solaris:cmd:::/usr/bin/pkgrepo:uid=0
    Software Installation:solaris:cmd:::/usr/bin/pkgsend:uid=0
    Software Installation:solaris:cmd:::/usr/bin/pkgrecv:uid=0
    : No such file or directory
    
    
    
     I will post these kind of issues on a small blog/wiki some day in the near
     future. Watch out by searching the web for bootstrap-sfe-latest-os20nn and
     on twitter the search-tag is #SFE
    
     Some instructional messages may have scrolled off screen. Please scroll up
     and review them now.
    
     Thank you for using "bootstrap-sfe-latest-os20nn" to improve your experience
     with OpenSolaris (last build 134, discontinued), Solaris 11 Express or OpenIndiana!
     If you like that script, please drop me a note by email tom68 at users.sourceforge.net
     in english, german, french or your mother language.
    
     You've read the above important information? Yes, you are a good one! :)
    

(OI)(Omni) /etc/security/exec_attr に加えておきます

      /etc/security/exec_attr:
Software Installation:solaris:cmd:::/usr/bin/pkgrepo:uid=0
Software Installation:solaris:cmd:::/usr/bin/pkgsend:uid=0
Software Installation:solaris:cmd:::/usr/bin/pkgrecv:uid=0

参考: SolarisのRBAC機能でsudoを置き換える

逐一実行

ディレクトリ名 /var/pkglocal は変更してもいいが、 pkgsend する際に /var/pkglocal を固定にしているスクリプトが存在する。もし /var/pkglocal から変更する際は、環境変数 $PKGBUILD_SRC_IPS_SERVER に file://どこかのディレクトリ/ として設定しておく。

  • oi64 (他の名前でももちろんよし)を /etc/hosts に指定しておくように
  • 上の I M P O R T A N T N O T E S B E L O W ... をほとんどまんま実行
    cbe@oi64:/home/cbe$ sudo zfs create -p -o mountpoint=/var/pkglocal rpool/pkglocal
    cbe@oi64:/home/cbe$ sudo svccfg -s application/pkg/server setprop pkg/inst_root=/var/pkglocal
    # --set-property publisher.prefix=localhost はマシン名にしたほうが無難
    # 瀧さんいわく 11 の場合は、localhost にするとレポジトリを作るときに、難しくなるそうだ。
    cbe@oi64:/home/cbe$ sudo pkgsend -s file:///var/pkglocal create-repository --set-property publisher.prefix=oi64 
    cbe@oi64:/home/cbe$ sudo svccfg -s pkg/server setprop pkg/port=10000
    cbe@oi64:/home/cbe$ sudo svccfg -s svc:/application/pkg/server setprop pkg/readonly = false
    cbe@oi64:/home/cbe$ sudo svcadm refresh pkg/server
    cbe@oi64:/home/cbe$ sudo svcadm enable pkg/server
    cbe@oi64:/home/cbe$ sudo svcadm restart pkg/server
    # ここでちょっとまてとある
    # http://localhost:10000 localhost はマシン名にしたほうが無難
    cbe@oi64:/home/cbe$ sudo pkg set-publisher -O http://localhost:10000 oi64
    cbe@oi64:/home/cbe$ sudo pkg rebuild-index
    

zfs create -p -o mountpoint=/var/pkglocal rpool/pkglocal が失敗する

zfs list で調べてください。

[cbe@oi64 ~]$ sudo zfs create -p -o mountpoint=/var/pkglocal rpool/pkglocal
cannot create 'rpool/pkglocal': no such pool 'rpool' ← rpool で失敗
[cbe@oi64 ~]$ zfs list
NAME                          USED  AVAIL  REFER  MOUNTPOINT
rpool1                       10.7G   446G  45.5K  /rpool1
rpool1/ROOT                  5.94G   446G    31K  legacy
rpool1/ROOT/openindiana      7.69M   446G  1.78G  /
rpool1/ROOT/openindiana-1    5.93G   446G  5.25G  /
rpool1/dump                  2.00G   446G  2.00G  -
rpool1/export                 634M   446G    32K  /export
rpool1/export/home            634M   446G   543M  /export/home
rpool1/export/home/yamachan  91.0M   446G  91.0M  /export/home/yamachan
rpool1/swap                  2.13G   448G   132M  -
[cbe@oi64 ~]$ sudo zfs create -p -o mountpoint=/var/pkglocal rpool1/pkglocal
Password: 
[cbe@oi64 ~]$ ← rpool1 に切り替えて成功

理由は、 瀧さんの説明 で rpool/pkglocal を探してください。

すでにレポジトリがある

環境変数 $PKGBUILD_SRC_IPS_SERVER にレポジトリ名を指定しておけば新たに /var/pkglocal 以下にレポジトリを作成する必要はありません。

  • 最後の / まで入れること
  • hosts で名前がひければ、FQDN である必要はない。
    export PKGBUILD_SRC_IPS_SERVER=http://hoge:10000/
    

動作確認

cbe@oi64:/home/cbe$ svcs | grep pkg
online          9:44:28 svc:/system/pkgserv:default
online         10:19:44 svc:/application/pkg/server:default

firefox などから、http://localhost:10000 をたたいて、package repository が出れば OK。

  • ここでもう一度実行すると、レポジトリに CBE 環境パッケージが登録されます。

ビルド準備

.bashrc に次を加えます

# cbe 環境
if [ -f /opt/dtbld/bin/env.sh ]; then
    . /opt/dtbld/bin/env.sh
    export PKGBUILD_IPS_REPO=$(uname -a | awk {'print $2'})
fi

sourcefogre の ID 取得と、jposug への参加

  1. http://sourceforge.jp/ ID 取得
  2. ID を取得してログインできたら jposug に参加申請を出す。
  3. ssh 公開鍵を sourcefogre へ登録
  4. 参加申請が受理されたらメールがきます(確認してもらえるまで一日程度かかります)
  5. メーリングリストへ登録をお願いします
  • Jposug-commitlog 誰かが hg で push するたびにメールがきます。
  • Jposug-dev 誰かが答えてくれることを期待しつつ、技術的な質問はこちら、もしくはなんか新し変更を加えたら

ssh 公開鍵を sourcefogre へ登録

公開鍵の作成

[cbe@oi64 ~]$ /usr/bin/ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/export/home/cbe/.ssh/id_rsa): # 何も入力せずリターン
Enter passphrase (empty for no passphrase): # 何も入力せずリターン
Enter same passphrase again: # 何も入力せずリターン
Your identification has been saved in /export/home/cbe/.ssh/id_rsa.
Your public key has been saved in /export/home/cbe/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx cbe@oi64
[cbe@oi64 ~]$ ls -la .ssh
total 6
drwx------ 2 cbe cbe   5 5月   6 01:37 ./
drwxr-xr-x 7 cbe cbe  19 5月   6 01:37 ../
-rw------- 1 cbe cbe 883 5月   6 01:37 id_rsa
-rw-r--r-- 1 cbe cbe 217 5月   6 01:37 id_rsa.pub
-rw-r--r-- 1 cbe cbe 799 5月   5 21:19 known_hosts

公開鍵の登録

cbe@oi64:/home/cbe$ cat /home/cbe/.ssh/id_rsa.pub

出てくる文字列を SSH公開鍵の登録/削除 から貼り付ける。複数登録できます。 登録後 5 分程度お待ちください。認識するまでちょっと時間がかかるようです。

以下、 wiki:ビルド準備 にあるとおりに実行する(以下同じことを説明します)。

(OI) hg のインストール

  • (Omni) 割とあたらしめの mercurial がすでに入っているので、インストールの必要なし。
cbe@oi64:/home/cbe$ pfexec pkg search hg
INDEX      ACTION VALUE                           PACKAGE
basename   file   usr/bin/hg                      pkg:/developer/versioning/mercurial@1.3.1-0.151.1.1
basename   file   usr/bin/hg                      pkg:/developer/versioning/mercurial@1.3.1-0.151.1.2
basename   file   usr/bin/hg                      pkg:/developer/versioning/mercurial@1.3.1-0.151.1
pkg.fmri   set    openindiana.org/gnome/locale/hg pkg:/gnome/locale/hg@0.5.11-0.151.1.1
pkg.fmri   set    openindiana.org/gnome/locale/hg pkg:/gnome/locale/hg@0.5.11-0.151.1.2
pkg.fmri   set    openindiana.org/gnome/locale/hg pkg:/gnome/locale/hg@0.5.11-0.151.1
cbe@oi64:/home/cbe$ sudo pkg install pkg:/developer/versioning/mercurial
               Packages to install:     1
           Create boot environment:    No
DOWNLOAD                                  PKGS       FILES    XFER (MB)
Completed                                  1/1     774/774      2.4/2.4

PHASE                                        ACTIONS
Install Phase                                835/835

PHASE                                          ITEMS
Package State Update Phase                       1/1
Image State Update Phase                         2/2

ワークディレクトリの作成

cbe@oi64:/home/cbe$ pwd
/home/cbe
cbe@oi64:/home/cbe$ mkdir -p work/jposug
cbe@oi64:/home/cbe$ cd work/jposug

jposug 参加申請受理後、ssh public key を osdn に登録後行ってください

cbe@oi64:/home/cbe/work/jposug$ hg clone ssh://ユーザー名@hg.sourceforge.jp//hgroot/jposug/contrib-spec-files contrib-spec-files
The authenticity of host 'hg.sourceforge.jp (202.221.179.25)' can't be established.
RSA key fingerprint is bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb.
Are you sure you want to continue connecting (はい/いいえ)? yes
remote: Warning: Permanently added 'hg.sourceforge.jp,202.221.179.25' (RSA) to the list of known hosts.
requesting all changes
adding changesets
adding manifests
adding file changes
added 67 changesets with 225 changes to 165 files
updating working directory
163 files updated, 0 files merged, 0 files removed, 0 files unresolved
  • ちなに ssh public key を登録していないと下記のようになります(もしくは、新規 public key 登録後 5 分程度)
    oi64% hg clone ssh://ユーザー名@hg.sourceforge.jp/hgroot/jposug/contrib-spec-files contrib-spec-files
    remote: Permission denied (publickey).
    abort: no suitable response from remote hg!
    

動作試験

試しにすぐに実行できる spec ファイルをコンパイルしてみましょう。上にある .bashrc に次を加えます を終えてないといまくいかんからね、そこんとこよろしく。

[cbe@omni ~]$ cd /home/cbe/work/jposug/contrib-spec-files/specs/
[cbe@omni specs]$ ../bin/specbuild.sh SFElv.spec
OpenIndiana(OmniOS) mode. use IPS.
INFO: IPS packages will be installed by default from http://localhost:10000/
INFO: Copying %use'd or %include'd spec files to SPECS directory
INFO: Processing spec files
INFO: Finding sources
INFO: Running pkgbuild -ba [...] SFElv.spec (SFElv)
INFO: SFElv PASSED

Summary:

                         package |      status | details
---------------------------------+-------------+-------------------------------
                           SFElv |      PASSED |

途中経過をみる

パッケージが完成する / エラーで止まった ときにあとから参照できる。が、適当に端折られる:

less /tmp/SFElv.log

パッケージを作っている途中で pkgbuild.out を見れば全部でてる:

tail -f /tmp/pkgbuild.out.24102 (数字は PID なので毎回変わる)

インストールしてみましょう

cbe@oi64:/home/cbe/work/jposug/contrib-spec-files/specs$ sudo pkg install pkg://oi64/text/lv
Password:
               Packages to install:     1
           Create boot environment:    No
DOWNLOAD                                  PKGS       FILES    XFER (MB)
Completed                                  1/1         4/4      0.7/0.7

PHASE                                        ACTIONS
Install Phase                                  21/21

PHASE                                          ITEMS
Package State Update Phase                       1/1
Image State Update Phase                         2/2