kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

CentOS5にlsyncdをインストール

以前はCentOS6系にインストールしましたが、
今回は5系にインストールした時のメモです。
directモードで動かしてます。
基本的には、6系にインストールした時と
同じ手順でインストールできました。
大きな違いとしては、6系では、version2.1がインストールされますが、
5系では2.0がインストールされることです。
あとは、設定ファイルのsettings部分の書き方を気をつければ、同じように動きました。

lsync依存パッケージのインストール

入っているかどうかの確認

$ yum list installed | egrep "libxml2-devel|lua-devel|lua-static"

luaのインストール

上記確認で、luaが入っていなかったのでインストールします。
luaは、CentOS5系のデフォルトリポジトリにはないので、epelからインストールします。
epelリポジトリを別途追加しておく必要があります。
今回は、この方法リポジトリの追加をしました。

$ sudo yum --enablerepo=epel install lua-devel lua-static

lsyncdのインストール

lsyncdはrpmforgeのリポジトリにあります。 リポジトリ追加を行っていない場合は、別途リポジトリの追加が必要です。

$ sudo yum install -y lsyncd --enablerepo=rpmforge

version 2.0がインストールされました。 こちらの記事によると、
CentOS5系とlsyncdの2.1は相性が悪いらしいので、2.0でよしとしました。

起動オプションの設定

6系と同じ手順

起動ファイルの修正

6系と同じ手順

設定ファイルの作成

