Monthly Archives: 1月 2014

[メモ] FreeBSD10.0-RC5にしたら全pkg/portsを再インストールしろ

Pocket

メモ。

FreeBSD 10.0-RC5にしたら、おなじ10.0からのアップグレードであっても、pkg/portsの再インストールが必要。
というのもABIの変更があったから。

必ずしもすべてのpkg/ports、というわけではないが、全部やっておいた方が安心。

ソースは以下。
http://lists.freebsd.org/pipermail/freebsd-stable/2014-January/076817.html

pkgの再インストールは以下のコマンドで。

 

Pythonアプリに引数を渡そう

Pocket

PythonでWindowsアプリケーションを作ったとする。
たとえばファイルを引数に取り、整形するものだとする。
せっかくWindowsアプリケーション、というかGUI上のプログラムなんだから、アプリケーションにドラッグ&ドロップしたいじゃないか。
どうしたらできるか。
…まあ普通にargvで受け取ればいいんですがね。
以下、Pythonにおけるargvの使い方メモ。

sys.argv

sys.argvは、コマンドラインで渡される引数が入ったリスト。
sys.argv[0]にはスクリプト自身が入る。
len(sys.argv)で引数の数をカウントできる。
できるが、スクリプト自身も含めての数であることに注意。sys.argv[0]に自分が入っているからね。

サンプルスクリプト

サンプルスクリプトである。

この実行結果は、たとえば以下のようになる。

sys.argvはリストなのでforなどで中身を一つ一つ参照できるが、自分自身からまず始まるのは美しくない。

引数一つ目から扱うには

以下のようにする。

端的に言えば、一枚レイヤを入れる。
一番下のif文部分でsys.argvを受けたら、リストの一つ目以降、つまりスクリプト自身を除いた残りをmain()に渡すというわけ。
出力は例えば以下のようになる。

ベリーナイス。

シャレオツな使い方(引数の数を担保したい)

さて。もうちょっと頭のいいことをやってみたい。
具体的には、引数を一つだけ取るようにしたい。
さてサンプル。

出力例

 

シャレオツな使い方(引数の内容を担保したい)

さらに。
ファイルを引数に取るとして(さあ冒頭の話につながってまいりました!)、そのファイルの有無を確認したい。
サンプル。

出力例

以上でござる

pkgngでgnome2などの「一式」を削除するには。

Pocket

 

pkgngで、あるpkg、たとえばpkg Aをインストールすると、依存によりほかのpkgを大量に連れてくることがある。
それはそれで良いのだが、ではそのpkgを、依存も含めて一式アンインストールしたい場合にはどうするか。

いったんpkg Aを削除したあとに、autoremoveを使えばよい。
これはgnome2などの巨大なものでも同じ。

pkg autoremove

manより抜粋

pkg autoremoveは、依存関係の解決のためにインストールされたがもう必要のない、いわば「孤児」pkgを削除するのにつかわれる。

実行例(gnome2削除)

以下にgnome2を削除したときの例を示す。

gnome2のレベルになると、meta-portが用意されているので、これを削除してからautoremoveすればよい。

まずはmeta-portを削除

 

そしてautoremove

 

おしまい。

No tags for this post.

[メモ]zpoolのVersionについて(Versionナンバはもう使われない)

Pocket

 

過日、zpool v28のアップグレードをして、いくつかのfeature flagsを有効にした。
したのだが、よく分からないことがいくつかあった。

すなわち、最新のはずのv28なのにアップグレードを促されたこと、アップグレードしたら zpool get allの結果からバージョンが消えてしまったこと、である。

WikipediaのZFSやOpenZFSを眺めてみて分かったのは、zpool((Open)ZFS)はv28以降、バージョンナンバの使用を止めてしまったせいとの由。
http://en.wikipedia.org/wiki/OpenZFS
http://en.wikipedia.org/wiki/ZFS#RELEASEHISTORY

