トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

pkgsrcめも

はじめに

NetBSDのパッケージシステム、pkgsrc。この使い方のメモ。

pkgsrcはNetBSD以外でも使えるように配慮されている(たとえば、Solarisとか)けど、ここではNetBSD上のはなしのみ。ただし、他のOSで使っている人も、参考にはなるかも。

間違っていたり、もっとよい方法があったら、教えてね。

リンク

  • NetBSD/pkgsrc: 有名なところで、かなり情報があります。一度は見てみましょう。
  • pkgsrc.se: pkgsrcとwipのパッケージを検索できます。本家より使いやすいです。
  • The pkgsrc user's guide (The pkgsrc guide Part I.): 本家の解説文書。doc/pkgsrc.htmlと同じもの。一度はみてみませう。
  • pkgsrc利用者向けの手引き: 上記の(ちょっと前のVer.の)翻訳。こっちを見てから上を読むといいかも。
  • pkgsrc: NetBSD Wikiのtutorialsより。同じく一度はみてみませう。

比較

 FreeBSDのportsとは違うとこ

  • portupgradeはない。
  • portsnapはない。
  • /etc/mk.confが設定ファイル。
  • /usr/pkg以下にインストールされる。
  • /usr/pkg/etc/rc.dにあるファイルでも自動起動しない。
  • 起動スクリプトは、/usr/pkg/etc/rc.d にインストールされない。/usr/pkg/share/example/rc.d にインストールされ、/etc/rc.d 以下には手動(=ユーザ自身)が配置する。
  • FreeBSDでは、「package(s)/パッケージ」という言葉は、port(s)をコンパイルして作った、バイナリーなパッケージの意味だが、pkgsrcでは、pkgsrcに含まれる、個々のソフトのこと。バイナリーなパッケージは、そのものズバリ「binary package(s)/バイナリーパッケージ」とか、「precomiled packgae(s)」という(みたい)。

 Linuxの各distributionのパッケージシステムとは違うとこ

  • ソースからmakeしてインストール、が基本。その際のソースをftp/httpでget -> パッチあて -> configure -> make -> make installを自動化するもの。(Gentooのebuildやソースが入っていないSRPMみたいな感じ?)
  • DebianのdselectやaptitudeみたいコンソールなGUIはない(が、最近、pkgtools/pkg_selectができた)。
  • Fedora coreのgyumみたいなx11なGUIはない。
  • apt-get upgradeで一発OK、というようなものはない(が、最近、pkgtools/pkg_rolling-replaceができた)。
  • apt-get installで一発OK、というようなものはない(が、最近、pkgtools/pkginやpkgtools/nihができた)。
  • 起動のon/offはコマンド(chkconfigやupdate-rc.dのような)ではなく、/etc/rc.confを編集する。

共通

 pkgsrc全体の設定

distfiles(ftp等でとってきたソース)の保存dirなどの、pkgsrc全体の設定については、mk/defaults/mk.confにデフォルト値の設定がある。(一度読んでみるといいと思う。)変更したい場合は、/etc/mk.confに書く。mk/defaults/mk.confは編集しない。

 各パッケージの設定

パッケージ個別の設定(configureオプションとか)については、pkgsrc-2005Q2に合わせるかのように、PKG_OPTIONS.*変数を使う方法になったみたい。

それぞれ固有の変数に入れるもの

Makefileをみて、固有の変数が何かをみて、/etc/mk.confに

 HOGE_USE_HUGA= yes

とか書くもの。

デフォルト(既定)値は、mk/defaults/mk.confに書いてあるが、稀にMakefileにしかないものがある。

これに該当するパッケージはもうほとんどないはず。

PKG_OPTIONS.パッケージ名という変数名に入れるもの

こちらが今後の主流みたい。

make時にオプションについて、注意される。変えたいときは、注意されたとおり、makeを止めて、/etc/mk.confに

 PKG_OPTIONS.hoge= hoge-aaa hoge-bbb

とか書く。

デフォルト値は、options.mkファイルがある場合(例:mail/qmail)はそれ、ない場合はMakefileに書いてある。

流れとしては、options.mkを作るという方向みたい。

たんじゅんに、オプション一覧をみたいのなら、

 cd /usr/pkgsrc/category/hoge
 make show-options

でOK。

自分でMakefileを編集 :)

pkgsrc側でオプションが用意されていないconfigureオプションとかは、自分で書き加えるしかないよね。

 /etc/mk.confにオプションを書きたくない

変数で指定すればよい。makeの引数でもいいし、

 make PKG_OPTIONS.huga=huga-aaa

環境変数でもよい。

 env PKG_OPTIONS.huga=huga-aaa make

 起動ファイルが/usr/pkg/etc/rc.dにインストールされない

昔は上記dirにインストールされていた。(今でもままある。)現在は、

 /usr/pkg/share/examples/rc.d

にインストールされる。昔みたいに/usr/pkg/etc/rc.dにインストールしてほしい時は、

 RCD_SCRIPTS_DIR= ${PKG_SYSCONFBASE}/rc.d
 PKG_RCD_SCRIPTS= YES

を/etc/mk.confに書いておく。

 起動ファイルは/etc/rc.dに、設定ファイルは/etc以下にインストールしてほしい

 PKG_SYSCONFBASE= /etc
 PKG_RCD_SCRIPTS= YES

を/etc/mk.confに書いておく。起動ファイルは手動でインストールするなら、もちろん

 PKG_SYSCONFBASE= /etc

だけでOK。

 etc/rc.d/hoge startとやっても起動しない

起動スクリプトは、普通は/etc/rc.confで起動を許可しない限り、起動しない。www/apacheだったら、

 apache=yes

と書く。

一時的な起動の場合は、たいてい

 etc/rc.d/hoge onestart

でOK。これだと、/etc/mk.conf/etc/rc.confに書いてなくてもよい。

 rootユーザ以外で、make installすると、rootパスワードを要求されるかわりにsudoを使いたい

   .if exists(${LOCALBASE}/bin/sudo)
   SU_CMD= ${LOCALBASE}/bin/sudo /bin/sh -c
   .endif

を、/etc/mk.confに書く。(sudoをインストールしていない場合は、security/sudoを先にインストールして、必要な設定をしてから。)

 Aというホストにインストールしてあるパッケージと同じパッケージ群を、Bというホストにインストールしたい

