スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CentOS 5/6のSamba4のrpmが出来るまで

タックス

当ブログの新しい試みとして、rpmの開発をした際の苦労した点やノウハウなどを書き連ねてみたいと思います。
ソースでビルドしている方々にとって、参考になるかわからないのですが、ソースビルドから脱却するためにも少しでも参考になればという思いから、自分の「恥」も含めて公開することにしました。
今回は、Samba4のrpmを開発した際の苦労話をご紹介しますが、はっきり言って長いので、時間のある時にでも読んで楽しんで下さい。

※ 以下のCentOS 5用のspecファイルも併せて見ながら読むと、より楽しんで頂けると思います。

# mkdir samba4
# cd samba4
# rpm2cpio http://wing-net.ddo.jp/wing/5/SRPMS/samba4-4.0.3-5.el5_5.wing.src.rpm | cpio -i
# less samba4.spec


■ 依存関係調査

まず、Samba4のrpmを作る際により新しい環境で作る方が楽だと思い、CentOS 6上で作り始めることにしました。
rpmを作る際には必ず最初にやらなければならないのは、そのパッケージをビルドできる環境を整えること。
ソースビルドしている人ならわかると思いますが、あらかじめインストールしておかなければならないパッケージを全てインストールしないといけません。
調査した結果、Samba4をビルドする際に必要なパッケージのうち、CentOS 6標準では存在しないrpmは以下のパッケージであることが判明。

・iniparser
・libtdb(1.2.10以上)
・libtalloc(2.0.7以上)
・libtevent(0.9.17以上)
・libldb(1.1.13以上)
・krb5(1.10以上)

開発当初のCentOS 6.3の標準構成では、各パッケージのバージョンが低くて使い物にならなかったため、Fedora 18で公開されていたパッケージを元にCentOS 6に合うようにspecファイルを修正してビルドすることから始めました。


■ ビルドしてインストール。いきなりトラブル発生!

順調にビルドが終わり、各rpmをインストール。
krb5-1.10.3をビルドすることまでは出来ましたが、krb5をインストールしようとしたところでいきなりトラブル発生!

どうやらlibguestfsがkrb5-1.9に依存しているらしく、1.10.3にアップグレードしようとしたところで問題が発生した模様。
libguestfsとは、KVMなどで使用する仮想ディスクに仮想マシンを立ち上げなくてもアクセスできるようにするための優れもの。つまりlibguestfsを使えば仮想ディスクの中にあるファイルを読み書き出来るものであり、仮想環境を使ってる自分にとっては必要不可欠なものなのです。

これは何とかしたい。


■ 原因調査

原因を調査したところ、krb5-1.10.3では1.9と比べてlibkdb5.soというライブラリーのバージョンが上がったことで、インストールできなかったことが判明。
念のためlibguestfsがインストールされていたので、一旦アンインストールしkrb5-1.10.3をインストール後libguestfsをインストールしてみましたがlibkdb5.so.5が無いと怒られました。
(krb5-1.10.3ではlibkdb5.so.6となっている)

libguestfsは使えなくなった……としても良かったのですが、自分も使うし何と言ってもRHELのポリシーである後方互換性の維持を考えると、次期RHEL 6.4ではkrb5-1.10.3でも1.9相当の互換を保つためのパッケージを別途揃えてくることも予想されたため、libkdb5.soのみのrpmをkrb5-1.9を元に作ることにしました。
(この時、無理矢理シンボリックリンクを作成するということも考えたが、何が起こるかわからなかったため安全策を取った。)


■ libguestfs問題を見事に解決

krb5-1.9のsrc.rpmを元にし、libkdb5.soのみをパッケージングするようにspecファイルの大部分を削除してビルドすることで、1時間もかからずに作ることが出来ました。
実際にkrb5-1.10.3とlibkdb5.soのrpmをインストールし、libguestfsもインストールできたことも確認出来ましたし、実際に仮想ディスクにアクセスできることも確認しました。
これでSamba4のrpm開発にようやく着手することができる環境が整いました。


■ rpmを作るにあたってのポリシー

wingリポジトリのポリシーとして、

