Posts

Showing posts from December, 2017

Slack代替のMattermostをNetBSD/amd64で使う(セットアップ編)

NetBSD Advent Calendar 2017の10日目の記事です。 はじめに 前回は、Slack代替のチャットプラットフォームである Mattermostの配布用アーカイブファイルを作成するところまでを説明した。 今回は、その配布用アーカイブファイルを使って、インストールし、 日本語のメッセージを全文検索できるようにするまでを説明する。 データベースサーバーの選択とインストール Mattermostは、MySQLとPostgreSQLをバックエンドのデータベースサーバーとして 選択することができる。 しかし、日本語の全文検索が簡単にできるようになるのは、MySQL 5.7を使用 した場合のみである。 MySQL 5.7で新たに搭載された ngram full-text parserを使用するのである。 pkgsrcでは、MySQL 5.7.20を簡単に導入することができる。 以下のように実行すれば良い。 # cd /usr/pkgsrc/databases/mysql57-server # make install # cp /usr/pkg/share/examples/rc.d/mysqld /etc/rc.d # echo "mysqld=YES" >> /etc/rc.conf MySQL 5.7の下準備 MySQL 5.7では、データベースサーバーの初回起動時に、一時パスワードを 提示されるようになっている。 # vi /usr/pkg/etc/my.cnf [mysqld] ngram_token_size=2 # /etc/rc.d/mysqld start Initializing MySQL database system tables. 2017-12-09T05:44:23.256256Z 0 [Warning] Changed limits: max_open_files: 3404 (requested 5000) 2017-12-09T05:44:23.258372Z 0 [Warning] Changed limits: table_open_cache: 1621 (requested 2000) 2017-12-09T05:44:23.260654Z 0 [Warning] …

Slack代替のMattermostをNetBSD/amd64で使う(ビルド編)

NetBSD Advent Calendar 2017の9日目の記事です。 はじめにMattermostと言う チャットプラットフォームがある。これのCommunity Editionは LDAP認証機能がないなどちょっと使いにくい部分はあるのだが、 Linuxでは良い感じに動くのを確認していた。 日本語ユーザーインターフェイスもベータ扱いではあるが、 ほぼ翻訳できていると思う。 Mattermostは、サーバーはGo言語で書かれており、 ビルドにはnode.jsも必要となる。 どちらもGo 1.8以降、node.js 8以降が必要で、 例えばDebian GNU/Linux 9で動かそうとすると、 標準のパッケージマネジメントシステムに収録されている Goとnode.jsはこれよりずっと古いので、ディストリビューションのリポジトリー 以外から新しいバージョンをインストールしなくてはいけない。 その点、pkgsrcであれば、Goは新しいし、node,jsも新しいものを選べる。 また、Mattermostの開発環境には、dockerが必要なように思われるかもしれないが、 別になくてもちゃんと動かすことができる。 以下では、NetBSD/amd64 current上でMattermostのサーバーと ウェブアプリケーションをビルドするまでを紹介する。 実際に動かすまでは、次回に紹介したい。 ビルドに必要なツールを用意する サーバーはGo言語で書かれているため、 pkgsrc/lang/goを インストールする。 以下のように操作すれば良い。 # cd /usr/pkgsrc/lang/go # make install この記事を書いている時点では、go-1.9.2というパッケージがインストールされる。 ウェブアプリケーションは、node.jsでビルドするため、以下のように最新のnode.jsを インストールしておく。 # cd /usr/pkgsrc/lang/nodejs # make install この記事を書いている時点では、nodejs-9.2.0nb1というパッケージがインストールされる。 ウェブアプリケーションのビルドの途中で、node.jsのmozjpegモジュールを インストールすることになる。 このモジュールは、Linuxであ…

NetBSD/amd64 8.0_BETAをConoHa VPSにインストールする

Image
NetBSD Advent Calendar 2017の8日目の記事です。 はじめに 2015年5月17日以前にConoHaにアカウントを作っていたので、 新しくなったConoHaのVPSを試していなかった。 NetBSDに関しては、NetBSD/amd64 7.1のテンプレートが用意されているようだ。 しかし、NetBSD 8.0_BETAが試せるので、NetBSD/amd64 8.0_BETAを インストールしたいと言うのが人情だと思う。 ConoHa VPSではOpenStackをインフラストラクチャーとして使用しているとのことで、 OpenStack APIを使用することができる。 こう書くと便利なようだが、OpenStack APIを使わないとISOイメージの持ち込みも できないので、逆に不便な気もする。 多数の仮想マシンを展開する場合には、何でもAPIで実行できるのは意味が あると思うのだが、今回はAPIが必要でないものにはAPIを使用しないようにする。 手順を想定する 仮想マシンでないハードウェアにインストールする場合と変わることはないと 思うが、以下のような順序でインストールすることにする。 ISOイメージを用意するISOイメージをマウントするISOイメージから起動させるインストールするシャットダウンするISOイメージをアンマウントする起動させるOpenStack APIを調べてみる それぞれのステップに必要なAPIや操作を調べてみる。 ISOイメージを用意する ISOイメージダウンロードが使用できる。 http等で拡張子.isoのISOイメージファイルのみダウンロードできるとのこと。 ISOイメージをマウントする ISOイメージの挿入(mount) が使用できる。 仮想マシンが停止中のみマウント可能であるとのこと。 ISOイメージから起動させる 仮想マシンの起動は、コントロールパネルのウェブページから可能である。 APIでもできるだろうが、ウェブページからできるので、APIは使用しない。 インストールする インストールは、APIの関係するものではないので、APIは使用しない。 シャットダウンする 仮想マシンのシャットダウンは、NetBSDでshutdown -p nowを 実行すれば良いはずなので、APIは使用しない。 ISOイメージをアン…