Aにpkgtools/pkg_chkをインストールして、

 pkg_chk -g

してできた/usr/pkgsrc/pkgchk.confを、Bにもっていって、Bでpkgtools/pkg_chkをインストールした上で、

 pkg_chk -a -C /path/to/pkgchk.conf

でいい(はず)。

 自動でオリジナルのパッチをあてたい

たとえば、

   LOCALPATCHES= /usr/local/pkgsrcpatches

を/etc/mk.confに書いて、mail/qmailをmakeするとすると、make patchの直後に/usr/local/pkgsrcpatches/mail/qmail以下のパッチがあたる。つまり、mail/qmail/patches以下のパッチの後にLOCALPATCHESのパッチがあたるようになる。

patchコマンドの実行ディレクトリは、各パッケージのpatchesと同じく、WRKSRCになるので、そのようにパッチをつくっておかないとmakeの途中で止まって悲しい思いをすることになる。:)(WRKSRCって?という人は、The pkgsrc developer's guideを読もう。)

ちなみに、パッチファイルの名前はなんでもよい。lsの順番であたる。

 パッケージの依存関係をみたい

Makefileを読むという手もあるけど、

   make show-depends

でOK。既にインストールしているパッケージなら、

   pkg_info パッケージ名

でもOK。

 distfilesをとってくるときに、近くのミラーサイトをつかいたい

mk/defaults/mk.confの下のほうに、各国の例が載っているので、/etc/mk.confにコピペして、コメントアウトを外せばOK。(もちろん、自分で書き換えてもよい。大学内からだと、jaistにしたり、DTIな人だと、ftp.dti.ne.jpにしたり、いじるよね。)

 コンパイルする時に自動で適当な最適化をほどこしたい

devel/cpuflagsをインストールして、manのEXAMPLESをみて、mk.confに追加しよう。

ただし、i386とかamd64とか、メジャー(?)なportでないかぎり、うまく動かなくなることもあるような気がする。(その時はmk.confから消せばいいだけだけど。)

cpuがちゃんと判断されるかどうかは、cpuflagsというコマンドがインストールされているので、実行してみればわかる。

 並列コンパイル(make -j数字)したい

/etc/mk.confに

 MAKE_JOBS=2

とか書くとそうなる。(数字は並列数。)ただし、全てのパッケージでそうなるわけではない。(うまくコンパイルできないものもあるので。)

 make cleanで、依存関係のパッケージもcleanしてほしい

/etc/mk.confに

 CLEANDEPENDS=yes

と書くと、そうなる。

一時的にそうしたい場合は、make clean-depends が使えますよ。

 もう使わない古いdistfilesを消したい

pkgtools/lintpkgsrcをインストールして、

 lintpkgsrc -or

すると、pkgsrcディレクトリの中と比較して、消してくれる。

 古いパッケージを全自動でアップデートしたい。

全パッケージのアップデートを全自動でやりたいのなら、pkgtools/pkg_rolling-replaceが使える。(よくマニュアルをよんでから使おう。)

基本は、

pkg_rolling-replace -rsuv

とする。バイナリーパッケージも一緒に作って欲しい時は、

pkg_rolling-replace -suv

とする。

 特定のパッケージと、それに依存するパッケージを全自動でアップデートしたい。

全自動でやりたいのなら、pkgtools/pkg_rolling-replaceが使える。(よくマニュアルをよんでから使おう。)

例として、Perlとそれに依存する全てのパッケージをアップデートすることにする。

pkg_admin set rebuild=YES perl
pkg_rolling-replace -rsv

とすればよい。バイナリーパッケージも一緒に作って欲しい時は、

pkg_admin set rebuild=YES perl
pkg_rolling-replace -sv

とする。

 Fedoraでいうalternativesコマンド(Debianだとupdate-alternatives)はないの?

pkgtools/pkg_alternativesがそれ。引数とかは全然違うけど、考え方は同じようなもの。詳しくはmanをみよう。(だたし、サポートしているパッケージはとても少ない。)

 pkgsrcでクロスコンパイルはできるの?

NetBSDの特徴として、システムをクロスコンパイルする(たとえば、NetBSD/mac68kをNetBSD/amd64上で作成する)ことはとても簡単にできるんだけど、pkgsrcについては、今のところNetBSD 1.*系で、かつcrosspkgtools/crosspkg-netbsd1-*にあるものを除いては、できません。ただし、distccをつかってクロスコンパイルする方法があるようです。

doc/HOWTO-distccを参照のこと。

(注:doc/HOWTO-use-crosscompileという文書が2013年5月に追加されてて、今後が楽しみではあります。)

 デフォルトのオプションを消したい

 PKG_OPTIONS.hoge= -hoge-aaa

などと/etc/mk.confに書く。デフォルトのオプションから、hoge-aaaオプションだけはずすことができる。

 たくさんのパッケージに共通のオプションを書きたい

 PKG_DEFAULT_OPTIONS= -arts -canna sj3

などと/etc/mk.confに書くとよい。

 anonymous cvsでアップデートしたら、japaneseとかnessus-librariesとかがpkgsrc dirの直下にできる

anonymous cvsのアップデートを途中で止めるとそうなる。やり直しましょう。

 インストールパッケージの脆弱性情報を知りたい

その昔はsecurity/audit-packagesというパッケージをインストールしていたんだけど、今は、pkgtools/pkg_installに統合されていて、NetBSD 5.0以降は、base systemにも入っている。(/usr/sbin/{audit-packages,download-vulnerability-list}として、見つかるはず。)

audit-packages が、脆弱性のあるパッケージを表示するコマンド。download-vulnerability-list が、脆弱性データベースファイルをダウンロードしてくるコマンド。(...だったのだが、今(pkg_install-20090201 以降)は、/usr/sbin/pkg_admin に統合されて、/usr/sbin/{audit-packages,download-vulnerability-list}は、ラッパーのシェルスクリプトになった。)

まず、security/audit-packagesをインストールしている人は、アンインストールした上で、pkgtools/pkg_installをインストール/アップデートしよう。(でないと、脆弱性情報を取得できなくなっているハズ。)

pkg_installパッケージは時々アップデートされているので、Releaseのまま使っているひとは、Stableをおっかけるか、pkgtools/pkg_installをインストール/アップデートした方がよい。

pkgtools/pkg_installをインストールしたら、メッセージが出るので、よく読もう。(既にインストールしている人は、pkg_info pkg_installで読める。)

 make なんとか って、いったい何が書けるの?

旧NetBSD WikiにあったThe pkgsrc make target referenceが、よくまとまっていて、便利です。 NetBSD公式Wikiにあるpkgsrc targetsがざっとまとめていて便利です。

 make installってやっても、バイナリーパッケージができてたのに、できなくなったんだけど

以前は、USE_DESTDIR=yes していた設定が、2011/4からデフォルトになった。簡単にいえば、バイナリーパッケージをいったん作ってから、インストールするようになった。これは現在も変わっていないので、バイナリーパッケージはできている。具体的には、work/.packagesの下にできる。

ところが、いつしか、PACKAGESディレクトリ(デフォルトでは、/usr/pkgsrc/packagesの下)にコピーされなくなった。昔のように、make install時にできたバイナリーパッケージをコピーされるようにするには、/etc/mk.confに

 DEPENDS_TARGET= package-install

を書く。

 workディレクトリがあちこちに残っているんだけど、一括で消したい

 cd /usr/pkgsrc
 rm -rf */*/work

では、量が多い時に困る。こういう時は、pkgtools/pkgcleanをインストールして使うと速い。

 pkgclean work

とするだけ。

 anonymous cvsなんでイマドキじゃない。git使えないの?

一応あって、https://github.com/jsonn/pkgsrc がリポジトリURI。ただし、あくまでもUnofficialなサービス、という位置づけ。もともとは、git copies of cvs modules availableにあるように、netbsd.orgなドメインのURIだったんだけど、なぜか移転したっぽい

 NetBSDのbase systemに入っているものは使わずに、pkgsrcに入っているものを使いたい

Postfixの場合は、NetBSDでPostfix参照。

以下、net/ntp4を例にあげる。

まず、インストール。ここまでは、なんら問題ないはず。

もし、ライブラリ群までpkgsrcのものを使いたい場合(たとえば、net/ntp4 だと、opensslはそのままだと、base systemのを使うけど、security/opensslを使いたい場合)、PREFER_PKGSRC=yesをして、make installするとよい。[1]

つぎに、どうやって起動させるかを考える。通常、/etc/rc.confに、ntpd=YESと書いても、base systemのものが起動してしまう。これを、pkgsrcでインストールしたものを起動するようにするのは、/etc/rc.d/ntpd を /usr/pkg/share/examples/rc.d/ntpd で置き換えてしまうのが一番簡単で、よく行われる。

しかし、置き換えてしまうと、base systemの更新の時に、配慮しないといけないし、いちいち覚えておくのはめんどう。そこで、NetBSDでPostfixで紹介したような、mail/postfix/MESSAGE.NetBSDにあるような方法をとる。ただし、もうちょっと手抜きをする。

まず、/etc/rc.conf.d を作り、起動スクリプトをコピーする。

 cp /usr/pkg/share/examples/rc.d/ntpd /etc/rc.conf.d

つぎに、rc.subr の行と、load_rc_config の行と、run_rc_command の行をコメントアウトする。ntpdだと、以下のような感じ。

 --- /usr/pkg/share/examples/rc.d/ntpd	2012-02-26 23:05:17.000000000 +0900
 +++ /etc/rc.conf.d/ntpd	2012-02-27 00:03:32.000000000 +0900
 @@ -8,7 +8,7 @@
  # BEFORE:  LOGIN
  # KEYWORD: chrootdir
  
 -. /etc/rc.subr
 +# . /etc/rc.subr
  
  name="ntpd"
  rcvar=$name
 @@ -48,5 +48,5 @@
  	rc_flags="-u ntpd:ntpd -i ${ntpd_chrootdir} $rc_flags"
  }
  
 -load_rc_config $name
 -run_rc_command "$1"
 +# load_rc_config $name
 +# run_rc_command "$1"

これで、OK。

それぞれ

 editors/vimで日本語が使いたい [2013/8/16]

昔のvimパッケージは、日本語が使えなかった。これは、

 --enable-multibyte --enable-xim

がconfigureオプションになかったため。現在は、

 --enable-multibyte

はつくようになったが、それ以外はつかない。Linuxの各distributionのパッケージにあるようなvimにしたい時は、最低、

 --enable-multibyte --enable-xim --enable-fontset --with-features=big

はほしい。editors/vim-shareのMakefile.commonをみると、VIM_EXTRA_OPTSに設定すればいいみたいなので、

 VIM_EXTRA_OPTS= --enable-xim --enable-fontset --with-features=big

を設定すればよい。

さらに、デフォルトのままでは、OS標準のiconv(Citrus iconv)を使うのだが、文字コードの判定ができない等、使いづらいので、GNU iconvを利用するように変更する。これは、USE_GNU_ICONV=yes を指定して、makeすればよい。

(参考:"editors/vimの文字化けについて"と"editors/vimでautodetectが有効にならない")

 x11/atermで日本語を入力したい [2005/5/16]

(かきかけ。)

FreeBSDのportsにあるパッチをあてれば、ximで入力できるようになります。

 GQmpegで日本語を表示したい [2009/1/17]

デフォルトのskinの場合、ソースの中にフォント指定が

 -*-helvetica-bold-r-*-*-14-*-*-*-*-*-*-*

のように埋め込まれているので、そのままでは、mp3ファイルのidタグの日本語表示ができない。

そこで、デフォルトskinを一度、Skin Editorを使って、いったんファイル群に保存する。GQmpegを起動し、適当なところで右クリックすると、メニューが出るので、Skin Editorを起動し、Skin Pathを適当なところ(例:~/.gqmpeg/skins/default)に保存する。

※いちいちSkin Editorを起動して云々なんてやってられんという人は、このtar ballを~/.gqmpeg/skinsに展開するといいかも。default.tar.gz

あとは、skindata*の各ファイルをテキストエディタで開き、フォント指定をいじる。

そして、

 gqmpeg --skin:default

で起動すると、日本語タグもOK。

しかし、環境設定で、Enable menu skinsをOnにしたときのメニューの文字化けはなおせないので、こればかりは、ソースをいじらないと直せない(と思う)。

ええと、インストールするときに、PKG_OPTIONS.gqmpegはgqmpeg-japaneseは設定しているよね、もちろん。

「まだ、文字化けする!」という人は、たぶんタグの文字コードの問題。EUC-JPでない限り、ちゃんとでないよね。Windowsからもってきたファイルだと、Shift_JISやUTF-8だったりするので、それは残念ながらgqmpegではconvertして見ることができない。

たんに日本語が表示できるプレーヤがほしいだけだったら、audio/audaciousを試してみよう。

 audio/audaciousで日本語を表示したい [2009/1/17]

プレイリストは日本語が出るのに、プレーヤのほうが出ない場合、設定 -> 外観の、「可能ならばビットマップフォントを使用」のチェックボックスをはずす。

 inputmethod/anthyのanthy-dic-toolで辞書登録に失敗する [2005/7/2]

pkgsrc-wip-discuss 52?と[tech-pkg-ja 3119]に投げた話。


結論としては、anthy-dic-toolのバグで、開発版anthyでは修正された。次の安定版がリリースされた際にはpkgsrcに入ると思うので、それまでは、pkgsrc版にも取り込まれた。ゆえに、6300nb1以上にアップデートすればよい。


山城@ofugさんの尽力に感謝。_o_

 games/wesnothをコンパイルするとエラーがでる [2005/8/17]

0.9.4以上をmakeすると、

 depbase=`echo reports.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;  if c++ -DHAVE_CONF
 reports.cpp: In function `reports::report
    reports::generate_report(reports::TYPE, const gamemap&, const unit_map&,
    const std::vector<team, std::allocator<team> >&, const team&, int, int,
    const gamemap::location&, const gamemap::location&, const gamestatus&, const
    std::set<std::string, std::less<std::string>, std::allocator<std::string>
    >&)':
 reports.cpp:422: internal compiler error: Segmentation fault
 Please submit a full bug report,
 with preprocessed source if appropriate.
 See <URL:http://www.netbsd.org/Misc/send-pr.html> for instructions.
 *** Error code 1  
 
 
 Stop.
 make: stopped in /opt/pkgsrc/games/wesnoth/work.i386/wesnoth-0.9.3/src
 *** Error code 1

というエラーがでるかもしれない。

悲しいかな、tech-pkg-ja 3201?によれば、実メモリが128MBでは上記エラーがでるとのこと。まさにわたくしは128MBです。えーん。

ということで、swapを増やしても、どないしてもmakeできないときで、大物っぽいときは、実メモリ不足を疑う、ということが必要かも。

だめもとで、reports.oの時だけ、コンパイル時の最適化を-O2から-Oに下げてみると、とおった。らっきー、ということで、これでしのぐことにする。

平塚さんに感謝。_o_

追記: 実は、1.0ではmakeがとおるようになったんだけど、また似たようなことが起こった時のために、消さずに置いておくことにする。

 Javaのソフトで日本語が文字化けする [2009/11/3]

[netbsd,09150]で書いた話。

lang/sun-jre15とfonts/kochi-ttfをインストールして、java/sun-1.5/lib/fonts/fallbackというdirをほって、kochi-*.ttfを中にコピーすれば、とりあえず日本語が出るようになる。

Supported Fontsも参照のこと。

正攻法は、fontconfig.properties.src というファイルを書き換える方法らしい。

 filename.Sazanami_Gothic=/usr/pkg/lib/X11/fonts/TTF/sazanami-gothic.ttf
 filename.Sazanami_Mincho=/usr/pkg/lib/X11/fonts/TTF/sazanami-mincho.ttf

などとすれば、OK。

 www/firefox,www/firefox2でjavaが動かない [2007/6/1]

lang/sun-jre15をインストールして、

 ln -s /usr/pkg/java/sun-1.5 /usr/java

するか、firefoxのconfig(java.default_java_location_othersの値)をいじる。

あとは、netbsd-java MLの2004/4の投稿をみて、がんばるとできるらしいです。

 lang/rubyをいれたんだけど、**モジュールがインストールされてない [2005/7/31]

下記参照。

 pkgsrcからrubyをいれたのに、/usr/pkg/bin/rubyがない [2011/10/23]

pkgsrcのrubyパッケージは、ruby本家に含まれるいくつかのrubyモジュールが別パッケージになっている。

  • lang/ruby1[89]-base: rubyのcoreの部分。
  • lang/ruby1[89]: ruby1[89]-base + 別になっているrubyモジュール(iconv,gdbm,curses,readline,tk)がインストールされるメタパッケージ。
  • lang/ruby: シンボリックリンクをはるメタパッケージ。

となっている。普通、lang/rubyを入れると、依存関係で、lang/ruby19-baseがインストールされる。ゆえに、/usr/pkg/bin/rubyがないひとは、

  • lang/ruby19
  • lang/ruby19-base

のうちどれかひとつをインストールしたので、たとえば、/usr/pkg/bin/ruby19はあっても、/usr/pkg/bin/rubyはない、ということになる。

ゆえに、lang/rubyをインストールすれば、/usr/pkg/bin/ruby19から/usr/pkg/bin/rubyにシンボリックリンクがはられるので問題はなくなる。

(別解として、lang/rubyをインストールせずに、pkgtools/pkg_alternativesをインストールする/使う、という手もある。結果的には同じことができる。)

なお、rubyのインストールのおすすめは、

  1. lang/ruby19
  2. lang/ruby

の順番でいれる。すると、なにも問題なく使えます。ただし、X関係をインストールしていないサーバでは、ruby-tkを入れられてもうれしくないので、lang/ruby19/Makefileをいじって、その部分をコメントアウトしてからmake installしたほうがいいかもしれない。

すでに、pkgtools/pkg_alternativesをインストールしている人は、lang/rubyをインストールできないので、その時は、lang/ruby19をインストールした後で、

 pkg_alternatives -gs rebuild

などとするとよいでしょう。(-gs の意味は、manを参照。)

 graphics/mglがmakeできない [2007/6/1]

最近のNetBSD/hpcmipsだと、makeできない。ホゲゆにによれば、gcc3ではmakeできないみたい。著者のgraphics/mglに対するパッチによれば、

--- lib/emcons.c.orig	2005-01-17 05:09:53.000000000 +0900
+++ lib/emcons.c	2005-01-17 05:11:18.000000000 +0900
@@ -134,25 +134,24 @@
 #define VT_TRUE	1
 #endif
 
-static char *mouse_icon="\
-#MGR000200160016
-@@++++++++++++++
-@G@+++++++++++++
-@GG@++++++++++++
-@GGG@+++++++++++
-@GGGG@++++++++++
-@GGGGG@+++++++++
-@GGGGGG@++++++++
-@GGGGGG@@+++++++
-@GGGGG@+++++++++
-@G@@G@++++++++++
-@@++@G@+++++++++
-++++@GG@++++++++
-++++@GGG@+++++++
-++++@GGG@@++++++
-++++@G@@++++++++
-++++@@++++++++++
-";
+static char *mouse_icon=
+"#MGR000200160016\n"
+"@@++++++++++++++\n"
+"@G@+++++++++++++\n"
+"@GG@++++++++++++\n"
+"@GGG@+++++++++++\n"
+"@GGGG@++++++++++\n"
+"@GGGGG@+++++++++\n"
+"@GGGGGG@++++++++\n"
+"@GGGGGG@@+++++++\n"
+"@GGGGG@+++++++++\n"
+"@G@@G@++++++++++\n"
+"@@++@G@+++++++++\n"
+"++++@GG@++++++++\n"
+"++++@GGG@+++++++\n"
+"++++@GGG@@++++++\n"
+"++++@G@@++++++++\n"
+"++++@@++++++++++\n";
 
 static int mouse_pattern[16][16];
 

という修正でmakeできるようになる。

gcc4では、lib/ferom.cがダメ。[nbug:10260]によれば、

 @@ -96,36 +96,36 @@
         ferom_off = 0;
         switch (size) {
         case 12:
 -               ferom_font = &romfont[0];
 +               s->_pen_font.opt = &romfont[0];
                 ferom_width = ferom_height = 12;
                 break;
         case 16:
 -               ferom_font = &romfont[1];
 +               s->_pen_font.opt = &romfont[1];
                 if (ferom_font->height == 0) {
 -                       ferom_font = &romfont[0];
 +                       s->_pen_font.opt = &romfont[0];
                         ferom_off = 2;
                 }
                 ferom_width = ferom_height = 16;
                 break;
         case 24:
 -               ferom_font = &romfont[2];
 +               s->_pen_font.opt = &romfont[2];
                 if (ferom_font->height == 0) {
 -                       ferom_font = &romfont[0];
 +                       s->_pen_font.opt = &romfont[0];
                         ferom_off = 6;
                 }
                 ferom_width = ferom_height = 24;
                 break;
         default:
                 if (size == romfont[4].height) {
 -                       ferom_font = &romfont[4];
 +                       s->_pen_font.opt = &romfont[4];
                         ferom_width = ferom_font->width;
                         ferom_height = ferom_font->height;
                 } else if ( size == romfont[5].height) {
 -                       ferom_font = &romfont[5];
 +                       s->_pen_font.opt = &romfont[5];
                         ferom_width = ferom_font->width;
                         ferom_height = ferom_font->height;
                 } else {
 -                       ferom_font = &romfont[0];
 +                       s->_pen_font.opt = &romfont[0];
                         ferom_width = ferom_font->width;
                         ferom_height = ferom_font->height;
                 }

という修正が必要とのこと。(おおしまさんありがとう。)

また、[nbug:10248]によれば、src/sys/uvm/uvm_extern.hに2006年秋に行われた変更によって、mgterm/mdate.cがダメで、

 @@ -683,7 +684,11 @@
  int
  memmode()
  {
 +#if __NetBSD_Version__ > 105009900
 +       struct uvmexp_sysctl uvmexp;
 +#else
         struct uvmexp uvmexp;
 +#endif
         int mib[2];
         int size = sizeof(uvmexp);
         int pagesize = getpagesize();

という変更が必要とのこと。(中治さん・おおしまさんありがとう。)

 chat/navi2chでbbsmenuがでない [2006/10/7]

現行のstable versionである1.7.5では、そういう状態になる。navi2ch-1.75nb4以上にアップデートすると、直っているので、アップデートしよう。

 www/awstatsで検索文字列などが文字化けする [2014/6/29]

AWStatsの検索文字列の文字化けを解消の情報をもとに、手で修正してもよいが、ホスティングサービス総合研究所さんが6.9用パッチを公開されているので、make patchしたあと、そのパッチを手パッチすれば、OK。

...だったのだが、www/awstatsが、7.0になって、上記のパッチはそのままではあたらない。手パッチしたあと、rejectされた部分は、手で編集しよう。

めんどくさい人むけの、パッチ。awstats-7.3-fix-searchword.patch

Jcodeモジュールをインストールするのを忘れないように!(converters/p5-Jcodeだよ。)

 pkgtools/pkg_compでccacheを使うとmakerootできない [2006/9/24]

なぜか、libkverのところで止まるという症状に悩まされている場合は、たぶん、REAL_CCACHE変数を指定している(=global ccache directoryを使っている)はず。そういうひとは、普段から環境変数CCACHE_DIRを設定していると思う。pkg_compの場合は、CCACHE_DIRは/pkg_comp/ccacheにしなければいけないので、

 env CCACHE_DIR=/pkg_comp/ccache pkg_comp makeroot

とすれば、うまくいくはず。パッケージのビルドも、

 env CCACHE_DIR=/pkg_comp/ccache pkg_comp build misc/lv

などとしよう。

 pkgsrcからlang/python[23]?をいれたのに、/usr/pkg/bin/pythonがない [2006/12/29]

pkgtools/pkg_altinativesをインストールすると、できます。すでにインストールしている人は、

 pkg_alternatives -gs rebuild

とするとできます。(-gs の意味はmanを読んで下さい。)

isiharaは、/usr/local/binに必要なシンボリックリンクをはって、対処しています。

 ln -sf /usr/pkg/bin/python24 /usr/local/bin/python

 mail/wlなど、Emacs上で動くアプリケーションをインストールしようとすると、既にEmacs/XEmacsが入っているにもかかわらず、別のをインストールしようとする [2011/4/3]

pkgsrcでは、デフォルトのEmacsは mk/defaults/mk.conf に EMACS_TYPE として書かれている。違うのを入れている場合は、mk.confにEMACS_TYPEを指定しておく。

 EMACS_TYPE= emacs22nox

などと書けばOK。詳しくは、mk/defaults/mk.conf にある説明を読もう。

 NetBSD/amd64のmultimedia/mplayerでReal Playerの動画が再生できない [2007/4/8]

multimedia/realplayer-codecsは、NetBSD/amd64では使えないので、悲しい思いをしていたのだが、下記の方法で再生できる。

要は、multimadia/mplayer/options.mkで明示的にdisableされているのを止めて、mplayer本家のessential-amd64 binary codecsをインストールするってこと。

まず、multimedia/mplayer-share/options.mkを下記のように変更する。

 --- options.mk.orig        2007-01-14 02:33:33.000000000 +0900
 +++ options.mk     2007-04-08 20:06:46.000000000 +0900
 @@ -184,7 +184,7 @@
  CONFIGURE_ARGS+=       --with-reallibdir="${PREFIX.realplayer-codecs}/lib/RealPlayer8-Codecs"
  DEPENDS+=              realplayer-codecs>=8nb2:../../multimedia/realplayer-codecs
  .else
 -CONFIGURE_ARGS+=       --disable-real
 +#CONFIGURE_ARGS+=      --disable-real
  .endif
 
  .if !empty(PKG_OPTIONS:Mmplayer-runtime-cpudetection)

次に、/usr/pkg/lib/codecs dirをつくる。既にあれば、つぎへ。

multimedia/mplayerを既にインストールしているのなら、インストールし直す。configureのところで、

 Checking for RealPlayer DLL ... yes (using /usr/pkg/lib/codecs)

と出てくるはず。

次に、mplayer本家より、essential-amd64 binary codecsをとってきて、中身を/usr/pkg/lib/codecsに入れる。

これで使えるはず。詳細は、codecsのファイル名と/usr/pkg/share/mplayer/codecs.conf参照。

 www/firefoxでflashを見たい [2016/7/12]

その昔、pkgsrcには、flashプラグインは複数のVer.があったが、現在は、一つしかない。

  • multimedia/adobe-flash-plugin11: 11.2.202.626

ちなみに、linuxのエミュレーションで動く。(つまり、emulators/suse* パッケージに依存している。)

上記は、www/nspluginwrapperを使うことで、プラグインとして動作する。(デフォルトでは、インストール時に、一緒にインストールされ、プラグインの設定も行われる。)このnspluginwrapperが、multimedia/libflashsupportに依存している。

audio/pulseaudioを使って、音声を出しているひとは、PKG_OPTIONS.adobe-flash-pluginにpulseaudioを指定しておくと、よい。(インストール後のMESSAGEの設定を忘れずに。)

別の手段として、multimedia/swfdec-mozillaがある。ただし、開発は止まっているっぽいし、見ることができるflashは少ない。

別の手段はもうひとつあって、(代替として有名な)multimedia/gnashがある。こっちは、YouTubeは見ることができるが、ustreamやニコ動はだめっぽい。(でも、adobe純正のpluginが動かないのであれば、こちらを使うしかないだろう。)こちらも、開発が止まっているようだ。

 NetBSD/hpcmipsでwww/w3mがmakeできない [2007/6/25]

functable.cとtabtable.cを作るmktableというプログラムがcoreを吐いて落ちてしまい、そこから先に進まない。どうも、boehm-gcがhpcmipsではうまく動かないらしい。

伊藤さんという方に、教えてもらった修正をしてboehm-gcをインストールしなおし、そのあとw3mをmakeすると、できるようになった。

詳細は、モバイルギアでNetBSDを参照。

 modular-xorgでいろいろなXクライアントがmakeできない [2007/9/22]

デフォルトのXFree86をインストールせずに、/etc/mk.confにX11_TYPE=modularを指定して、modular-xorg化しようとしているはず。

XAW_TYPEをstandard(デフォルト値)以外に指定している場合(たとえば、neXtawとか)にしていると、x11/libXawがインストールされなかったり、インストールしていても、buildlink3でincludeされなかったりで、Xawが入っていることを前提にしているパッケージは、のきなみmakeできない(例editors/emacs)。

いろいろひっかかるので、現状では、/etc/mk.confには、すなおにXAW_TYPEを指定せず、必要な時だけ、コマンドラインから指定した方がよいようだ。

 security/audit-packagesがない [2008/1/14]

すでにpkgtools/pkg_installに統合されており、2008/1/13に削除されたため。よって、pkg_installをinstall/updateすればよい。(すでにaudit-packagesをインストールしている人は、uninstallしてから。)cf. http://www.jp.netbsd.org/ja/support/security/

 lsを色つきにしたい [2008/1/20]

NetBSDの/bin/lsは色つきではない。Linuxのlsに慣れている人は、色つきの方がうれしいかも。そんな人は、sysutils/coreutils(GNU coretutils)をインストールしてもいいけど、単に、色つきのlsがほしいだけ、の人は、misc/colorlsか、misc/gnulsをインストールしよう。前者は、lsに-Gオプションを追加して、色つきが使えるようにしたもの。後者は、sysutils/coreutilsのlsだけを抜き出したもの。

 audio/tremor-toolsで曲を再生後にcore dumpする [2008/1/21]

send-pr した話。audio/tremor-toolsでoggファイルを再生すると、ちゃんと再生できるんだけど、最後にcore dumpする。あるいは、途中でCtrl + Cすると、core dumpする。

どうも調べた限りでは、NetBSDの問題ではないようで、audio/vorbis-toolsの方にはパッチがあたっているぽかったので、それをまねてtremor-toolsにも同じパッチをあてると、直ったようだ。

 www/apache{,2,22}で、sslを有効にして起動したい。[2008/10/20]

rc.confに

 apache=YES
 apache_start=startssl

と書けばよい。(起動スクリプトを読むとわかる。イケてない。)

 misc/stellariumが起動しない [2009/1/29]

[nbug:11520]によれば、「X serverに OpenGL機能が必要、つまりmodular Xorg 的にはglx extensionを有効にしておく必要がある」そうです。(おおしまさんありがとう。)

  • x11/modular-xorg-serverを利用している場合、DRIを有効にしてmakeしなおす。(PKG_OPTIONS.modular-xorg-server= dri。)
  • xorg.conf or XF86Configで Load "glx" を書く。

また、(NetBSD/i386 5系で、)intelドライバを使っている場合で、必ずcore dumpする場合、

   Option "DRI" "False"

すると、ちゃんと動くようになるかもしれません。(ただし、とても遅いです。)

 emulator/gxemulで4.0以降のNetBSD/hpcmipsを動かすと、時計が進まない [2009/7/21]

これは昔のgxemul本家のWebサイトのNewsにも書いてあった不具合で、ずっと直っていなかったのだけれども、[netbsd,09744]でTsutsuiさんという方が原因を突き止めて下さって、回避策として、

 とりあえず /etc/sysctl.conf に
 sysctl -w kern.timecounter.hardware=clockinterrupt
 とでも入れておけば時計は進むみたいです。

と教えて下さったとおりにすると、動いた。

また、[netbsd,09763]にあるとおり、pkgsrcが0.4.7.2にupdateされ、修正パッチがあたるようになった。よって、上記の回避策をとるか、0.4.7.2以降にupdateすればよい。

Tsutsuiさんに感謝。_o_

 audio/SDL_mixerをつかうゲーム等で音が鳴らない [2009/11/3]

インストール時に出る、メッセージに気づいていないかも。

   ===========================================================================
   $NetBSD: MESSAGE,v 1.5 2006/10/27 17:20:52 wiz Exp $
   
   To make use of the MIDI capabilities in the SDL_mixer package, you
   must install any of these packages:
   
   	audio/freepats
   	audio/eawpatches
   	audio/guspatches
   
   ===========================================================================

つまり、音源となるデータをインストールしないといけない。

とにかく鳴ればいいのなら、audio/freepats をインストールしよう。(のこり二つは、サイズが大きい。)

インストールしても、まだ出ないのなら、timidity.cfgを作っていないのかも。audio/freepats では、インストール後に、

   ===========================================================================
   $NetBSD: MESSAGE,v 1.2 2005/04/12 17:12:16 ben Exp $
   
     To use timidity with freepats, you have a couple of options.
   
     1) at the command-line:
   
        timidity -L /usr/pkg/share/freepats -c timidity.cfg file.mid
   
     2) in the system-wide timidity configuration:
   
        cp /usr/pkg/share/freepats/timidity.cfg /usr/pkg/etc
   
   ===========================================================================

と案内が出る。2) をしておかないと、音が出ない。

games/onscripter も SDL_mixer を使っているので、インストールしただけでは、音が出ません。;)

 sysutils/munin-server をインストールしたが、文字がみんなトーフ(のような白い四角形)になる [2010/3/6]

sysutils/munin-serverをインストールしたサーバは、NetBSDのインストール時に、xfont.tgz と xetc.tgz をインストールしなかったのでは。

インストールしたかどうかは、/etc/mtree 以下に set.xfont とか set.xsets とかいうファイルがなければ、たぶんインストールされていない。まずは、インストールしましょう。

インストールしても、まだトーフ、という人は、/etc/fonts/fonts.conf をみてみて。Font directory list は正しいところをみているかを確認しよう。(NetBSD 5以降だと、/usr/X11R7/lib/X11/fonts がないといけない。NetBSDを4以前からupgradeして使っている人ははまり道。)

 gtkを使っているアプリケーション等のプルダウンメニュー等にものすごく時間がかかる [2011/4/3]

rootで、fc-cacheコマンドを実行して、フォントキャッシュを作り直せばOK。

 fc-cache -v

NetBSDを新規にインストールしたり、アップデートしたりした後、忘れずに実行しよう。(ちなみに、NetBSD 6からは、インストール時起動時に実行されるようになるみたい。)

 x11/mltermで、xftを有効にできない or xftを無効にできない [2014/12/4]

その昔は、type_engine = xcore がデフォルトだったので、xft等が使えなかった。また、PKG_OPTIONS.mltermにxft2を指定すると、今度は、type_engine = xftしか使えないように、コンパイルされていた。

2014/11/2にoptions.mkが変更され、デフォルトで、--with-type-engines=xcore,xft,cairo となった。mlterm-3.4.0以降をインストールすれば、問題ない。

 rubyをインストールしようとすると、とても時間(とメモリ)がかかる [2011/5/12]

付属ドキュメントを作成するのに、とても時間(とメモリ)がかかるみたい。これは、PKG_OPTIONS.rubyに -ruby-build-ri-db を指定すれば、それが省かれるようになる。

 shell/zshで、umountの引数の補完がエラーが出てうまくいかない [2011/7/28]

readlink(1)の引数が、Linuxと違うので、うまく動かないっぽい。

とりあえず、エラーがでないようにするのは、make patchしたあと、以下の修正を行えば直る。(もっとスマートな方法があるような気がするけど、よくわからない。)

 --- Completion/Unix/Type/_canonical_paths.orig	2007-10-15 01:09:18.000000000 +0000
 +++ Completion/Unix/Type/_canonical_paths
 @@ -38,7 +38,7 @@ if (( $__opts[(I)-N] )); then
    files=($@)
  else
    for __index in $@; do
 -    files+=$(readlink -qf $__index)
 +    files+=$(readlink -f $__index)
    done
  fi
  
 @@ -48,7 +48,7 @@ _canonical_paths_add_paths () {
    expref=${~origpref}
    [[ $origpref == (|*/). ]] && rltrim=.
    curpref=${${expref%$rltrim}:-./}
 -  canpref=$(readlink -qf $curpref)
 +  canpref=$(readlink -f $curpref)
    if [[ $? -eq 0 ]]; then
      [[ $curpref == */ && $canpref == *[^/] ]] && canpref+=/
      canpref+=$rltrim

 pkgsrcでgitをインストールして、github.comから、cloneしようとすると、エラーになる [2012/3/4]

