Solaris10 x86_64 / VMware ESXi4 インストールメモ ※ このメモは「自分はこういう手順で行った」というだけですので、無条件で信用したりしないように。:-) x86版の文書に手を加えて作っていますので、、、まだまだ未完です。 ※ かなり長期にわたって更新している文書なので、語尾の不統一等は気にしないでください。^^; ※ 途中の「HOGE!」とか「HOGE!!!」とかは「自分用栞」です。無視してください、、、。 0. 準備 ・ Solaris10のインストールイメージ http://jp.sun.com/practice/software/solaris/get.jsp#download ・ (入手可能であれば)Solaris10用のクラスタパッチ ・ インターネット接続環境 ・ Solaris10 x86_64の動くハードウェア ・ VMware インストールイメージ http://www.vmware.com/jp/products/esxi/ 1. VMwareのインストール (略) ※ ESXi3と違い、ESX4/ESXi4は特に苦労するところは無いでしょう。 ※ ただしHDDの最大容量は2テラバイトで、それ以上のボリュームはESXで合成して実現することに注意。 2. VM作成 ・「Solaris 64bit」のテンプレートのままに作成した。詳細は、、、ググってくださいw 3. OS入れ ・ 「sol-10-u7-ga-x86-dvd-10-09.iso」をVMにアタッチして起動。 ・ 起動時の選択項目は1つ目の「Solaris」。ここは1分間放置するもよし、「(Enter)」で先に進むもよし。 ※ その後「......」がゆっくり出るが、ひたすら待つ。 ・ 次の選択項目は、なにもしないで放置。 「Solaris Interactive (default)」が選択されることになる。 そのうちtimeoutして進行し、しばらく経過後に「Configure Keyboard layout」の「青くて赤くて緑色の画面」が出る。 ・ Configure Keyboard Layout 「Japanese」→ F2 ※ 上矢印キーで上のほうに送ると出てくるので、スペースキーで選択する。 ※ 「Japanese-Type6」とは「Sun謹製のType6キーボード」を指す。普通使わない。 ・(次の黒い画面) 「Press ENTER to continue」→ Enter ★ GUIが立ち上がるが、一切触れずに放置すること! 約1分ほどで「黒い画面」に戻る。 ・ Select a Language 「0(English)」→ Enter ※ 以下、Englishを選んだ場合なので、それ以外は知りません。 ・ The Solaris Installation Program F2 ・ Identify This System F2 (以下、「Continue」としての「F2」は基本的に略す) ・ Network Connectivity Networkd → Yes ・ DHCP for e1000g0 Use DHCP for e1000g0 → No ・ Host Name for e1000g0 ・ 複数のNICが存在する場合、個々のNICに対してユニークなホスト名が必要となる。 Host name for e1000g0 → 適当なホスト名 ・ IP Address for e1000g0 IP address for e1000g0 → 正しいIPアドレス ・ Subnet for e1000g0 ・サブネット化されているか否か(されてないことってあるんかな、、、) System part of a subnet → Yes ・ Netmask for e1000g0 Netmask for e1000g0 → 正しいマスク ・ IPv6 for e1000g0 ★ わたしゃIPv6を使ったことがありません。^^; まあ後で直せるので。 Enable IPv6 for e1000g0 → No ・ Set the Default Route for e1000g0 Default Route for e1000g0 → Specify one ・ Default Route IP Address for e1000g0 Router IP Address → デフォルトゲートウェイアドレス ・ Confirm Information for e1000g0 OKなら「F2」 入れなおす項目があるなら「F4」 ・ Configure Security Policy: Configure Kerberos Security → No ★ Yesにしたことありません、、、^^; ・ Confirm Information OKなら「F2」 入れなおす項目があるなら「F4」 ★ この画面はKerberosをYesにしていないとほとんど意味が無い。 ・ Name Service Name service → DNS ・ Domain Name Domain name: → 所属するDNSドメイン ・ DNS Server Addresses Server's IP address: → 最大3つ、適当に入れる ・ DNS Search List Search domain: → 最大6つ、あれば入れる ・ Confirm Information OKなら「F2」 入れなおす項目があるなら「F4」 ※ ここでDNSに自分のFQDNを引きに行くため、引けない場合はタイムアウトまで待たなければならない。 ・ Name Service Error ※ 名前がきちんと引ければこの画面は出ない筈。 Enter new name service information? → No ・ 黒い画面で「done.」がポツっと出る。なんて素っ気無い、、、。 ・ NFSv4 Domain Name ※ NFSを使うのが前提であるために出るが、気にしなくていい:-) NFSv4 Domain Configuration → Use the NFSv4 domain desired by the system ・ Confirm Information for NFSv4 Domain OKなら「F2」 入れなおす項目があるなら「F4」 ・ Time Zone ※ まずは大雑把なエリアを選ぶ Continents and Oceans → Asia ・ Country or Region Country and Regions → Japan ※白い「Please wait...」でしばらく待つ。ntpサーバにでも問い合わせてる? ・ Date and Time ※ てきとーに入れる ・ Confirm Information OKなら「F2」 入れ間違えたとかなら「F4」 ・ Root Password Root password: → 同じものを2回入れる ・ Identify This System F2 ・ Enabling remote services Remote services enabled → No ※ Noにするとremote-login系はSSH以外動かない、、、筈。 あとで個々にONにすればいいだけなのでNoを選ぶ。 ・ Solaris Interactive Installation 今回はゼロからのインストールなので「F2」。 ・ Eject a CD/DVD Automatically? 「Automatically eject CD/DVD」を選んでおけばOK。 ・ Reboot After Installation? 「Auto Reboot」を選ぶのであれば、BIOSの起動順でCDをHDより下位にすること。 要するにそういう意味。 ・ Information ま、「F2」。 ・ Initializing この画面は勝手に進む。 ・ License 「読んでから」:-) 「F2」 ・ Select Geographic Regions ※ これはちょっと判り難いので注意。 ・ デフォルトの「英語」以外に例えば「日本語man」とかを入れるかどうか、だと思えばいい。 ※ 左端の「>」でリターン或いはスペースを叩くと展開される。 ※ 2つの「U.S.A」と3つの「Japaneseなんちゃら」は入れておくべきかと。 ※ あとはご随意に。 ・ Select System Locale ※ デフォルトのロケールを選ぶ。 ※ あとで泣かないためには「POSIX C」を選ぶべきかと。 ※ なお、前項で選択していないものは出てこない。 ・ Additional Products ここでは「None」。 後半でインストールする「Companion-CD」をここで指定するのが本来であるが、 ややこしいので敢えて別にインストールする。 ・ Choose Filesystem Type ※ ZFSは未だに致命的バグがみつかることがあるので、ブートデバイスはUFSがお薦め。 ここでは「UFS」 ・ Select Software ここでは「Entire Distribution」。 HDDが少ない場合は、、、適当に。:-) 「F4」を押して取捨選択するも可。何が入るのかを見ることにもなる。 F4をおすと「Customize Software」の画面になる。 F2を押して続行したとして記載を続ける。 ・ Select Disks 新しいHDDなのでMBR等も空なので、「Available Space」は全容量が表示されている筈。 「c1t0d0」をセレクトした状態(最初からセレクトされている筈)で「F4」を押して「edit(=fdisk)」する。 ・ Disk Editing Options 「Edit Fdisk Partitions」 ・ Customize fdisk Partitions for Disk: c1t0d0 「Partition 1」が既に「SOLARIS」になっている筈。 ※ 「全部1パーティション」でかまわない。 ※ いわゆる「スライス」はここではない。 ここで「F2」。 ・ Select Disks ここまで戻る。さきほどはここでF4を押して分岐した。 「Available Space」がディスク容量分になっていることを再確認し、F2。 ・ Automatically Layout File Systems? F2を押し、まずテンプレートとしてのLayoutを作らせる。 ・ Automatically Layout File Systems デフォルトで「/」と「swap」にチェックが入っているのでそのままF2。 ・ File System and Disk Layout ※ これがややこしい! デフォルトでは大部分が「/export/home」に割り振られているので、 これを開放して「/」に編入する。また「swap」の総量を実メモリの 倍から数倍とする。 ★ わたしのサンプルでは HD : 110GB メモリ : 1GB (4〜8GB程度に拡張予定あり)  なので、「swap」に12GB、残りを「/」に割り振った。  もちろん「overlap」はそのまま。 まずは「F4」を押してカスタマイズ画面に入る。 ・ Customize Disk: c1t0d0 ・ Slice 7 の Mount Point をクリアし、Size (MB) をゼロにする。 ・ Slice 1 の swap を適量にする。 ・ 残り全部を Slice 0 の / に割り振る。 ・ 終わったら F2 を押す。 ・ File System and Disk Layout 「/」「swap」「overlap」がそれぞれ 「c1t0d0s0」「c1t0d0s1」「c1t0d0s2」になっていることを確認し、F2。 ・ Mount Remote File Systems? 何も入れずにF2。NFSマウントしませんよね? ・ Profile 中を適当に見てから「F2」。 fdisk/mkfs/installが始まる。 ★ どーでもいーんですが、fdiskおよびmkfsの最中はいいとこCPUクロックが200MHzぐらいまでしか 使われていなかったのに、インストールが始まるや否や2.5GHzぐらいに跳ね上がりました。 ・ 30〜35分ぐらいで終わる。もっと速いマシンだともっと早いかも、、、。 ・ 終わったら勝手にrebootしてGUIが動く。鬱陶しいのでまず止める。 「Please enter your user name」→ 「root」「(Enter)」 「Please enter your password」 → 「rootパスワード」「(Enter)」 「Welcome to Solaris.云々(初回の環境設定)」→「OK」 「Launchボタン」→「Applications」→「Utilities」→「Terminal」 「svcadm disable cde-login」 ※ ユーザ登録画面のようなものが勝手に立ち上がってTerminalの窓が裏に回ってしまうことがあるので注意。 ・ 「黒い画面」になったらEnterを押し、ログインプロンプトを出し、rootでloginする。 ※なお、ログイン後にzshを起動したほうが便利かと。 ★ ログインプロンプトが出ない場合は、、、VirtualMachineを強制的にリセットする方が手っ取り早い、、、です。^^; ・ 次にCompanion-CDのインストール。 ・ VMwareでマウント。 ・ rootでlogin(既にしてある筈)。 ・ 以下のコマンドを叩く。 ※ 「pkgadd」の行の「`」は、日本語キーボードでは「シフト+@」。 ***** ここから ***** cd /cdrom cd cdrom0 tail -23 README | head -9 > /var/tmp/admin cd Solaris_Software_Companion cd Solaris_i386 cd Packages pkgadd -a /var/tmp/admin -d `pwd` * ズラっと表示が出たら「ctrl-D」で止めて、、、 * 次に「all」と打つ。 ***** ここまで ***** ※ こいつから何が入ったかは pkginfo | grep SFW で判る。 ・ マウントしたCD-ROMイメージをアンマウントする。 ・ 最後に「cluster patch」のインストール。 ・ 「10_x86_Recommended.zip」を入手。 ※ 意外と入手は難しいかもしれません。入手出来なかった場合は個別パッチを頑張って当ててください、、、。 ・ 例えば「/usr/local/qtemp」等に展開。 * 最悪3回ほど当てないといけないので、/tmp等は避ける。 unzip 10_x86_Recommended.zip ***** ここからを何回か繰り返す ***** ※ 例えば、 ・パッチAは前提パッチBが必要 ・パッチBは前提パッチCが必要 ・パッチCはインストール後に再起動しないと適用されない などという「パッチの連鎖」が最大3階層分ありうる、ということ。 ただしこれは「ド初期版のSolaris10に当該パッチを当てた場合の最悪値」なので、今回のように「その時点における最新版のSolaris10」に対しては、例えば1回ですべて終わってしまうようなことも多い。 例えていうなら「WindowsXPのSP無し版」から始めるか、最初からSP2の適用された版から始めるかによってインストール直後のWindowsUpdateに要する時間が異なるようなものである。 ※ もちろん、2回目3回目と行うにつれ、インストール済みのパッチが増えていくため、例えば3回目では「すでに全てインストール済」として数刻で終わったりする。 ※ ちなみに新規適用パッチが無くなった後にしつこく作業を行っても問題は無いが、時間の無駄である。:-) ・rootでloginする。 ※ この時点ではまだrootしかいない筈。 ・シングルユーザモードに移行。 init S ★ 途中でルートパスワードを聞かれるので、正しいものを入力する。 ・ 当該ディレクトリに移動。 * 先の例では「cd /usr/local/qtemp/10_x86_Recommended」。 ・ インストール開始。 ./installcluster --[ここにパスコードを記載] パスコードは同ディレクトリの「README」に記載されている。 ・ logは /var/sadm/install_data/s10x_rec_cluster_{short|verbose}_YYYY.MM.DD_HH.MM.SS.log に残っている。 ・ 終了時に No patches were applied. と出ればパッチ処理終了とみなし、「パッチ処理ループ」から抜ける。 ・ 何らかのパッチが適用された場合は Installation of patch set complete. PLEASE REBOOT THE SYSTEM. と表示されるので、デバイス再構築フラグ付でrebootする。 * reboot -- -r ※ 再起動時のメニューに「Solaris_reboot_transient」という項目が一時的に発生しており、 またこの項目がデフォルトで選択されている。このまま起動すべし。 ***** 繰り返し、ここまで ***** * ちなみに今回の実例では1回目で全て適用された。 ・最後に通常のrebootを行う。 * init 6 ・ OS入れ、おしまい。 4. 基本設定の微調整を行う。 ・ 追加ユーザを作る。 * rootではtelnetで入ることもできない。sshでなら入ることは可能だが非推奨。 ★ 「hoge」を作ることにする。 ・ まず「autofs」を止め、/home を開放する。 svcadm disable autofs ・ ユーザを作る。例えば「hoge」を作成する場合。 useradd -d /home/hoge -s /usr/bin/tcsh -u 1001 -m hoge * 1001とかtcshとかは趣味です。 * 参考 : http://www.b-dash.net/solaris/solaris_5.html ・ passwordを設定する passwd hoge ・ 環境を適当に設定する 実際は別のマシンから.tcshrc等を持ってきた。 ・ telnetdを有効にする。 svcadm enable telnet * 今後、VMware Clientではなくtelnet経由で設定出来る。 ・ 旧型管理体系配下の要らないdaemonを止める。 「/etc/rc*.d」の中にあるスクリプトのうち、「Snnxxxx」という名前を 持ったものが起動されるので、不要なものを例えば「noSnnxxxx」という名前に renameする。 /etc/rc2.d noS10lu noS42ncakmod noS47pppd noS70uucp noS90loc.ja.cssd noS94ncalogd ※ 便利なこぴぺ mv S10lu noS10lu mv S42ncakmod noS42ncakmod mv S47pppd noS47pppd mv S70uucp noS70uucp mv S90loc.ja.cssd noS90loc.ja.cssd mv S94ncalogd noS94ncalogd /etc/rc3.d noS16boot.server noS50apache noS52imq noS80mipagent noS84appserv ※ 便利(略) mv S16boot.server noS16boot.server mv S50apache noS50apache mv S52imq noS52imq mv S80mipagent noS80mipagent mv S84appserv noS84appserv ・ 新管理体系(SMF)下のdaemonを調整する。 動いているものの一覧 → svcs とにかく全部 → svcs -a 動かす → svcadm enable xxx 止める → svcadm disable xxx 止めるもの cde-login (既に止まってる) cde-printinfo fc-cache stfsloader ogl-select rpc_ticotsord rpc/bind rpc/cde-calendar-manager rpc/cde-ttdbserver rpc/gss rpc/smserver volfs ktkt_warn kdmconfig tnctl ppd-cache-update rpc/bind rpc/gss rpc/meta rpc/rstat rpc/mdcomm rpc/metamed rpc/metamh rpc/smserver rpc/rusers rpc_ticotsord nfs/rquota nfs/client nfs/nlockmgr nfs/mapid nfs/status nfs/cbd ipp-listener rfc1179 volfs autofs * 既に止まっている筈。 route finger login:rlogin shell:default seaport snmpdx dmi wbem webmin sma stdiscover stlisten webconsole iscsi/initiator smtp:sendmail * とりあえず止める。 sendmail-client * とりあえず止める。 ssh * とりあえずtelnetdが動いているので一旦止める。ただしsetup中も外に晒しているサーバの場合は別、、、。 ※ 便(略) svcadm disable cde-printinfo svcadm disable fc-cache svcadm disable stfsloader svcadm disable ogl-select svcadm disable rpc_ticotsord svcadm disable rpc/bind svcadm disable rpc/cde-calendar-manager svcadm disable rpc/cde-ttdbserver svcadm disable rpc/gss svcadm disable rpc/smserver svcadm disable volfs svcadm disable ktkt_warn svcadm disable kdmconfig svcadm disable tnctl svcadm disable ppd-cache-update svcadm disable rpc/bind svcadm disable rpc/gss svcadm disable rpc/meta svcadm disable rpc/rstat svcadm disable rpc/mdcomm svcadm disable rpc/metamed svcadm disable rpc/metamh svcadm disable rpc/smserver svcadm disable rpc/rusers svcadm disable rpc_ticotsord svcadm disable nfs/rquota svcadm disable nfs/client svcadm disable nfs/nlockmgr svcadm disable nfs/mapid svcadm disable nfs/status svcadm disable nfs/cbd svcadm disable ipp-listener svcadm disable rfc1179 svcadm disable volfs svcadm disable route svcadm disable finger svcadm disable login:rlogin svcadm disable shell:default svcadm disable seaport svcadm disable snmpdx svcadm disable dmi svcadm disable wbem svcadm disable webmin svcadm disable sma svcadm disable stdiscover svcadm disable stlisten svcadm disable webconsole svcadm disable iscsi/initiator svcadm disable smtp:sendmail svcadm disable sendmail-client svcadm disable ssh 参考 : http://solaris-user.com/solaris10_smf/svcs_svcadm_basic.html ・ tcp-wrappersの設定を行う。 /etc/hosts.allow /etc/hosts.deny を作成する。 ※ いまの世の中、hosts.denyには「ALL : ALL」と「基本禁止」を設定し、hosts.allowで許可アドレスを書くのが普通。 ※ 127.0.0.1をALL許可にするのを忘れないこと。 ・ tcp-wrappersをenableにする。 ※ 「inetadm -p」で初期状態では「FALSE」になっていることを確認。 inetadm -M tcp_wrappers=TRUE 個人的には「bind_addr="192.168.1.1"」のように固定するのが趣味。 ただ、、、複数アドレスをバインドする方法がどうしても判らない。^^; ※ 「inetadm -p」で設定されたかどうかを確認。 ・ パスワードの強化。 Solarisのパスワードはデフォルトで8文字までしか認識されないので、これを 拡張する。 # cd /etc/security # diff policy.conf.orig policy.conf 31c31 < CRYPT_DEFAULT=__unix__ --- > CRYPT_DEFAULT=1 # ※ この設定は「次回のパスワードの更新の際にハッシュではなくMD5で格納する」と いうことでしかない。そのため、この設定の後、個々のアカウントに対して パスワードの変更処理を行う必要がある。 もちろん、同一のパスワードを上書きするだけでもかまわない。 現段階では「root」と(先の例に従えば)「hoge」の2アカウントがある筈。 ★ この状態で、インターネットに晒しても大丈夫なサーバとなっている、、、筈。 netstat -na で見てみると結構気持ちいい。:-) ★ なお、個人的趣味でshellは/usr/bin/tcshを使っているが、これは単なる趣味。 /bin/shだろうが/usr/bin/kshだろうが/usr/bin/zshだろうがお好きにどうぞ。 ・ ここで一旦reboot。svcs -a の legacy_runの整合を取る。 init 6 5. GNUその他フリーウェア入れ ★ 基本的に、いったん「./configure」を行った後であれば「make distclean」で 再度ゼロから「./configure」を行うことができる。 ★ sourceは「gtar xvfz ソースファイル名.tar.gz」で展開するのが楽。 ・ まずはpathを通す。今回は以下の通りでうまく行った。 ~/bin:/usr/local/bin:/usr/local/sbin:/usr/local/etc:/usr/local/ssl/bin:/usr/bin:/usr/ucb:/usr/sbin:/usr/ccs/bin:/usr/dt/bin:/usr/sfw/bin:/opt/sfw/bin:/usr/sfw/sbin:/opt/sfw/sbin:/usr/sfw/sbin ※ .bashrcとか.cshrcとかに書くと便利。 ※ GNUのツールを入れるまでは例えば「gtar」「gmake」で行う。標準装備のgtarは1.23でbz2も展開可能。gmakeは3.80。 ※ 個々のinstall後には(csh等の場合は)必ずrehashすること。 ・ 基本的にオブジェクトは /usr/local/bin /usr/local/sbin /usr/local/lib 等に自動的に入る。というわけで、/usr/local の下にまとめるという意味で、コンパイルは /usr/local/src/ディレクトリ で行う。またsourceそのものは /usr/local/src/archives に入れることとする。 ・ GNUのsourceは ftp://ftp.iij.ad.jp/pub/gnu/gnu/ が便利だが、プライマリ サイトではないためlatestなものが無いこともあるので注意。 ・ 試行錯誤のためにHDを「とっとく」。VMware上でクローニングを行った。 BBtest99-Sol10 という名前で取っておいた(どうでもいい話)。 ※ gccに先立ち、いろんなものを準備する。 ・ wgetでtar ballを持って来るために、http proxyの設定を行う。 ※ これは通常は不要であろう。 cd /etc 必要なら cp -p wgetrc wgetrc.orig vi wgetrc https_proxy = http://proxy.server:port/ http_proxy = http://proxy.server:port/ ftp_proxy = http://proxy.server:port/ use_proxy = on ・ とりあえずmultilib環境を出来る限り維持する方針とする。ただしいわゆる「バイナリコマンド」(シェルから呼び出したりするもの)は32bitでも64bitでも関係無いので、ある意味適当にすることにする。:-) ・ このディストリビューションは、例えば /usr/lib 32bit /usr/lib/64 64bit というような構造になっているので、これも出来るだけ踏襲する。 ・ 今回インストールするライブラリもSolaris標準に則り /usr/local/lib ← 32bit版 /usr/local/lib/64 ← 64bit版 という構造を堅持する。オブジェクトはなかなか自動的には入ってくれないので、力技で移動させる。 ・ 最初に LD_LIBRARY_PATH の類を設定する。 mkdir -p /usr/local/lib/amd64 cd /usr/local/lib ln -s . 32 ln -s amd64 64 crle -l /usr/local/lib:/usr/local/ssl/lib:/usr/lib:/lib:/usr/openwin/lib:/usr/sfw/lib:/opt/sfw/lib crle -64 -l /usr/local/lib/64:/usr/local/lib:/usr/local/ssl/lib/64:/usr/local/ssl/lib:/usr/lib/64:/usr/lib:/lib/64:/lib:/usr/openwin/lib/64:/usr/sfw/lib/64:/usr/sfw/lib:/opt/sfw/lib ★ 環境変数 LD_LIBRARY_PATH および LD_LIBRARY_PATH_64 に、上記をそれぞれ設定する。~/.cshrc等に書くと便利。 ※ ここで再起動してこの変更を全daemonに適用する。 init 6 ※ コンパイルのため、ローカルの環境変数 LD_LIBRARY_PATH_64 を一時的に削除する。 setenv zzzz64 $LD_LIBRARY_PATH_64 unsetenv LD_LIBRARY_PATH_64 ・ binutils-2.20.1 cd /usr/local/src/binutils-2.20.1 ./configure gmake gmake check ← ノーエラーだった。 gmake install rehash ・ gmp-4.3.2 64bit版 ※ mpfr-2.4.2はgmp-5.x.xに未対応。 cd /usr/local/src/gmp-4.3.2-64 ./configure --libdir=/usr/local/lib/amd64 --includedir=/usr/local/include/amd64 gmake gmake check ← ノーエラーだった。 gmake install mv /usr/local/include/gmp.h /usr/local/include/amd64 ※ --includedirを指定していてディレクトリは作成されるのに入ってくれない。 ・ gmp-4.3.2 32bit版 cd /usr/local/src/gmp-4.3.2-32 ./configure ABI=32 gmake gmake check ← ノーエラーだった。 gmake install ・ mpfr-2.4.2 64bit版 ※ mpfrは http://www.mpfr.org/mpfr-current/#download から。 cd /usr/local/src/mpfr-2.4.2-64 ./configure --enable-thread-safe --libdir=/usr/local/lib/amd64 --includedir=/usr/local/include/amd64 --with-gmp-lib=/usr/local/lib/amd64 --with-gmp-include=/usr/local/include/amd64 CC='gcc -m64' gmake gmake check ← ノーエラーだった。 gmake install ・ mpfr-2.4.2 32bit版 cd /usr/local/src/mpfr-2.4.2-32 ./configure --enable-thread-safe gmake gmake check ← ノーエラーだった。 gmake install ・ libiconv-1.13.1 64bit版 cd /usr/local/src/libiconv-1.13.1-64 ※ /bin/printfのバグを回避する。 ※ http://sunsolve.sun.com/search/document.do?assetkey=1-1-6550204-1 より。 ※ 全部で3行修正する。 ※ 変更点は、各行それぞれ1ヶ所のみ。最初の「%010000」を「%.10000」に(%と1の間のゼロをピリオドに)する。 cd tests vi check-subst diff check-subst check-subst.orig 55c55 < if printf 'B<0x%.10000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok 2>/dev/null; then --- > if printf 'B<0x%010000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok 2>/dev/null; then 100c100 < if printf 'Bse Bbchen\n' 0x00F6 0x00FC > tmp-ok 2>/dev/null; then --- > if printf 'Bse Bbchen\n' 0x00F6 0x00FC > tmp-ok 2>/dev/null; then 109c109 < if printf 'B<0x%.10000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok 2>/dev/null; then --- > if printf 'B<0x%010000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok 2>/dev/null; then cd .. ./configure --enable-relocatable --enable-extra-encodings --libdir=/usr/local/lib/amd64 gl_cv_solaris_64bit=yes CC='gcc -m64' gmake gmake check ← ノーエラーだった。 gmake install rehash ・ libiconv-1.13.1 32bit版 cd /usr/local/src/libiconv-1.13.1-32 cd tests vi check-subst diff check-subst check-subst.orig 55c55 < if printf 'B<0x%.10000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok 2>/dev/null; then --- > if printf 'B<0x%010000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok 2>/dev/null; then 100c100 < if printf 'Bse Bbchen\n' 0x00F6 0x00FC > tmp-ok 2>/dev/null; then --- > if printf 'Bse Bbchen\n' 0x00F6 0x00FC > tmp-ok 2>/dev/null; then 109c109 < if printf 'B<0x%.10000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok 2>/dev/null; then --- > if printf 'B<0x%010000x><0x%010000x>se B<0x%010000x><0x%010000x>bchen\n' 0xC3 0xB6 0xC3 0xBC > tmp-ok 2>/dev/null; then cd .. ./configure --enable-relocatable --enable-extra-encodings gmake gmake check ← ノーエラーだった。 gmake install rehash ・ mpc-0.8.2 64bit版 ※ http://www.multiprecision.org/ より。 cd /usr/local/src/mpc-0.8.2-64 ./configure --libdir=/usr/local/lib/amd64 --includedir=/usr/local/include/amd64 --with-gmp-lib=/usr/local/lib/amd64 --with-mpfr-lib=/usr/local/lib/amd64 CC='gcc -m64' gmake gmake check ← ノーエラーだった。 gmake install ・ mpc-0.8.2 32bit版 cd /usr/local/src/mpc-0.8.2-32 ./configure gmake gmake check ← ノーエラーだった。 gmake install HOGE!!!! ・ make-3.82 ※ gccのmake checkの為に必要? cd /usr/local/src/make-3.82 ./configure gmake gmake check ← ノーエラーだった。 gmake install rehash ・ m4-1.4.15 ※ gccのmake checkの為に必要? cd /usr/local/src/m4-1.4.15 ./configure make make check ← ノーエラーだった。 make install rehash ・ autoconf-2.68 ※ /opt/sfw/bin/autoconfは2.59で古いため、2.62を要求するlibtool-2.4を作れない。 cd /usr/local/src/autoconf-2.68 ./configure make make check ← ノーエラーだった。486まである。18分かかった。^^; make install rehash ・ automake 1.11.1 ※ libtool-2.4のmake checkのため。 cd /usr/local/src/automake-1.11.1 ※ make checkを通すために2か所修正する(いいのか?)。 cd tests vi spy.test # diff spy.test.orig spy.test 83c83 < : > a --- > cp /dev/null a 90c90 < : > a --- > cp /dev/null a # cd .. ./configure make make check ← それなりの時間を要する(DL380G6+ESX4で40分強)。 make install rehash ・ libtool-2.4 64bit版 ※ gccのmake checkの為に必要。 cd /usr/local/src/libtool-2.4-64 ./configure --bindir=/usr/local/bin/amd64 --libdir=/usr/local/lib/amd64 CC='gcc -m64' CXX='g++ -m64' make make check make install rehash ・ libtool-2.4 32bit版 cd /usr/local/src/libtool-2.4-32 ./configure make make check make install rehash ・ readline-6.1p2 64bit版 ※ guile-1.8.7に「readlineが古過ぎる」と怒られないように。 cd /usr/local/src/readline-6.1-64 ※ 2つのパッチを当てる。 gpatch -p0 < readline61-001 gpatch -p0 < readline61-002 ./configure --bindir=/usr/local/bin/amd64 --libdir=/usr/local/lib/amd64 CC='gcc -m64' CXX='g++ -m64' ./configure --libdir=/usr/local/lib/amd64 CC='gcc -m64' make ※ readlineには make check が無いようだ。 make install rehash ・ readline-6.1p2 32bit版 cd /usr/local/src/readline-6.1-32 ./configure make make install rehash HOGE!!!! ・ guile-1.8.7 64bit版 ※ autogenに必要。 cd /usr/local/src/guile-1.8.7-64 ※ guileはどうもmultilibに綺麗に対応していないようなので、環境変数をいぢる。 ※ この時点ではLD_LIBRARY_PATH_64は退避させたままの筈。 setenv zzzz32 $LD_LIBRARY_PATH setenv LD_LIBRARY_PATH $zzzz64 http://mail-index.netbsd.org/pkgsrc-users/2010/04/17/msg012050.html ./configure --libdir=/usr/local/lib/amd64 --bindir=/usr/local/bin/amd64 --disable-error-on-warning CC='gcc -m64' make make check * test-asmobsでFAILするが、どうもこの版の仕様らしい。 * http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg727437.html make install ※ LD_LIBRARY_PATHを戻す。 setenv LD_LIBRARY_PATH $zzzz32 rehash ・ guile-1.8.7 32bit版 cd /usr/local/src/guile-1.8.7-32 ./configure --libdir=/usr/local/lib/amd64 --bindir=/usr/local/bin/amd64 CC='gcc -m64' ./configure --enable-error-on-warning=no ./configure --disable-error-on-warning make make check * test-asmobsでFAILする。 make install rehash ・ sed-4.2.1 ※ autogenを作成するにあたり、Solaris10の/usr/bin/sedではエラーが出る。 cd /usr/local/src/sed-4.2.1 ./configure make make check make install rehash ・ autogen-5.11.1-64 ※ gccのcheckに必要。 cd /usr/local/src/autogen-5.11.1-64 ※ autogenもどうもmultilibに綺麗に対応していないようなので、環境変数をいぢる。 ※ この時点ではLD_LIBRARY_PATH_64は退避させたままの筈。 setenv LD_LIBRARY_PATH $zzzz64 ※ make checkを通すべく小細工する。(csh系じゃなければもっと簡単) cd autoopts/test foreach FILE ( *test ) foreach? cp -p $FILE $FILE.orig foreach? sed -e "1s/sh/zsh/" $FILE.orig > $FILE foreach? end cd ../../agen5/test foreach FILE ( *test ) foreach? cp -p $FILE $FILE.orig foreach? sed -e "1s/sh/zsh/" $FILE.orig > $FILE foreach? end cd ../../doc vi mk-agen-texi-in # diff mk-agen-texi-in.orig mk-agen-texi-in 71c71 < sed s/^/-I/ ` --- > sed -e "s/^/-I/" ` # cd .. ./configure --libdir=/usr/local/lib/amd64 --bindir=/usr/local/bin/amd64 --with-libguile=/usr/local/lib/amd64 CC='gcc -m64' make ← エラーで落ちる。 make clean make ← なぜか2回目にはエラーが出ない。^^; make check ← FAILが3つ出るがとりあえず無視(いいのか?)。 make install rehash ・ autogen-5.11.1-32 cd /usr/local/src/autogen-5.11.1-32 cd autoopts/test foreach FILE ( *test ) foreach? cp -p $FILE $FILE.orig foreach? sed -e "1s/sh/zsh/" $FILE.orig > $FILE foreach? end cd ../../agen5/test foreach FILE ( *test ) foreach? cp -p $FILE $FILE.orig foreach? sed -e "1s/sh/zsh/" $FILE.orig > $FILE foreach? end cd ../../doc vi mk-agen-texi-in # diff mk-agen-texi-in.orig mk-agen-texi-in 71c71 < sed s/^/-I/ ` --- > sed -e "s/^/-I/" ` # cd .. ./configure make ← エラーで落ちる。 make clean make ← なぜか2回目にはエラーが出ない。^^; ※ 追及は今度。^^;;; make check ← FAILが3つ出るがとりあえず無視(いいのか?)。 make install ※ LD_LIBRARY_PATHを戻す。 setenv LD_LIBRARY_PATH $zzzz32 rehash ※ LD_LIBRARY_PATH_64を戻す。 setenv LD_LIBRARY_PATH_64 $zzzz64 unsetenv zzzz64 ・ dejagnu-1.4.4 ※ gcc-4.5.1のmake checkで使う。 cd /usr/local/src/dejagnu-1.4.4 ./configure ※ dejagnuにはmakeもへったくれもない。:-) make install rehash ・ top-3.8beta1 ※ /opt/sfw/bin/top はどうも64bitイメージをうまく認識できないようなので入替。 http://www.unixtop.org/ より。 cd /usr/local/src/top-3.8beta1 ./configure make ★ make check の類は実装されていないようだ。 make install rehash ・ gcc-4.5.1 ※ 何はともあれ C と C++ が無いと話が進まないので、まず作る。 ※ 4.5以降は更に沢山の下準備が必要なため、4.4.4を使用する。 mkdir /usr/local/src/gccobj1 cd /usr/local/src/gccobj1 ../gcc-4.4.4/configure --enable-bootstrap --enable-shared --with-gnu-ld --with-gnu-as --enable-languages=c,c++ ../gcc-4.5.1/configure --enable-bootstrap --enable-shared --with-gnu-ld --with-gnu-as --enable-languages=c,c++ CONFIG_SHELL=/bin/ksh make bootstrap ※ gcc.c-torture/compile/limits-exprparen.c がFAILしないようにスタックを一時的に広げる。 ※ http://old.nabble.com/gcc.c-torture-compile-limits-exprparen.c-Out-of-stack-space.-td21128940.html より。 ulimit -S -s unlimited make check make install rehash * Sun謹製gccを抜いてしまう。 pkgrm SUNWgcc Do you want to remove this package? [y,n,?,q] 「y」 Do you want to continue with the removal of this package [y,n,?,q] 「y」 pkgrm SUNWbinutils Do you want to remove this package? [y,n,?,q] 「y」 ・ mpc-0.8.2 64bit版 ※ http://www.multiprecision.org/ より。 cd /usr/local/src/mpc-0.8.2-64 ./configure --with-gmp-include=/usr/local/include/amd64 --with-gmp-lib=/usr/local/lib/64 --libdir=/usr/local/lib/64 CFLAGS="-g -O2 -m64" ./configure --libdir=/usr/local/lib/amd64 --includedir=/usr/local/include/amd64 CC='gcc -m64' gmake setenv zzzzzzzz $LD_LIBRARY_PATH_64 setenv LD_LIBRARY_PATH_64 /usr/local/src/mpc-0.8.2-64/src/.libs:$zzzzzzzz gmake check ← errorは出ない筈。 setenv LD_LIBRARY_PATH_64 $zzzzzzzz unsetenv zzzzzzzz gmake install ・ mpc-0.8.2 32bit版 cd /usr/local/src/mpc-0.8.2-32 ./configure --with-gmp=/usr/local gmake gmake check ← errorは出ない筈。 gmake install ・ gcc-4.5.0 cd /usr/local/lib/gcc-obj45 ../gcc-4.5.0/configure --enable-bootstrap --enable-shared --with-gnu-ld --with-gnu-as --enable-languages=c,c++ gmake bootstrap HOGE!!!! ・ top-3.8beta1 ※ /opt/sfw/bin/top はどうも64bitイメージをうまく認識できないようなので入替。 http://www.unixtop.org/ より。 cd /usr/local/src/top-3.8beta1 ./configure gmake ★ gmake check の類は実装されていないようだ。 gmake install rehash ※ 元々のtopを抜く。 pkgrm SFWtop Do you want to remove this package? [y,n,?,q] 「y」 ・ openssl-1.0.0a 32bit版 * バグに早期対応できるようソースから入れる。 http://www.openssl.org/ より。 cd /usr/local/src/openssl-1.0.0a-32 ./Configure shared solaris-x86-gcc gmake gmake test gmake install ・ openssl-1.0.0a 64bit版 * opensslはsolarisのmultilibに綺麗に対応しているように見える。 cd /usr/local/src/openssl-1.0.0a-64 ./config shared gmake gmake test gmake install rehash ・ named (bind-9.7.1-P2) ※ 折角なので64bitバイナリを作る。 http://www.isc.org/software/bind/ より。 cd /usr/local/src/bind-9.7.1-P2 ※ multilib用に1ヶ所手を入れる。 vi configure $ diff configure configure.orig 23214c23214 < DNS_OPENSSL_LIBS="-L$use_openssl/lib/64 -R$use_openssl/lib/64 -lcrypto" --- > DNS_OPENSSL_LIBS="-L$use_openssl/lib -R$use_openssl/lib -lcrypto" ./configure CC='gcc -m64' gmake ./bin/tests/system/ifconfig.sh up ※ エラーが出るように見えるが気の所為、、、なのか?^^; gmake check ※ 22分かかった。 ./bin/tests/system/ifconfig.sh down gmake install * SMFに登録する。 ※ BIND-yyyymmdd.tar.gz を http://www.getemono.com/contents/ に 置いてあるのでご利用ください。 cp -p dns-serverg /lib/svc/method/ cp -p serverg.xml /var/svc/manifest/network/dns/ svccfg -v import /var/svc/manifest/network/dns/serverg.xml * SUN謹製を削除する。 pkgrm SUNWbind Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWbindr Do you want to remove this package? [y,n,?,q] 「y」 * configファイルその他を作成する。 vi /etc/named.conf * (起動する) svcadm enable dns/serverg ・ make-3.82 cd /usr/local/src/make-3.82 ./configure CFLAGS='-g -m64 -O2' gmake gmake check gmake install rehash # * これでgmakeからは開放されるので、インストールパッケージを抜く。 # pkgrm SUNWgmake # Do you want to remove this package? [y,n,?,q] 「y」 ・ zlib-1.2.5 64bit http://zlib.net/ より。 cd /usr/local/src/zlib-1.2.5-64 ※ Makefile.inを2か所直す。 $ diff makefile.in Makefile.in.orig 153c153 < $(CC) $(CFLAGS) -o $@ example.o -L. -R. $(SHAREDLIBV) --- > $(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDLIBV) 156c156 < $(CC) $(CFLAGS) -o $@ minigzip.o -L. -R. $(SHAREDLIBV) --- > $(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDLIBV) $ ./configure --64 --libdir=/usr/local/lib/64 make make check make install ・ zlib-1.2.5 32bit cd /usr/local/src/zlib-1.2.5-32 ※ こちらのsourceは修正なし。 ./configure make make check make install ・ pcre-8.10 32bit http://www.pcre.org/ より。 cd /usr/local/src/pcre-8.10-32 ./configure --enable-utf8 make make check make install ・ pcre-8.10 64bit http://www.pcre.org/ より。 cd /usr/local/src/pcre-8.10-64 ※ configureを1か所直す。 $ diff configure configure.orig 969c969 < libdir='${exec_prefix}/lib/amd64' --- > libdir='${exec_prefix}/lib' $ ※ make checkのために環境変数を操作する。 $ setenv QZZZ $LD_LIBRARY_PATH_64 $ setenv LD_LIBRARY_PATH_64 ./.libs:$QZZZ ./configure --enable-utf8 CFLAGS='-m64 -O2' CXXFLAGS='-m64 -O2' make make check ※ 操作した環境変数を戻す。 $ setenv LD_LIBRARY_PATH_64 $QZZZ $ unsetenv QZZZ make install ・ grep-2.6.3.tar.gz cd /usr/local/src/grep-2.6.3 ./configure CFLAGS='-g -m64 -O2' make make check ← 3つエラーが出る、、、。 make install rehash # pkgrm SUNWggrp # Do you want to remove this package? [y,n,?,q] 「y」 ・ m4-1.4.14 cd /usr/local/src/m4-1.4.14 ./configure ← m4は32bitでもいいかな、と、、、。 make make check ← 「test-mbrtowc3.sh」で失敗するのは「仕様」らしい、、、。 make install rehash # pkgrm SUNWgm4 # Do you want to remove this package? [y,n,?,q] 「y」 ・ xz-4.999.9beta 32bit http://tukaani.org/xz/ より。 cd /usr/local/src/xz-4.999.9beta-32 ./configure make make check make install rehash ・ xz-4.999.9beta 64bit cd /usr/local/src/xz-4.999.9beta-64 ./configure --libdir=/usr/local/lib/amd64 --disable-assembler CFLAGS='-g -m64 -O2' make make check make install rehash ・ tar-1.22 ※ 1.23はcheckでエラーが出るので見送り。 cd /usr/local/src/tar-1.22 ./configure ← tarも32bitでいいんじゃなかろうかと、、、。 make make check make install rehash pkgrm SUNWgtar Do you want to remove this package? [y,n,?,q] 「y」 ・ binutils-2.20.1 (再作成) ※ 新しいgccで再作成してみたらオブジェクトサイズが2/3ぐらいになったので。 cd /usr/local/src/binutils-2.20.1-02 ./configure make make check ← ノーエラーだった。 make install rehash ・ gcc-4.4.4 (追加) ※ 他の言語(ついでにbinutil更新後のc/c++も)をインストールする。 mkdir /usr/local/src/gccobj2 cd /usr/local/src/gccobj2 ../gcc-4.4.4/configure --enable-bootstrap --enable-shared --with-gnu-ld --with-gnu-as --enable-languages=c,c++,fortran,objc,obj-c++ gmake bootstrap ac_cv_c_bigendian=no gmake check gmake install rehash ・ TCP Wrappers(の一部)をインストールする。 * ある意味本末転倒ではあるが、Sun謹製のTCP Wrappersをきちんと使うため。 ※ ftp://ftp.porcupine.org/pub/security/tcp_wrappers_7.6.tar.gz がオリジナルらしい。 原著者のサイト http://www.porcupine.org/wietse/ から↑にリンクがある。 ただし時代を考え、IPv6パッチ済みのもの ftp://ftp.porcupine.org/pub/security/tcp_wrappers_7.6-ipv6.4.tar.gz を利用する。 cd /usr/local/src/tcp_wrappers_7.6-ipv6.4 http://www.rinneza.com/junya/tech/solaris9_x86/security/tcp_wrappers_7.6_ipv6.4.html に一部を除いて従い、Makefileに下記の変更を加える。 ==================================================================== 47行目のコメントアウトを外す。 REAL_DAEMON_DIR=/usr/sbin 195行目にCC=gccを書き足す。 LIBS="-lsocket -lnsl" RANLIB=echo ARFLAGS=rv VSYSLOG= CC=gcc \ 476行目をコメントアウトする。 #VSYSLOG = -Dvsyslog=myvsyslog 484行目のコメントアウトを外す。 IPV6 = -DHAVE_IPV6 507行目のコメントアウトを外す。 STYLE = -DPROCESS_OPTIONS # Enable language extensions. 547行目のコメントアウトを外す。 DOT= -DAPPEND_DOT 626行目をコメントアウトする。 #PARANOID= -DPARANOID ==================================================================== * まず32bit版を作る。 make sunos5 * 必要なファイルのみコピー(インストール)する。 cp -p libwrap.a /usr/lib/ cp -p tcpd.h /usr/local/include/ * 64bit用に再度Makefileを編集する。 ==================================================================== 675行目のCFLAGSを変更する。 CFLAGS = -O -m64 -DFACILITY=$(FACILITY) $(ACCESS) $(PARANOID) $(NETGROUP) \ ==================================================================== * 64bit版を作る。 make clean make sunos5 * 必要なファイルのみコピー(インストール)する。 cp -p libwrap.a /usr/lib/amd64/ ・ openssh-5.5p1 * up to date なsourceから入れるため、sshをSun謹製から置き換える。 http://www.openssh.com/ より cd /usr/local/src/openssh-5.5p1 ※ configureに1ヶ所パッチを当てる。 $ diff configure configure.orig 16564c16564 < LDFLAGS="-L/usr/local/ssl/lib/64 -L/usr/local/ssl/lib -R/usr/local/ssl/lib/64 -R/usr/local/ssl/lib ${saved_LDFLAGS}" --- > LDFLAGS="-L/usr/local/ssl/lib -R/usr/local/ssl/lib ${saved_LDFLAGS}" $ ./configure --with-tcp-wrappers CC='gcc -m64' make * ユーザ「sshd」およびグループ「sshd」を作成する。 groupadd -g 22 sshd useradd -u 22 -g sshd -d / -m sshd ※ わたしは/etc/passwdのsshdの行の行末「/bin/sh」を削除したが、そこまでしなくてもいいかもしれない。 make install rehash * SMFに登録する。 ※ sshd-yyyymmdd.tar.gz を http://www.getemono.com/contents/ に 置いてあるのでご利用ください。 cp -p sshdg /lib/svc/method/ cp -p sshdg.xml /var/svc/manifest/network/ svccfg -v import /var/svc/manifest/network/sshdg.xml * /usr/local/etc/sshd_config の設定を行う。 #PermitRootLogin yes ↓ PermitRootLogin no * Sun謹製のopensshを抜く。 pkgrm SUNWsshu Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWsshr Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWsshdu Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWsshdr Do you want to remove this package? [y,n,?,q] 「y」 Do you want to continue with the removal of this package [y,n,?,q] 「y」 pkgrm SUNWsshcu Do you want to remove this package? [y,n,?,q] 「y」 * sshdを起動する。 svcadm enable sshdg ・ Apache 2.2.16 http://www.apache.org/ より。 cd /usr/local/src/httpd-2.2.16 ※ 64bit化のキモは CC='gcc -m64' LDFLAGS='-L/usr/local/ssl/lib/64 -R/usr/local/ssl/lib/64' の2点だ、、、と思う、、、。 ./configure make make install HOGE!!! * Sun謹製Apacheを抜く。 pkgrm SUNWapchd Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWapchu Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWapch2d Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWapch2u Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWapch2r Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWaclg Do you want to remove this package? [y,n,?,q] 「y」 ※ SUNWapchrはIPPとSerwebに関連しているので敢えて放置。 * SMFに登録する。 ※ apache2g-yyyymmdd.tar.gzを http://www.getemono.com/contents/ に 置いてあるので勝手にご利用ください。 cp -p http-apache2g /lib/svc/method/ cp -p http-apache2g.xml /var/svc/manifest/application/ svccfg -v import /var/svc/manifest/application/http-apache2g.xml * apache2を起動する。 svcadm enable apache2g HOGE!!! ・ cppunit-1.12.1-64 ※ Squidのcheckに要る。 setenv zzzz64 $LD_LIBRARY_PATH_64 unsetenv LD_LIBRARY_PATH_64 cd /usr/local/src/cppunit-1.12.1-64 pushd include/cppunit/portability ※ http://sourceforge.net/tracker/?func=detail&aid=2912590&group_id=11795&atid=311795 より。 # diff FloatingPoint.h.orig FloatingPoint.h 6a7,11 > #if defined(__sun) && !defined(CPPUNIT_HAVE_ISFINITE) && defined(CPPUNIT_HAVE_FINITE) > #include > // is still needed for usage of fabs in TestAssert.cpp > #endif > # popd ./configure --bindir=/usr/local/bin/amd64 --libdir=/usr/local/lib/amd64 --includedir=/usr/local/include/amd64 CC='gcc -m64' CXX='g++ -m64' make make check make install setenv LD_LIBRARY_PATH_64 $zzzz64 unsetenv zzzz64 ・ cppunit-1.12.1-32 ※ Squidのcheckに要る。 cd /usr/local/src/cppunit-1.12.1-32 pushd include/cppunit/portability ※ http://sourceforge.net/tracker/?func=detail&aid=2912590&group_id=11795&atid=311795 より。 # diff FloatingPoint.h.orig FloatingPoint.h 6a7,11 > #if defined(__sun) && !defined(CPPUNIT_HAVE_ISFINITE) && defined(CPPUNIT_HAVE_FINITE) > #include > // is still needed for usage of fabs in TestAssert.cpp > #endif > # popd ./configure make make check make install rehash ・ squid-3.1.12-64 cd /usr/local/src/squid-3.1.12-64 ※ どのsourceもみんなSolaris10のx86_64(のmultilib)に冷たい、、、ヽ(;_;)ノ ※ gccが64bitを使えるかどうかのチェックをしているのに、libltdlのコンパイルに「-m64」が反映されないとか、LD_LIBRARY_PATH_64を見てくれないとか、そんなのばっかしヽ(;´o`)丿 ./configure --with-large-files --enable-ssl --with-openssl=/usr/local/ssl CC='gcc -m64' LDFLAGS='-L/usr/local/lib/amd64 -R/usr/local/lib/amd64 -L/usr/local/ssl/lib/amd64 -R/usr/local/ssl/lib/amd64 ※ enable-sslはmake checkをちょっとでも多く通すため、、、。 make make check ← IPv6のところでエラーで終る。 make install * ディレクトリオーナーを変更する。 chown nobody /usr/local/squid/var/cache chown nobody /usr/local/squid/var/logs * SMFに登録する。 ※ squid-yyyymmdd.tar.gz を http://www.getemono.com/contents/ に 置いてあるのでご利用ください。 cp -p squidg /lib/svc/method/ cp -p squidg.xml /var/svc/manifest/network/ svccfg -v import /var/svc/manifest/network/squidg.xml * キャッシュディレクトリを作成する。 /usr/local/squid/sbin/squid -z * 動かす。 svcadm enable squidg ・ autoconf 2.65 cd /usr/local/src/autoconf-2.65 ./configure CFLAGS=-m64 CXXFLAGS=-m64 gmake gmake check ← 439番まであった。15分。 gmake install rehash ・ automake 1.11.1 cd /usr/local/src/automake-1.11.1 ./configure CFLAGS=-m64 CXXFLAGS=-m64 ※ make checkを通すために2か所修正する(cheatですが、、、)。 cd tests # diff instspc.test.orig instspc.test 119c119 < "$bs" "$cr" "$ff" "$ht" "$lf" "$sp" \ --- > "$bs" "$ff" "$ht" "$lf" "$sp" \ # diff spy.test.orig spy.test 83c83 < : > a --- > cp /dev/null a 90c90 < : > a --- > cp /dev/null a # cd .. gmake gmake check ← それなりの時間を要する(DL380G6+ESX4で40分強)。 ※ 概ねABC順(一部順不同あり)にyaccvpath.testまで行った後、再度check-p.testから若干行う。 #pkgrm SFWamake # Do you want to remove this package? [y,n,?,q] 「y」 gmake install rehash ・ libtool-2.2.8 ※ ここはとりあえずサイトの言うとおりにやってみる。 cd /usr/local/src/libtool-2.2.8 ./configure --build=x86_64-pc-solaris2.10 ・ libtool-2.2.6b 64bit版 cd /usr/local/src/libtool-2.2.6b-64 ./configure --libdir=/usr/local/lib/amd64 CFLAGS=-m64 CXXFLAGS=-m64 gmake gmake check ← エラーは出なかった。 gmake install ※ libtoolコマンドだけは32/64で異なるため退避。 cd /usr/local/bin mkdir amd64 cp -p libtool amd64/ ・ libtool-2.2.6b 32bit版 cd /usr/local/src/libtool-2.2.6b-32 ./configure ./configure CFLAGS="-m32 -s -pipe -O2 -I/usr/sfw/include -I/usr/local/include" CXXFLAGS="-m32 -s -pipe -O2 -I/usr/sfw/include -I/usr/local/include" gmake gmake check ← エラーは出なかった。 gmake install rehash ・ mpc-0.8.2 32bit版 ※ http://www.multiprecision.org/ より。 cd /usr/local/src/mpc-0.8.2-32 ./configure --with-gmp=/usr/local gmake gmake check ← errorは出ない筈。 gmake install ・ mpc-0.8.2 64bit版 cd /usr/local/src/mpc-0.8.2-64 ./configure --with-gmp-include=/usr/local/include/amd64 --with-gmp-lib=/usr/local/lib/64 --libdir=/usr/local/lib/64 CFLAGS="-g -O2 -m64" gmake gmake check ← errorは出ない筈。 gmake install ・ gcc-4.5.0 ※ いよいよ本番!gcc-4.5.0を作る。***挫折っヽ(>_<)ノ*** cd /usr/local/src/gcc-4.5.0 参考にしたページ: http://www.sslab.org/wiki/wiki.cgi?page=Solaris+-+Solaris10+x86+-+GCC64bit%BA%C6%C4%A9%C0%EF%A1%AA%A1%AA ものすごく参考になりました。ありがとうございました。 ・ とりあえずsourceにパッチを当てる。 cd gcc vi config.host diff config.host config.host.orig vi config.gcc diff config.gcc config.gcc.orig cd config/i386 vi sol2-10.h cd /usr/local/src/gcc-4.5.0/libgcc vi config.host diff config.gcc config.gcc.orig gcc/Makefile.inのoptions.o \ の行の先に「gcc-options.o」を足す? bbunix0# diff Makefile.in* 1404d1403 < gcc-options.o \ bbunix0# ../gcc-4.5.0/configure --with-gnu-as --with-as=/usr/local/bin/as --without-gnu-ld --with-ld=/usr/ccs/bin/ld --enable-shared --enable-multilib --enable-threads --enable-languages=c,c++ --build=x86_64-pc-solaris2.10 CC="/usr/local/gcc412-64-1st/bin/gcc" CXX="" CFLAGS="-s -pipe -O3 -m64 -I/usr/local/gcc412-64-1st/include -I/usr/local/include" CXXFLAGS="-s -pipe -O3 -m64 -I/usr/local/gcc412-64-1st/include -I/usr/local/include" LDFLAGS="-L/usr/local/gcc412-64-1st/lib -L/usr/local/lib -R/usr/local/gcc412-64-1st/lib -R/usr/local/lib" --with-gmp-lib=/usr/local/lib/64 --with-mpfr-lib=/usr/local/lib/64 --with-mpc-lib=/usr/local/lib/64 bbunix0# diff Makefile* 338c338 < BOOT_CFLAGS= -g -O2 -m64 --- > BOOT_CFLAGS= -g -O2 439c439 < STAGE1_CFLAGS = -g -m64 -fkeep-inline-functions --- > STAGE1_CFLAGS = -g -fkeep-inline-functions bbunix0# ・ coreutils-7.4 ※ 作業時点での最新は8.5だったが、とりあえずなので実績のあるものを。 * これを入れると、いわゆる「Solarisの癖」は通常使用の範囲では殆ど無くなる。 * 要するに、ls cp mv 等のコマンドを Linux 等で使用しているもので入れ換える。 ※ ただし、ここで入れるのはlibtoolのため。gmake checkのエラーが消える。 cd /usr/local/src/coreutils-7.4 ./configure --disable-assert CFLAGS=-m64 CPPFLAGS=-m64 gmake ※ 今の段階では次のcheckでls/color-clear-to-eolがFAILになってしまうので、一か所パッチを当てる。 cd tests/ls diff color-clear-to-eol color-clear-to-eol.orig 38c38 < gsed 's/.*T //' out > k && mv k out --- > sed 's/.*T //' out > k && mv k out cd ../.. gmake check * 「test-mbrtowc3.sh」で FAIL になる(coreを吐く)けどとりあえず無視。^^;;;; gmake install rehash # pkgrm SFWcoreu # Do you want to remove this package? [y,n,?,q] 「y」 ・ guile-1.8.7 ※ autogenに必要。 cd /usr/local/src/guile-1.8.7 http://mail-index.netbsd.org/pkgsrc-users/2010/04/17/msg012050.html まだだめだ、、、。 ./configure --libdir=/usr/local/lib/amd64 LDFLAGS=-L/usr/local/lib/amd64 CFLAGS=-m64 CPPFLAGS=-m64 make make check * test-listの次(test-unwind)でループする、、、^^; make install * とりあえず入れてみる。^^; rehash HOGE!! ・ autogen-5.9.8 ・ autogen-5.10.1 ※ gccのcheckに必要。なおautogen-5.10.1はguileが要るためmake出来なかった。 cd /usr/local/src/autogen-5.9.8 ./configure CFLAGS=-m64 gmake gmake check ← FAILが3つ出るがここでは無視(いいのか?)。 gmake install rehash ・ mpc-0.8.1 ※ gcc-4.5以降は要るらしい。 http://www.multiprecision.org/ cd /usr/local/src/mpc-0.8.1 ./configure CFLAGS=-m64 gmake gmake check ← no error gmake install rehash ・ gcc-4.5.0 ※ 何はともあれ C と C++ が無いと話が進まないので、まず作る。 できない〜!ヽ(>_<)ノ mkdir /usr/local/src/gccobj cd /usr/local/src/gccobj ../gcc-4.5.0/configure --enable-bootstrap --enable-shared --with-gnu-ld --with-gnu-as --build=x86_64-pc-solaris2.10 --enable-languages=c,c++ CFLAGS=-m64 gmake bootstrap ac_cv_c_bigendian=no gmake check gmake install rehash * Sun謹製gccを抜いてしまう。 pkgrm SUNWgcc Do you want to remove this package? [y,n,?,q] 「y」 Do you want to continue with the removal of this package [y,n,?,q] 「y」 pkgrm SUNWbinutils Do you want to remove this package? [y,n,?,q] 「y」 ・ coreutils-7.4.tar.gz (7.6だとエラーが2つに増えた、、、) * これを入れると、いわゆる「Solarisの癖」は通常使用の範囲では殆ど無くなる。 * 要するに、ls cp mv 等のコマンドを Linux 等で使用しているもので入れ換える。 cd /usr/local/src/coreutils-7.4 ./configure --with-gnu-ld --disable-assert (./configure --with-gnu-ld --disable-assert ac_cv_func_mbrtowc=no) make make check * 「test-mbrtowc3.sh」で FAIL になるけど面倒なので無視。^^;;;; make install pkgrm SFWcoreu Do you want to remove this package? [y,n,?,q] 「y」 ・ gdbm-1.8.3.tar.gz /usr/local/src/gdbm-1.8.3 ./configure make * gdbmにはmake checkが無い。 make install ・ sed-4.2 (4.2.1) cd /usr/local/src/sed-4.2 ./configure make make check make install rehash pkgrm SFWsed Do you want to remove this package? [y,n,?,q] 「y」 ・ gawk-3.1.6 (3.1.7もOKだった) cd /usr/local/src/gawk-3.1.6 ./configure make make check make install rehash pkgrm SFWgawk Do you want to remove this package? [y,n,?,q] 「y」 ・ findutils-4.4.2 * gcjに必須っぽい、、、。 cd /usr/local/src/findutils-4.4.2 ./configure --with-gnu-ld make make check make install rehash pkgrm SFWgfind Do you want to remove this package? [y,n,?,q] 「y」 ※ ↓gccの残りは要らんかも。 ・ 基本環境がほぼ出揃ったので、もっぺんgcc。今度はデフォルトの「c,c++,fortran,java,objc」。 mkdir /usr/local/src/gccobj2 cd /usr/local/src/gccobj2 ../gcc-4.4.1/configure --enable-bootstrap --enable-shared --with-gnu-ld --with-gnu-as make bootstrap ac_cv_c_bigendian=no * 再度bootstrapするのは環境設定済の環境下でcとc++を再構築するため。意味があるか どうかは、、、不明。^^; make check ← boehm-gcのエラーが出る、、、。^^; make install rehash ・ perl-5.10.1 * こいつのインストールはちょっと面倒です。 ftp://ftp.iij.ad.jp/pub/lang/perl/CPAN/src/5.0/ より。 cd /usr/local/src/perl-5.10.1 * 次行の C は大文字。 ./Configure [Type carriage return to continue] (Enter) [Type carriage return to continue] (Enter) (2回目) [Type carriage return to continue] (Enter) (3回目) Which of these apply, if any? [solaris_2] (Enter) Operating system name? [solaris] (Enter) Operating system version? [2.10] (Enter) Installation prefix to use? (~name ok) [/usr/local] (Enter) What installation prefix should I use for installing files? (~name ok) [/usr/local] (Enter) Build Perl for SOCKS? [n] (Enter) Use the PerlIO abstraction layer? [y] (Enter) * 次行は通常「n」のままにしないと、例えば書籍のスクリプト等が動かないことがある。ただし 例えばsendmailのフィルタを書くなどスレッド利用スクリプトを作ろうとするのであれば 「y」にする必要がある。もちろん凝ったcgi等も然り。 Build a threading Perl? [n] 「y (Enter)」 Use which C compiler? [cc] 「gcc (Enter)」 [/usr/local/lib /usr/lib /usr/ccs/lib] 「/usr/local/lib/64 /usr/local/lib /usr/local/ssl/lib/64 /usr/local/ssl/lib /usr/lib/64 /usr/lib /lib/64 /lib /usr/openwin/lib/64 /usr/sfw/lib/64 /usr/sfw/lib /opt/sfw/lib (Enter)」 What is the file extension used for shared libraries? [so] (Enter) * Long Doubleは、あったら便利。 Try to use long doubles if available? [n] 「y (Enter)」 What libraries to use? [-lsocket -lnsl -lgdbm -ldl -lm -lpthread -lc] (Enter) What optimizer/debugger flag should be used? [-O] (Enter) Any additional cc flags? [-D_REENTRANT -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include] (Enter) Any additional ld flags (NOT including libraries)? [ -fstack-protector -L/usr/local/lib] (Enter) Try to use 64-bit integers, if available? [n] 「y (Enter)」 Try to use maximal 64-bit support, if available? [n] 「y (Enter)」 What is your architecture name [i86pc-solaris] (Enter) [/usr/local/bin] (Enter) Use relocatable @INC? [n] (Enter) Pathname where the private library files will reside? (~name ok) [/usr/local/lib/perl5/5.10.1] (Enter) Where do you want to put the public architecture-dependent libraries? (~name ok) [/usr/local/lib/perl5/5.10.1/i86pc-solaris-thread-multi-64] (Enter) Other username to test security of setuid scripts with? [none] (Enter) Does your kernel have *secure* setuid scripts? [y] (Enter) Installation prefix to use for add-on modules and utilities? (~name ok) [/usr/local] (Enter) Pathname for the site-specific library files? (~name ok) [/usr/local/lib/perl5/site_perl/5.10.1] (Enter) List of earlier versions to include in @INC? [none] (Enter) Do you wish to wrap malloc calls to protect against potential overflows? [y] (Enter) Do you wish to attempt to use the malloc that comes with perl5? [n] (Enter) Pathname for the site-specific architecture-dependent library files? (~name ok) [/usr/local/lib/perl5/site_perl/5.10.1/i86pc-solaris-thread-multi-64] (Enter) Do you want to configure vendor-specific add-on directories? [n] (Enter) Colon-separated list of additional directories for perl to search? [none] (Enter) | Support DTrace if available? [n] (Enter) Install any extra modules (y or n)? [n] (Enter) * PerlのヘルプWebコンテンツをインストールするのであればディレクトリ名を入れる。 Directory for the main Perl5 html pages? (~name ok) [none] (Enter) * 同上 Directory for the Perl5 module html pages? (~name ok) [none] (Enter) * デフォルトのperlを置き換えるのはお薦めしない、、、。 Do you want to install perl as /usr/bin/perl? [n] (Enter) Shall I use /usr/local/bin/nm to extract C symbols from the libraries? [y] (Enter) Where is your C library? [/lib/libc.so] 「/lib/amd64/libc.so (Enter)」 Do you wish to use dynamic loading? [y] (Enter) Source file to use for dynamic loading [ext/DynaLoader/dl_dlopen.xs] (Enter) Any special flags to pass to gcc -m64 -c to compile shared library modules? [-fPIC] (Enter) What command should be used to create dynamic libraries? [gcc] (Enter) Any special flags to pass to gcc -m64 to create a dynamically loaded library? [ -Wl,-E -G -G -m64 -L/usr/local/lib -fstack-protector] 「-Wl,-E -G -G -m64 -L/usr/local/lib/64 -L/usr/local/lib -fstack-protector (Enter)」 Any special flags to pass to gcc to use dynamic linking? [ -Wl,-E] (Enter) * libperl.so は、折角なので作っておく。 Build a shared libperl.so (y/n) [n] 「y (Enter)」 What name do you want to give to the shared libperl? [libperl.so] (Enter) Where do the main Perl5 manual pages (source) go? (~name ok) [/usr/local/share/man/man1] (Enter) What suffix should be used for the main Perl5 man pages? [1] (Enter) Where do the perl5 library man pages (source) go? (~name ok) [/usr/local/share/man/man3] (Enter) What suffix should be used for the perl5 library man pages? [3] (Enter) * hostnameを確認する。間違っていたら直すが、、、その場合は別のどこかがおかしい、、、。 Your host name appears to be "jptyo9999". Right? [y] (Enter) * 前項とほぼ同じ。ただしもちろんDNS設定が必須。 What is your domain name? [.example.com] (Enter) * この項は「到達可能なメイルアドレス」を入れるべきである。 What is your e-mail address? [hoge@jptyo9999.example.com] 「hoge@example.co.jp (Enter)」 * このPerlの担当責任者のメイルアドレスを入力する。 前項の値を引き継ぐが、別人設定することも可。 Perl administrator e-mail address [hoge@example.co.jp] (Enter) Do you want to install only the version-specific parts of perl? [n] (Enter) What shall I put after the #! to start up perl ("none" to not use #!)? [/usr/local/bin/perl] (Enter) Where do you keep publicly executable scripts? (~name ok) [/usr/local/bin] (Enter) Pathname where the add-on public executables should be installed? (~name ok) [/usr/local/bin] (Enter) Pathname where the site-specific html pages should be installed? (~name ok) [none] (Enter) Pathname where the site-specific library html pages should be installed? (~name ok) [none] (Enter) Pathname where the site-specific manual pages should be installed? (~name ok) [/usr/local/share/man/man1] (Enter) Pathname where the site-specific library manual pages should be installed? (~name ok) [/usr/local/share/man/man3] (Enter) Pathname where add-on public executable scripts should be installed? (~name ok) [/usr/local/bin] (Enter) Use the "fast stdio" if available? [n] (Enter) HOGE!!! Try to understand large files, if available? [y] (Enter) What is the extension of dynamically loaded modules [so] (Enter) * 次項、インターネットから隔離されているマシンの場合は「y」の方がいいかもしれない、、、。 Shall I ignore gethostname() from now on? [n] (Enter) Do you still want to use vfork()? [n] (Enter) Doubles must be aligned on a how-many-byte boundary? [8] (Enter) Use which function to generate random numbers? [drand48] (Enter) What type pointer is the second argument to getgroups() and setgroups()? [gid_t] (Enter) * この項は時期尚早であろう。 Build Perl with MAD? [n] (Enter) What is the type for the 1st argument to gethostbyaddr? [char *] (Enter) What is the type for the 2nd argument to gethostbyaddr? [size_t] (Enter) What pager is used on your system? [/usr/bin/less] (Enter) What is the type for socket address structure sizes? [int] (Enter) Which compiler compiler (yacc or bison -y) shall I use? [yacc] (Enter) What extensions do you wish to load dynamically? [(長いので略)] (Enter) What extensions do you wish to load statically? [none] (Enter) I see a config.over file. Do you wish to load it? [y] (Enter) Press return or use a shell escape to edit config.sh: (Enter) Run make depend now? [y] (Enter) * 長〜い設問、これで終了。 make make test make install rehash ※ /usr/bin/perl はthreadedではないperlなので残す。 ・ perl-5.12.1 * こいつのインストールはちょっと面倒です。 ftp://ftp.iij.ad.jp/pub/lang/perl/CPAN/src/5.0/ より。 cd /usr/local/src/perl-5.12.1 * 次行の C は大文字。 ./Configure [Type carriage return to continue] (Enter) [Type carriage return to continue] (Enter) (2回目) [Type carriage return to continue] (Enter) (3回目) Which of these apply, if any? [solaris_2] (Enter) Operating system name? [solaris] (Enter) Operating system version? [2.10] (Enter) Installation prefix to use? (~name ok) [/usr/local] (Enter) What installation prefix should I use for installing files? (~name ok) [/usr/local] (Enter) Build Perl for SOCKS? [n] (Enter) Use the PerlIO abstraction layer? [y] (Enter) * 次行は通常「n」のままにしないと、例えば書籍のスクリプト等が動かないことがある。ただし 例えばsendmailのフィルタを書くなどスレッド利用スクリプトを作ろうとするのであれば 「y」にする必要がある。もちろん凝ったcgi等も然り。 Build a threading Perl? [n] 「y (Enter)」 Use which C compiler? [cc] 「gcc -m64 (Enter)」 [/usr/local/lib /usr/lib /usr/ccs/lib] 「/usr/local/lib/64 /usr/local/lib /usr/local/ssl/lib/64 /usr/local/ssl/lib /usr/lib/64 /usr/lib /lib/64 /lib /usr/openwin/lib/64 /usr/sfw/lib/64 /usr/sfw/lib /opt/sfw/lib (Enter)」 What is the file extension used for shared libraries? [so] (Enter) * Long Doubleは、あったら便利。 Try to use long doubles if available? [n] 「y (Enter)」 What libraries to use? [-lsocket -lnsl -lgdbm -ldl -lm -lpthread -lc] (Enter) What optimizer/debugger flag should be used? [-O] (Enter) Any additional cc flags? [-D_REENTRANT -fno-strict-aliasing -pipe -I/usr/local/include] (Enter) Any additional ld flags (NOT including libraries)? [ -fstack-protector -L/usr/local/lib] 「-fstack-protector -L/usr/local/lib/64 -L/usr/local/lib (Enter)」 Try to use maximal 64-bit support, if available? [y] (Enter) What is your architecture name [i86pc-solaris] (Enter) [/usr/local/bin] (Enter) Use relocatable @INC? [n] (Enter) Pathname where the private library files will reside? (~name ok) [/usr/local/lib/perl5/5.12.1] (Enter) Where do you want to put the public architecture-dependent libraries? (~name ok) [/usr/local/lib/perl5/5.12.1/i86pc-solaris-thread-multi-64] (Enter) Other username to test security of setuid scripts with? [none] (Enter) Does your kernel have *secure* setuid scripts? [y] (Enter) Installation prefix to use for add-on modules and utilities? (~name ok) [/usr/local] (Enter) Pathname for the site-specific library files? (~name ok) [/usr/local/lib/perl5/site_perl/5.12.1] (Enter) List of earlier versions to include in @INC? [none] (Enter) Do you wish to wrap malloc calls to protect against potential overflows? [y] (Enter) Do you wish to attempt to use the malloc that comes with perl5? [n] (Enter) Pathname for the site-specific architecture-dependent library files? (~name ok) [/usr/local/lib/perl5/site_perl/5.12.1/i86pc-solaris-thread-multi-64] (Enter) Do you want to configure vendor-specific add-on directories? [n] (Enter) Colon-separated list of additional directories for perl to search? [none] (Enter) | Support DTrace if available? [n] (Enter) Install any extra modules (y or n)? [n] (Enter) * PerlのヘルプWebコンテンツをインストールするのであればディレクトリ名を入れる。 Directory for the main Perl5 html pages? (~name ok) [none] (Enter) * 同上 Directory for the Perl5 module html pages? (~name ok) [none] (Enter) * デフォルトのperlを置き換えるのはお薦めしない、、、。 Do you want to install perl as /usr/bin/perl? [n] (Enter) Shall I use /usr/local/bin/nm to extract C symbols from the libraries? [y] (Enter) Where is your C library? [/lib/libc.so] 「/lib/64/libc.so (Enter)」 Do you wish to use dynamic loading? [y] (Enter) Source file to use for dynamic loading [ext/DynaLoader/dl_dlopen.xs] (Enter) Any special flags to pass to gcc -m64 -c to compile shared library modules? [-fPIC] (Enter) What command should be used to create dynamic libraries? [gcc -m64] (Enter) Any special flags to pass to gcc -m64 to create a dynamically loaded library? [ -Wl,-E -G -G -m64 -L/usr/local/lib/64 -L/usr/local/lib -fstack-protector] 「-Wl,-E -G -m64 -L/usr/local/lib/64 -L/usr/local/lib -fstack-protector -fPIC (Enter)」 Any special flags to pass to gcc to use dynamic linking? [ -Wl,-E] (Enter) * libperl.so は、折角なので作っておく。 Build a shared libperl.so (y/n) [n] 「y (Enter)」 What name do you want to give to the shared libperl? [libperl.so] (Enter) Where do the main Perl5 manual pages (source) go? (~name ok) [/usr/local/share/man/man1] (Enter) What suffix should be used for the main Perl5 man pages? [1] (Enter) Where do the perl5 library man pages (source) go? (~name ok) [/usr/local/share/man/man3] (Enter) What suffix should be used for the perl5 library man pages? [3] (Enter) * hostnameを確認する。間違っていたら直すが、、、その場合は別のどこかがおかしい、、、。 Your host name appears to be "jptyo9999". Right? [y] (Enter) * 前項とほぼ同じ。ただしもちろんDNS設定が必須。 What is your domain name? [.example.com] (Enter) * この項は「到達可能なメイルアドレス」を入れるべきである。 What is your e-mail address? [hoge@example.com] 「hoge@example.co.jp (Enter)」 * このPerlの担当責任者のメイルアドレスを入力する。 前項の値を引き継ぐが、別人設定することも可。 Perl administrator e-mail address [hoge@example.co.jp] (Enter) Do you want to install only the version-specific parts of perl? [n] (Enter) What shall I put after the #! to start up perl ("none" to not use #!)? [/usr/local/bin/perl] (Enter) Where do you keep publicly executable scripts? (~name ok) [/usr/local/bin] (Enter) Pathname where the add-on public executables should be installed? (~name ok) [/usr/local/bin] (Enter) Pathname where the site-specific html pages should be installed? (~name ok) [none] (Enter) Pathname where the site-specific library html pages should be installed? (~name ok) [none] (Enter) Pathname where the site-specific manual pages should be installed? (~name ok) [/usr/local/share/man/man1] (Enter) Pathname where the site-specific library manual pages should be installed? (~name ok) [/usr/local/share/man/man3] (Enter) Pathname where add-on public executable scripts should be installed? (~name ok) [/usr/local/bin] (Enter) Use the "fast stdio" if available? [n] (Enter) Try to understand large files, if available? [y] (Enter) What is the extension of dynamically loaded modules [so] (Enter) * 次項、インターネットから隔離されているマシンの場合は「y」の方がいいかもしれない、、、。 Shall I ignore gethostname() from now on? [n] (Enter) Do you still want to use vfork()? [n] (Enter) Doubles must be aligned on a how-many-byte boundary? [8] (Enter) What is the size of a character (in bytes)? [1] (Enter) What is the length of a character (in bits)? [8] (Enter) Use which function to generate random numbers? [drand48] (Enter) What type pointer is the second argument to getgroups() and setgroups()? [gid_t] (Enter) * この項は時期尚早であろう。 Build Perl with MAD? [n] (Enter) What is the type for the 1st argument to gethostbyaddr? [char *] (Enter) What is the type for the 2nd argument to gethostbyaddr? [size_t] (Enter) What pager is used on your system? [/usr/bin/less -R] 「/usr/bin/less (Enter)」 What is the type for socket address structure sizes? [int] (Enter) Which compiler compiler (yacc or bison -y) shall I use? [yacc] (Enter) What extensions do you wish to load dynamically? [(長いので略)] (Enter) What extensions do you wish to load statically? [none] (Enter) I see a config.over file. Do you wish to load it? [y] (Enter) Press return or use a shell escape to edit config.sh: (Enter) Run make depend now? [y] (Enter) * 長〜い設問、これで終了。 make make test make install rehash ※ /usr/bin/perl はthreadedではないperlなので残す。 ・ dbus-1.0.3 * uuidgenのためだけに入れておく。そのため古い1.0.xを入れる。新しいのは他のものが必要。 http://dbus.freedesktop.org/ より。 ./configure make make check ←エラーが出なければいい、、、ようだ。^^; make install rehash ・ cpanの設定 * perlを実用にするためにはcpanが必須だと思われる。 ★ 長いです! cpan Would you like me to configure as much as possible automatically? [yes] 「no」 CPAN build and cache directory? [/.cpan] (Enter) Download target directory? [/.cpan/sources] (Enter) Directory where the build process takes place? [/.cpan/build] (Enter) Store and re-use state information about distributions between CPAN.pm sessions? [no] (Enter) Directory where to store default options/environment/dialogs for building modules that need some customization? [/.cpan/prefs] (Enter) Always commit changes to config variables to disk? [no] 「yes」 Cache size for build directory (in MB)? [100] (Enter) Let the index expire after how many days? [1] (Enter) Perform cache scanning (atstart or never)? [atstart] (Enter) Cache metadata (yes/no)? [yes] (Enter) Use CPAN::SQLite if available? (yes/no)? [no] (Enter) Policy on building prerequisites (follow, ask or ignore)? [ask] (Enter) Policy on installing 'build_requires' modules (yes, no, ask/yes, ask/no)? [ask/yes] (Enter) Always try to check and verify signatures if a SIGNATURE file is in the package and Module::Signature is installed (yes/no)? [no] (Enter) Email test reports if CPAN::Reporter is installed (yes/no)? [no] (Enter) Do you want to rely on the test report history (yes/no)? [no] (Enter) Which YAML implementation would you prefer? [YAML] (Enter) Do you want to enable code deserialisation (yes/no)? [no] (Enter) Where is your bzip2 program? [/usr/bin/bzip2] (Enter) Where is your gzip program? [/usr/bin/gzip] (Enter) Where is your tar program? [/usr/local/bin/tar] (Enter) Where is your unzip program? [/usr/bin/unzip] (Enter) Where is your make program? [/usr/local/bin/make] (Enter) Where is your curl program? [/opt/sfw/bin/curl] (Enter) Where is your lynx program? [/opt/sfw/bin/lynx] (Enter) Where is your wget program? [/usr/sfw/bin/wget] (Enter) Where is your ncftpget program? [/usr/sfw/bin/ncftpget] (Enter) Where is your ftp program? [/usr/bin/ftp] (Enter) Where is your gpg program? [] (Enter) Where is your patch program? [/usr/bin/patch] (Enter) Where is your applypatch program? [] (Enter) What is your favorite pager program? [/usr/bin/less] (Enter) What is your favorite shell? [/usr/bin/tcsh] (Enter) ←これは各人異なるかも。 Tar command verbosity level (none or v or vv)? [v] (Enter) Verbosity level for loading modules (none or v)? [v] (Enter) Verbosity level for PERL5LIB changes (none or v)? [v] (Enter) Do you want to turn this message off? [no] (Enter) which installer would you prefer (EUMM or MB or RAND)? [MB] (Enter) Parameters for the 'perl Makefile.PL' command? [] (Enter) Your choice: [] -j3 or some such. Your choice: [/usr/local/bin/make] (Enter) Your choice: [-j3] UNINST=1 Parameters for the 'perl Build.PL' command? [] (Enter) Your choice: [] (Enter) or some such. Your choice: [./Build] (Enter) Your choice: [] --uninst 1 Timeout for inactivity during {Makefile,Build}.PL? [0] (Enter) Do you want to halt on failure (yes/no)? [no] (Enter) Your ftp_proxy? [] http://10.47.5.51:80/ Your http_proxy? [] http://10.47.5.51:80/ Your no_proxy? [] (Enter) Your proxy user id? [] (Enter) with ftp download (yes/no)? [yes] (Enter) Preferred method for determining the current working directory? [cwd] (Enter) Do you want the command number in the prompt (yes/no)? [yes] (Enter) Do you want to turn ornaments on? [yes] (Enter) Your terminal expects ISO-8859-1 (yes/no)? [yes] (Enter) File to save your history? [/.cpan/histfile] (Enter) Number of lines to save? [100] (Enter) Always try to show upload date with 'd' and 'm' command (yes/no)? [no] (Enter) Show all individual modules that have no $VERSION? [no] (Enter) Show all individual modules that have a $VERSION of zero? [no] (Enter) If no urllist has been chosen yet, would you prefer CPAN.pm to connect to the built-in default sites without asking? (yes/no)? [no] (Enter) Please enter the URL of your CPAN mirror ftp://ftp.iij.ad.jp/pub/lang/perl/CPAN/ Enter another URL or RETURN to quit: [] ftp://ftp.jaist.ac.jp/pub/CPAN/ Enter another URL or RETURN to quit: [] (Enter) ※ おしまい。 quit ・ Apacheも入ったことだし、そろそろLD_LIBRARY_PATHを設定する。 crle -l /lib:/usr/lib:/usr/local/lib:/usr/openwin/lib ・ sshをSun謹製から置き換える。 * up to date なsourceから入れるため。 http://www.openssh.com/ より cd /usr/local/src/openssh-5.3p1 ./configure --with-tcp-wrappers make make install rehash * ユーザ「sshd」およびグループ「sshd」を作成する。 groupadd -g 22 sshd useradd -u 22 -g sshd -d / -m sshd * SMFに登録する。 ※ sshd-yyyymmdd.tar.gz を http://www.getemono.com/contents/ に 置いてあるのでご利用ください。 cp -p sshdg /lib/svc/method/ cp -p sshdg.xml /var/svc/manifest/network/ svccfg -v import /var/svc/manifest/network/sshdg.xml * /usr/local/etc/sshd_config の設定を行う。 #PermitRootLogin yes ↓ PermitRootLogin no * LD_LIBRARY_PASSを設定する。 crle -l /usr/local/lib:/usr/local/ssl/lib\;/lib:/usr/lib * Sun謹製のopensshを抜く。 pkgrm SUNWsshu Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWsshr Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWsshdu Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWsshdr Do you want to remove this package? [y,n,?,q] 「y」 Do you want to continue with the removal of this package [y,n,?,q] 「y」 pkgrm SUNWsshcu Do you want to remove this package? [y,n,?,q] 「y」 * sshdを起動する。 svcadm enable sshdg ・ sendmailをSun謹製から置き換える。 * up to date なsourceから入れるため。 http://www.sendmail.org/ より cd /usr/local/src/sendmail-8.14.3 ./Bulid ./Bulid check * ここでまずSun謹製版を抜く。 pkgrm SUNWsndmu Do you want to remove this package? [y,n,?,q] 「y」 pkgrm SUNWsndmr Do you want to remove this package? [y,n,?,q] 「y」 Do you want to continue with the removal of this package [y,n,?,q] 「y」 * 予め3つのディレクトリを作成しておく。 mkdir /usr/share/man/cat1 mkdir /usr/share/man/cat5 mkdir /usr/share/man/cat8 ./Bulid install rehash * configファイルを作成する。 cd cf/cf cp generic-solaris.mc sendmail.mc * sendmail.mcを適当に修正する。 ./Build sendmail.cf cp -p sendmail.cf /etc/mail * 幾つかの設定ファイルおよびディレクトリを作成する。 pushd /etc/mail vi local-host-names ***** mkdir /var/spool/mqueue * SMFに登録する。 ※ sendmail-yyyymmdd.tar.gz を http://www.getemono.com/contents/ に 置いてあるのでご利用ください。 cp -p smtp-sendmailg /lib/svc/method/ cp -p smtp-sendmailg.xml /var/svc/manifest/network/ svccfg -v import /var/svc/manifest/network/smtp-sendmailg.xml ※ 以下、書きかけメモと確定メモが混在。^^; ※ 項頭「・」はほぼ確定、「★」は書きかけメモ。 ★ qpopper ./configure --enable-servermode --enable-specialauth --enable-log-login --enable-shy --enable-uw-kludge -enable-poppassd --without-pam --with-openssl make cd password vi Makefile @echo -> echo cd .. make install vi /etc/services imaps 993/tcp pop3s 995/tcp /etc/mail/pop/qpopper.config ★ uw-imap ・ makefileを編集する。 # diff Makefile.orig Makefile 183c183,184 < SSLTYPE=nopwd --- > #SSLTYPE=nopwd > SSLTYPE=unix # ・ src/osdep/unix/env_unix.c を編集する。 # diff env_unix.c.orig env_unix.c 114c114,115 < static int syslog_facility = LOG_MAIL; --- > /* static int syslog_facility = LOG_MAIL; */ > static int syslog_facility = LOG_LOCAL0; # ・ 作る。 make SSLTYPE=unix gso ・ configする。 /etc/c-client.cf /usr/local/ssl/certs/imapd.pem ★ lsof http://freshmeat.net/projects/lsof/ 動かない→ ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_4.82.tar.gz ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/NEW/lsof_4.83K.sun.tar.bz2 ./Configure solaris make install -p -m 2755 -g sys lsof /usr/local/sbin ★ Sendmail-Milter-0.18 ★ sendmail-spf-milter ★ watcher2.pl ★ milter-regex.pl(自作) ・ diffutils 2.9 cd /usr/local/src/diffutils-2.9 ./configure make make check ← 「test-mbrtowc3.sh」で失敗するのは「仕様」らしい、、、。 pkgrm SFWdiffu Do you want to remove this package? [y,n,?,q] 「y」 make install rehash ・ bison 2.4.1 cd /usr/local/src/bison-2.4.1 ./configure make make check pkgrm SUNWbison Do you want to remove this package? [y,n,?,q] 「y」 make install rehash ・ autoconf 2.65 cd /usr/local/src/autoconf-2.65 ./configure make make check ← 相当の時間を要する pkgrm SFWaconf Do you want to remove this package? [y,n,?,q] 「y」 make install rehash ・ flex 2.5.35 cd /usr/local/src/flex-2.5.35 ./configure make make check ← 多少の時間を要する pkgrm SUNWflexlex Do you want to remove this package? [y,n,?,q] 「y」 * SUNWflexruntime は SUNWseru で使用しているので抜かない。 make install rehash ・ automake 1.11.1 cd /usr/local/src/automake-1.11.1 ./configure make make check ← 相当の時間を要する * spy.testがFAILしたが、再度 make -Ctests VERBOSE=x TESTS='spy.test' check と単独で動かしたところPASSしたので、、、気にしないことにする。^^; pkgrm SFWamake Do you want to remove this package? [y,n,?,q] 「y」 make install rehash ・ libtool 2.2.6b cd /usr/local/src/libtool-2.2.6b ./configure make make check pkgrm SFWltool Do you want to remove this package? [y,n,?,q] 「y」 make install rehash ・ freradius 2.1.8 cd /usr/local/src/freeradius-server-2.1.8 ./configure --with-system-libtldl --with-system-libtool make make tests make install rehash 6. vmware-toolsのインストール ・ vSphere clientからVMware ToolsのCDイメージをマウントする 「Guest右クリック→ゲスト(G)→VMware Toolsのインストール/アップグレード(W)」→「OK(O)」 ・ Solaris上でtar ballをワークディレクトリにコピーする。 cdrw -l ←CDROMデバイス名を確認 cd /cdrom mkdir q ←何か1つディレクトリを作る。既に何かあればそれを使えばいい。 mount -F hsfs /dev/dsk/c0t0d0s2 /cdrom/q * rdskではなくdskを先のディレクトリにマウントする。 cp -p /cdrom/q/vmware-solaris-tools.tar.gz /tmp * コピー先はもちろんどこでもいい。 umount /cdrom/q ・ vSphere clientでCDイメージをアンマウントする。 「Guest右クリック→ゲスト(G)→VMware Tools インストールの終了(W)」→「OK(O)」 ・ Solaris上でインストールする。 cd /tmp ←もちろん上記でコピーした先。 gtar xvfz vmware-solaris-tools.tar.gz cd vmware-tools-distrib ※ Sol10-x64の場合、下記操作が必要。 cp -p lib/lib/amd64/libdnet.so.1/libdnet.so.1 /usr/lib/amd64 ./vmware-install.pl ※ 1箇所を除いて全てプロンプトはエンターで送る。 Before running VMware Tools for the first time, you need to configure it by invoking the following command: "/usr/bin/vmware-config-tools.pl". Do you want this program to invoke the command for you now? [yes] Initializing... It looks like you are trying to run this program in a remote session. This program will temporarily shut down your network connection, so you should only run it from a local console session. Are you SURE you want to continue? [no]yes ***** ここ! ***** * Solaris10の場合、NICのドライバは入れ替えないため、通信が途切れる心配は無い。 ※ 以上。