*

epgrec UNAのバージョンアップ方法

  最終更新日:2016/05/22

epgrec UNAのバージョンアップ方法

 epgrec UNAのバージョンアップ方法についてまとめました。基本的にファイルを上書きすれば良いだけなのですが、バージョンアップに失敗してChinachuなどに乗り換えたなんて人も結構いるようです。そのため、元の環境はバックアップして、安全にバージョンアップする手順を説明します。

スポンサーリンク

注意事項

 本ブログの他記事では、epgrec UNAのインストール先を”/var/www/epgrec”としています。そのため、本記事でもこのディレクトリを対象にバックアップ&バージョンアップを行います。異なるディレクトリにインストールしている場合、適宜読み替えて下さい。また、Webサーバはnginxとしています。

 バックアップとバージョンアップを行う際は、録画もEPG取得もしていない時間帯に行って下さい。本ブログで紹介しているepgrec UNAのインストール記事通りに設定した場合、EPG取得は偶数時刻の29分以降に行います。そのため、この時間は特に避けて下さい。

 作業の前は念のため、録画コマンドであるrecpt1が動作していないことを以下のコマンドで確認しましょう。

$ pidof recpt1

何も表示されなければOK. 数字が表示されたらNG.

 基本的には奇数時刻の録画予約が入っていない時間帯に作業することをおすすめします(/etc/crontabの設定の確認要)。

バックアップ

 バージョンアップ前にepgrec UNA環境のバックアップを取ります。対象はepgrec UNA本体とデータベースになります。録画ファイルは対象外とします。

epgrec UNA本体のバックアップ

 ”/var/www/epgrec”ディレクトリを対象にバックアップを取ります。rootユーザーで行って下さい。

# cd /var/www
# tar cvzf epgrec_backup.tar.gz --exclude video epgrec/

 ”–exclude video”は録画ディレクトリをバックアップから除外するためのオプションです。今回はバックアップファイル名を”epgrec_backup.tar.gz”としました。

データベースのバックアップ

 続いてMySQL(またはMariaDB)に作ったepgrec UNAのデータベースのバックアップを取ります。mysqldumpコマンドでリダイレクトでファイルに出力します。中身はテキストデータです。

$ mysqldump --single-transaction -u epgrec --password="データベースパスワード" epgrec > epgrec_db_backup.dump

  ”-u”はユーザー名の指定です。リダイレクト直前の”epgrec”はデータベース名。
  ユーザー名、データベース名をデフォルトから変更している場合、適宜読み替えて下さい。

$ tail -n 1 epgrec_db_backup.dump

  下記のように表示されれば成功です。

   -- Dump completed on 2015-12-04 21:04:22

バージョンアップ

 バージョンアップ方法は大きく分けて3つあります。

  • 1つ前のバージョンからの更新方法
  • 2つ以上前のバージョンからの更新方法
  • パッチを自作して更新する方法

 前のバージョンの違いによる方法とパッチを自作する方法です。パッチ自作は前がどのバージョンでも対応可能ですが、パッチ操作に慣れている人以外にはおすすめしません。ただし、epgrec UNAを改造して使用している場合、パッチによる更新のほうが楽です。

 なお、バージョンアップ前にreadme.txtを確認して更新内容を確認するようにして下さい。

1つ前のバージョンからの更新方法

 記事投稿時点の最新バージョンは”epgrecUNA 人柱版 (2015/11/14)”です。この1つ前の”epgrecUNA 人柱版 (2015/07/20)”からバージョンアップする場合、既存利用者向けのアップデートファイルが用意されています。そちらを使用して更新します。

 更新情報ページの下の方のリンクからアップデートファイルをダウンロードします。今回のファイル名は”epgrecUNA150720update.tar.gz”です。ブラウザでしかダウンロードできないため、ダウンロード後に録画サーバ側に転送します。以下は全てrootユーザーで行います。

# tar xvzf epgrecUNA150720update.tar.gz -C /var/www/
# cd /var/www

CentOS 7の場合)
 # chown -R nginx:nginx epgrec/

Ubuntu・Debianの場合)
 # chown -R www-data:www-data epgrec/

# ls *.diff

 ここでファイル名が表示されたら以降も実行します。

パッチファイルが付属している場合)
  2015/11/14版には"config.diff"が付属。以下、パッチの当て方です。

  # patch -p2 -d epgrec < ../config.diff 

   下記のように表示されれば成功です。

    patching file config.php

   もし失敗した場合、エディタを使い手作業で更新する必要があります。
   パッチファイルの中身を見て、更新箇所をエディタで更新します。
   詳細は付属のreadme.txtを確認して下さい。

 ”/var/www”ディレクトリの下にreadme.txtやパッチファイルが残っているので、それらは削除しておきましょう。

 念のため補足ですが、今回はpatchコマンドのオプションで”-p2”を使用しましたが、”-p1”でうまく行く場合もあるかもしれません。これはパッチファイルの作り方によります。