たとえば、pkgsrcのリポジトリをとってこようとすると、

 % git clone --depth 1 https://github.com/jsonn/pkgsrc.git
 Cloning into 'pkgsrc'...
 error: SSL certificate problem, verify that the CA cert is OK. Details:
 error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com/jsonn/pkgsrc.git/info/refs
 fatal: HTTP request failed

などとなって、SSLエラーになる。

これは、gitがバックエンドに用いているcurlコマンドがわかるroot証明書がないため。

まず、root証明書を用意する。curlの開発元が配布しているので、それをとってこればよい。(信用できない場合は、同じサイトに、firefoxのローカルインストールから、作成するスクリプトがあるので、それで作成すればよい。)

つぎに、用意した、cacert.pemを、gitコマンドがわかるようにする。~/.gitconfigに以下のように書く。

 [http]
 sslCAinfo = /path/to/cacert.pem

これで、SSLエラーは出なくなる。

めんどくさいひとは、環境変数に、GIT_SSL_NO_VERIFY=trueを指定しておけば、SSLのチェックをしなくなるので、一時的につかう分にはこれでもよい。

 % env GIT_SSL_NO_VERIFY=true git clone --depth 1 https://github.com/jsonn/pkgsrc.git

 TamagoでAnthyを使いたい [2011/10/31]