・出来るだけ時間短縮のためにゼロからspecファイルは書かない。
・サブパッケージ構成も含めて、Fedora製のspecファイルをお手本にする。
・specファイルの中身は、誰に見られても恥ずかしくないように書く。
・CentOS標準+epelリポジトリの依存関係は壊さない。

を心がけているため、お手本となるのはepelリポジトリであったり、Fedoraの最新パッケージであったりするわけですが、いざとなれば聞いたことも無いようなリポジトリのspecファイルも参考にすることがあります。
もしも、元になるspecファイルが無い場合は、似たようなパッケージのものを参考に改造することもありますが、基本的にはゼロからは書かないようにしています。

理由としては、独自のspecファイルの書き方をするよりも、Fedora相当の書き方をした方が実際にspecファイルの中身を触る人にとってもわかりやすいのではないかと思い、このようにしています。現にwingリポジトリ内にあるspecファイルをそれぞれ見て頂ければわかりますが、記述方法に統一感は全く無いのですが、個々のパッケージを見てみますと、昔からの書き方のまま必要なものを追加していってるのが分かると思います。

また、サブパッケージ構成(例えば、samba4-common、samba4-libs、samba4-dcなど)もできるだけFedoraの構成と同じになるようにしています。なぜなら将来のRHELでは同じパッケージ構成になる可能性が高いですし、何より先行して次期RHELに組み込まれるであろうパッケージのインストール手順を学ぶことが出来るようにするためです。
先日のお正月期間に、自宅サーバをCentOS 5から6に変えた際も、これのおかげでスムーズに移行することが出来ました。
今回のSamba4のrpmもFedora 19のspecファイルをベースに、元々のCentOS 6のものを参考にカスタマイズしています。

ちなみに、依存関係を壊さないために、phpではphp 5.2系はphp52、php 5.4系はphp54というパッケージ名でrpmを作り、決してyum updateコマンドで不具合が出ないようにしています。
(remiリポジトリでは既にこれが崩れていて、CentOS 5では標準でphp 5.1.6だったものがyum updateすることでphp 5.4系がインストールされてしまうというとんでもないことが起きてしまいます。)


■ 早速specファイルの修正

まず手始めにFedora 19用のspecファイルをベースに、systemdになっているところをCentOS 6のchkconfigとserviceに置き換えてビルドしたところ、問題無くビルドすることが出来ました。
ところが、CentOS 6、Fedora 19のいずれもSamba4を起動するための起動スクリプトが付いておらず、従来のSamba3ベースで起動する起動スクリプトしかなく、Active Directory Domain Controler(以下、AD DC)を構築することが出来無いことがすぐに判明しました。
具体的にはSamba4として起動するには従来のnmb、smb、winbindを起動するのではなく、/usr/sbin/sambaを起動しなければなりません。
このことを踏まえ、恐らくsmbの起動スクリプトをsambaに変更すれば大丈夫だろうと思いましたが、念のためどこかで拾ったSamba4のrpmの起動スクリプトを見つけてdiffを取ってみたところ、そのとおりだということを確認できました。

早速nmb、smb、winbindの起動スクリプトはおまけで付ける程度にしておき、デフォルトでは/usr/sbin/sambaを起動する起動スクリプトをchkconfigで追加しserviceで起動するようにspecファイルを修正。
見事にservice samba startで起動に成k……と思いきや、失敗…。
調べたところ、元々付属されているsmb.confでは全く起動できないことが判明。

そもそも、CentOS 6やFedora 19用に付属されているsmb.confはあくまでSamba3ベースのconfファイルであり、samba4ではAD DCを構築の際のsamba-toolコマンドで自動的に作成されるsmb.confを使わなければならず、これではいかんと思い急遽Samba4の使い方を勉強することにしました。

その他、細かいところでファイルの配置(/var/run/samba等)に問題があり、configureの見直しも余儀なくされました。


■ Samba4を学ぶ

勉強していくうちに、以前のAlpha版ではAD DCの構築には相当な手順が必要だったらしいですが、後に大変な事件へと発展するPythonで作られたsamba-toolを使うことでコマンド一発でAD DCを構築することできる事がわかりました。
でも、自分としてはちゃんと勉強をしたいという思いから、日経Linuxの3月号にSamba4の記事が書かれていることを知り、すぐに買いに走りました。

