ラベル rhel7 の投稿を表示しています。 すべての投稿を表示
ラベル rhel7 の投稿を表示しています。 すべての投稿を表示

2020-08-30

Kdenlive 20をScientific Linux 7上でビルド

EL7でKdenlive 20をビルドするメモ。

FFmpegをビルド・インストール

mkdir b
cd b
../configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --arch=x86_64 --enable-libmp3lame --enable-pic --enable-libfreetype --enable-shared --enable-libxcb --enable-libmfx --enable-vaapi --disable-nvenc --enable-libpulse --enable-libx264 --enable-libx265
make -j8 && sudo make install

SCLのdevtoolset-9をインストール

Meltをビルド・インストール

git checkout v6.22.1
scl enable devtoolset-9 bash
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH ./configure --prefix=/usr/local/mlt-6.22.1
make -j8 && sudo make install 
注意: sclでbashが起動し、その中でconfigureやmakeを実行する。

ビルド

scl enable devtoolset-9 bash
PKG_CONFIG_PATH=/usr/local/mlt-6.22.1/lib/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH LANG=C cmake3 -DCMAKE_INSTALL_PREFIX=/usr/local/kdenlive-20.08.0 ..
make && sudo make install

起動スクリプト

以下のシェルスクリプトを用意する。
#! /bin/bash

export PATH="/usr/local/kdenlive-20.08.0/bin:/usr/local/mlt-6.22.1/bin:$PATH"
export LD_LIBRARY_PATH=/usr/local/kdenlive-20.08.0/lib64:/usr/local/mlt-6.22.1/lib:/usr/local/lib:/opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib:/opt/rh/devtoolset-9/root/usr/lib64/dyninst:/opt/rh/devtoolset-9/root/usr/lib/dyninst:/opt/rh/devtoolset-9/root/usr/lib64:/opt/rh/devtoolset-9/root/usr/lib:

exec /usr/local/kdenlive-20.08.0/bin/kdenlive "$@"
LD_LIBRARY_PATHにはKdenliveのパス、mltのライブラリパス、ffmpegのライブラリパス、devtoolで設定されたパスを記載し、最後に:を付ける。

QMLのエラー

以下のようなエラーが出たので、ソースコード中のQMLを修正する。
qrc:/qml/kdenliveclipmonitor.qml:1:1: module "QtQuick.Controls" version 2.4 is not installed
2.4が新しすぎるのだろうと予想して、インストールされているQt5がどのバージョンまでをサポートしているのか確認する。 どうもqmlファイルがいくつかインストールされているようなので、その中のimportコードを確認する。
grep -h -r 'import QtQuick.Controls '  /usr/lib64/qt5/qml/QtQuick/Controls.2/ | sort -u
import QtQuick.Controls 2.2
import QtQuick.Controls 2.2 as Controls
2.2が使われているようなので、2.42.2に置き換える。 たくさんあるのでsedを使った。
sed -i 's/^import QtQuick.Controls 2.4$/import QtQuick.Controls 2.2/' $(git grep -l 'import QtQuick.Controls 2.4')
他にもimportを変更してゆく。
sed -i 's/^import QtQuick 2.11$/import QtQuick 2.9/' $(git grep -l 'import QtQuick.2.11')
sed -i 's/^import QtQuick.Layouts 1.11$/import QtQuick.Layouts 1.3/' $(git grep -l 'import QtQuick.Layouts ')
sed -i 's/^import QtQml.Models 2.11$/import QtQml.Models 2.1/' $(git grep -l 'import QtQml.Models ')
qrc:/qml/kdenliveclipmonitor.qml:514:21: Cannot assign to non-existent property "icon"
src/monitor/view/kdenliveclipmonitor.qml中のicon.name (2箇所) を削除した。

その他

以下のメッセージでFrei0rが見つからない旨が表示された場合、frei0r-pluginsをインストールしてmltをビルドし直す。
Missing package: Frei0r effects (frei0r-plugins) provides many effects and transitions. Install recommended

追記

なぜかeffectsやcompositionsがなにも出てこなかった。 実は、ビルドすると、prefix.shというファイルが生成され、環境変数を設定することになっている。 後日、CentOS 8でKdenliveをビルドしたのだが、このファイルの中身を含んだ起動スクリプトを作成することで、Kdenliveが無事に起動した。