editors/tamago はCVS版なので、Anthyは使えるんだけど、不具合があったりする。白井秀行さんという方が『自家製 egg-anthy』という改良版をつくってみえて、それを藤原さんという方がパッケージにしたものが、pkgsrc-wipwip/tamago-anthyとしてあります。これを使うと幸せになります。

 textproc/py-sphinxで、make html等すると、エラーになる [2012/1/21]

以下のようなエラーが出る。

 Exception occurred:
   File "/usr/pkg/lib/python2.6/site-packages/docutils/utils.py", line 344, in decode_path
     path = path.decode(sys.getfilesystemencoding(), 'strict')
 TypeError: decode() argument 1 must be string, not None
 The full traceback has been saved in /tmp/sphinx-err-PfymiK.log, if you want to report the issue to the developers.
 Please also report this if it was a user error, so that a better error message can be provided next time.
 Either send bugs to the mailing list at <http://groups.google.com/group/sphinx-dev/>,
 or report them in the tracker at <http://bitbucket.org/birkenfeld/sphinx/issues/>. Thanks!
 *** Error code 1

これは、textproc/py-docutilsのutil.pyがうまく動かないため。344行目は

       path = path.decode(sys.getfilesystemencoding(), 'strict')

となっており、(すくなくともNetBSD 5.1では、)sys.getfilesystemencoding()が、None を返しており、path.decode()は第一引数に None を許容しないので、上記のようなことがおこる。

