RCS - no lock set by

 クラウディア
1. 概要
2. ロックをはずす
3. 調査
4. オチ

1. 概要

 対象のファイルは

/usr/local/etc/mail/spamassassin/local.cf
 だったのですが(以降の操作は、デフォルトディレクトリを移動しています)

ci -l local.cf
 しようとしたら

ci: RCS/local.cf,v: no lock set by root
 言われちゃいました。  「誰か他のユーザがロックしているので、あなたはだめよ」ってなもんですな。  はて、ディレクトリから言って、「root」ユーザ以外では、ロックもできないはずなんですが・・・。  なんかの拍子にやっちまったのかな。  本ページは、下記のサイトを参考にさせていただきました。
Novice Guide to RCS: Errors」
「rcs - コマンド (プログラム) の説明

2. ロックをはずす

 単にロックをはずすのは

rcs -u ファイル名
 でいいようです。  こんな、やりとりがあります。

RCS file: RCS/ファイル名,v
Revision 1.4 is already locked by ユーザ名.
Do you want to break the lock? [ny](n): y
rcs: warning: Mail notification of broken locks is not available.
rcs: warning: Please tell `ユーザ名' why you broke the lock.
1.4 unlocked
done
 リビジョン番号が、その時々で異なるのは、問題ないとして、上記3行目の問い合わせには、y Enter で答えます。  その結果、前にロックしていたユーザに、「なんでロックを解除したか、ちゃんと伝えてね」ちゅうことですね。

3. 調査

 前項のように、ロックを解除しない場合。  以下、「root」ユーザ権限で。  まず、誰がロックしているか調べるには・・・。

rlog -l ファイル名
 こんな感じで出力されます。

$ rlog -l local.cf

RCS file: RCS/local.cf,v
Working file: local.cf
head: 1.1
branch:
locks: strict
        ユーザ名: 1.1
access list:
symbolic names:
keyword substitution: kv
total revisions: 1;     selected revisions: 1
description:
----------------------------
revision 1.1    locked by: ユーザ名;
date: 2018/02/25 08:18:59;  author: kitayama;  state: Exp;
Initial revision
----------------------------
=============================================================================
 ほんまに不思議なことだなぁ。  対処が結構大変でした。  「RCS」のディレクトリ配下と実体のオーナをいったん、ログインユーザに変えて、「ci」。  それから、「root」ユーザで、「co」しなおしました。

4. オチ

 どうもこれ、同じ「root」ユーザのようでいて、そうでないことが分かりました。  以前、コミットしたときは

su
 で「root」ユーザ権限を使用していましたが、最近は

sudo su
 を使っているのです。  さらに、

ci
 するときに「-l」つけるのが面倒で、「alias」で

ci      (ci -l)
 を定義しているのがまずかったようです。  まず、前者、「su」と「sudo su」は、「OWNER」が違うようです。  「su」の場合、「OWNER」が、ログインユーザのままで、「sudo su」だと、「root」ユーザになっているようです。  で、解決方法として

su
\ci ファイル名
 しておいて

sudo su
\co -l ファイル名
 しておけば、以降は、思い撮りに作業ができます。
earthcar(アースカー)