「Linux」カテゴリーアーカイブ

Linux関連情報

CentOS 8:postgreSQL 12 + Python

前回のpostgreSQLインストールでドタバタしたのも束の間、psycopg2がインストール出来ない!?

postgreSQL 12のインストールは前回を参考にしてください。

pg_configが使えない?

それでもだめなので、.bashrcにパスを追加

それでも、gccが無いと怒られたので

 これでもか!ということで

最後良く分からないけど、なんかできた!

CentOS 8 にpostgreSQL 12を入れる!postGIS 3.0も入れる!やばかった~(TT)

#なんか文字フォントが変わっている気がするけど、気にしない。

さて、CentOS 8にpostgreSQL 12.xをインストールしようと思い立ちました。

インストールばっかりしているけど、きちんと使ってるんですけどね。
使った結果を出すのが面倒なんですよね。
守秘義務とかあってですねぇ(^^;

ということで、インストール手順ですが、まずはリポジトリをインストールします。

で、何を入れるの?みたいな感じになったんですよ。
本家に行けば良かったです。以下のサイトに行ってみます。

https://www.postgresql.org/download/linux/redhat/

少し下の方にある項目に必要事項を入力します。

4番目の項目にdnfのコマンドが記されているので、それをコピーして実行するだけです。
こんな素晴らしいものがあったことを知りませんでした(TT)
ありがとう!!!と感謝しながら、続けます。
まずは、リポジトリの追加を行います。

ビルトインのpostgreSQLを無効にします。

postgreSQL 12をインストールします。

続いて、サーバをインストールします。

最後に、データベースの初期化を実施し、OS起動時における自動起動の設定を行います。(後でも大丈夫)

postgreSQLのデータベース保管場所を変更します。

デフォルトのままでも良いという方は読み飛ばしてください。

データベースが肥大化すると場所の移動が面倒になりますので、予め、どこか適当な場所にパーティションを切って移動しておくと楽です。
今回は、特にパーティションの設定にまでは言及しませんでしたが、OSインストール時に決められなった場合には、後々ストレージを増設することを想定した対応を行っておくと便利です。

今回は、/data/DBの下に作ることとしました。

サービスの変更を行いましたので、デーモンの設定をリロードしておきます。

以下のコマンドを実行してデータベース環境を初期化します。

問題なければこんな感じになるはずです。

# more /data/DB/PG_VERSION
12

postgreSQLを起動する準備です。

それと、データベースの場所を変更していますので、以下の設定を行います。

これで、postgreSQL 12の設定は完了です。
それでは、postgreSQLを起動してみます。

設定は完了しているので、rootユーザに戻り以下のコマンドを実行します。

確認します。

Active:active(running)となっていれば、正常に動作開始していますね。

postGISのインストール

postGISをインストールします。
postgreSQLのバージョンとpostGISのバージョンには、相関関係があります。
まずは、相関関係を確認します。

下記のURLで対応状況を確認します。

https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS

対応表(抜粋)

見難い人は、直接上記URLで確認してください。
postgreSQL 12に対応したpostGISは2.5以降であることが判ります。

インストール対象を確認するために、一度リストを表示させてみます。

postgis30_12.x86_64が最新の状態で使えそうです。

インストールしてみます。

エラーがズラリと表示されました。
必要なパッケージがインストールされていないと怒られています。依存関係でクリアしてくれないみたいです。

そこで、それぞれ一つ一つインストールをクリアしようと思ったのですが、全く進みません。

半ば諦めてバージョンを戻そうかと悩んだんのですが、どうもそれでも上手く行かないみたいな話がちらほら・・・
CentOS 8を諦めるかどうしようか悩んでいたのですが、クリアしました!

これでどうじゃ!

多分これで行けます!
ダメだったら、libdapとかgdal30を–nablerepo=PowerToolsを追加して実行してからインストールしてみてください。

多分、これで行けたはず!
ダメだったら泣いてくださいm(__)m

CentOS 8 conflicting requests

CentOS 8.1911 をインストール後にアップデートを実施してからだと思うのですが、dnfを実行するとconflicting requestsと表示される様になりました。

対象モジュールをインストールしてみるも、既にインストールされていると言われる始末。

解決策が判らず困っていたところです。

以下のコマンドを実行することで解決しました。

単なるバグだな。

CentOS 8 インストール後にやったこと

定番ですが

毎度のことですが、CentOS を入れたら、まずyum updateをやりますよね。
今回は、CentOS 8なのでdnf使うだけですね。

アップデートは最初にやっておきましょう。

続いて、こちらも定番です。
EPELを使えるようにしておきましょう。

シェル周りも自分好みに合わせて

コマンド補完

コマンドライン上での文字補完を有効にします。

これで終わり。
次回ログイン時から有効になります。

CentOS 7までは別途インストールの必要がありましたが、bash-completionはデフォルトでインストールされていました。

aliasも少し変更

好みに合わせて変更します。
こんな感じの設定を追加します。

日本語フォント

うーん?ipaのフォントをインストールしようと思ったんだけど、見つからない。何故だろう。

課題にしておきます。

なんか入れるものがないので、おまけ

画面キャプチャとかした時に、画像を少し編集したいという時に使ったりするので、gimpを入れておきます。

Pythonは

「python」コマンドは存在せず、「python2」と「python3」がインストールされていました。
他にはこんな感じでインストールされていました。

python3のバージョンは、これ

なんかやることなくなっちゃった感じですが、インストール後の手間が少し楽になった気がします。

CentOS 8 インストール!pane is daed !? で嵌った人も大丈夫!!

本記事に辿り着いた方に、本記事では、CentOSのインストールそのものに関する記載を行っておりません。
CentOS 8のインストールを実施しようとして、以下で説明する事象が原因でインストールが実施出来無い人向けの案内になります。
CentOS 8のインストールそのものは、従来のCentOS 7以前で行っていた要領と変わりはありません。

VMware Workstation Pro 1.5 にCentOS 8.1911をインストールしようとしています。
ダウンロードに相当な時間を費やして、やっとダウンロードが終わり、さてインストールしようと起動したところ以下の画面で終わりました。

Pane is dead

画面下の方に「Pane is dead」と表示されて終わっています。

海外のサイトには対策が書かれているのですが、実際面倒な感じです。
たまたま見掛けた資料で、これが手っ取り速く出来そうなので試してみました。

ついでなので、インストール手順から始めます。

まずは、公式サイトからISOイメージをダウンロードしておきます。
公式サイト:https://www.centos.org/

VMwareの画面上で、「New Virtual Machine Wizard」を選択し、インストール設定を進めます。

「Typical」でも「Custom」でもどちらでも良いのですが、今回は「Typical」で作業を進めます。

次の画面では特に変更をする必要がなければ、そのままNextで次へ進みます。

先程ダウンロードしたISOイメージを起動時に使用するよう指定します。

ここでユーザ名とパスワードを聞かれるのですが、実際意味はありません。
適当な名前とパスワードを入力しておけば良いようです。
(多分、使われません)

仮想マシンを管理するための名前と、そのファイルを指定します。
ご自身の環境に合わせて記載してください。

仮想マシンに割当てるCPUコアを指定します。コアの数と同時実行のスレッド数を指定するようなイメージですね。Total processor coresが仮想CPU数と考えるとしっくりくる感じですね。

仮想マシンに割当てるメモリ容量を指定します。
最初なので、2GBを指定していますが、後で変更することが可能です。

ネットワークアダプタの設定をしています。
通常のPCだと、物理的なソケット(LANコネクタ)の数は1つだと思いますが、仮想OSが使用する場合、そのソケットをどういう風に繋ぐかを決める必要があります。
VMwareでは、仮想OSにも独自のIPアドレスを与え、且つ、外部とのインタフェースも実現しようとする場合、ブリッジ接続が良いようです。

VMwareのネットワーク設定にはいろいろとあるので、それは別途調べてみると良いでしょう。ここでは、省略します。

ストレージの接続をしてしています。
あまり気にせずに設定しました。

こちらも同様です。オススメに従いました。

仮想マシンを複数のファイルで構成するか、それとも1つのファイルで構成するかを問われています。

用途に依って違いがあると思いますが、シンプルにシングルファイルで構成することにしています。

仮想マシンのファイル名を指定しています。
適当に指定すれば良いでしょう。

最終確認です。間違いがなければ続行しましょう。

起動が開始されインストーラが起動します。

ガーーーーン!
止まってしまいました。
多分、ここを訪れる多くの方はこの問題に捕まったのではないでしょうか?
インストールなんて、インストーラ起動したら後はどうにでもなりますからね(TT)

同士の皆さん、ここからです!

本ページの最初でもお伝えしたように、「Pane is dead」と表示されて画面が固まっています。ここから先に進むことが出来ません。

この問題に引っ掛る方は、VMwareのユーザに限定される可能性が高いです。
実際、VirtualBoxや実際のマシン(Phisycal Machine)では発生していないはずです。

初期段階で設定を変更出来たのかも知れませんが、ここで一度パワーOFFをします。

Pane is dead

VMwareの画面で、「Edit virtual machine settings」を開き、設定変更を行います。

「CD/DVD」が2つ登録されていることが分かります。

この不要な「CD/DVD」が悪さを引き起こしている原因です。
こいつを削除します。

再起動してみましょう。

出ました!CentOS 8のインストーラを起動させるための画面が表示されました!!

後は、従来通りにインストールを進めるだけです。
CentOS 7以前のインストールを体験されている方であれば、何等の変更も無いように感じるでしょう。

ということで、以下省略します!

ISOイメージのダウンロードを速くしたい!

OSのISOイメージとかダウンロードしようとして、5時間とか6時間とか・・・えぇ~!今日インストールしたいんだけど!!!!!!

そんな経験ありますよね。

今回は、CentOS 8のISOイメージをダウンロードしようと思ったのですが、そんな状況に陥りました。

なんかあるよね・・・とググると、やはりありました!
aria2を使うと劇速!

あちらこちらのミラーサイトを試してみていたのですが、wgetだと5~6時間くらい掛かる感じです。
今までは、回線が細いからダメなんだろうな。。。とか思っていたのですが、そうでもないみたいな感じ。

CentOS 7.1908は4.3GBだったのに、CentOS 8.1.1911では7.0GBと大幅ボリュームアップ!
普通に買い物する時ならボリュームアップは大歓迎なのですが、増えて困るのがダウンロードサイズ(TT)

以前、知り合いから超ドデカいファイルをダウンロードしたいんだけど、なんかやり方無いだろうか?と聞かれて、調べたことがあったのを思い出しまして、調べた結果がこいつです。

aria2は標準でインストールされていないようなので、インストールします。

これで準備完了です。

いきなりですが、こんな感じでダウンロードしてみました。

# aria2c -x10 -s10 -k1M http://mirrors.cat.net/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso http://ftp.riken.jp/Linux/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso http://ftp.tsukuba.wide.ad.jp/Linux/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso http://ftp.jaist.ac.jp/pub/Linux/CentOS/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso http://ftp.nara.wide.ad.jp/pub/Linux/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso http://ty1.mirror.newmediaexpress.com/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso http://ftp-srv2.kddilabs.jp/Linux/packages/CentOS/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso http://mirror.fairway.ne.jp/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso http://ftp.iij.ad.jp/pub/linux/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso

オプションの説明は、–helpで調べてみてください。

回線が細いこともあり30分弱でダウンロードしましたが、回線が太ければもっと速くダウンロード出来るかも知れません。

ビックデータのダウンロードとかでも使えそうなので、今後の参考にしたいと思います。

ffmpeg 複数インタフェースカードの対応

複数のNICが搭載されたサーバマシンで、マルチキャストで配信されているストリーミング映像を受信しようとして、ガッツリと嵌りました。

環境

環境は以下の感じです。

マシン環境

OSCentOS 7.7.1908
NIC5枚 (利用したのは2枚だけ)
eth0〜eth5がある状態でeth0とeth1だけ使用。
(「eth?」は環境によって違うので適当に読み替えてください。)

ネットワーク

ネットワーク環境について説明する。
今回の環境では、ネットワーク1とネットワーク2がある。
ネットワーク1は、インターネットなど外部環境と接続している。
ネットワーク2は、マルチキャストで映像配信が行われており、その映像をキャプチャし、映像処理を施した後にネットワーク1側で提供する。

課題になった現象

今回、課題になった現象は、eth0側の通信は出来るのだが、eth1側からffmpegによる映像キャプチャが出来ないという現象が発生した。

色々と調べてみたのだが、eth1側のマルチキャストをルーティングにテーブルに設定することでキャプチャが可能になるように記載があちらこちらで見受けられたのだが、実際にはそれだけではダメだった。

解決策

このままのネットワーク構成でも実現できる可能性はあったが、結局は、eth0側のデフォルトゲートウェイによりマルチキャストの受信を行おうとしいて受信できない状態になっていると理解した。

そこで、eth0とeth1を入れ替えた。

ここでも問題が生じた。
新たにeth0となったネットワーク2側のデフォルトゲートウェイにより、外部との通信が遮断されてしまったのだ。
外部のアドレスは不特定なため、簡単にルーティングテーブルを指定することが困難であると判断し困惑した。

問題は、本来、ネットワーク1側のゲートウェイを介して外部に接続しなければならないのにも関わらず、ネットワーク2側のゲートウェイで捕捉されてしまい、ネットワーク1側に流れないということと判断した。

そこで、ネットワーク2側のデフォルトゲートウェイの設定を削除した。

次に行ったことは、ルーティングテーブルに224.0.0.0/4を登録した。

ここでも嵌った!

ドキュメントでは、/etc/sysconfig/network-script/route-eth0に以下の様に記述する方法があり、ネット上でもその記載方法が記されていた。

T.B.D

しかしながら、その設定ではなく、別の方法による記述が求められた。

ちなみに、ip routeコマンドでルーティングを/etc/rc.localに記載したのだが、起動時にコマンドを実行しても、ルーティングテーブルを確認すると設定が行われていない状況であった。

GUIを用いて、以下のルートを指定した。
<<<<現状はメモ状態なので、近日中に更新予定>>>>

224.0.0.0/4 ゲートウェイは0.0.0.0

これで上手く通信が出来るようになった。

以上でも問題解決が出来た。
ffmpeg自体はNICの指定が出来ないことから、無理やりするには色々と課題があるようだ。
環境を構築して、確認を行うことをお勧めする。

ファイルやディレクトリの変更をトリガーにしてプログラムを起動する。incronがダメなら、inotifyで!

ファイルやディレクトリを監視したい!

ここでも過去に取り上げていますが、incronを用いて任意に指定するファイルやディレクトリの更新を監視することが出来ます。
ところが、incronは何度かバグが発生し、且つ、メンテナンスが遅れ遅れになっていることもあり、利用することを断念しました。

systemdでサポートされているinotifyを利用する手段が次に出てきた訳ですが、当初は情報も少なくて困ったものです(^^ゞ

というところで、CentOS 7上のPython 3で利用できるか確認してみました。

結論としては、Python 2.xと比較して、ほぼデフォルト状態のPython 3で利用することが出来ました。

どんなイベントを監視できるのか?

いろんなイベントを監視できるので、詳細についてはmanで確認できます。

サンプルコード

ここで示すサンプルコードでは、指定したディレクトリ内に含まれるファイルもしくはディレクトリ移動した場合にイベントが発生します。

サンプルコードを以下に記します。

maskにpyinotify.IN_MOVED_TOを指定することで、ファイル/ディレクトリの移動を監視しています。
IN_MOVED_TOをIN_CREATEにすれば、ファイル/ディレクトリが生成されたタイミングでイベントが発生します。
ディレクトリを指定した場合には、対象ディレクトリ以下のサブディレクトリも監視対象となります。
ただし、監視中(プログラム起動後)に新たに設置されたフォルダー内部は監視対象にならないということに注意が必要です。
syslogにログを残す機能も併せて盛り込んでしまいました。

意外と簡単ですよね。

scpでIDとパスワードを自動入力させる方法(expect)。

expectを利用して、sshやscpにおけるIDとパスワードを自動入力させる方法は、いろいろなサイトで公開されています。

今回、この記事を記載した理由は「password:」で止まってしまう現象が発生しました。
多くのサイトで記載されている方法では、この「password:」で止まってしまう現象を回避出来なかったため、その方法を記載します。

実際に使用したコマンドは以下の通りです。

a.txtファイルを127.0.0.1のサーバ(今回は自分自身のサーバ)にあるuserというユーザの/home/userディレクトへコピーしています。

パスワードは「passwd」なのですが、その後ろに「\r」を追加することが肝でした。

これにたどり着くまでが長かった。。。(^^ゞ

でもこれで問題なく解決しました。

環境によって、この「\r」が必要ではない場合もあると思いますが、一応これも方法の一つと考えていただければ幸いです。

deck.glをCentOSで動かしてみる。

はじめに

野暮用でビックデータを可視化することになってしまい、今迄はOpenLayersをゴリゴリっとしてたのですが、MVT使っても厳しかろうというところから、WebGL関連で可視化を目指すことにしました。

何にしようかと考えていたところ、UBER社が提供しているdeck.glが気になり、チョロッとお試しをdeck.glがベースとなっているkepler.glでやってみたところ、ええ感じで動くじゃないですか!

そんじゃあ、deck.glで実装決定!ということから、まずはdeck.glの環境構築に取りかかりました。

kepler.glについては、何かの機会にお話するとして(某ローカルコミュニティで発表予定)、今回はdeck.glの実装のみのお話を簡単に記録します。

対象サーバはWindowsじゃなく今回もCentOS 7です。
CentOS 8が2〜3日前に公開されたので、そこからCentOS 8で実相も考えたのですが、先の某ローカルコミュニティでの発表が来週に控えているので、既に稼働中のCentOS 7上で実装することにしました。

ちなみに、こんなこと書いていますが、実際にCentOS 7で実装してみて思ったのですが、CentOS 8で実装したとしても何も異る点は無いはずです。
理由は、実相はnode.js上で行うため、node.jsの実装方法自体が変わらない限り変更は無いということです。

参考にさせて頂いたサイトはこちらになります。

https://qiita.com/keijipoon/items/92d9551930fe52d6c90a

そろそろ、この手の記事をQiitaに書いた方が楽なんじゃないか?とか、そっちの方が見てもらえるんじゃないかとか思ってはいるのですが、趣味なんです(^^;

node.jsのインストール

node.jsのインストールは先日こちらの記事に記していますので、そのまんま実装しました。
と言うことで、参照してください。

node.jsを既にインストールされている方は、無視して次の作業を行ってください。

luma.glをインストール

コマンドライン上で以下のコマンドを実行します。

終わりです。

deck.glのインストール

こちらのサイトからダウンロードしてきます。

deck.glのインストールと言っても、取り敢えずダウンロードして、展開するだけです。

https://github.com/uber/deck.gl

適当なフォルダへ解凍します。

サンプルプログラムを動かしてみる。

なんか既にインストール終わっているみたいです。
サンプルプログラムを幾つか試しに動かしてみようと思ったのですが(2分程)、実際に動くのは参考にさせて頂いたサイトでも紹介されていたサンプルだけでした。

ということで、ほぼ同じ感じの内容ですが、以下のフォルダへ移動します。
(解凍したdeck.glの中にあります。)

後は、そのまんま実行するだけ。

終わりです。
環境さえ整っていれば、Windowsで実装するのと何も変わりませんでした。
という結果です。逆に、Linuxの方が楽じゃね?