読者です 読者をやめる 読者になる 読者になる

プログラミングとかLinuxとかの備忘録

プログラミング、Linuxでハマった箇所や環境構築のメモ

CentOS7にPT3録画サーバーを構築

Linux CentOS PT3

環境は

  • CentOS7.1
  • Nginx
  • epgrec

必要なパッケージのインストール

$ sudo yum -y install kernel-devel
$ sudo yum -y install git unzip bzip2 wget
$ sudo yum -y install gcc gcc-c++ kernel-devel make patch
$ sudo yum -y install perl-ExtUtils-MakeMaker

RPMforgeのインストール

CentOS7へのリポジトリの追加方法まとめを参考に以下の様にインストールする

$ sudo yum -y install yum-plugin-priorities
$ rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
$ rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

CentOS-Base.repoを優先度1 (priority=1)にする

$ sudo vi /etc/yum.repos.d/CentOS-Base.repo
priority=1

RPMforgeを
優先度12 (priority=12)
デフォルトで無効 (enabled=0) に設定する

$ sudo vi /etc/yum.repos.d/rpmforge.repo

SELinux無効化

$ sudo vi /etc/selinux/config
SELINUX=disabled

$ reboot

B-CASカードリーダ

カードリーダはSCR3310-NTTComを用いた

必要なパッケージのインストール

$ sudo yum -y install ccid pcsc-lite pcsc-lite-devel pcsc-lite-libs

pcsc-perlのインストール

$ cd
$ wget http://ludovic.rousseau.free.fr/softwares/pcsc-perl/pcsc-perl-1.4.14.tar.bz2
$ tar xf pcsc-perl-1.4.14.tar.bz2
$ cd pcsc-perl-1.4.14.tar.bz2
$ perl Makefile.PL
osname: linux
LDDFLAGS: 
INC: `pkg-config --cflags libpcsclite`
Checking if your kit is complete...
Looks good
Writing Makefile for Chipcard::PCSC::Card
Writing Makefile for Chipcard::PCSC

$ make
$ sudo make install

pcsc-toolsのインストール

$ cd
$ wget http://ludovic.rousseau.free.fr/softwares/pcsc-tools/pcsc-tools-1.4.25.tar.gz
$ tar xf pcsc-tools-1.4.25.tar.gz
$ cd pcsc-tools-1.4.25
$ make
$ sudo make install

サービス起動

$ sudo systemctl enable pcscd
$ sudo systemctl start pcscd

カードリーダの確認
出力が確認できたらCtrl + Cでコマンドを止める必要がある

$ pcsc_scan
PC/SC device scanner
V 1.4.25 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.8.8
Using reader plug'n play mechanism
Scanning present readers...
0: NTT Communications Corp. SCR3310-NTTCom USB SmartCard Reader [Vendor Interface] 00 00

(省略)
    Japanese Chijou Digital B-CAS Card (pay TV)

arib25のインストール

放送波のデコードに用いるarib25をインストールする

$ sudo yum -y install ld-linux.so.2

$ cd
$ wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
$ unzip cd c44e16dbb0e2.zip
$ cd pt1-c44e16dbb0e2/arib25
$ make
$ sudo make install

recpt1のインストール

http://sourceforge.jp/projects/epgrec/downloads/53384/pt1-drv_20111001.tar.gz
をダウンロードする

$ cd
$ tar xf http://sourceforge.jp/projects/epgrec/downloads/53384/pt1-drv_20111001.tar.gz
$ cd pt1-7662d0ecd74b/recpt1

$ vi pt1_dev.h        # pt1videoをpt3videoに変更する
char *bsdev[NUM_BSDEV] = {
    "/dev/pt3video1",
    "/dev/pt3video0",
    "/dev/pt3video5",
    "/dev/pt3video4",
    "/dev/pt3video9",
    "/dev/pt3video8",
    "/dev/pt3video13",
    "/dev/pt3video12"
};
char *isdb_t_dev[NUM_ISDB_T_DEV] = {
    "/dev/pt3video2",
    "/dev/pt3video3",
    "/dev/pt3video6",
    "/dev/pt3video7",
    "/dev/pt3video10",
    "/dev/pt3video11",
    "/dev/pt3video14",
    "/dev/pt3video15"
};

$ ./configure --enable-b25
$ make clean
$ make
$ sudo make install

PT3ドライバのインストール

