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

NetBSDあるある

はじめに

この文書はNetBSD Advent Calendar 2014の18日目の記事として書かれました。

(その後、若干アップデートされています。)

プロローグ

「次はこれですっ!」「大きな声出さないって言ったでしょ」何回目かの会話。興奮すると声が大きくなるのは、最初に会った頃と変わらない。まぁ、ほんとひさびさに会ったのだから、無理もないか。

「NetBSDっていって、オープンソースですっ。パソコンとか、昔のゲーム機とか、なんか電子辞書みたいなちっちゃいのとかでも動くんですよ!」「どうしてNetBSDなの?」声が小さくなる。「実は、教授がむこうに行っちゃったあと、黒瀬さんに」「え」「え、えと、SETIの続きのこととか」「別にせめてるつもりはないの。で、そこで教えてもらったのね」「はい。違う話もするようになって、教えてもらいました。インストールも自分でしました。パソコンをカソウテキに実現しているソフトがあって、まずはそれをインストールして、そのカソウテキなパソコンに、NetBSDをインストールしました」[1] 目の前には、VirtualBox上で動く、NetBSD 6.1.4がある。

「念のためきくんですけど...」「うん?」「教授もNetBSD使ってたりしませんよね...」「」「?」

「まさか教授も使っていたなんて。いっぱいききたいこと、あります」

理緒と律のおはなし

 wget・curlがない

「Linuxだと、wgetとかcurlがあります。便利です」「Linuxもつかってるの?」「副部長が使ってます」「副部長?」「大砲クラブの」あぁ。あの少年たちなら、ありそうだ。

「NetBSDでは、ftpコマンドが同じように使えるの」

 % wget http://www.example.jp/path/to/hoge.gz
 % curl -O http://www.example.jp/path/to/hoge.gz

の代わりに、

  ftp http://www.example.jp/path/to/hoge.gz

が使える。

「httpsも大丈夫ですか?」「大丈夫」

 viがvimじゃない

「Linuxのviは、何回もundoできます」「viの種類が違うの。同じのにしようか」

NetBSDのviは、nviというviクローン。それに対し、Linuxのviはvimがほとんど。よって、vimをインストール。

まず、vim-licenseを受け入れるようにするのと、Linuxと同じようなvimにするため、/etc/mk.confに設定を書く。

ACCEPTABLE_LICENSES+= vim-license
VIM_EXTRA_OPTS= --enable-xim --enable-fontset --disable-gpm --with-features=big
.if "${PKGPATH}" == "editors/vim"
USE_GNU_ICONV=yes
.endif

あとは、インストールするだけ。

 # cd /usr/pkgsrc/editors/vim
 # make install; make clean; make clean-depends

「教授の.vimrcを見せてもらえませんか?」「うーん、実は、わたしはvim使わないのよ。.vimrcなら、http://www.kawaz.jp/pukiwiki/?vim にある.vimrcをまずは試してみるといいかな」「何使っているんですか」「Emacs」「じゃぁわたしもそれにしたいです」「」

 pkgsrcのアップデートが遅い

「pkgsrcのアップデートを時々やるんですけど、とても時間がかかります」「そうね。夜中に自動でさせてもいいんだけど、もっと速くする方法はあるよ」「ほんとですか?」

pkgsrcにはGitのリポジトリもあって、そちらを使うと、速い。

まず、Gitをインストール。

 # cd /usr/pkgsrc/devel/git-base
 # make install; make clean; make clean-depends

manもほしいなら、以下も。

 # cd /usr/pkgsrc/devel/git-docs
 # make install; make clean; make clean-depends

あとは、git cloneするだけ。

 # cd /usr
 # mv pkgsrc pkgsrc.old
 # git clone --depth 1 git://github.com/NetBSD/pkgsrc.git
 Cloning into 'pkgsrc'...
 remote: Counting objects: 99080, done.
 remote: Compressing objects: 100% (83175/83175), done.
 remote: Total 99080 (delta 14686), reused 66847 (delta 12744)
 Receiving objects: 100% (99080/99080), 49.10 MiB | 324.00 KiB/s, done.
 Resolving deltas: 100% (14686/14686), done.
 Checking connectivity... done.
 Checking out files: 100% (81278/81278), done.

最初は、ちょっと時間かかる[2]けど、次からの「時々やるアップデート」は速くなるはず。

 # cd /usr/pkgsrc
 # git pull 

「--depth 1はなぜつけるんですか?」「つけないと、pkgsrcの改変の履歴情報を全部とってくるから」「いらない情報はとってこないということですか」「そう」

ちなみに、DragonFly BSDでは、/usr/Makefile というのがあって[3]

 # make pkgsrc-create-shallow
 # make pkgsrc-update

だけで、上記と同じことができた。NetBSDで使えるようにしたものが、http://www.rururu.org/~isihara/Makefile.usr.bmake にある。(つくった。)詳しくは、手っ取り早くpkgsrcとかを使うためのMakefileを参照。

 make clean; make clean-dependsが時間がかかる