2020-04-04

RHEL7にFedora 30のchroot環境をつくる

  1. まずディレクトリをつくる
    sudo mkdir -p /opt/chroot/fedora30/var/lib/rpm
    sudo rpm --root /opt/chroot/fedora30/var/lib/rpm --initdb
    
  2. パッケージをインストールする
    wget ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/30/Everything/x86_64/os/Packages/f/fedora-release-30-1.noarch.rpm
    wget ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/30/Everything/x86_64/os/Packages/f/fedora-release-common-30-1.noarch.rpm
    wget ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/30/Everything/x86_64/os/Packages/f/fedora-repos-30-1.noarch.rpm
    wget ftp://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/30/Everything/x86_64/os/Packages/f/fedora-gpg-keys-30-1.noarch.rpm
    sudo rpm --root /opt/chroot/fedora30 --nodeps -ivh fedora-release-30-1.noarch.rpm fedora-release-common-30-1.noarch.rpm fedora-repos-30-1.noarch.rpm fedora-gpg-keys-30-1.noarch.rpm
    
  3. 必要となる設定ファイルをつくる
    sudo mkdir -p /opt/chroot/fedora30/{dev,etc}
    sudo cp -a /dev/{null,stderr,stdout,stdin,zero,random,urandom} /opt/chroot/fedora30/dev/
    sudo cp /etc/{resolv.conf,localtime} /opt/chroot/fedora30/etc/
    
  4. yumでbashとdnfをインストールする
    sudo yum --nogpgcheck --installroot=/opt/chroot/fedora30/ install bash dnf
    
  5. chrootして、他のパッケージをインストールする
    sudo chroot /opt/chroot/fedora30/
    dnf install packages...
    

2018-11-02

pip install --userでインストールしたパッケージをprocmailで使用する

ホームディレクトリにPIPをつかってパッケージをインストールすると、.local/lib/の下に展開される。 ところが、このディレクトリはSELinuxのコンテクストがunconfined_u:object_r:gconf_home_t:s0になっており、問題が生じる。

例えば、ProcmailからPythonを呼び出し、その中でモジュールをインポートしようとすると、以下のようなエラーメッセージが出る。 以下はBeautifulSoupを使用した例。

Traceback (most recent call last):
  File "/tmp/a.py", line 3, in 
    from bs4 import BeautifulSoup
ImportError: cannot import name 'BeautifulSoup'

とりあえず以下のコマンドで問題を回避する。 $ chcon -R unconfined_u:object_r:user_home_t:s0 .local/lib/python3.4/site-packages/

2018-10-21

EL7にてユーザーのpublic_htmlを公開する手順

Scientific Linux 7 (CentOS 7と同様にRedhat Enterprise Linux 7のクローン, 以下EL7) において, ユーザーのpublic_html下にあるコンテンツをApacheで公開するときの手順をまとめる.

Apacheのインストール

$ sudo yum install httpd

Apache上の設定

$ sudoedit /etc/httpd/conf.d/userdir.conf
以下のように disable の部分をコメントアウトし, 代わりに public_html の箇所を有効にする.
<IfModule mod_userdir.c>
    # UserDir disabled
    UserDir public_html
</IfModule>

SELinuxの設定

$ restorecon -R ~/public_html
$ sudo setsebool -P httpd_enable_homedirs 1
EL7ではデフォルトでhttpd_enable_homedirsが無効に設定されているので, これを有効にする必要がある.

Wirewalldの設定

$ sudo firewall-cmd --add-service=http
これでアクセスできることを確認したのち, 以下のコマンドでパーマネントな設定にする.
$ sudo firewall-cmd --permanent --add-service=http

2018-10-20

新規インストールしたサーバーにSSHの公開鍵認証でログインできない

新しくインストールしたScientific Linux 7 (CentOSと同様にRedhat Enterprise Linuxのクローン) サーバーに公開鍵認証をつかってSSHログインしようとすると, なぜか公開鍵をつかってくれない...

