14
pkgsrcユーザー向け設定 Ryo ONODERA <[email protected]> <[email protected]> Japan NetBSD Users' Group BOF 2015 The University of Tokyo, Takeda Sentanchi Bldg.

pkgsrcユーザー向け設定

Embed Size (px)

Citation preview

Page 1: pkgsrcユーザー向け設定

pkgsrcユーザー向け設定

Ryo ONODERA<[email protected]><[email protected]>

Japan NetBSD Users' GroupBOF 2015

The University of Tokyo,Takeda Sentanchi Bldg.

Page 2: pkgsrcユーザー向け設定

2

はじめに

● pkgsrcはいろいろな設定をすることができるのだが、

– ドキュメントはあっても、英語が基本だし、長くて分かりにくい。

– そもそも開発者向けのドキュメントで、利用者向けではない。

● 利用者の使うと便利なオプションは、説明し切れていない。

● そこで、利用者としての設定を中心に、私が便利と思っている機能を説明します。

Page 3: 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実行時に説明が表示されます。

Page 4: pkgsrcユーザー向け設定

4

複数のCPUを活用する

● ARMなCPUのマシンでさえ、複数コアが当たり前になっているようです。

● /etc/mk.confにMAKE_JOBS=3と指定すると、ビルド時に同時に3プロセスが実行されるようになります。

● 私は、実CPUスレッド数+1を指定していますが、根拠が思い出せません…

Page 5: pkgsrcユーザー向け設定

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で簡単にクリアできます。

Page 6: pkgsrcユーザー向け設定

6

配布物を保存する

● 標準では、tarballは/usr/pkgsrc/distfilesに置かれます。

● 変更するには、/etc/mk.confに、DISTDIR=/usr/distfilesのように設定します。

● 複数のホストで、NFSで共通の置き場所を設定したい時とかに有効です

Page 7: pkgsrcユーザー向け設定

7

生成したバイナリーパッケージ

● make packageすると、バイナリーパッケージを作ることができます。他のマシンで使いたい時等に便利です。

● 標準では、/usr/pkgsrc/packagesに保管されます。

● /etc/mk.confに、PACKAGES=/usr/packagesと書いておくと、保管場所を変更できます。

Page 8: pkgsrcユーザー向け設定

8

send-prする前には

● 純粋なユーザーには不要の機能ですが、send-prする前には、開発者が設定しているオプションを設定しておくと、話がしやすいかもしれません。

● /etc/mk.confに、PKG_DEVELOPER=yesと記載し、meta-pkgs/pkg_developerパッケージをインストールしておくと良いです。

Page 9: pkgsrcユーザー向け設定

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としておくと、遅く来た方は、早く来た方のプロセスが終了するのを待ってくれます。

● ですが、タイミングが合わずに失敗することもあるような…

Page 10: pkgsrcユーザー向け設定

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国内のミラーを使うことができます。

Page 11: pkgsrcユーザー向け設定

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にすると良いはずです。

Page 12: pkgsrcユーザー向け設定

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の代わりに呼び出されます。

Page 13: pkgsrcユーザー向け設定

13

脆弱性のあるパッケージ

● /etc/daily.confに、fetch_pkg_vulnerabilities=YESと設定しておくと、pkgsrc security teamがメンテナンスしている脆弱性のデータベースファイルを定期的にダウンロードします。

● データベースファイルがあると、脆弱性のあるパッケージはビルドできません。

● それでも使いたい場合には、/etc/mk.confに、ALLOW_VULNERABLE_PACKAGES=#definedのようにしておきます。

● 残念ながらこの設定をしないで済む状況はないと思います。

Page 14: pkgsrcユーザー向け設定

14

まとめ

● pkgsrcユーザーに便利な設定について紹介しました。● ほかにも便利なオプションがあるので、pkgsrc/mk/defaults/mk.confや他のpkgsrc/mk以下のファイルをのぞいてみると良いと思います。