Solaris10 x86 / VMware ESX3i インストールメモ ※ このメモは「自分はこういう手順で行った」というだけですので、無条件で 信用したりしないように。:-) ただし、細かい内容に差はあれど、この手順で都合4台のSolaris10を作っています。 ※ かなり長期にわたって更新している文書なので、語尾の不統一等は気にしないこと。^^; 0. 準備 ・ Solaris10のインストールイメージ http://jp.sun.com/practice/software/solaris/get.jsp#download ・ (入手可能であれば)Solaris10用のクラスタパッチ ・ インターネット接続環境 ・ Solaris10の動くハードウェア ・ VMware インストールイメージ http://www.vmware.com/jp/products/esxi/ 1. VMwareのインストール ・ 使用したハードウェアがHPのDL380G3であるため、32bit版である 3.5u4 Installable with HP を使用。 ※ 今はもう5.0になってます。サーバはDL380G7。 ・ VMware4と違いVMware3はインストール後にHDDのvmfsパーティションの ブロックサイズを拡大しなければならない。 ブロックサイズ 最大仮想ディスクサイズ 1MB 256GB 2MB 512GB 4MB 1024GB 8MB 2048GB インストールするとデフォルトの1Mブロックになってしまう(インストール時は 変更不能)ので、手動で変更する。 なお、VMware4(64bitCPUが必須なため、今回は使えなかった)ではこの必要はない。 ※ 必ずVirtualMachineをインストールする前に行うこと!一旦全てのデータが飛ぶ! ※ また設定も以下の手順の結果リセットされるので、設定前に行うべきである。 ・ 手順は次の通り。 1. VMwareをインストールして再起動し、IPアドレスを振った後、Windows端末から Webブラウザで当該IPアドレスに接続、「VMware Infrastructure Client」を ダウンロードし、Windows端末にインストールした後、VMwareサーバに接続する。 2. 左側ペインで「サーバそのもの(VMではなく)」を選択する。 3. 右側ペインの「Configurationタブ」を選択する。 4. 右側ペインの左上の「Hardware」→「Storage」を選択する。 5. 右側ペイン右上の「Storage」枠内、「datastore1」の「Device」をメモる。 *わたしの場合は「vmhba2:0:0:3」であった。 5'. 「VMware Infrastructure Client」を終了させる。 6. サーバコンソールで「Alt + F1」を押し、ステータス画面に入る。 7. 「unsupported」「(Enter)」と押し、シェルに入る。 *画面にはエコーバックされない。 また、この時点でrootパスワードを設定してある場合は入力を要求される。 8. 次のコマンドを入力する。 vmkfstools --createfs vmfs3 --blocksize 8M -S datastore1 vmhba2:0:0:3 ※ここで、、、 「8M」は、上記「最大仮想ディスクサイズ」に対応する値 「datastore1」は再作成時に再命名されるデータストアの名称 「vmhba2:0:0:3」は、上記「5.」のメモの値 に、適宜置き換える。 9. VMware カーネル(?)を再起動する。 10. ESXiを「リカバリモード」で再インストールする。 ※上記作業でいろいろと壊れるため。 11. 「VMware Infrastructure Update」でカーネル等のupdateを行う。 12. おしまい。 2. VM作成 ・「Solaris 32bit」のテンプレートのままに作成した。詳細は、、、ググってくださいw 3. OS入れ ・ 「sol-10-u7-ga-x86-dvd.iso」をVMにアタッチして起動。 ※ 「sol-10-u8-ga-x86-dvd-10-09.iso」でも同じであった。 ・ 起動時の選択項目は1つ目の「Solaris」。ここは「(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 e100g0 ★ わたしゃ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なので「Available Space」が「0 MB」になっている筈。 ★全容量が既に表示されていた場合は次項に進む。 ※ ゼロである場合は、ここでいわゆるFDISKを行う。 「c1t0d0」をセレクトした状態で「F4」を押して「edit(=fdisk)」する。 ・ Disk Editing Options 「Edit Fdisk Partitions」 ・ Customize fdisk Partitions for Disk: c1t0d0 「Partition 1」の「」を選んで「F4」。 ※ この時点では少なくとも「全部1パーティション」でかまわない。 ※ いわゆる「スライス」はここではない。 ・ fdisk Partition Size 全部デフォルトでF2。 ・ Customize fdisk Partitions for Disk: c1t0d0 戻ってきたのでここで再度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 : 780GB メモリ : 5GB  なので、「swap」に10GB、残りを「/」に割り振った。  もちろん「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」 ・ 「黒い画面」になったら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回ほど当てないといけないので、/var/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」。 ・ インストール開始。 ./install_cluster ※ 2009年末時点での最新クラスタパッチはコマンドが変わっていた。 ./installcluster --s10cluster また、logも自動的に分割して取られるように改善されていた。 ※ 今回使用したクラスタパッチのパスコードは「dapku」であった。 同ディレクトリの「CLUSTER_README」に記載されている。 パスコード入力後「y」応答で開始。 ・ reboot前に、一応logを保存する。なおこのlogは同じファイル名のものに累積されるため、 移動させてしまうことで比較を容易にする。 * mv /var/sadm/install_data/Solaris_10_x86_Recommended_Patch_Cluster_log ./1.log ※ コピー先ファイル名の「1」は、何回目の作業かによって変える。 ・ デバイス再構築フラグ付でrebootする。 * reboot -- -r ※ 再起動時のメニューに「Solaris_reboot_transient」という項目が一時的に発生しており、 またこの項目がデフォルトで選択されている。このまま起動すべし。 ***** 繰り返し、ここまで ***** ・ 例えば「1.log」と「2.log」、或いは「2.log」と「3.log」の内容がほぼ一致した時点で パッチ適用終了とみなす。なおファイル内には実行した時刻も記録されているので、それ ぞれのファイルの内容が完全に一致することは無い。なおファイルサイズでの比較で充分 である。 * ちなみに今回の実例では1回目で全て適用された。 ・最後に通常のrebootを行う。 * init 6 ・ OS入れ、おしまい。 2. 基本設定の微調整を行う。 ・ 追加ユーザを作る。 * rootではtelnetで入ることもできない。 ★ 「hoge」を作ることにする。 ・ まず「autofsによる/homeの占有」を止める。 vi /etc/auto_master ※ 最終行の「/home」で始まる行の行頭に「#」を入れてコメントアウトする。 svcadm restart 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経由で設定出来る。 ・ IPv4のルーティングを止めておく。 ・ routeadm -d ipv4-routing ・ routeadm -u ・ 旧型管理体系配下の要らない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 cde-spc xfs fc-cache stfsloader wbem 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 finger login:rlogin shell:default seaport snmpdx dmi wbem webmin sma common-agent-container-1 stdiscover stlisten webconsole iscsi/initiator ※ 便(略) svcadm disable cde-printinfo svcadm disable cde-spc svcadm disable xfs svcadm disable fc-cache svcadm disable stfsloader svcadm disable wbem 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 autofs 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 common-agent-container-1 svcadm disable stdiscover svcadm disable stlisten svcadm disable webconsole svcadm disable iscsi/initiator 参考 : http://solaris-user.com/solaris10_smf/svcs_svcadm_basic.html ★ なお、 telnet ftp は、内部サーバの場合わたしは止めない。:-) ・ tcp-wrappersの設定を行う。 /etc/hosts.allow /etc/hosts.deny を作成する。 ※ いまの世の中、hosts.denyには「ALL : ALL」と「基本禁止」を設定し、hosts.allowで 許可アドレスを書くのが普通。 ※ 127.0.0.1をALL許可にするのを忘れないこと。 ・ tcp-wappersをenableにする。 ※ 「inetadm -p」で初期状態では「FALSE」になっていることを確認。 inetadm -M tcp_wrappers=TRUE ※ 「inetadm -p」で設定されたかどうかを確認。 ・ パスワードの強化。 Solarisのパスワードはデフォルトで8文字までしか認識されないので、これを 拡張する。 # cd /etc/security # diff policy.conf.orig policy.conf 31c31 < CRYPT_DEFAULT=__unix__ --- > CRYPT_DEFAULT=1 # ※ この設定は「今後のパスワードの更新の際にハッシュではなくMD5で格納する」と いうことでしかない。そのため、この設定の後、個々のアカウントに対して パスワードの変更処理を行う必要がある。 もちろん、同一のパスワードを上書きするだけでもかまわない。 ★ この状態で、インターネットに晒しても大丈夫なサーバとなっている、、、筈。 ★ なお、個人的趣味でshellは/usr/bin/tcshを使っているが、これは単なる趣味。/bin/shだろうが /usr/bin/kshだろうが/usr/bin/zshだろうがお好きにどうぞ。 ・ ここで一旦reboot。 init 6 4. GNUその他フリーウェア入れ ※ 目標は全て ./configure make (make check) make install と、全てデフォルト設定でインストールできる環境。 まあ、、、そう簡単にはいかないわけですが。 ★ 基本的に、いったん「./configure」を行った後であれば「make distclean」で 再度ゼロから「./configure」を行うことができる。 ★ sourceは「gtar xvfz ソースファイル名.tar.gz」で展開するのが楽。 ・ まずpathを通す ~/bin:/usr/local/bin:/usr/local/sbin:/usr/local/etc:/usr/local/ssl:/opt/sfw/bin:/usr/sfw/bin:/opt/sfw/sbin:/usr/sfw/sbin:/usr/bin:/usr/ucb:/usr/sbin:/usr/ccs/bin:/usr/dt/bin ※ .bashrcとか.cshrcとかに書くと便利。 ※ GNUのツールを入れるまでは例えば「gtar」「gmake」で行う。 ※ 個々のinstall後には必ずrehashすること。 ・ 基本的にオブジェクトは /usr/local/bin /usr/local/sbin に自動的に入る。その関係で、コンパイルは /usr/local/src/ディレクトリ で行う。またsourceそのものは /usr/local/src/archives に入れることとする。 ・ GNUのsourceは ftp://ftp.iij.ad.jp/pub/gnu/gnu/ が便利だが、非公式サイトで あるためlatestなものが無いこともあるので注意。 ・ gccに先立ち、binutils-2.19.1 その他を作成する。 cd /usr/local/src/binutils-2.19.1 ./configure gmake gmake check gmake install rehash ・ gmp-4.3.1 cd /usr/local/src/gmp-4.3.1 ./configure --with-gnu-ld gmake gmake check ← no error であることを確認すること。 gmake install rehash ・ mpfr-2.4.1 ※ mpfrは http://www.mpfr.org/mpfr-current/#download から。 cd /usr/local/src/mpfr-2.4.1 ./configure --enable-thread-safe --with-gnu-ld gmake gmake check ← no error であることを確認すること。 gmake install rehash ・ libiconv-1.13.1 cd /usr/local/src/libiconv-1.13.1 ./configure --enable-relocatable --enable-extra-encodings --with-gnu-ld gmake gmake check ← no error であることを確認すること。 ※ Sol10では/bin/printfにバグがあるので、吐いたcoreがprintf起因ならOK。 ※ http://sunsolve.sun.com/search/document.do?assetkey=1-1-6550204-1 gmake install rehash ・ autogen-5.9.8 ※ gccのcheckに必要。 cd /usr/local/src/autogen-5.9.8 ./configure --with-gnu-ld gmake gmake check ← FAILが2つ出るがここでは無視(いいのか?)。 gmake install rehash ・ gcc-4.4.1 (4.4.2もOKだった) ※ 何はともあれ C と C++ が無いと話が進まないので、まず作る。 mkdir /usr/local/src/gccobj cd /usr/local/src/gccobj ../gcc-4.4.1/configure --enable-bootstrap --enable-shared --with-gnu-ld --with-gnu-as --enable-languages=c,c++ 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」 ・ 何はともあれmake-3.81 cd /usr/local/src/make-3.81 ./configure gmake gmake check gmake install rehash * これでgmakeからは開放されるので、インストールパッケージを抜く。 pkgrm SUNWgmake Do you want to remove this package? [y,n,?,q] 「y」 ・ gcc-8.2.0 (入るかな?) vi contrib/download_prerequisites 1c1 < #! /bin/sh --- > #! /bin/bash ./contrib/download_prerequisites mkdir build cd build ../configure --enable-bootstrap --enable-languages=c,c++ make bootstrap 、、、出来ない、、、。 まだまだ研究中。 ・ zlib-1.2.3 を入れておきましょう。 http://zlib.net/ より。 cd /usr/local/src/zlib-1.2.3 ./configure --shared make make check make install ・ grepに先立ち、pcre-7.9.tar.gz (8.0もOKだった) http://www.pcre.org/ より。 cd /usr/local/src/pcre-7.9 ./configure --enable-utf8 --with-gnu-ld make make check make install ・ grep-2.5.4.tar.gz cd /usr/local/src/grep-2.5.4 * Solarisに合わせてちょっと修正。 cd tests # diff foad1.sh foad1.sh.orig 26c26 < OUTPUT=`printf "$INPUT" | tr "/" "\n" | "$GREP" "$@" | tr "\n" "/"` --- > OUTPUT=`echo -n "$INPUT" | tr "/" "\n" | "$GREP" "$@" | tr "\n" "/"` # cd .. ./configure make make check make install rehash pkgrm SUNWggrp Do you want to remove this package? [y,n,?,q] 「y」 ・ tar-1.22.tar.gz cd /usr/local/src/tar-1.22 ./configure make make check make install rehash pkgrm SUNWgtar Do you want to remove this package? [y,n,?,q] 「y」 ・ m4-1.4.13.tar.gz cd /usr/local/src/m4-1.4.13 ./configure --disable-assert make make check ← 「test-mbrtowc3.sh」で失敗するのは「仕様」らしい、、、。 make install rehash pkgrm SUNWgm4 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.0.tar.gz (5.10.1もOKだった) * こいつのインストールはちょっと面倒です。 ftp://ftp.iij.ad.jp/pub/lang/perl/CPAN/src/5.0/ より。 cd /usr/local/src/perl-5.10.0 * 次行の 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)」 * 環境変数「LD_LIBRARY_PATH」が未設定である場合は下記とデフォルトが異なるため、 下記のように3ライブラリを記載する必要がある。 [/usr/local/lib /usr/lib /usr/ccs/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)? [ -L/usr/local/lib] (Enter) * 64bit整数は、今の時代は必要だと思われる。 Try to use 64-bit integers, if available? [n] 「y (Enter)」 * 今回インストールしているマシンは32bit機なので「n」が必須。 Solarisが64bitモードでインストールされているのであれば、「y」にすべき。 、、、と書いていたが、64bitマシンで「y」にして(=コンパイルオプションに「-m64」をつけて)まだうまく構築できていない。(2010/08/12) Try to use maximal 64-bit support, if available? [n] (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.0] (Enter) Where do you want to put the public architecture-dependent libraries? (~name ok) [/usr/local/lib/perl5/5.10.0/i86pc-solaris-thread-multi-64int] (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.0] (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.0/i86pc-solaris-thread-multi-64int] (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] (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 -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 to create a dynamically loaded library? [ -Wl,-E -G -L/usr/local/lib] (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] 「takao.tsukiyama@tohmatsu.co.jp (Enter)」 * このPerlの担当責任者のメイルアドレスを入力する。 前項の値を引き継ぐが、別人設定することも可。 Perl administrator e-mail address [hoge@example.com] (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? [4] (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 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なので残す。 ・ openssl-0.9.8k (0.9.8l) * バグに早期対応できるようソースから入れる。 http://www.openssl.org/ より。 ./config shared make make test make install ※ ちと怖くて「元々のopenssl」は抜けない。^^; ・ openssl-1.0.2j * とりあえず入れ替えてみる。 http://www.openssl.org/ より。 ./config shared make make test make install * 手を抜くためにシンボリックリンクを張る。 ln -s /usr/local/ssl/lib/libssl.so.1.0.0 /usr/local/lib/libssl.so.1.0.0 ・ openssl-1.1.0e * とりあえず入れてみる。 http://www.openssl.org/ より。 * この版はrootで作るとなぜかテストが通らない。 su hoge ← いや、わたしがhogeなだけで。 ./config shared ※ tarの展開を最初から当該アカウントでやらないとconfig.pmを書けなかったりするので注意。 make * Test::More のバージョンが低くて(0.96要、0.92だった)testが通らなかったので、cpanで再インストールした。 su cpan upgrade Test::More exit make test su ← いや、別にさっきsuしたんだからexitでいいんですが。 make install ・ 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 2.2.14 ※ 2.2.14は、そのままではSolaris10-x86(32bit版)で動かないため、ファイルを1つ 入れ替える必要がある。 ./srclib/apr/poll/unix/port.c * http://www.getemono.com/contents/ 参照。 cd /usr/local/src/httpd-2.2.14 ※ ここで上記ファイルを入れ替える。 ./configure make make install * 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 ・ apache-2.4.4 * apacheは2.4からaprが別梱包になったため、事前にインストールしなければならない。 cd /usr/local/src/apr-1.4.6 ./configure make ※ checkを通すためにlo0にちょっとの間IPv6を喋ってもらう。 ifconfig lo0 inet6 plumb ifconfig lo0 inet6 ::1 up make check make install rehash ※ またIPv6を寝させる。 ifconfig lo0 inet6 ::1 down ifconfig lo0 inet6 unplumb * もひとつ。apr-utilも。 cd /usr/local/src/apr-util-1.5.1 ./configure --with-apr=/usr/local/apr make make check make install rehash * 本番。 cd /usr/local/src/httpd-2.4.4 ※ パラメータ、特に前半は我が家都合なので気にしないで下さい。 ./configure --enable-expires --enable-headers --enable-info --enable-mime-magic --enable-rewrite --enable-usertrack --enable-vhost-alias --enable-dav --enable-so --enable-ssl --with-ssl=/usr/local/ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr make make install ※ Apache 2.2から2.4への変更は、ここからが地獄だった^^; ・ まず、とりあえずmod_perl。 http://www.momo-i.org/blog/2012/03/01/apache24x%E3%81%AE%E5%A4%96%E9%83%A8%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB.html にお世話になりました。で、mod_perl-2.0.7を組み込み。 ・ mod_sslでlibssl.soおよびlibcrypto.soが読めなかった。でもLD_LIBRARY_PATHに/usr/local/ssl/libを足すのもどうかと思い、とりあえず ln -s /usr/local/ssl/lib/libssl.so.x.x.x /usr/local/lib/libssl.so.x.x.x ln -s /usr/local/ssl/lib/libcrypto.so.x.x.x /usr/local/lib/libcrypto.so.x.x.x で誤魔化した。最低限これは何とかしたい。 ・ とりあえずhttpd.confに下記を足して誤魔化した。configの再作成は後日。 ----- ここから ----- LoadModule dir_module modules/mod_dir.so LoadModule mime_module modules/mod_mime.so LoadModule cgid_module modules/mod_cgid.so LoadModule unixd_module modules/mod_unixd.so LoadModule access_compat_module modules/mod_access_compat.so LoadModule log_config_module modules/mod_log_config.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule mime_module modules/mod_mime.so LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule ssl_module modules/mod_ssl.so LoadModule socache_dbm_module modules/mod_socache_dbm.so LoadModule setenvif_module modules/mod_setenvif.so AddDefaultCharset Shift_JIS ----- ここまで ----- ※ 上記は「ウチでは」なのは言うまでもない、、、。 ・ 忘れないうちに、モジュールを足した理由をメモ。 dir_module index.htmlをデフォルトで表示させる cgid_module cgi を動かす unixd_module /etc/passwd 関連処理をさせる access_compat_module Allow / Deny / Order を処理させる log_config_module CustomLog を処理させる userdir_module ~username を処理させる alias_module Alias / ScriptAlias を処理させる mime_module AddHandler とか AddType とか dav_module (WebDAVですが、、、今はもう使っていないからconfigから消すまでの間だけ、、、) dav_fs_module "Unknown DAV provider: filesystem" authz_core_module authn_core_module auth_basic_module authn_file_module authz_user_module この5つで .htpasswdとかが使えるようになる。 ※ めも ・ authn = authentication = 認証 ・ authz = authorization = 承認 ・ auth_basic : BASIC認証を行う ・ authn_core : AuthName / AuthType ・ authn_file : AuthUserFile ・ autnz_core : Require ・ authz_user : Require user いやまぁ確かに機能を細分化したらこうなるわなあ、、、。 ssl_module SSLを処理させるが、、、なんか文法が結構変わっている。 "SSLMutex file:/path/to/filename"が使えなかったりとか。 socache_dbm_module SSLSessionCache に dbm を使っているために足した setenvif_module BrowserMatch を処理させる。iPhoneテストサイトがあったんだった、、、。 AddDefaultCharset Shift_JIS www.getemono.comのトップページ(旧IIS風w)が文字化けしたため。 ・ apache-2.4.23 * 久しぶりにupdateしてみる。openssl-1.0.2jも入れたし。 * aprとapr-utilと、ついでにpcreもupdateしてみる。 * まずapr。 http://apr.apache.org/download.cgi より。 cd /usr/local/src/apr-1.5.2 ./configure make ※ checkを通すためにlo0にちょっとの間IPv6を喋ってもらう。 ifconfig lo0 inet6 plumb ifconfig lo0 inet6 ::1 up make check ※ またIPv6を寝させる。 ifconfig lo0 inet6 ::1 down ifconfig lo0 inet6 unplumb make install * 次にapr-util。 同じく、 http://apr.apache.org/download.cgi より。 cd /usr/local/src/apr-util-1.5.4 ./configure --with-apr=/usr/local/apr make make check make install * pcre (apacheに関係しているとは知りませんでした) http://www.pcre.org/ より。 cd /usr/local/src/pcre-8.39 ./configure --enable-utf --with-gnu-ld make make check make install * 本体のコンパイル。 ./configure --enable-expires --enable-headers --enable-info --enable-mime-magic --enable-rewrite --enable-usertrack --enable-vhost-alias --enable-dav --enable-so --enable-ssl --with-ssl=/usr/local/ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-pcre --with-mpm=worker ※ こちらでもOK? ./configure --enable-expires --enable-headers --enable-info --enable-mime-magic --enable-rewrite --enable-usertrack --enable-vhost-alias --enable-dav --enable-so --enable-ssl --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-pcre --with-mpm=worker ※ 「--with-mpm=worker」を足さないと動かなかった。なぜ、、、。 make make install * configとかは前に2.4.4にした際に苦労したので、今回はそのまま。 ・ apache-2.4.33 * とりあえず目的はOpenSSLの1.1.0hにすること。 * 殆ど2.4.23と変わらないが、OpenSSLは1.1.0になってから /usr/local/ssl をやめて /usr/local に入るようになったので、賢いapacheが自動的に /usr/local/ssl から拾ってくれるのを阻止するため、 --with-ssl=/usr/local を加える。そうすると1.1.0を使ってくれる。 ・ apache-2.4.46 * 2.4.33と同手順で成功 ・ Apacheも入ったことだし、そろそろLD_LIBRARY_PATHを設定する。 crle -l /lib:/usr/lib:/usr/local/lib:/usr/openwin/lib ・ sqlite-3.15.1 https://sqlite.org/ より。sqlite-autoconf-3150100.tar.gz を使用。 cd /usr/local/src/sqlite-autoconf-3150100 ./configure make make install # いいのか、これで? ・ curl-7.51.0 https://curl.haxx.se/ より。 cd /usr\local/src/curl-7.51.0 ./configure make make check ※ 時間がかかる。 make install ・ livarchive-3.2.2 http://www.libarchive.org/ より。 cd /usr/local/src/libarchive-3.2.2 ./configure make make check ※ 1つcoreを吐く、、、^^; けどとりあえず続行してみる。 make install ・ expat-2.2.0 http://www.libexpat.org/ より。 cd /usr/local/src/expat-2.2.0 ./configure make make check make install ・ scons-local-2,5,1 https://sourceforge.net/projects/scons/files/scons-local/ より。 ※ ちんぷんかんぷん ^^; ・ jsoncpp-src-0.5.0 https://sourceforge.net/projects/jsoncpp/ より。 cd /usr/local/src/jsoncpp-src-0.5.0 ※ sconsを使うらしいので、頓挫 ・ cmake-3.7.0 https://cmake.org/ より。 cd /usr/local/src/cmake-3.7.0 ./bootstrap --system-libs ***** まだ出来ない ***** ・ subversion-1.9.4 http://subversion.apache.org/ より。 /usr/local/src/subversion-1.9.4 ./configure make *** 全く話にならない、、、ちょっと後回し。 *** ・ Python-3.5.2 https://www.python.org/ より。 cd /usr/local/src/Python-3.5.2 ./configure --enable-shared make make test ※ 途中でコケる、、、^^; make install ※ 諸事情により無理矢理。 ・ tcl8.6.6 http://www.tcl.tk/ より。 cd /usr/local/src/tcl8.6.6/unix ※「unix」サブディレクトリに入る。 ./configure make make test ※ http-4.14 socket-14.2 socket-14.7.0 socket-14.7.2 socket-14.8.2 socket-14.11.0 socket-14.12 socket-14.14 socket-14.15 socket-14.18 がエラーになる、、、。何でだろ。ま、とりあえず、、、 make install ・ tk8.6.6 http://www.tcl.tk/ より。 cd /usr/local/src/tk8.6.6 ./configure make make test ※ X端末からしか作れない?? ちょっとペンディング、、、。 ・ 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 ==================================================================== make sunos5 * 必要なファイルのみコピー(インストール)する。 cp -p libwrap.a /usr/lib/ cp -p tcpd.h /usr/local/include/ ・ 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 ・ openssh-7.7p1 ※ opensshはまだopenssl-1.1に未対応なので設定する。なお「--with-tcp-wrappers」は無くなった模様。 ./configure --with-ssl-dir=/usr/local/ssl あとはopenssh-5.3p1と変わらない。そのまま上書き置き換えも可。 ・ named (bind-9.6.1-P2) cd /usr/local/src/bind-9.6.1-P2 ./configure make ./bin/tests/system/ifconfig.sh up ※ ここで ifconfig: plumb: SIOCLIFADDIF: lo0:1: no such interface ifconfig: SIOCGLIFNETMASK: lo0:1: no such interface ifconfig: plumb: SIOCLIFADDIF: lo0:2: no such interface ifconfig: SIOCGLIFNETMASK: lo0:2: no such interface ifconfig: plumb: SIOCLIFADDIF: lo0:3: no such interface ifconfig: SIOCGLIFNETMASK: lo0:3: no such interface ifconfig: plumb: SIOCLIFADDIF: lo0:4: no such interface ifconfig: SIOCGLIFNETMASK: lo0:4: no such interface ifconfig: plumb: SIOCLIFADDIF: lo0:5: no such interface ifconfig: SIOCGLIFNETMASK: lo0:5: no such interface ifconfig: plumb: SIOCLIFADDIF: lo0:6: no such interface ifconfig: SIOCGLIFNETMASK: lo0:6: no such interface ifconfig: plumb: SIOCLIFADDIF: lo0:7: no such interface ifconfig: SIOCGLIFNETMASK: lo0:7: no such interface ifconfig: plumb: SIOCLIFADDIF: lo0:8: no such interface ifconfig: SIOCGLIFNETMASK: lo0:8: no such interface なんていうのが出るが、これは「IPv6を喋らせていない」ことに対するエラーなので無視。 ※ 9.11.0-P1は、perlのNet::DNSとNet::DNS::SECが必要みたい。cpanから入れてみた。 一緒に入った別モジュールは、、、覚えていません。^^; make check ※ このサーバで34分要した。 ./bin/tests/system/ifconfig.sh down ※ ここでも ifconfig: setifflags: SIOCGLIFFLAGS: lo0:8: no such interface ifconfig: unplumb: SIOCLIFREMOVEIF: lo0:8: no such interface ifconfig: setifflags: SIOCGLIFFLAGS: lo0:7: no such interface ifconfig: unplumb: SIOCLIFREMOVEIF: lo0:7: no such interface ifconfig: setifflags: SIOCGLIFFLAGS: lo0:6: no such interface ifconfig: unplumb: SIOCLIFREMOVEIF: lo0:6: no such interface ifconfig: setifflags: SIOCGLIFFLAGS: lo0:5: no such interface ifconfig: unplumb: SIOCLIFREMOVEIF: lo0:5: no such interface ifconfig: setifflags: SIOCGLIFFLAGS: lo0:4: no such interface ifconfig: unplumb: SIOCLIFREMOVEIF: lo0:4: no such interface ifconfig: setifflags: SIOCGLIFFLAGS: lo0:3: no such interface ifconfig: unplumb: SIOCLIFREMOVEIF: lo0:3: no such interface ifconfig: setifflags: SIOCGLIFFLAGS: lo0:2: no such interface ifconfig: unplumb: SIOCLIFREMOVEIF: lo0:2: no such interface ifconfig: setifflags: SIOCGLIFFLAGS: lo0:1: no such interface ifconfig: unplumb: SIOCLIFREMOVEIF: lo0:1: no such interface と出るが、原因は上に同じ。 ※ なんか、9.11.0-P1はdnssecとdyndbとreclimitとrrcheckerでエラーになるけど、、、とりあえず無視^^;;;;; make install * configファイルその他を作成する。 vi /etc/named.conf 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」 cp -p dns-serverg /lib/svc/method/ cp -p serverg.xml /var/svc/manifest/network/dns/ svccfg import /var/svc/manifest/network/dns/serverg.xml * 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/ svccfg -v import /var/svc/manifest/network/serverg.xml ・ bind-9.14.7 (まずメモ) python3-plyが要るらしい。 https://riptutorial.com/ja/python/example/31582/ply%E5%85%A5%E9%96%80 により、ply3.10をインストールしてみた。 python3 setup.py install なんかあっさり入った。 ./configure make ※ makeがぜんぜん通らん、、、。ifaddrs.hの無いSol10はもう駄目か?^^; ・ 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 ・ ntpd (ntp-4.2.8p10) cd /usr/local/src/ntp-4.2.8p10 CC=gcc ./configure --with-openssl-libdir=/usr/local/ssl/lib --with-openssl-incdir=/usr/local/ssl/include make make check * いくつかSSL関連エラーが出るが、とりあえず無視^^; make install ・ ntpd (ntp-4.2.8p15) cd /usr/local/src/ntp-4.2.8p15 CC=gcc ./configure --with-openssl-libdir=/usr/local/ssl/lib --with-openssl-incdir=/usr/local/ssl/include/openssl make make check * エラー出るなあ、、、 FAIL: test-authkeys FAIL: test-decodenetnum FAIL: test-socktoa とりあえず無視。(いいのか) make install ※ 以下、書きかけメモと確定メモが混在。^^; ※ 項頭「・」はほぼ確定、「★」は書きかけメモ。 ★ 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 5. IPv6有効化 ・ とりあえず「RA + EUI-64」でIPv6を喋らすだけなら簡単。でもそれだけのことが何でこんなに情報が無い、、、。 svcadm enable ndp ※ /etc/inet/ndpd.confなんて要らない touch /etc/hostname6.(インターフェース名) これでリブートするだけ。リブートしたくないなら ifconfig (インターフェース名) inet6 plumb up ifconfig lo0 inet6 plumb up で喋る。 ※ IPv6を喋らせていると、SIOCLIFSETND で Not enough space を出してOSが固まる可能性。一旦off。