日経Linuxの記事は、「Active Directoryとは」から書かれており、基本的なAD DCの構築のみであり、深く突っ込んだ内容では無かったため、一通り読み終えた後はSamba4で新しくなった設定途中の確認方法のみを参考にしました。
また、付属されていたDVDには、Samba4のrpmとsrc.rpmが収録されていたので、src.rpmを展開しspecファイルを確認しました。

specファイルの%changelogを確認すると、Sambaで有名なOSSTech社のエンジニアが作ったものであることが記述されており、ほぼFedora 18または19あたりのSamba4を元にしたのであろうことは想像出来ましたが、唯一違ったところは、libtdb、libtalloc、libtevent、libldbをSamba4のソースの中にあるものでビルドしていたところでした。
確かにCentOS 6.3の頃であれば致し方無いと思われますし、一般的な利用者に追加パッケージ無しで簡単にインストールさせるにはこの構成が一番に思いますが、これだと将来のRHELの構成とは異なるのではないかと推測し、参考程度に見ることにしました。
(後に、自分の推測が見事に的中することとなる。)


■ Samba4でAD DCを構築

早速AD DCの設定を行うために、まずは作成したrpmをwingリポジトリに組み込み、yum install samba4でインストール出来ることを確認。
その後、samba-tool domain provisionでAD DCを構築し、自動作成されたsmb.confを確認の上、service samba startを実行し見事に起動することを確認しました。
しかし、検証はそれだけでは終わりませんでした。

日経Linuxに書かれていました、起動後のチェックを行うことにしましたが、またしてもトラブル発生!
kinitコマンドで、kerberos認証を確認したところ、全く認証出来なかったのでした。
(ここからドツボにはまることになる)


■ kerberos認証の不具合調査

いろいろ頭を駆け巡りました…
何がいけないんだろうな…
krb5-1.10.3のspecファイルがまずいのかな…
samba4のspecファイルの方なのかな…
libkdb5.soがいけなかったのかな…
とにかく、調べまくりkrb5を再度ビルドしなおしたり、samba4のspecファイルをいじったり、いろいろ試してみましたが改善されず。
半ば諦めかけてたその時、ピンと閃きました。
dns forwarderとresolv.confの設定が間違ってるんじゃないかと。
予感は的中。
dns forwarderとresolv.confを修正し、改めてkinitでkerberos認証の確認をしたところ、問題無く認証できることを確認。

こんな簡単なポカミスに、丸1日費やしてしまった…。


■ Samba4の動作検証

その後は順調そのものでした。
Samba4の動作確認として、

・AD DCを構築すること。
・Windows 7でドメイン参加が出来ること。
・Mac OS Xでドメイン参加が出来ること。
・Samba4同士のマルチマスターレプリケーションの動作確認。(VPN経由)
・RSAT(リモート管理ツール)で、ユーザーの管理が出来ること。
・CentOSのログイン認証をActive Directoryのユーザーで出来るようにする。

が出来れば、とりあえず実用に耐えられるのではないかと思い一つ一つ検証を行いました。

ほとんどの動作確認は問題ありませんでしたが、たった1点だけどうしても原因がわからないまま解決してしまったことがありました。
それは、片方のサーバにpptpで接続し、もう片方とレプリケーションする際にトラブルが発生!


■ 原因不明のpptp落ち

pptpを設定し、レプリケーションをさせようとすると、全く音沙汰が無くなる現象に悩まされました。
具体的にはpptpsetupコマンドにて設定し、routeコマンドでルート設定後にsamba-toolでドメイン参加をしようとすると、全く音沙汰が無くなるのです。

一応ctrl+cで止めることが出来ましたので、止めて状態を確認すると、ppp0は落ちてるわrouteで設定したものも消えてるわで、わけがわかりませんでした。
そこで、VPNの向こう側のADサーバに向けてpingを飛ばしながらsamba-toolコマンドを叩いてみることにしましたが、叩いた瞬間にppp0が落ちrouteの設定も消えることが判明。
悩みに悩みましたが、とりあえずpptpで接続しrouteを設定後しばらく放置して再度samba-toolを叩いたところ、今度は問題無く同期することが確認出来ました。
ちなみに、4日ほど放置して確認しましたが、問題無くpptpも落ちずに連携し続けていることを確認出来ました。