以下に調べた結果を示す。
なお、ご覧の通り情報の出所はwikipediaである。
問題ないとは思うが、各位においてはご留意されたい。

ZFSの歴史

もともと、zpoolやZFS filesytemに機能が追加されるたび、バージョンナンバがインクリメントされてきた。
しかし2010年、OpenSoralisの開発が停止され、ZFSはオープンソースではなくなった。
本家(Oracle)のZFSはプロプライエタリとなって、2013/12/24現在、ZFS filesystemはv6, ZFS Poolはv34まで進んでいる。

それはそれとして、illumos(OpenSolaris後継)やBSD/Linux/OSX関連の方々は、オープンであったzfs v5, zpool v28をベースに本家とは別の開発が進める。
これが2013年にOpenZFSとなる。

バージョンナンバとフィーチャーフラグ

OpenZFSはいろんな所でいろんな人々が開発を続けている。
こういった状態で、単一のバージョンナンバを付与することは不可能である。
そこでフィーチャーフラグ(feature flags)という考え方を導入する。
機能ごとに個別の名前を与える、というもの。

個別の名前は、feature@<org-name>:<feature-name>という書式で表される。
org-nameは当該機能を開発した組織名。一意の名前。もちろん、勝手につけることは許されない。
org-nameが明らかな場合には、feature@<feature-name>と短縮してもよい。
feature@async_destroyというように。

フィーチャーの状態

フィーチャーの状態には三つある。
disabled, enabled, activeである。

  • disabled: 無効。機能を使えない状態。
  • enabled: 機能を使える状態。有効にはなっていない。
  • active: 機能が有効。旧バージョンとの互換性がなくなっている。

フィーチャーの種類

  • features for write : 書き込みには必須の機能。読み込みのみであれば不要。
  • features for read : 読み込み、あるいはpoolを開くために必須の機能。

たとえばasync_destroyはデータ書き込みの時だけ必要な機能なのでfeatures for write。

バージョンについて

一つでもフィーチャーを有効にするとpoolのバージョンは1000になる。
1000とはめちゃくちゃな数に見えるかもしれないが、本家のバージョンと被らないようにするため。

おわりに

ここで改めてzpoolの出力を見てみると、poolのバージョンがハイフンになっていることや、フィーチャーの記載など、なるほどと理解できることがありますな。

 

FreeBSD-currentユーザはpanicmailをいますぐインストールしろ

Pocket

 

FreeBSDダイモン(守護霊)の一人であらせられるコリン・パーシバル(Colin Percival)神がpanicmailをインストールせい、と仰せになったので入れた。

panicmailとは

panicmailとは、FreeBSDがkernel panicを起こしたとき、panic reportをFreeBSDの開発者に送るツールのこと。
もちろん、panic reportにはセンシティブな情報は含まれないうえに、暗号化された状態で送られる。
開発者は、受け取ったレポートをもとに開発を進める。

kernel panic…だと?

そもそも安定しているOSなのでpanicなんて滅多にしない。
するのはcurrentくらい。
currentでなければ最初のOSインストールのときくらいではないだろうか。
それだけにコリン神のアナウンスもcurrentメーリングリストである。
だからインストールするのはcurrentユーザだけでいいんじゃないですかね。
RELEASEユーザならまあ保険程度に。

インストール

panicmailはsysutils/panicmailから入れられる。
以下はpkgngでのインストール例。

 

設定

panicmailを送るには以下が必要。

  1. dumpdevが有効であること
  2. panicmail_enableがrc.confで設定されていること

この状態でkernel panicが起こると、レポートはいったん当該システムのrootに送られる。
レビューをして問題なければFreeBSD開発者にメールを送る。
そのレビューをすっ飛ばしたいなら、panicmail_autosubmitをrc.confで設定すればよい。
以下、/etc/rc.conf設定例。

 

 

テストをしてみるべきなんだろうけど、やってません。