Download - pkgsrcユーザー向け設定
pkgsrcユーザー向け設定
Ryo ONODERA<[email protected]><[email protected]>
Japan NetBSD Users' GroupBOF 2015
The University of Tokyo,Takeda Sentanchi Bldg.
2
はじめに
● pkgsrcはいろいろな設定をすることができるのだが、
– ドキュメントはあっても、英語が基本だし、長くて分かりにくい。
– そもそも開発者向けのドキュメントで、利用者向けではない。
● 利用者の使うと便利なオプションは、説明し切れていない。
● そこで、利用者としての設定を中心に、私が便利と思っている機能を説明します。
3
ライセンス
● Open Source Initiativeが認証したライセンスで配布されているソフトウェアは、特に設定しないで使えるとなっているが…
● AGPL (Afferro General Public License)については、明示的に指定しないと、いけない。
●
● /etc/mk.confに、ACCEPTABLE_LICENSES+=gnu-agpl-v3と設定します。
● 他にも、Oracle JDK 8が使いたければ、ACCEPTABLE_LICENSES+=oracle-binary-code-licenseと設定するとか。
● 基本的には、make実行時に説明が表示されます。
4
複数のCPUを活用する
● ARMなCPUのマシンでさえ、複数コアが当たり前になっているようです。
● /etc/mk.confにMAKE_JOBS=3と指定すると、ビルド時に同時に3プロセスが実行されるようになります。
● 私は、実CPUスレッド数+1を指定していますが、根拠が思い出せません…
5
/usr/pkgsrc以下で作業しない
● 標準では、/usr/pkgsrc/category/packagename/work以下でビルドします。
● しかし、こうなっていると、workディレクトリーを一括削除するのが面倒です。どこのworkディレクトリーがクリアされていないか確認するのも大変です。
● 毎回忘れずmake depends-clean cleanを実行すれば良いのですが…
● /etc/mk.confに、WRKOBJDIR=/tmp/pkgsrcと記載しておくと、/tmp/pkgsrc/category/packagename/work以下で、ビルドするようになります。
● rm -rf /tmp/pkgsrcで簡単にクリアできます。
6
配布物を保存する
● 標準では、tarballは/usr/pkgsrc/distfilesに置かれます。
● 変更するには、/etc/mk.confに、DISTDIR=/usr/distfilesのように設定します。
● 複数のホストで、NFSで共通の置き場所を設定したい時とかに有効です
7
生成したバイナリーパッケージ
● make packageすると、バイナリーパッケージを作ることができます。他のマシンで使いたい時等に便利です。
● 標準では、/usr/pkgsrc/packagesに保管されます。
● /etc/mk.confに、PACKAGES=/usr/packagesと書いておくと、保管場所を変更できます。
8
send-prする前には
● 純粋なユーザーには不要の機能ですが、send-prする前には、開発者が設定しているオプションを設定しておくと、話がしやすいかもしれません。
● /etc/mk.confに、PKG_DEVELOPER=yesと記載し、meta-pkgs/pkg_developerパッケージをインストールしておくと良いです。
9
同時並行でビルドしたい
● 例えば、editors/emacs24とwww/firefoxの両方が欲しい場合、以下のようにすると、$ cd pkgsrc/editors/emacs24 && make install$ cd pkgsrc/www/firefox && make installglib2やgtk2のビルドを両方が求めるため、1つのビルドディレクトリーに複数のビルドが実行され、失敗してしまいます。
● /etc/mk.confにPKGSRC_LOCKTYPE=sleepとしておくと、遅く来た方は、早く来た方のプロセスが終了するのを待ってくれます。
● ですが、タイミングが合わずに失敗することもあるような…
10
ftp.NetBSD.org以外からダウンロードしたい
● 標準では、配布物は各パッケージのMASTER_SITESからのダウンロードを試みる前に、ftp.NetBSD.org/pub/pkgsrc/distfiles からのダウンロードを試みます。
● しかし、これでは国内のミラーを使うことができていません。
● /etc/mk.confにMASTER_SITE_OVERRIDE=http://ftp.jaist.ac.jp/pub/pkgsrc/distfiles/
● と指定しておくと、JAIST国内のミラーを使うことができます。
11
他にもダウンロード元を指定する
● pkgsrc/mk/fetch/sites.mk に記載されているダウンロード元は、上書きできます。
● /etc/mk.confに、MASTER_SITE_GNU=http://www.dnsbalance.ring.gr.jp/pub/GNU/のように、設定します。
● これでRingの国内ミラーを使うようにできます。● ただし、変更しない方が良い設定もあります。
– MASTER_SITE_MOZILLAとか。これはCDNです。● [訂正]PKG_DEVELOPER=noでは、アットランダムに選ばれてしまうのが標準動作です。MASTER_SORT_RANDOM=noにすると良いはずです。
12
sudoを使う
● rootになってビルドするのでも、環境によっては良いのかもしれませんが、やはりお勧めはできません。
● 標準ではsuを使いますが、毎回rootのパスワードを入力させられるのは面倒です。
● /etc/mk.confに、.if exists(/usr/pkg/bin/sudo)SU_CMD=/usr/pkg/bin/sudo /bin/sh -c.endifと書いておくと、sudoをインストールしていれば、sudoがsuの代わりに呼び出されます。
13
脆弱性のあるパッケージ
● /etc/daily.confに、fetch_pkg_vulnerabilities=YESと設定しておくと、pkgsrc security teamがメンテナンスしている脆弱性のデータベースファイルを定期的にダウンロードします。
● データベースファイルがあると、脆弱性のあるパッケージはビルドできません。
● それでも使いたい場合には、/etc/mk.confに、ALLOW_VULNERABLE_PACKAGES=#definedのようにしておきます。
● 残念ながらこの設定をしないで済む状況はないと思います。
14
まとめ
● pkgsrcユーザーに便利な設定について紹介しました。● ほかにも便利なオプションがあるので、pkgsrc/mk/defaults/mk.confや他のpkgsrc/mk以下のファイルをのぞいてみると良いと思います。