この問題は今後も継続して調査していきたいと思います。


■ RHEL 6.4リリース

作業日の1週間前にRHEL 6.4がリリースされたという情報を入手していたので、そちらの調査もしないとと思い、早速Red Hatのftpサイトでlibtdb、libtalloc、libtevent、libldb、krb5のsrc.rpmを確認しました。

lib*に関しては予想通りの構成をしており、またバージョンもSamba 4.0.0をビルドするのに最低限必要なバージョンを揃えていたことを確認。その他iniparserは存在していないことも確認出来ましたが、krb5の対応には驚愕しました。
なんと、後方互換性無視の1.10.3がそのまま構成されていたのでした。
このままでは、libguestfsが動かないんじゃ……と思っていたら、なんとlibguestfsもkrb5-1.10.3に合わせてビルドしていることが判明し、更に驚愕してしまいました。
これにより、あえなく自作したlibkdb5.soのrpmは破棄することになりました。

その後先行してRHEL 6.4のkrb5のsrc.rpmだけを持って来てビルドし、簡単な動作検証を行い問題無いことを確認しました。


■ CentOS 6.4リリース

それから長く検証を行った後にCentOS 6.4がリリースされました。
これに合わせて、lib*もなんとなく気持ち悪かったので、全てCentOS 6.4のspecファイルをベースに、最新版にリビルドしなおしました。
また、Samba4自体もCentOS 6.4でrc5になったことでPatchが追加されており、更にFedora 19用に公開されたSamba4.0.3のrpmにも3つのPatchがあり、そのうちgcc4.8用のPatchを除く2つのPatchを当ててCentOS 6用のrpmは完成させました。


■ CentOS 5用のSamba4のrpm

次にCentOS 5用のrpmに着手することにしました。
本当は、CentOS 5用のrpmを作る時には、かなり自問自答を繰り返しました。

もう枯れてしまって自分的にも使うことは無いだろうし、作ったところで「誰得?」と周りからも言われるだろうなと思いながらも、そう言えばwingリポジトリを始めたばかりの頃CentOS 5の最終目標を「CentOS 5でSamba4のrpmを作る」に設定していたことを思い出し作ることを決意しました。

今思えば、作るんじゃなかったと思うほど大変でした。


■ CentOS 5用を作るにあたって

CentOS 5用のrpmを作る際には、

・そもそもビルドできないんじゃないか?
・足りないrpmパッケージが多いのではないか?
・依存関係にあるパッケージが古いため新しいバージョンにすればいいのに、他のパッケージとの依存関係が理由で最新にも出来ないようになっているのではないか?
・Samba4のsamba-toolはpythonが多様されているが大丈夫か?

が最も不安でした。

調べてみると、意外に依存関係にあるパッケージがCentOS 6と変わらないことがわかりました。

そのため、何も考えずにCentOS 6用のsrc.rpmをそのままビルドしてみることにしました。
途中epelにpython2.6があることは知っていましたが、configureのチェックで2.4.2以上であることしかチェックしておらず、CentOS 5の標準は2.4.3であることから何も問題無くokの表示。
configureのチェックを見る限り、全体的にCentOS 6よりはnot foundの表記が多いように見えましたが、特に致命的なエラーも発生せずにビルド完了。

なんだ、簡単じゃないか。

こんなに簡単に済むならすぐにやるべきだったと、その時は後悔していたのですが、ここから2度目の大はまりを経験することになろうとはこの時は知る由もありませんでした。


■ なんと!動かない!

インストールまではあっさりと出来ましたが、AD DCを構築しようとsamba-toolを叩いてみるといきなりpythonのエラーが発生!

しばらく呆然としたのは言うまでもありません。
何せ、pythonを触ったこともないし、コードを見たことも無いので、どうしたらいいのかさえ分かりませんでした。
唯一この時出来たことは、エラーメッセージをそのままGoogle先生に聞いてみることだけ。
当然のことながら、なかなか探し当てることが出来ずに時間だけが経過していきました。