2つ以上前のバージョンからの更新方法

 2つ以上前のバージョンから更新するのは少々やっかいです。一番良い方法は、前の節で紹介した「1つ前のバージョンからの更新方法」を繰り返す方法です。しかし、3つも4つも繰り返すとなるとミスが増えそうです。

 そこで試すのが、最新バージョンを上書きする方法です。必ずうまく行くとは限らないので、自己責任でお願いします。ただし、もし駄目でもバックアップから戻せば良いです。

 記事投稿時点の最新バージョンは”epgrecUNA 人柱版 (2015/11/14)”です。ファイルは、”epgrecUNA_151114.tar.gz”になります。設定ファイルを除外して全て上書き解凍します。

# tar xvzf epgrecUNA_151114.tar.gz --exclude config.php -C /var/www/

CentOS 7の場合)
 # chown -R nginx:nginx /var/www/epgrec/

Ubuntu・Debianの場合)
 # chown -R www-data:www-data /var/www/epgrec/

 以上で終わりですが、これでうまく動作するかは更新内容次第です。また、2015/11/14版に関してはconfig.phpに変更が加わっているので、『1つ前のバージョンからの更新方法』で実行したパッチファイルの適用も必要になります。

 うまく動作しない場合、以下を試してみて下さい。

  • 録画予約を全て削除する
  • 自動録画キーワードを全て削除する
  • EPGを手動更新する
  • 設定を保存し直す

 録画予約と自動録画キーワードの削除に関しては、更新前に行ったほうが良いかもしれません(データベース構造に変更が加わった場合など)。それでも駄目ならバックアップから元に戻して下さい。

 なお、EPGの手動更新は以下のコマンドで実行します。

CentOS 7)
 $ su - nginx
 $ /var/www/epgrec/shepherd.php

Ubuntuの場合)
 $ sudo -u www-data /var/www/epgrec/shepherd.php

Debianの場合)
 $ su - www-data
 $ /var/www/epgrec/shepherd.php

パッチを自作して更新する方法

 この方法はパッチ操作に慣れている人向けの方法です。利点と欠点についてまとめました。

  • 利点
    • patchコマンド1回で更新できる
    • 変更箇所を直接把握できる
    • ファイルの所有者変更が必要ない
    • 改造している場合でも対応可能
  • 欠点
    • パッチファイルを作るのが面倒
    • 更新に失敗すると手作業での更新になる

 下記はパッチファイルを自作して当てる手順の一例です。

$ tar xvzf epgrecUNA_150720.tar.gz
$ mv epgrec epgrec_150720
$ tar xvzf epgrecUNA_151114.tar.gz
$ mv epgrec epgrec_151114
$ diff -Naru epgrec_150720 epgrec_151114 > epgrec.patch

 以降はrootユーザーで実行

# cp epgrec.patch /var/www
# cd /var/www
# patch -p1 -d epgrec < epgrec.patch

 何度も書きますが、パッチファイル操作に慣れている人向けなので、上記内容を理解した上で実行して下さい。

バックアップから復元する方法

 バージョンアップに失敗した場合にバックアップファイルからepgrec UNAを復元する方法について説明します。また、別のPCに環境を移動したい場合も同じ手順で実行可能です。

epgrec UNAの復元

 まずはPHP-FPMとWebサーバを停止します。

CentOS 7の場合)
  # systemctl stop php-fpm
  # systemctl stop nginx

Ubuntuの場合)
  # sudo service php5-fpm stop
  # sudo service nginx stop

Debianの場合)
  # /etc/init.d/php5-fpm stop
  # /etc/init.d/nginx stop

 古いepgrecディレクトリを退避してバックアップファイルを解凍します。その後、PHP-FPMとnginxを再起動します。

# cd /var/www
# mv epgrec epgrec.old
# tar xvzf epgrec_backup.tar.gz
# mv epgrec.old/video epgrec/

CentOS 7の場合)
  # systemctl start php-fpm
  # systemctl start nginx

Ubuntuの場合)
  # sudo service php5-fpm start
  # sudo service nginx start

Debianの場合)
  # /etc/init.d/php5-fpm start
  # /etc/init.d/nginx start

データベースの復元

 最初に既存のデータベースを削除して、再作成します。

$ mysql -u root -p
  Enter password: ← MySQL(MariaDB)のrootユーザーのパスワードを入力

  mysql> drop database epgrec;
  mysql> create database epgrec;
  mysql> grant all on epgrec.* to epgrec@localhost identified by 'パスワード';

   'パスワード'は半角英数で既存設定と同じものを入力して下さい。

  mysql> quit

 続いてバックアップしたデータベースの内容を復旧します。

$ mysql -u epgrec epgrec -p < epgrec_db_backup.dump

 以上で終了です。

参考ページ