Posts

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…

How to use bta2dpd(8) with Bluetooth headphone under NetBSD-current

Introduction When USB Bluetooth dongle (ubt(4)) is used, classic Bluetooth SCO Audio (btsco(4)) requires USB isochronous transfer and ehci(4) and xhci(4) of NetBSD-current does not support USB isochronous transfer mode, So I cannot use btsco(4) to play audio under NetBSD-current. Some time ago, bta2dpd(8) was imported to NetBSD-current by nat@. I had not tested bta2dpd(8) and I should test bta2dp(8) with Jabra MOVE Wireless. As a result, I can play audio with ubt(4) and Javra MOVE Wireless. Basic Bluetooth settings How to pairing and selecting profile is as same as btsco(4). Please perform the following steps. At first, run daemon/service for Bluetooth. Please perform the following steps. # 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 If your Bluetooth connection is temporary, you can perform the following steps instead. # /etc/rc.d/blue…