「make clean; make clean-dependsも時間がかかります」「pkgcleanっていうのがあるよ」

 # cd /usr/pkgsrc/pkgtools/pkgclean
 # make install
 # pkgclean

「/usr/pkgsrc以下のworkディレクトリを高速にみつけて全部消す、というコマンドだから、並行して何かをインストールしている最中にpkgcleanしちゃだめ」「はい」

 パッケージを検索したい

「yum searchとかってないんですか」「そうね、順を追って説明するね」

まず、pkglocate。最初に、glimpseをインストールしておく。 /etc/mk.confにglimpse-licenseを受け入れるように書く。 

ACCEPTABLE_LICENSES+= glimpse-license

そのあと、インストール。

 # cd /usr/pkgsrc/textproc/glimse
 # make install; make clean; make clean-depends

でも、速いわけじゃない(逆に遅い)ので、、あまり意味はないかも。

 % cd /usr/pkgsrc
 % ./pkglocate mozc
 inputmethod/mozc-elisp/DESCR:This package includes Emacs LISP and helper program to use mozc on emacs.
 inputmethod/mozc-renderer/DESCR:This package provides mozc_render and common files for mozc client.
 inputmethod/mozc-server/DESCR:This package is dictionary server for mozc client, such as ibus-mozc.
 inputmethod/mozc-tool/DESCR:This package is configuration tool for mozc.
 inputmethod/uim-mozc/DESCR:This package provides mozc module for uim inputmethod.

pkgfindっていうのもある。

 # cd /usr/pkgsrc/pkgtools/pkgfind
 # make install; make clean; make clean-depends

これも、/usr/pkgsrc があるのが前提。ただし、ふつうの速さで使える。

 % pkgfind mozc
 inputmethod/ibus-mozc
 inputmethod/mozc-elisp
 inputmethod/mozc-renderer
 inputmethod/mozc-server: Japanese inputmethod Mozc engine for IBus
 inputmethod/mozc-tool
 inputmethod/uim-mozc

/usr/pkgsrcがある前提の方法だと、make indexしておくといいんだけど、make indexはとてもとてもとても時間がかかるので、おすすめできないかな。[4]

/usr/pkgsrcがないとか、ネットにつながっている環境なら、pkgseがいいかも。http://pkgsrc.se/ の情報を検索するコマンド。

 # cd /usr/pkgsrc/pkgtools/pkgse
 # make install; make clean; make clean-depends
 % pkgse abcde
 
 Version    : abcde-2.3.99.7nb2
 Location   : audio//abcde
 Comment    : Command-line utility to rip and encode an audio CD
 Maintainer : sekiya@NetBSD.org
 URL        : http://code.google.com/p/abcde/

「教授はいつもどうしているんですか」「http://pkgsrc.se/で直接検索しているかな」

 apt-get installとかyum installとかみたいなのがほしい

「yum install、うらやましいです」「じゃぁ、pkginだね」

 # cd /usr/pkgsrc/pkgtools/pkgin
 # make install; make clean; make clean-depends

さいしょに、/usr/pkg/etc/pkgin/repositories.conf を設定する。

ftp://ftp.jp.netbsd.org/pub/pkgsrc/packages/NetBSD/$arch/6.1/All

"$arch"は、そのままで。