安価なPostScriptレーザープリンターLexmark MS312dnをNetBSDから使う(lpd(8)編)

NetBSD Advent Calendar 2017の6日目の記事です。 はじめに 最近は安価にレーザープリンターを購入できるが、さすがにPostScriptレーザープリンターは、なかなか安くは購入できない。 NTT-X Storeで安価にPostScript白黒レーザープリンターであるLexmark MS312dnが8,800円(税込)で購入できた。 ちなみに、これを書いている時点で在庫は残り3台である。 NetBSDからこのレーザープリンターを使ってみた。 lpd(8)を使った場合について書く。 いずれCUPSを使った場合について書きたい。 lpd(8)とlp(1)の使い方 NetBSDに限らず、lpd(8)lp(1)を使う話になってしまうかもしれない。 lpd(8)で印刷する対象として登録する lpd(8)の設定ファイルは、 printcap(5)であり、 編集すべきファイルは、/etc/printcapである。 Lexmark社のウェブサイトから、Lexmark-ADS-PPD-Files.tar.Zをダウンロードし、 展開した内容のうち、 Lexmark_MS310_Series.ppdを、 /opt/share/print/Lexmark_MS310_Series.ppdのように配置しておく。 その上で、/etc/printcapに、以下のように追加する。 lp|lmprinter:\ :lp=:sh:sd=/var/spool/lpd/lp:\ :rm=lmprinter:\ :lf=/var/log/lpd-errs:mx#0:\ :af=/opt/share/print/Lexmark_MS310_Series.ppd: ここで、lmprinterはネットワーク接続されたLexmark MS312dnのホスト名である。 我が家では、 pkgsrc/net/isc-dhcpd4 とNetBSD/amd64 7のbaseに収録されているbindで dynamic DNSを設定しているのだが、Lexmark MS312dnにはうまくホスト名を割り当て できなかった。 そのため、固定でIPv4のアドレスを割り当ててある。 lpd(8)を起動する lpd(8)をデーモンとして…

NetBSD/i386用のRust言語のブートストラップキットを作成する

NetBSD Advent Calendar 2017の5日目の記事です。 はじめに 新しいMozilla Firefoxのビルドには、Rustプログラミング言語のコンパイラーであるrustcと、パッケージ管理プログラムのcargoが必要となっている。 jakllschさんがNetBSD/amd64には移植してくれているので、RustのアップストリームがNetBSD/amd64 7向けのブートストラップキットはビルドしてくれている。 だが、NetBSD/i386 7向けがないと、Mozilla FirefoxをNetBSD/i386でビルドできない。 私はhttps://deuterium.ryoon.net/pub/rust/でnetBSD/i386 7用のブートストラップキット を公開しているが、信頼できるか分からない人の作ったコンパイラーなど使うべきではない。 ここにブートストラップキットの作り方を書いておくので、自分のためのブートストラップキットを作って使って欲しい。 # RustのアップストリームにどうやってNetBSD/i386用をビルドしてもらうように交渉すれば良いのか…。 NetBSD/amd64の環境を用意する NetBSD/amd64 7.0以降の環境を用意する。Rustのアップストリームのビルドしているブートストラップキットが動けばNetBSD/amd64のバージョンは問わない。 ここでは、NetBSD/amd64 7.1の環境があったので、それを使用することにした。 ところで、原理的にはNetBSD/amd64である必要もない。 ある程度POSIX準拠なオペレーティングシステムで、Rustがサポートしブートストラップキットを提供しているアーキテクチャーであれば良い。 次に説明するNetBSD/i386のクロスツールチェインはそこでビルドできるはずである。 NetBSD/i386 7用のクロスツールチェインとユーザーランドをビルドする NetBSDはクロスツールチェインを簡単に生成でき、クロスコンパイルをする準備が簡単にできるのが良い所である。 まず、以下のように実行してクロスコンパイラーなどのツールチェインを作成する。 これは、NetBSD/i386のユーザーランドをビルドするのに使用するだけでなく、Rustブートストラップキットを…

bta2dpd(8)を使って、NetBSDでBluetoothヘッドフォンを使う

NetBSD Advent Calendar 2017の4日目の記事です。 English version is here.はじめに Bluetoothでオーディオを再生するには、以前はbtsco(4)しかなく、 ubt(4)でbtsco(4)を使おうとすると、USBアイソクロナス転送が必要で、 NetBSDのechi(4)やxhci(4)ではアイソクロナス転送はサポートされて いないので、btsco(4)ではBluetoothのオーディオデバイスでは オーディオの録音、再生ができなかった。 しばらく前に、bta2dpd(8)と言うのがnat@によってNetBSD-currentに追加された。 これがxhci(4)で使えるのかが、ずっと気になっていた。 やっと、Jabra MOVE Wireless で試してみた。 結果としては、ubt(4)につないだJabra MOVE Wirelessで再生できた。 Bluetoothの基本的な設定 ペアリングやプロファイルの選択は、btsco(4)の場合と同じであった。 以下のようにすれば良い。 まずは、Bluetooth接続に必要なデーモン等を起動しておく。 以下のように追加する。 # vi /etc/rc.conf bluetooth=YES # /etc/rc.d/bluetooth start configuring Bluetooth controllers: ubt0. starting Bluetooth Link Key/PIN Code manager starting Bluetooth Service Discovery server もし、継続的に使用しないのであれば、以下のようにしても良い。 # /etc/rc.d/bluetooth onestart configuring Bluetooth controllers: ubt0. starting Bluetooth Link Key/PIN Code manager starting Bluetooth Service Discovery server ワイヤレスヘッドフォンをペアリング待ちにした上で、以下のように実行し、 ワイヤレスヘッドフォンのアドレスを取得する。 $ btconfig ubt0 inquiry Device…