- blogs:
- cles::blog

'root' is not allowed to commit filesと言われたら

CVSのようなバージョン管理システムに慣れてくると、通常のソースコードだけでなくてサーバの設定ファイルなんかも入れたくなってきます。最近、httpd.confとか、php.iniなんかをCVSリポジトリに突っ込んで管理するようになりました。たくさんのサーバの管理とかやっていたりすると設定ファイルが集中管理と配布ができるのでとっても快適です。
そうするとちょっと不便に感じるのが、CVSがデフォルトでrootでのコミットを許していないことです*1。でも、いちいちsuするのは正直ちょっと面倒くさい。タイトルの「'root' is not allowed to commit files」はこれを強行しようとすると表示されるエラーメッセージです。
CVS--Concurrent Versions System v1.11.17: Troubleshooting
'root' is not allowed to commit files
永続する変更を格納するときに、CVS は誰が変更を格納したかの ログのエントリを書きます。変更を "root" として ("su" や他の root 権限を与えるプログラムを使わないで) 格納 しようとしているときは、CVS は誰が実際に変更を行なったのかを 知ることができません。ですから、デフォルトでは CVS は "root" としてログインしているユーザからの変更の格納は許可していません。 (このオプションは `configure' に --enable-rootcommit オプション を指定して CVS を再コンパイルすることで無効にできます。 システムによっては、CVS をビルドする前 に `config.h' ファイルを 編集することになります。)
マニュアルを読んで分かったのは、
・誰がソースコードを変更したのか分からなくなるためであって、それ以上の理由はなさそう
・--enable-rootcommitを指定してリコンパイルすればcommitできるようになる
ということです。そもそも、僕は設定ファイルのサーバ間の同期と更新履歴がほしいだけですし、誰がファイルを変更したかについてはログに頼る必要もなく分かる状況にあるので、rootでコミットできてしまうデメリットはなさそうなので、cvsを入れなおしてみることにしました。
† 早速リコンパイルしてみる
今回のサーバはCVSをrpmでインストールしてあるので、アンインストールしてからソースからコンパイルしてインストールなんて野暮なことをせずに、rpmを使ってこれを入れ替えしてみようと思います。以下は手順の備忘録。他のRPMにも応用可能だと思います。
† 1.使っているCVSのrpmのバージョンを確認
[root@hoge ~]# rpm -qa | grep cvs
cvs-1.11.17-6.FC3
今回のインストール済みのcvsはcvs-1.11.17-6.FC3とわかります。
† 2.rpmfind.netでsrpmを探してダウンロード
rpmfind.netに行ってcvsで検索をかけて、srpmを探す。
今回の場合はcvs-1.11.17-6.FC3.src.rpmなので、これをダウンロード。
† 3.srpmをサーバにインストール
[root@hoge ~]# rpm -ivh cvs-1.11.17-6.FC3.src.rpm
こうすることでrootユーザの場合には、/usr/src/redhat/SPECS以下にSPECファイルと/usr/src/redhat/SOURCESにソースファイル、patch類がインストールされる。
† 4.SPECにコンパイルオプションを追加
[root@hoge ~]# cd /usr/src/redhat/SPECS
[root@hoge SPECS]# vi cvs.spec
specファイルを開いて、コンパイルオプションを追加する。具体的には、%configureをサーチして、その直後に--enable-rootcommitを追加。
本当はバージョンとかも変えたほうがいいんでしょうが、面倒なので今回はそのまま。
† 5.rpmをビルド
[root@hoge SPECS]# rpmbuild -ba cvs.spec
これでrpmのビルドが行われ、成功すると/usr/src/redhat/RPMS/i386以下にrpmが生成される。
† 6.すでにインストール済みのCVSをアンインストール
[root@hoge i386]# rpm -e cvs-1.11.17-6.FC3
今回はバージョンが全く一緒なので、アンインストールしないとコンフリクトしているといわれてしまうので。
† 7.新しく作ったrpmをインストール
[root@hoge i386]# rpm -ivh cvs-1.11.17-6.FC3.i386.rpm
エラーが出なければ無事終了。
† 参考
エンタープライズ:特集:第2回 RPM活用のステップアップ-SRPMリビルドとコンパイルマスター (1/6)
- *1: できないのはcommitだけでupdateとかcheckoutはできる。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/133
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110913)
3 . 年次の人間ドックへ(110477)
4 . 2023 年分の確定申告完了!(1つめ)(110025)
5 . 三菱鉛筆がラミーを買収(109925)