使う前、最初にpkgin updateをする。(なれてくると、pkgin upと省略するようになる。)

 # pkgin up
 Database needs to be updated.
 proceed ? [Y/n] y
 reading local summary...
 processing local summary...
 updating database: 100%
 pkg_summary.bz2                                                          100% 1576KB 157.6KB/s   8.0KB/s   00:10
 processing remote summary (ftp://ftp.jp.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/6.1/All)...
 updating database: 100%

あとは、manをみながらつかってみよう。

 # pkgin
 Usage: pkgin [-cdfFhlnPtvVy] command [package ...]
 
 Commands and shortcuts:
 list                (ls  ) -  List installed packages.
 avail               (av  ) -  List available packages.
 install             (in  ) -  Perform packages installation or upgrade.
 update              (up  ) -  Create and populate the initial database.
 remove              (rm  ) -  Remove packages and depending packages.
 upgrade             (ug  ) -  Upgrade main packages to their newer versions.
 full-upgrade        (fug ) -  Upgrade all packages to their newer versions.
 show-deps           (sd  ) -  Display direct dependencies.
 show-full-deps      (sfd ) -  Display dependencies recursively.
 show-rev-deps       (srd ) -  Display reverse dependencies recursively.
 show-category       (sc  ) -  Show packages belonging to category.
 show-pkg-category   (spc ) -  Show package's category.
 show-all-categories (sac ) -  Show all categories.
 keep                (ke  ) -  Mark package as "non auto-removable".
 unkeep              (uk  ) -  Mark package as "auto-removable".
 show-keep           (sk  ) -  Display "non auto-removable" packages.
 show-no-keep        (snk ) -  Display "auto-removable" packages.
 search              (se  ) -  Search for a package.
 clean               (cl  ) -  Clean packages cache.
 autoremove          (ar  ) -  Autoremove orphan dependencies.
 export              (ex  ) -  Export "non auto-removable" packages to stdout.
 import              (im  ) -  Import "non auto-removable" package list from file.
 provides            (prov) -  Show what files a package provides.
 requires            (req ) -  Show what files a package requires.
 pkg-content         (pc  ) -  Show remote package's content.
 pkg-descr           (pd  ) -  Show remote package's long-description.
 pkg-build-defs      (pbd ) -  Show remote package's build definitions.
 # pkgin search mpg123
 wmmp3-0.12nb3        Front-end for mpg123 in a Window Maker dockapp
 mpg123-oss-1.19.0    Contains the oss module for mpg123
 mpg123-nas-1.19.0    Contains the nas module for mpg123
 mpg123-esd-1.19.0    Contains the esd module for mpg123
 mpg123-1.19.0        MPEG layer 1, 2, and 3 audio player
 emixer-0.5.5nb3      Frontend for mpg123 that can mix two mp3 streams and fade between them
 
 =: package is installed and up-to-date
 <: package is installed but newer version is available
 >: installed package has a greater version than available package
 # pkgin install mpg123
 calculating dependencies... done.
 
 nothing to upgrade.
 1 packages to be installed: mpg123-1.19.0 (357K to download, 932K to install)
 
 proceed ? [Y/n] y
 downloading packages...
 mpg123-1.19.0.tgz                                                        100%  357KB 178.5KB/s 156.5KB/s   00:02
 installing packages...
 installing mpg123-1.19.0...
 pkg_install warnings: 1, errors: 0
 pkg_install error log can be found in /var/db/pkgin/pkg_install-err.log
 reading local summary...
 processing local summary...
 updating database: 100%
 marking mpg123-1.19.0 as non auto-removable

「pkginで検索しましたけど、あんまり情報ないです」「そうね。なぜか使っているひとは多くないみたいね。[5] pkgsrcから直接make installするのに慣れている人が多いからかな」

エピローグ

理緒がお手洗いにたったあと、わたしは机の裏に落としてしまった、理緒の消しゴムを拾っていた。「とどかない...」

「あれ、なんでここにいるんですか?」「え」「やっぱり。日本に戻ってきたのなら、戻ってきたって言ってくださいよ」「え、だって、理緒からきいてない」「全然」「逆に、どうしてここに?」「車庫の掃除が終わったら、部屋に来いって理緒が」

そんな話をしていると、理緒がこそっと部屋の外から覗いている。「恵人くん、今日誕生日だったでしょ。やっぱりプレゼントは教授がいい?」「!」「!」

あとがき

NetBSD使っているひとって、みんな古くから使っていて初心者なんかいなさそうで(そんなことはない)、英語なんかもすらすら読めて(ぼくはちがう)、デバイスドライバ書いたりカーネルいじったりしていて(ぼくは超ちがう)、っていうすごいはっかー、ていう感じがします。

そんなことは全然全くさっぱりちっともないただの利用者たるぼくですが、初心者であったころ、何につまづいていたか忘れてしまっていることは事実です。 そんなのを思い出したりしながら、Google大明神のお告げにひっかかるよう(?)、何か書いてみることにしました。誰かのお役に立てれば幸いです。

もし、あなたがpkgsrcの情報を探しているのであれば、"pkgsrcめも"もご覧いただくと、ほしい情報があるかもしれません。

なお、理緒と律と恵人(と黒瀬と副部長も)は、『リケジョ!』(角川文庫)の登場人物[6]です。とてもいい小説なので、みなさんも読んでみて下さい。

ではでは。

  • [1]参考:NetBSD Advent Calendar 2014 1日目『NetBSDをVirtualBoxにインストールしてみる』 http://qiita.com/furandon_pig/items/5882ede06b5b5d3bf439
  • [2]それでも、cvsでとってくるよりは全然速い
  • [3]https://raw.githubusercontent.com/DragonFlyBSD/DragonFlyBSD/937aaebfa3c08ad317daacc7f19c944925fa47e5/etc/Makefile.usr
  • [4]DragonFly BSDのbaseにはmake indexでできる/usr/pkgsrc/INDEXファイルを検索する、pkg_searchコマンドがあって便利だった http://www.mathematik.uni-marburg.de/~schmidtm/pkg_search/
  • [5]NetBSD以外では、たとえばSmartOSでは標準的に使われていたりする https://wiki.smartos.org/display/DOC/Installing+pkgin
  • [6]トキノさん出したかった。時間もないし文才もない...。

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

最終更新時間:2017年06月30日 23時41分23秒