■ なぬ? python 2.6ってパラでインストールできるのか?

エラーメッセージをGoogle先生に聞いてみると、唯一英語で書かれた記事を発見出来ました。
それによると「epelのpython 2.6はパラレルでインストールが可能だからインストールしなさい」と書かれていました。
つまり、既存のpython 2.4を入れたまま2.6もインストールできると。

なんだ、epelにpython 2.6があるのは知ってたけど、既存のものは削除する必要が無いのかと。
無知とは恐ろしいもので、それまでこんなことすらも知らなかったのです。

実はその前にyum remove pythonをやってみたら、すごい数の依存関係にあるパッケージが出てきて、これ全部消すとシステム自体が動かなくなるのではないかと悩んでいたのですが、そんな悩みもすぐに解決。
wingリポジトリはepelを導入することを前提にしているため、早速python26、python26-libs、python26-develをインストールし、再度samba4のrpmをビルドすることにしました。


■ あれ?どうやってビルドする時にパラで入れたpython2.6を認識させれば?

概ねspecファイルの中のconfigureの前にexportを書けば済むと思っていましたが、実際に何を書けばいいのかさっぱりわかりませんでした。
何せ、pythonを触ったことも無いわけですから。
そこで、何としてでもCentOS 5でepelのpython 2.6を使った事例を探すしか無いと思い検索しまくりました。

一応specファイルを修正しながらビルドをした時のエラー結果を絡ませて検索するとrpmbuild --showrc|grep pythonで、__pythonという変数があり、/usr/bin/pythonが設定されていることが確認できるというふうに書かれていました。

# rpmbuild --showrc|grep python
-14: __multiple_python_os_install_post
/usr/lib/rpm/brp-multiple-python-bytecompile %{__python}
-14: __python /usr/bin/python
-14: __python26_os_install_post
/usr/lib/rpm/brp-python-bytecompile /usr/bin/python2.6
-14: __python_provides /usr/lib/rpm/pythondeps.sh --provides
-14: __python_requires /usr/lib/rpm/pythondeps.sh --requires

確かにsamba4のspecファイルの中にいくつか__pythonが使われているので、まずは%globalでこれを/usr/bin/python2.6に変えてやれば済むのではないかと推測。
そして調査した結果、export PYTHONPATHに何か設定してやればいいのだということがある程度推測出来ましたので、適当なpathを設定してビルドしてみました。
ところが、configureのチェックでpython 2.6.8を認識することなく、ついに意味不明なエラーで落ちる始末。

これは終わったかと思いました…。


■ CentOS 5用のSamba4のrpmを探す

唯一の手がかりは、CentOS 5でSamba4のビルドに成功した事例を見ることだと思い、早速CentOS 5用のsrc.rpmを探し始めました。

するとすぐに発見!
specファイルの中を見てみましたが、やはり__python変数に変更を加えていることを確認出来ました。

ちなみに、その他は特に参考になりませんでした。
特にサブパッケージ構成や考え方が全く別物になっていたため、python部分だけを参考にしました。


■ python部分の解説

まずは最初に、
%global __python /usr/bin/python2.6

で、pythonのpathを2.6に変更し、参考にしたspecファイルでは問題がありましたが、%buildセクションのconfigureの前で、
export PYTHON=%{__python}
export PYTHONPATH=$(/bin/ls -d %{_libdir}/python2.6/site-packages)

を実行することで、configureのチェックでpython2.6が認識されることを確認。
(もっと簡単にpathだけ書いても良かったのですが、元が2.*となっていたため、2.6固定とし形式はそのままとしました。)

しかし、チェック後の意味不明なエラーは一向に改善されず頭を悩ませてしまいました。


■ Samba4はいいけど、lib*はどうなのよ?

いろいろ考えた挙句、ピンと閃きました。
Samba4のrpmではpython 2.6用にビルドしなければならないのはわかりましたが、lib*はどうなんだと。

そこで改めてconfigureをチェックしたところ、やはりpython 2.4用にビルドしていることが判明。
全てのlib*のspecファイルに、同じように%globalとPYTHON、PYTHONPATHを記述してビルド。

