
つい最近、IRCチャットが私にとってコミュニケーションチャネルの1つになりました。 ほとんどすぐに、「裸の」IRCが、Skypeで私が慣れ親しんでいるアメニティのいくつかを奪われていることが明らかになりました。例えば:
- チャットウィンドウから直接利用できるメッセージ履歴
- 複数のポイントから接続する機能
これらの問題を解決するために、しばらくして、IRCバウンサーを備えた仮想マシンが当社に登場し、すべてがより良く、より便利になりました。 企業がそのような目的のために仮想マシンを保持することは絶対に問題ではないことは明らかですが、個人的なニーズに合わせてそのような獣を持ちたい場合はどうすればよいでしょうか(また、いつかしたかった場合)? ホスティング(余分なお金の価値はありません)、別のコンピューター(無料)、および既存のコンピューター(24時間消費される100 Wの費用もかかります)でオプションを破棄したため、当時NASの役割を果たしていたRaspberryPiに決めましたが、ほとんどの場合、事実は無効でした。
すべてが収集される対象と記事で言及される内容の簡単な説明:
- プラットフォーム-RaspberryPiモデルB(512 Mb /イーサネット)。
- OS-Raspbian。
- OSインストールの機能-ルートパーティションは完全にUSB 2.0ハードドライブに転送され、ブートパーティションのみがSDカードに残ります。 残念ながら、これについては一言も言いませんが、興味深いものがあれば書きます。
- バウンサー-ZNC、バージョン1.2。
- バウンサーのインストール機能-tarballからのアセンブリ、chrootでのインストール、modpythonモジュールのアセンブリ(modperl、modtclはオプション)。
ZNCをバウンサーとして選択した理由は次のとおりです。
- かなり一般的なバウンサー。
- モジュールを介して機能を拡張する機能。
- これらの同じモジュールで十分です。
- Pythonでモジュールを作成する機能(perlとtclも必要ですが、これは必要ありませんでした)。
- プロジェクトwikiを読んだ後、バウンサーをchrootに単純に転送する機能が追加されました。
そもそも、ZNCを「通常の」ubuntuに配置して、動作状態でどのように見えるかを確認しました。 すべてがシンプルで明確であることが判明したため、この中間的な成功に触発されて、RPiの構成に進みました。
最初の不快な驚きは、リポジトリに非常に古いZNCビルドが存在することでした-0.206だったようです。 ただし、これは、特にプロセスがプロジェクトwikiで詳しく説明されているため、ZNCをtarballからアセンブルするという私の意図を強化しただけです。
基本的に、既存の非常に適切なインストールガイドと重複しないように、コンソールに入力したコマンドを提供します。 コメントのほとんどは、公式文書との違いがある場所にのみあります。
最初に、アセンブリに必要なパッケージをインストールする必要があります。
pi@raspberrypi ~ $ sudo apt-get install build-essential pkg-config libssl-dev
python、perl、またはtclサポートモジュールをビルドする必要がある場合は、リストから適切なパッケージをインストールする必要があります。
- modpythonはpython-devパッケージです。
- modperlはlibperl-devパッケージです。
- modtcl-tcl-devパッケージ。
私はPython用のモジュールのみが必要です:
pi@raspberrypi ~ $ sudo apt-get install python-dev
tarballをダウンロードして解凍します。
pi@raspberrypi ~ $ wget http://znc.in/releases/znc-1.2.tar.gz pi@raspberrypi ~ $ tar xzvf znc-1.2.tar.gz
バウンサーを起動するユーザーを作成します。
pi@raspberrypi ~ $ sudo adduser bouncer pi@raspberrypi ~ $ sudo passwd bouncer
chrootのディレクトリ構造を作成します(すべてを/ opt / zncに配置します )。
pi@raspberrypi ~ $ sudo mkdir /opt/znc pi@raspberrypi ~ $ cd /opt/znc/ pi@raspberrypi /opt/znc $ sudo mkdir -p etc dev usr/lib usr/local/{share,bin,lib} lib home/bouncer pi@raspberrypi /opt/znc $ sudo mkdir -p lib/arm-linux-gnueabihf usr/lib/arm-linux-gnueabihf pi@raspberrypi /opt/znc $ sudo chown bouncer:bouncer home/bouncer/ pi@raspberrypi /opt/znc $ cd dev/ pi@raspberrypi /opt/znc/dev $ sudo mknod -m 644 random c 1 8 pi@raspberrypi /opt/znc/dev $ sudo mknod -m 644 urandom c 1 9 pi@raspberrypi /opt/znc/dev $ sudo mknod -m 666 null c 1 3 pi@raspberrypi /opt/znc $ sudo cp /etc/hosts etc/ pi@raspberrypi /opt/znc $ sudo cp /etc/resolv.conf etc/ pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libnss_dns.so.2 lib/arm-linux-gnueabihf/ pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libresolv.so.2 lib/arm-linux-gnueabihf/ pi@raspberrypi /opt/znc/dev $ cd
アセンブリのソースコードを構成します。 perlまたはtcl用のモジュールをビルドするには、それぞれ
--enable-perl
および/または
--enable-tcl
追加します。
pi@raspberrypi ~ $ cd znc-1.2/ pi@raspberrypi ~/znc-1.2 $ ./configure --enable-python
アセンブリを開始します(プロセスには約1.5〜2時間かかります)。
pi@raspberrypi ~/znc-1.2 $ make
ディレクトリをchrootにインストールします。 このインストール方法(
DESTDIR=/opt/znc
)では、すべてのファイルは指定されたサブディレクトリにすぐに表示され、メインシステムには影響しません。 さらに、ホワイトペーパーで提案されているように、ファイルをchrootにコピーする必要がなくなります。
pi@raspberrypi ~/znc-1.2 $ sudo DESTDIR=/opt/znc make install
ここで、アプリケーションが機能するために必要なライブラリを確認する必要があります...
pi@raspberrypi ~/znc-1.2 $ ldd /opt/znc/usr/local/bin/znc
...そしてそれらをコピーします:
pi@raspberrypi ~/znc-1.2 $ cd /opt/znc/ pi@raspberrypi /opt/znc $ sudo cp /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so ./usr/lib/arm-linux-gnueabihf/libcofi_rpi.so pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libdl.so.2 ./lib/arm-linux-gnueabihf/libdl.so.2 pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libz.so.1 ./lib/arm-linux-gnueabihf/libz.so.1 pi@raspberrypi /opt/znc $ sudo cp /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 ./usr/lib/arm-linux-gnueabihf/libstdc++.so.6 pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libm.so.6 ./lib/arm-linux-gnueabihf/libm.so.6 pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libgcc_s.so.1 ./lib/arm-linux-gnueabihf/libgcc_s.so.1 pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libpthread.so.0 ./lib/arm-linux-gnueabihf/libpthread.so.0 pi@raspberrypi /opt/znc $ sudo cp /lib/arm-linux-gnueabihf/libc.so.6 ./lib/arm-linux-gnueabihf/libc.so.6 pi@raspberrypi /opt/znc $ sudo cp /lib/ld-linux-armhf.so.3 ./lib/ld-linux-armhf.so.3
バウンサーをchrootからだけでなく「通常どおり」起動できるように、zncディレクトリへのシンボリックリンクをいくつか作成するだけです。 ZNC用のモジュールのコンパイルを開始する必要がある場合は、最初の起動時(構成ファイルを作成するため)および将来的にこれが必要になります。
シンボリックリンクを作成します。
pi@raspberrypi ~ $ sudo ln -sv /opt/znc/usr/local/lib/znc /usr/local/lib/ pi@raspberrypi ~ $ sudo ln -sv /opt/znc/usr/local/share/znc /usr/local/share/ pi@raspberrypi ~ $ sudo ln -sv /opt/znc/usr/local/include/znc /usr/local/include/
バウンサーを開始する前に、バウンサーの初期設定を作成し、結果の設定をchrootディレクトリにコピーする必要があります。 これを行うには、 バウンサーユーザーになり、ホームディレクトリに移動し、--
--makeconf
使用して
--makeconf
を実行します。
pi@raspberrypi ~ $ su bouncer bouncer@raspberrypi /home/pi $ cd bouncer@raspberrypi ~ $ /opt/znc/usr/local/bin/znc --makeconf
設定プロセス自体は、非常に有益なヒントのおかげで非常に簡単です。 セットアップが完了すると、実行中の効率的なバウンサーを取得する必要があります。 設定を続行するには、バウンサーのWebインターフェイスを開くか( webadminモジュールがアクティブ化されている場合)、IRCクライアントを使用します。
最後に行うことは、受け取った構成をchrootに移動し、そこからバウンサーを開始することです。 ちなみに、ブラウザの設定ファイルを手で編集しないでください。 これにはwebadminを使用することをお勧めします。
まず、警備員を停止します。 最初のコマンドは現在の構成を構成ファイルに保存し、2番目のコマンドはバウンサーを停止します。
bouncer@raspberrypi ~ $ pkill -SIGUSR1 znc bouncer@raspberrypi ~ $ pkill znc
設定ディレクトリをchrootにコピーします。
bouncer@raspberrypi ~ $ cp -r .znc /opt/znc/home/bouncer
次のコマンドを使用して、chrootディレクトリから既に開始します。
pi@raspberrypi ~ $ sudo start-stop-daemon --chroot /opt/znc/ --chuid bouncer:bouncer --start --exec /usr/local/bin/znc
次のコマンドでバウンサーを停止できます:
pi@raspberrypi ~ $ sudo start-stop-daemon --chroot /opt/znc/ --chuid bouncer:bouncer --stop --exec /usr/local/bin/znc
まあ、それがすべてのようです。 システムの起動時にバウンサーを自動的に起動するには、起動コマンドを/etc/rc.localに追加できます。
いつものように、質問やコメントは大歓迎です。
プロジェクトのウェブサイトへのリンク: ZNC