6系の方にも書きましたが、
version 2.0ではsettings {の部分をsettings = {として、=でつなげてあげる必要があります。

settings = {
        logfile    = "/var/log/lsyncd.log",
        statusFile = "/tmp/lsyncd.stat",
        nodaemon = false,
}
sync{
        default.direct,
        source="/home/vagrant/src/",
        target="/home/vagrant/target/"
}

CentOS6にlsyncdをインストールしてdirectモードで動かす

lsyncdをインストールした時のメモです。
通常はrsyncモードで動かすと思いますが、今回の要件では
ローカルでのディレクトリ同期だったので、directモードにしました。

本家のgithub

lsync依存パッケージのインストール

$ yum list installed | egrep "libxml2-devel|lua-devel|lua-static" //入っているかどうかの確認
$ sudo yum -y install libxml2-devel lua-devel lua-static

lsyncdのインストール

lsyncdはrpmforgeのリポジトリにあります。 リポジトリ追加を行っていない場合は、別途リポジトリの追加が必要です。

$ sudo yum install -y lsyncd

version 2.1がインストールされました。

起動オプションの設定

pidfileを吐くように設定します。

$ sudo cp -ap /etc/sysconfig/lsyncd /etc/sysconfig/lsyncd_20150815
$ sudo vi /etc/sysconfig/lsyncd
$ diff -u /etc/sysconfig/lsyncd_20150815 /etc/sysconfig/lsyncd
--- /etc/sysconfig/lsyncd_20150815      2015-08-15 19:16:19.671691805 +0900
+++ /etc/sysconfig/lsyncd       2015-08-15 19:16:51.536611294 +0900
@@ -1,3 +1,3 @@
 # Put your lsyncd options here
 
-#OPTIONS="-pidfile /var/run/lsyncd.pid /etc/lsyncd.conf"
+OPTIONS="-pidfile /var/run/lsyncd.pid /etc/lsyncd.conf"

起動ファイルの修正

リンク先を参考に起動ファイルの修正を行います。

$ sudo cp -ap /etc/init.d/lsyncd /etc/init.d/lsyncd_20150815
$ sudo vi /etc/init.d/lsyncd
$ diff -u /etc/init.d/lsyncd_20150815 /etc/init.d/lsyncd
--- /etc/init.d/lsyncd_20150815 2013-03-20 20:54:23.000000000 +0900
+++ /etc/init.d/lsyncd  2015-08-15 19:20:06.129853473 +0900
@@ -20,7 +20,7 @@
 OPTIONS="-pidfile /var/run/lsyncd.pid /etc/lsyncd.conf"
 
 if [ -e /etc/sysconfig/lsyncd ]; then
-       /etc/sysconfig/lsyncd
+       source /etc/sysconfig/lsyncd
 fi
 

テストディレクトリ作成

$ cd ~
$ mkdir {src,target}
$ ll
合計 8
drwxrwxr-x 2 vagrant vagrant 4096  8月 15 18:58 2015 src
drwxrwxr-x 2 vagrant vagrant 4096  8月 15 18:58 2015 target

設定ファイルの作成

$ sudo vi /etc/lsyncd.conf

設定ファイルを作成します。
インストールしただけではできないので新規です。

下記はversion2.1での書き方です。 version 2.0ではsettings {の部分をsettings = {として、=でつなげてあげる必要があります。

settings {
        logfile    = "/var/log/lsyncd.log",
        statusFile = "/tmp/lsyncd.stat",
        nodaemon = false,
}
sync{
        default.direct,
        source="/home/vagrant/src/",
        target="/home/vagrant/target/"
}

設定値

  • logfile
    • ログファイルの場所を指定します。
    • エラーメッセージとかが表示されます。
  • statusFile
    • 監視の状態が表示されます。
    • どのディレクトリを見張っているかなど
    • 初回同期のコマンドイメージなど
  • nodaemon
    • デーモンで起動させる設定です。
  • default.direct
    • directモードで同期します。
  • source
    • 同期の元となるディレクトリです。
  • target
    • 同期の先となるディレクトリです。

起動

$ sudo /etc/init.d/lsyncd start
lsyncd を起動中:                                           [  OK  ]

テスト

$ ll
合計 8
drwxrwxr-x 2 vagrant vagrant 4096  8月 15 19:24 2015 src
drwxrwxr-x 2 vagrant vagrant 4096  8月 15 19:24 2015 target
$ ll -a src/
合計 8
drwxrwxr-x  2 vagrant vagrant 4096  8月 15 19:24 2015 .
drwx------. 5 vagrant vagrant 4096  8月 15 19:24 2015 ..
$ ll -a target/
合計 8
drwxrwxr-x  2 vagrant vagrant 4096  8月 15 19:24 2015 .
drwx------. 5 vagrant vagrant 4096  8月 15 19:24 2015 ..
$ touch src/test.txt
$ ll -a target
合計 8
drwxrwxr-x  2 vagrant vagrant 4096  8月 15 19:26 2015 .
drwx------. 5 vagrant vagrant 4096  8月 15 19:24 2015 ..
-rw-r--r--  1 root    root       0  8月 15 19:26 2015 test.txt
$ echo "hello world" > src/test.txt 
$ cat target/test.txt
hello world

CentOSでのリポジトリ追加方法まとめ

自分用メモ
リポジトリの追加を毎回調べているので、
URLとともに追加方法と、使い方をメモ。

リポジトリRPMの場所

下記URLから最新のものを探す

rpmをダウンロードして、インストール

cd /usr/local/src
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

rpmオプション

  • U
    • アップグレード。なかったらインストール
  • v
    • verbose
  • h
    • 進捗を#で表示

rpm に引き渡すものはURL直指定でも可

追加リポジトリをデフォルトで無効にしておく

この辺は、プロジェクトによっても違うと思います。
ここではデフォルトでは無効にしておいて、
対象パッケージをインストールする際に指定する方法を記述します。

リポジトリを追加すると、/etc/yum.repos.dリポジトリのファイルができます。
epelrpmforgeの場合はこんなファイルができます。

  • epel-testing.repo
  • epel.repo
  • mirrors-rpmforge
  • mirrors-rpmforge-extras
  • mirrors-rpmforge-testing
  • rpmforge.repo

epel.reporpmforge.repoについては、デフォルトで有効になっているので無効にします。

epleの場合

vi /etc/yum.repos.d/epel.repo

ファイルを開くと下記のようになっているので、enabled=1のところを0にして保存します。

[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

[epel-debuginfo]
...以下略

追加したリポジトリを使ってパッケージをインストールする

enablerepoに使いたいリポジトリを指定して実行します

sudo yum install package-name --enablerepo=epel

Cliborでマクロを使えるようにする

自分用メモ
Cliborというpythonでマクロが実行できる
Windows用のクリップボードユーティリティソフトがあります。
そのマクロを使えるようになるまでの設定方法です。
作者のサイトはpython2系の紹介をしています。
ここでは、Window7 64bitで、python3系を使う方法を記載します。

Chocolateyでpythonをインストール

Chocolatey自体のインストールはこちら
管理者権限でコマンドプロンプトを開き、下記を実行します。

$cinst python

インストールが終わると、C:\tools\pythonにexeができます。
インストールされるpythonのバージョンは3系です。

pywin32をインストール

pywin32もChocolateyでインストールしたかったのですが、
パッケージが古いようで、インストールされるのはpyhon2.7系のものでした。
なので、こちらは別途インストールします。

ダウンロード先はこちら
最新のビルド番号のものを取ってきます。
2015年8月現在では、219が最新でした。
今回は、Windows7 64Bit環境で動かすので、pywin32-219.win-amd64-py3.4.exeをダウンロードしました。
ダウンロードしてきたexeを実行すると、C:\tools\python\Lib\site-packagesにインストールされます。

clb_ex.batを作る

あとは、基本的にサイトに記載されている通りに設定します。

clb_ex.batは、下記のようにしました。

c:
cd C:\tools\python
SET PYTHONHOME=C:\tools\python

これで、マクロ自体は動くようになると思います。

Redmine 親チケットは不正な値です。

Redmineのver2.5で発生しました。

やりたかった構成は下記です。

  • 1
    • 101
    • 102

最初、下記の状態でした。

  • 1
    • 101

101をコピーして、102を作成し
下記の状態にしました。

  • 1
    • 101
  • 102

この状態で、102のチケットの親チケットを1に設定しようとすると

親チケット は不正な値です。

というエラーメッセージが表示されました。
102に設定されている関連するチケットを削除すると、
親チケットを編集できるようになりました。
削除した関連チケットはコピー元である101です。