クライアント側のデバッグ情報を ssh -vvv で表示.

  debug1: Offering public key: RSA SHA256:xxxx /home/dir/.ssh/id_rsa
  debug3: send_pubkey_test
  debug3: send packet: type 50
  debug2: we sent a publickey packet, wait for reply
  debug3: receive packet: type 51
  debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
  debug2: we did not send a packet, disable method

サーバー側にデバッグ設定を追加. ファイル

LogLevel DEBUG
サーバー側のログ /var/log/secure
Oct 20 13:37:14 host sshd[xxxx]: debug1: trying public key file /home/xxxx/.ssh/authorized_keys
Oct 20 13:37:14 host sshd[xxxx]: debug1: Could not open authorized keys '/home/xxxx/.ssh/authorized_keys': Permission denied

結局のところ, SELinuxが原因だった. .sshを古いマシンからコピーしたので, 正しくコンテクストが設定されていなかった.

restorecon -R ~/.ssh
これまでは, chmodだけで良かった...
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

2018-10-06

自作PC組み立て

概要

1年位前に, OBS-Studioをつかう目的で, 古いPCの部品を入れ替えて, 新しいPCを組み立てた. 今でも問題なく動いているので, そのときに購入した部品を紹介する. なお, 自分用ではない. 使用頻度は, 週に半日くらい.

PCIおよびPCIEのカードでカメラからの映像をキャプチャし配信することが目的. 映像は複数あって, CPU上でスイッチする. 1K程度の映像を処理する. OSには, 安定していると期待してScientific Linux 7を選んだ.

使用部品

以下の部品を新たに購入した.

CPU: Intel Core i7-7700

Memory: Team TED48G2400C16BK

Mother board: Asus H270-Pro
PCI, PCIEのボードをいくつか載せたかったので, これにした.

Display port to VGA変換アダプタ
自分でつかうならHDMIかDisplay Portのモニタを選ぶのだが... 予算の都合でモニタは古いアナログのまま. この種の変換アダプタは故障が心配なので, レビューを注意深く確認した. この製品は未だ故障していない.

Blackmagic Intensity Pro 4K
業務用の製品も出している会社なので, Linuxのサポートも謳っており, OBS-Studioでサポートしていることを確認して, 購入した. Scientific Linux 7へのインストールはとても苦労した. Kernelのアップデートでも, カーネルモジュールのための色々な作業が必要だ.


2015-01-29

RHEL7: pdftops が両面印刷できないPSを生成する

RHEL6 では,
$ lpr a.pdf
$ pdftops a.pdf -| lpr
によってPDFを印刷できた. しかし, RHEL7でこの方法を使うと, 印刷はできるものの, 両面に設定しても, 片面で印刷されてしまう. どうやら, 出力されるPSの上の方に, pdfSetupPaper というマクロがあるのだが, この実装が悪いらしい. 1ページごとにページサイズを設定するのだが, ページサイズが設定されるとプリンタが両面印刷せずに排紙してしまうようだ.

もうすぐパッチが適用されると思うのだが, 待ちきれなかったので, 自分でビルドしてしまった.

対処1: sedでページを設定する pdfSetupPaper を除去する. 以下のコマンドを pdftops と lpr の間にいれる.

sed -e "s/ pdfSetupPaper/ pop pop/"

Popplerのバグジラで議論されているが, そのパッチを適用する. 他にもいろいろなパッチが出ていたのだが, pdfSetupPaper のパッチだけにした.

$ yumdownloader --source poppler
$ rpm -ivh poppler-0.22.5-6.el7.src.rpm
$ cd ~/rpmbuild/SOURCES/
$ wget -O poppler-pdfSetupPaper.patch https://bugs.freedesktop.org/attachment.cgi?id=91005
$ cd ../SPECS/
$ vim poppler.spec
$ rpmbuild -ba poppler.spec
$ cd ..
$ sudo rpm -Uvh RPM/x86_64/poppler*.rpm

以下にspecファイルの更箇所を示す.

--- poppler-orig.spec 2014-02-15 01:11:43.000000000 +0900
+++ poppler.spec 2015-01-31 00:08:23.569595075 +0900
@@ -1,7 +1,7 @@
 Summary: PDF rendering library
 Name: poppler
 Version: 0.22.5
-Release: 6%{?dist}
+Release: 6%{?dist}a
 License: (GPLv2 or GPLv3) and GPLv2+ and LGPLv2+ and MIT
 Group: Development/Libraries
 URL:     http://poppler.freedesktop.org/
