0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

私的サーバー構築日誌:Subversionをインストールして /etc をバージョン管理・Ubuntu 24.04 LTS in MicroServer N54L

Posted at

能書き

私的サーバー構築日誌:仕切り直しからの自宅サーバー構築の続きです。

MicroServer N54L に Ubuntu24.04LTS をインストールしてZFSで使うように設定した我が家のファイルサーバですが、前回はHDDの内の1台を交換しました。

さあここからだ!となる前に、/etcをバージョン管理します。但し私の個人的な好みで、GitではなくSubversionを使います。その為etckeeperは使いません。

既に何度か同じ内容の記事を書いていますが、私の作業記録という事で。

目標

我が家のファイルサーバ MicroServer N54L/etcをSubversionでバージョン管理できるように設定し、最初のコミットを実行します。

参考文献

/etcのバージョン管理とは関係ありませんが、もしxmllistコマンドがあればSubversionのログを自由に操作できます。

準備

システムのアップデート

aptコマンドのリポジトリuniverseを追加します。

sudo apt-add-repository universe

この時、続行するなら[ENTER]を押せ、との表示が出ます。素直にEnterキーを押します。

$ sudo apt-add-repository universe
Adding component(s) 'universe' to all repositories.
Press [ENTER] to continue or Ctrl-c to cancel.

そしてパッケージ関連の更新など。

sudo apt update
sudo apt upgrade

Subversionインストール

パッケージ

svnパッケージをインストール。

sudo apt install -y subversion

インストールできたか確認します。

svn --version | head -n2

表示内容は、例えば下記のようになります。

$ svn --version | head -n2
svn, version 1.14.3 (r1914484)
   compiled Apr  1 2024, 04:55:49 on x86_64-pc-linux-gnu

Subversionのバージョンは1.14.3になりました。そしてman svninfo svnも、公式ページでも、レッドブックを読めと書いてありました。

リポジトリ

今回はとにかく/etcのバージョン管理を開始するのが目標ですので、汎用的なプロジェクト用の設定は後日とします。

  • Subversion操作用ユーザは作成しません。/etcバージョン管理はrootが行います。
  • 汎用リポジトリの場所も用意しません。

汎用ではなく/etcの為のリポジトリの場所は、/etc/.svn_repoとします。

当然、svnの管理対象外とする設定を忘れてはなりません。その手順は後述。

sudo mkdir /etc/.svn_repo
sudo svnadmin create /etc/.svn_repo/

/etcを作業コピーにする

cd /tmp
mkdir etc
sudo svn import etc file:///etc/.svn_repo/ -m "create project"
rmdir etc
sudo svn co file:///etc/.svn_repo/ /etc

ちゃんと出来たか確認。

ls -dl /etc/.svn

/etc/.svnディレクトリが出来ていればOKです。例えば下記のように表示されればOK。

$ ls -dl /etc/.svn
drwxr-xr-x 4 root root 4096 Nov 28 20:33 /etc/.svn

バージョン管理

最初の一歩

以前問題を起こしていたファイル/etc/ssl/certs/NetLock*は、今は問題無く処理できるようになったようです。

cd /etc
sudo svn add *
sudo ls *- | sudo xargs -rt svn revert

svn revertの結果は下記のように表示されます。

$ sudo ls *- | sudo xargs -rt svn revert
svn revert group- gshadow- passwd- shadow- subgid- subuid-
Reverted 'group-'
Reverted 'gshadow-'
Reverted 'passwd-'
Reverted 'shadow-'
Reverted 'subgid-'
Reverted 'subuid-'

Subversion管理から外したファイルを確認してみます。

sudo svn st --no-ignore | grep -E "^(\?|I)"

結果は下記の通り。

$ sudo svn st --no-ignore | grep -E "^(\?|I)"
?       .pwd.lock
?       .resolv.conf.systemd-resolved.bak
?       .svn_repo
?       .updated
?       group-
?       gshadow-
?       passwd-
?       shadow-
?       subgid-
?       subuid-

.pwd.lock については以前調べました。バージョン管理は不要です。どうも更新時に設定されるロックファイルらしい。という訳で無視します。

さて、最初のcommitです。コミットメッセージは何でも良いんですが。

sudo svn ci -m "first commit"

どういう訳か部分的にリビジョン不一致を起こす模様。そのため下記コマンドも実行します。

sudo svn up /etc

確認

ログを表示させてみます。

sudo svn log /etc

こんな風に表示されます。

$ sudo svn log /etc
------------------------------------------------------------------------
r1 | root | 2024-11-28 20:39:17 +0900 (Thu, 28 Nov 2024) | 1 line

first commit
------------------------------------------------------------------------

余談ですが、xmllintコマンドがあれば、--xmlオプションと組み合わせて色んな値を抽出する事が出来ます。headとかsedとかを組み合わせてビクビクしながら調整する必要はありません。が、現状ではインストールされていませんので、参考文献を示すだけにしておきます(参考文献の章を参照)

無視ファイル

現時点でSubversion管理下に無いファイルは、すべて無視ファイルとして登録します。

sudo bash -c "svn propset svn:ignore -F <(svn st | cut -b9-) ."

状態を確認します。

$ cd /etc
$ sudo svn st
 M      .
$ sudo svn di
Index: .
===================================================================
--- .   (revision 1)
+++ .   (working copy)

Property changes on: .
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,10 ##
+.pwd.lock
+.resolv.conf.systemd-resolved.bak
+.svn_repo
+.updated
+group-
+gshadow-
+passwd-
+shadow-
+subgid-
+subuid-

これも/etcの変更ですのでcommitします。

sudo svn ci -m"set svn:ignore"
sudo svn up /etc

仕舞い

これで/etcをバージョン管理できるようになりました。個人的な好みでSubversionですが。もしgitを使いたい方は、素直にetckeeperを使用した方がよろしいでしょう。私はこれで行きます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?