めでたくconfigure時のチェックでpython 2.6で認識しビルドすることに成功。
Samba4のrpmも、待つこと1時間弱。問題無くrpmを完成させることが出来ました。
しかし、以前のことを踏まえ、実際にAD DCを構築するまで油断できないと思い、すぐにAD DCを構築してみました。


■ 再びpythonのエラーが発生

困った。
もうpython嫌いと思いながら、改めて参考にしているspecファイルを眺めていると、%buildセクションの前で
for pyscript in source4/scripting/bin/*; do
mv $pyscript $pyscript.orig
sed -e 's!/usr/bin/env python!/usr/bin/env python2.6!' <$pyscript.orig >$pyscript
rm $pyscript.orig
done

のような処理を実行していることが分かりました。
どうやらSamba4のsource4に実装されているpythonスクリプトを全て2.6で実行するようにpathを変更していたのでした。

なるほど。
早速specファイルを修正し問題無くビルド完了。
念のためrpm -lqp samba4-python26…….rpmを実行して、python2.6用になっていることを確認しました。

(本来この修正はPatchで行うものではないかと思いましたが、現時点ではこのようにさせて頂きました。)
※ 上記部分を削除し、Patchで処理するようにしました。(2013/3/13)


■ ついにCentOS 5でAD DCを構築!しかし…

早速samba-tool domain provisionを実行し、AD DCを構築できることを確認。
また、kinitコマンドでKerberos認証が出来ることも確認。
これで完成。

ここまではCentOS 5の32bit環境で32bit版のrpm及びsrc.rpmを作ってきましたが、次は64bit環境で64bit版のrpmをリビルドするという作業になります。
いつもrpmを作成する前に、一旦環境をリセットするために、作業用のディレクトリを全て削除するためのスクリプトを実行しています。
これから64bit環境でリビルドするぞと意気込んで削除スクリプトを実行したまでは良かったのですが、すぐに異変に気づきました。

しまった…
32bit環境で削除スクリプトを実行してしまった!
これにより全てのSamba4に関するrpmが消し飛んでしまった…

その日は作業を続ける気力が失せてしまい、拗ねて寝ました…。
(ちなみにこんなミスは初めてでした。)


■ さくっとsrc.rpmを作って64bit版をリビルド

次の日、今までのノウハウは既に頭の中に刷り込まれていたため、さくっと2時間程度でrpmを作ることが出来ました。
さすがは俺と思いながら次は絶対に間違えないように、64bit環境をリセットしてsrc.rpmを移しリビルド。
通常は、32bit環境で作ったsrc.rpmをそのままリビルドして64bit用rpmを作るわけですが、今回も同様に進めていきました。


■ なぬ!?64bit環境でlibldbのビルドが通らない!?

順調にCentOS 5.9 64bit環境でlibtdb、libtalloc、libteventの順番でビルドし、その後libldbをビルドしていたらまたしてもトラブル発生!
どうやらまたpythonのエラーのようです。
32bit環境では問題無かったのに…

さすがにこの時はうんざりしました。
今まで、32bitでうまくリビルドできたものは64bitでもconfigureやmakeのオプションにミスが無い限り、通常は問題無いはずなんです。
Google先生に聞いてみても何も答えてくれないほどで、諦めムードが漂っていました。
やっぱり自分にはCentOS 5用のrpmを作ることは難しいのかと正直思いました。

でも、そんなこと言ってられないというか、もう意地なので基本に立ち返り、まずはエラーメッセージから実際のエラー箇所を辿ることにしました。


■ libldbを紐解く

まずlibldbの中身を確認し、エラー箇所を特定。

/ldb-1.1.15/buildtools/scripts/configure.waf
#!/bin/sh

PREVPATH=`dirname $0`

WAF=BUILDTOOLS/bin/waf

# using JOBS=1 gives maximum compatibility with
# systems like AIX which have broken threading in python
JOBS=1
export JOBS

cd BUILDPATH || exit 1
$WAF configure "$@" || exit 1
cd $PREVPATH

このスクリプトの「$WAF configure "$@"」でエラーになっていることが判明。
具体的にはその前に設定されている「BUILDTOOLS/bin/waf」が怪しいことがわかりました。

そのため一度手動でconfigureしてみると、同じエラーが発生することを確認。
しかし、pythonがわからない自分にとって解析は不可能。

悩むこと数分…、あることを閃きました。
wafファイルの先頭が「#!/usr/bin/env python」となっていましたが、「#!/usr/bin/env python2.6」に変えたらどうなるのだろうかと。

早速、修正しconfigureを手動で実行したところ……、なんとチェックが通った!

一応wafにはPython 2.3以上かどうかのチェックが入っていましたが、これが役に立っていないことが判明。
よって、以下のようなPatchを作成し、再度64bit用のビルドにチャレンジすることにしました。

ldb-1.1.15-waf.patch
--- ldb-1.1.15/buildtools/bin/waf.orig  2013-03-11 13:12:18.000000000 +0900
+++ ldb-1.1.15/buildtools/bin/waf 2013-03-11 13:12:31.000000000 +0900
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2.6
# encoding: ISO-8859-1
# Thomas Nagy, 2005-2010


■ ついにCentOS 5用のSamba4のrpm完成!

まずは、32bit環境で上記のPatchを組み込みlibldbをリビルドしてrpmをインストール。
問題無くAD DCを構築出来ることを確認!

続いて、出来上がったlibldbのsrc.rpmを使用して64bit環境でリビルドしてrpmをインストール。
出来た!

最後に、32/64bit両方の環境でsamba4のビルドをしてrpmをインストール。
完璧!

無事にrpmが完成しました。


■ 総評

恐らくSambaに詳しい人や、Pythonに詳しい人からすれば、何をバカなことで悩んでるのだと思ったに違いありません。
こんなにスキルの無い人間がrpmを作ってたのかと。鼻で笑った人もいるだろうと思います。

しょうがないです。一つのことを集中して詳しくなれればいいのですが、wingリポジトリでは多くのパッケージを扱っているので、簡単にそれぞれを極めることは出来ません。
また、それぞれを勉強するためにrpmを作っているので、詳しくない時に作ることを考えれば、当然の結果だと言えると思います。

今後も引き続きメンテナンスしていくので、まだ細かいところで不具合や気に入らないところが出てくる可能性はありますが、その度に少しずつ修正していき、出来ればその道の達人にwingリポジトリのsrc.rpmを見て頂き、少しでも突っ込みを入れてくれるとありがたいと思っています。
そして、完成したrpmが少しでも困っている人達のお役に立てられればと願っています。

以上がSamba4のrpmが出来るまでです。
いろいろと感想などもらえるとありがたいです!


■ 次回予告

MariaDBとMariaDB用mroongaにチャレンジします。
たぶん、CentOS 6用のみになると思います。
それか、wingリポジトリの創世記前に作ったopenldapの苦労話を先に書くかもしれません。
まだ作り始めていませんが、完成次第リリースし、今回のようなドタバタ劇も公開したいと思います。

以下、参考リンクです。

Wikipedia(Linux)
Wikipedia(CentOS)
Wikipedia(Samba)
Wikipedia(Active Directory)
Wikipedia(ドメインコントローラ)
Samba
日本 Samba ユーザー会

関連記事


FC2Blog Rankingblogram投票ボタンとれまが人気ブログランキングブログランキング・にほんブログ村へ
くる天 人気ブログランキングにほんブログ村 IT技術ブログ CentOSへ

テーマ : Linux
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

WING☆

Author:WING☆


カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
カウンター
お問い合わせ

名前:
メール:
件名:
本文:

WING☆からのお知らせ
  • CentOS 7設定集
  •    └wingリポジトリ(el7)

  • CentOS 6 x64設定集
  •    └wingリポジトリ(el6)

  • CentOS 5 x64設定集
  •    └wingリポジトリ(el5)



    My Yahoo!に追加

    FC2ブログランキング



    リンク
    ブロとも一覧
    Virtualization & Sever Maniax
    RSSリンクの表示
    QRコード
    QRコード
    ブロとも申請フォーム

    この人とブロともになる

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。