$ cd
$ echo "blacklist earth-pt1" | sudo tee -a /etc/modprobe.d/blacklist.conf

$ git clone https://github.com/m-tsudo/pt3.git
$ cd pt3
$ make
$ sudo make install

$ reboot

デバイスを確認

$ ls /dev/ | grep pt3
pt3video0
pt3video1
pt3video2
pt3video3

録画テスト

$ recpt1 --b25 --strip 13 10 test.ts --device /dev/pt3video2

エラー対応1

以下のエラーが出力される場合は

recpt1: error while loading shared libraries: libarib25.so.0: cannot open shared object file: No such file or directory

以下の様にnot foundを探して修正

$ ldd /usr/local/bin/recpt1
    linux-vdso.so.1 =>  (0x00007ffdd3bef000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6780881000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f678057f000)
    libarib25.so.0 => not found
    libc.so.6 => /lib64/libc.so.6 (0x00007f67801bd000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f6780aa4000)

$ sudo find /usr/ | grep libarib25.so.0
/usr/local/lib/libarib25.so.0.2.4
/usr/local/lib/libarib25.so.0

$ echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf
$ sudo ldconfig

$ ldd /usr/local/bin/recpt1
    linux-vdso.so.1 =>  (0x00007ffd655d8000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fcb4b56f000)
    libm.so.6 => /lib64/libm.so.6 (0x00007fcb4b26d000)
    libarib25.so.0 => /usr/local/lib/libarib25.so.0 (0x00007fcb4b063000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fcb4aca2000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fcb4b792000)
    libpcsclite.so.1 => /lib64/libpcsclite.so.1 (0x00007fcb4aa97000)
    librt.so.1 => /lib64/librt.so.1 (0x00007fcb4a88e000)

epgdumperのインストール

https://osdn.jp/projects/epgrec/downloads/53385/epgdumpr2_20111001.tar.gz
をダウンロード

$ tar xf epgdumpr2_20111001.tar.gz
$ cd epgdumpr2
$ touch *
$ make clean
$ make
$ sudo cp epgdump /usr/local/bin

EPG取得テスト

以下のコマンドを実行すると番組情報が表示される

$ epgdump test /path/to/tsfile.ts -

ウェブサーバのインストール

以下のリンクの手順でNginx+PHP+mariadbの環境を構築する

必要なパッケージのインストール

$ sudo yum -y install php-cli php-mysql php-mbstring php-process at

$ sudo systemctl start nginx
$ sudo systemctl enable nginx
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb
$ sudo systemctl start atd
$ sudo systemctl enable atd

設定

at.denyからnginxを削除する

$ vi /etc/at.deny

nginxの/sbin/nologinを削除

$ sudo vi /etc/passwd
nginx:x:NNN:NNN:nginx user:/var/cache/nginx

データベースの作成

epgrec用にユーザーを作成する

$ mysql -u root -p
MariaDB [(none)]> grant all privileges on epgrec.* to ユーザー名@localhost identified by "パスワード";
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye

epgrec用のデータベースを作成する

$ mysql -u ユーザー名 -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database epgrec;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> quit;
Bye

epgrecのインストール

$ cd /var/www/html
$ git clone git://git.sourceforge.jp/gitroot/epgrec/epgrec.git
$ cd epgrec

設定ファイルのコピー (必要であればhttp://www.maspro.co.jp/contact/bro/bro_ch.htmlを参考にしてチャンネルマップを編集する)

$ cp config.php.sample config.php

録画用スクリプトのコピー

$ cp do-record.sh.pt1 do-record.sh

アクセス権の設定

$ sudo chown -R nginx:nginx /var/www/html/epgrec
$ sudo chmod 777 /var/www/html/epgrec/templates_c
$ sudo chmod 777 /var/www/html/epgrec/video
$ sudo chmod 777 /var/www/html/epgrec/thumbs
$ sudo chmod 777 /var/www/html/epgrec/settings
$ sudo chmod 777 /var/www/html/epgrec/cache
$ sudo chmod 755 /var/www/html/epgrec/do-record.sh

初期設定

ブラウザでhttp://サーバーIP/epgrec/index.phpにアクセス

インストール ステップ1

インストール ステップ2

インストール ステップ3

インストール ステップ4

getepg.phpをcronに登録

6時5分,12時5分,17時5分に実行するように設定

$ crontab -e
5 6,12,17 * * * /var/www/html/epgrec/getepg.php