とりあえず、以下の修正を行えば、問題を回避できる。

 --- docutils/utils.py.orig      2011-07-07 06:49:19.000000000 +0000
 +++ docutils/utils.py
 @@ -349,6 +349,11 @@ def decode_path(path):
              path = path.decode('utf-8', 'strict')
          except UnicodeDecodeError:
              path = path.decode('ascii', 'replace')
 +    except TypeError:
 +        try:
 +            path = path.decode('utf-8', 'strict')
 +        except UnicodeDecodeError:
 +            path = path.decode('ascii', 'replace')
      return nodes.reprunicode(path)
 
 

 net/mikutterが起動しない [2012/1/27]

--debug オプションをつけて起動すると、文字コード関係のエラーがおきるときは、たとえば、

 env LC_ALL=ja_JP.UTF-8 mikutter

とやって起動してみるとうまくいく場合がある。

じつは、/usr/pkg/bin/mikutter はただのラッパーのsh scriptなので、これに、

 LC_ALL=ja_JP.UTF-8
 export LC_ALL

とか書き加えちゃう、という手もある。

 notify-send (sysutils/libnotify)が動かない [2012/2/19]

sysutils/notification-daemon をインストールする。すると、

 notify-send ほげ

で、動くはず。

なお、上記の例だと「ほげ」は日本語だとUTF-8でないと動かない。EUC-JP環境でコンソールを使っている人は、たとえば、converters/nkfをインストールして、

 notify-send $(echo ほげ|nkf -w)