@@ -16,6 +16,9 @@
 # https://bugzilla.redhat.com/show_bug.cgi?id=1053616
 Patch2:  poppler-0.22.5-rotated-words-selection.patch
 
+# https://bugs.freedesktop.org/attachment.cgi?id=91005
+Patch3: poppler-pdfSetupPaper.patch
+
 Requires: poppler-data >= 0.4.0
 BuildRequires: automake libtool
 BuildRequires: gettext-devel
@@ -134,6 +137,7 @@
 %patch0 -p1 -b .CVE-2013-4473
 %patch1 -p1 -b .CVE-2013-4474
 %patch2 -p1 -b .rotated-word-selection
+%patch3 -p1 -b .duplex
 
 iconv -f iso-8859-1 -t utf-8 < "utils/pdftohtml.1" > "utils/pdftohtml.1.utf8"
 mv "utils/pdftohtml.1.utf8" "utils/pdftohtml.1"
@@ -256,3 +260,6 @@
 
 
 %changelog
+* Thu Jan 1 2015 My Name  - 0.22.5-6a
+- pdfSetupPaper macro modified
+

2014-12-04

/usr/lib/libtermcap.so.2: file too short

RHEL7では libtermcap.so から libtinfo.so に統合されている. libtermcap.so を使おうとすると, 以下のようにエラーになる.
error while loading shared libraries: /usr/lib/libtermcap.so.2: file too short
以下のように tinfo を使うよう指示されている.
$ cat /usr/lib/libtermcap.so.2
INPUT(-ltinfo)
したがって, libtinfo.so にリンクをはる.
$ sudo ln -s libtinfo.so /usr/lib/libtermcap.so.2

2014-10-07

systemctl と chkconfig

EL7になって, サービス関連の操作が systemd になり, これまでとコマンドが変わってしまった. (互換性のため, service, chkconfig をつかってもフォワードしてくれる)
EL6までEL7
サービスの開始 service name start systemctl start name
サービスの停止 service name stop systemctl stop name
サービスを起動時に開始する chkconfig name on systemctl enable name
サービスを起動時に開始しない chkconfig name off systemctl disable name
サービス一覧 chkconfig --list systemctl list-unit-files
サービスの状態の表示 service name status
chkconfig --list name
systemctl status name

2014-08-16

RHEL7にてNFS上にホームディレクトリをおくときの設定

RHEL7のクローンであるSL7では, ホームディレクトリをNFS上においていると, SSHでログインする際に公開鍵暗号による認証が使用できない. 以下の設定で, 回避する.
$ sudo setsebool -P use_nfs_home_dirs on

2014-08-15

Cadence Virtuoso on SL7

RHEL7のクローンであるSL7にて, Cadence Virtuoso 6.1.5 を動作させた. Virtuoso の起動時, sysnameというシェルスクリプトがKernelのバージョンからOSの種類を判定しているのだが, 3.10は対応していなかった. 以下のように書き換えることで, SL7でも起動するようになった.
--- IC06.15.171-615_lnx86.Hotfix/oa_v22.41.033/bin/sysname 2013-03-27 09:19:10.000000000 +0900
+++ IC06.15.171-615_lnx86.Hotfix/oa_v22.41.033/bin/sysname 2014-08-15 14:49:14.259021502 +0900
@@ -199,7 +199,7 @@
      case $version in
          2.4*) compiler="_gcc411"
         sysname="linux_rhel30$compiler"; sysnames="$sysname linux$compiler";;
-         2.6*|3.0*) compiler="_gcc44x"
+         2.6*|3.0*|3.10.*) compiler="_gcc44x"
                       sysname="linux_rhel40$compiler"; sysnames="$sysname linux$compiler";;
          *)    check_global;;
      esac;;

バージョン番号がハードコードされており, 2.6 または 3.0 の場合には gcc-4.4, 2.4 の場合には, gcc-4.1.1 を使用すると書かれているようだ. ここに, 3.10 を追加した.

ところで, -64オプションを付けておくと, 64ビット版で動作することが分かった. これまで, 32ビットのライブラリをいちいちインストールしていたのだが, その必要はなかったようだ.