[メモ] RaspberryPiのOMV3でcalibre-server(openmediavault-calibre)


RasPi2のOMV3上で`calibre-server`をとりあえず動かす。
![OMV-calibre01.png](https://qiita-image-store.s3.amazonaws.com/0/75594/dc3d66c6-be84-8c29-4df0-8d7e5accdf0d.png)

## 動機
- calibre-serverを動かすプラグイン[`openmediavault-calibre`](https://github.com/OpenMediaVault-Plugin-Developers/openmediavault-calibre)が、i386/amd64のみ対応の模様。(インストールスクリプトで、calibreのサイトからlinuxバイナリ(*'32-bit and 64-bit Intel compatible machines'*)を拾ってきて、`/opt/calibre` に展開してる)

- RaspberryPiで、apt-getで、calibreをインストール、calibre-server起動、ブラウザで、http://らずぱいのIP:8080 でアクセス。動いてるっぽい。

    ```
apt-get install calibre
calibre-server --port=8080 --with-library=/tmp
```
- => インテルバイナリのかわりに、calibreパッケージをつかえば、いけるかも？

## 準備
- OMV3の動いてる、RaspberryPi<br>
前回、[インストール記事](http://qiita.com/mt08/items/85e502553d362a25660e)かいたけど、[ここ](https://sourceforge.net/projects/openmediavault/files/Raspberry%20Pi%20images/)からイメージ拾って焼いたほうがはやいかも

## 手順
ソース持ってきて、パッチを当てて、debファイルを作成、インストール。

1. diff.patch作成( `cat >diff.patch` とかでこぴぺ. CTRL-D)
2. debファイルを作るために必要なものをインストール<br>`apt-get install build-essential fakeroot debhelper dh-systemd`
3. ソースをクローン<br>`git clone -b master https://github.com/OpenMediaVault-Plugin-Developers/openmediavault-calibre.git`
<br>`cd openmediavault-calibre`
4. パッチを当てる(パッチは以下参照)<br>`patch -p0 < ../diff.patch`
5. deb作成<br> `fakeroot debian/rules clean binary`<br>`cd ..`
6. debインストール <br>`dpkg -i openmediavault-calibre_3.0_all.deb`
7. 依存してるパッケージをインストール<br>`apt-get -f install -y`


```text:まとめ
# diff.patchを作成 cat >diff.patch とかでこぴぺ. CTRL-D
#
apt-get install build-essential fakeroot debhelper dh-systemd git
git clone -b master https://github.com/OpenMediaVault-Plugin-Developers/openmediavault-calibre.git
cd openmediavault-calibre/
patch -p0 < ../diff.patch
fakeroot debian/rules clean binary
cd ..
dpkg -i openmediavault-calibre_3.0_all.deb
apt-get -f install -y
```




## パッチ
```text:diff.patch
diff --git debian/calibre.service debian/calibre.service
index c8d947f..ae301e8 100644
--- debian/calibre.service
+++ debian/calibre.service
@@ -4,17 +4,17 @@ After=network.target

 [Service]
 Type=forking
-User=calibre
-Group=users
+#User=calibre
+#Group=users
 EnvironmentFile=/etc/calibre-server.conf
-PIDFile=/var/run/calibre/calibre.pid
-ExecStart=/opt/calibre/calibre-server \
+PIDFile=/var/run/calibre.pid
+ExecStart=/usr/bin/calibre-server \
     --daemonize \
     --max-cover=${MAX_COVER} \
     --username=${USERNAME} \
     --password=${PASSWORD} \
     --port=${PORT} \
-    --pidfile=/var/run/calibre/calibre.pid \
+    --pidfile=/var/run/calibre.pid \
     --with-library=${LIBRARY}

 [Install]
diff --git debian/control debian/control
index d51c25a..573a44b 100644
--- debian/control
+++ debian/control
@@ -33,6 +33,7 @@ Depends: bzip2,
          python-pypdf,
          python-qt4,
          xdg-utils,
+         calibre,
          ${misc:Depends}
 Description: Calibre plugin for OpenMediaVault.
  Calibre is a free and open source e-book library management
diff --git debian/postrm debian/postrm
index ade4c90..b10b064 100644
--- debian/postrm
+++ debian/postrm
@@ -8,8 +8,6 @@ set -e
 case "$1" in
     purge)
         omv_config_delete "/config/services/calibre"
-        rm -rf /opt/calibre
-        rm -rf /var/run/calibre
     ;;

     remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
diff --git usr/share/openmediavault/engined/rpc/calibre.inc usr/share/openmediavault/engined/rpc/calibre.inc
index 704b7da..1de3ee1 100644
--- usr/share/openmediavault/engined/rpc/calibre.inc
+++ usr/share/openmediavault/engined/rpc/calibre.inc
@@ -48,7 +48,7 @@ class OMVRpcServiceCalibre extends OMVRpcServiceAbstract

     private function getProgram()
     {
-        return "/opt/calibre/calibredb";
+        return "/usr/bin/calibredb";
     }

     public function initialize()
diff --git usr/share/openmediavault/mkconf/calibre usr/share/openmediavault/mkconf/calibre
index 08ab03e..291d838 100755
--- usr/share/openmediavault/mkconf/calibre
+++ usr/share/openmediavault/mkconf/calibre
@@ -47,38 +47,18 @@ install()
             ;;
     esac

-    echo "Installing Calibre..."
-    mkdir -p ${INSTALL_DIR}
-    chown ${RUN_AS}:${RUN_GRP} ${INSTALL_DIR}
+    #echo "Installing Calibre..."

-    if $AMD64; then
-        if [ -f "${FILE64}" ]; then
-            rm -f ${FILE64}
-        fi
-        wget ${LINK64} -O ${FILE64}
-
-        echo "Extracting..."
-        tar -xJof ${FILE64} -C ${INSTALL_DIR}
-        rm -f ${FILE64}
-    else
-        if [ -f "${FILE32}" ]; then
-            rm -f ${FILE32}
-        fi
-        wget ${LINK32} -O ${FILE32}
+    #apt-get install -y calibre

-        echo "Extracting..."
-        tar -xJof ${FILE32} -C ${INSTALL_DIR}
-        rm -f ${FILE32}
-    fi
-
-    chown -R ${RUN_AS}:${RUN_GRP} ${INSTALL_DIR}
+    #chown -R ${RUN_AS}:${RUN_GRP} ${INSTALL_DIR}

     if [ "$(omv_config_get "${XPATH_ENABLE}")" != "1" ]; then
         systemctl disable ${SERVICE}.service >/dev/null || true
     fi

-    calibre_home="$(getent passwd ${SERVICE} | cut -d: -f6)"
-    chown -R ${RUN_AS}:${RUN_GRP} "${calibre_home}"
+    #calibre_home="$(getent passwd ${SERVICE} | cut -d: -f6)"
+    #chown -R ${RUN_AS}:${RUN_GRP} "${calibre_home}"
 }

 config()
```

1. debian/calibre.service:
    - calibre:usersだとうまく動かなかったので、コメントアウト。
    - PIDFile: `/var/run/calibre/calibre.pid` => `/var/run/calibre.pid`
2. debian/control
    - 依存パッケージに `calibre`追加
3. debian/postrm
    - `purge)` : `rm -rf /opt/calibre`と`rm -rf /var/run/calibre`を削除
    - `/opt/calibre/calibredb` => `/usr/bin/calibredb`
4. usr/share/openmediavault/mkconf/calibre
    - インテルのバイナリを入れてるとこらへんを削除


## その他
- `calibre`とか`calibre-server`とかの使い方がわからない。<br>=> 必要な機能はうごいているのだろうか？？
- インストールに時間がかかる。

    ```
real    35m56.361s
user    3m9.140s
sys     3m36.760s
```
- *.debを配布すればラクだよね。