などとしよう。

 www/{w3m,w3m-img}をmigemoオプションを有効にしてインストールできない [2012/2/26]

pkgsrcの現在のrubyのデフォルトは、lang/ruby19。これを使おうとするが、textproc/migemoは、ruby18依存なので、おかしくなる。回避策としては、w3m or w3m-imgのインストールの時に、

 make install RUBY_VER=18

とすれば、問題なくインストールできる。

 NetBSD/i386 6系でmultimedia/mplayerでflvが再生できない [2013/4/7]

mplayerでflvを再生しようとすると、

 Unsupported PixelFormat 61
 Unsupported PixelFormat 53
 Unsupported PixelFormat 81

などといって、crashして、再生できない。

結論からいうと、pkg/47132と同じっぽく、書かれているとおり、

.if "${PKGPATH}" == "multimedia/mplayer"
   CFLAGS+= -mstackrealign -mpreferred-stack-boundary=4
.endif

と、/etc/mk.conf に書いてmake installしなおせば、再生できるようになる。

multimedia/mplayer 以外にも、multimedia/ffmpeg や multimedia/vlc も正常に動作しない場合は、同じ方法で直るようだ。

 net/nsdが起動しない [2014/6/29]

デフォルトのインストールのままでは、/var/nsd/nsd.dbが作成できないため、起動しない。てっとりばやくNSDを参照のこと。

 rubyのパッケージがインストールできない [2016/2/25]

makeはできるんだけど、make installしようとすると、gemのエラーがでる場合は、一度、そのパッケージをmake clean; make clean-depends; make distcleanしてから、再度試してみて下さい。

 net/sambaをインストールしていると、security/p5-GSSAPIがインストールできない

net/sambaはsecurity/mit-krb5をインストールするが、pkgsrcデフォルトは、security/heimdalがKerberosのデフォルトで、security/mit-krb5のインストールを検知して、インストールに失敗する。

make KRB5_TYPE=mit-krb5 install

とすると、インストールできる。

  • [1]cf."NetBSD パッケージシステムは極力自立するべき" http://www.fml.org/home/fukachan/ja/netbsd.pkgsrc.prefer.pkgsrc.html

間違いの指摘や、ご意見などは、FrontPageにある連絡先にメールを下さるとうれしいです。

最終更新時間:2016年07月12日 03時46分47秒