Monthly Archives: 3月 2013

[FreeBSD] オフラインマシンでのpkgng(日常使いのpkgng その2)

Pocket

pkgngをインターネット接続していないマシンでも使いたい。
そういう場合には、他のマシンでpkgを作って持っていくというのが一番簡単な方法。

自前のPKGSITEを作る方法もあるようだが、軽く調べたところ根こそぎすべてのpkgを作る方法のようだ。
それはきつい。
また、pkgを作ったうえで、自前のrepo.txzを作ってもいいけど、やっぱり手間。
やっぱり必要なものだけ作って持っていくのが良いと思う。

私がよくやるのは以下の方法。

  1. インターネット接続できるマシン上で、仮想マシンに構築する。
  2. 仮想マシンでターゲットとなるマシンと同じ環境を作る。
  3. 仮想マシンで使ったpkgを全部ターゲットマシンに持っていく。

 

pkgの持ち運びには、pkg createを使う。

pkg createの使い方。

pkg help createでだいたい分かるけれども;
-oオプションで作成場所を選べる。
-aオプションだとそのマシンにインストール済みのpkgを全部作る。
-nオプションを付けるとすでにあるものは作らない。

以下、コマンド例。
ああそうそう、pkg createはroot権限でやること。スーパーユーザでないとアクセスできないファイルもあるので。

# pkg create -o ./ bash
Creating package for bash-4.2.42

# pkg create -n -o ./ bash
bash-4.2.42 already packaged, skipping...

# pkg create -a -o ./pkg
Loading package list...
Creating package for GentiumBasic-110
Creating package for GeoIP-1.4.8_3
Creating package for ORBit2-2.14.19

そして出来上がったpkgをターゲットマシンに持っていく。
ターゲットマシンでpkgをインストールするには、pkg addを使う。pkg installではダメなことに注意。

pkg add

なんにも難しいことはない。
以下のようにすればOK。

pkg add ./xorg-7.5.2.txz

なお、pkg addで追加するpkgはローカルにある必要はなくて、ftp, http, https経由でアクセスできる場所にあればよい。
pkg help addで出てくるように、pkg add ftp://somewhere/some/dir/pkg-nameとかすればよい。

pkg createが遅え。

ところでpkg createは遅い。すごく遅い。
これはファイルをxzで圧縮しているから。
今回の用途では、スピードの方が大事なので、わざわざxzを使ってもらわなくてよい。

pkg createは-fオプションで圧縮方法を決定できる。
txz(デフォルト), tgz, tbzから選ぶ。

tgzとtxzだと、bash程度でもtgz: 1.5秒、txz: 5秒と、時間に結構な差がでる。
もちろんそのぶん、サイズもtgz: 1.5MB、txz: 900KBとxz形式の面目躍如。

# time pkg create -f tgz -o ./ bash
Creating package for bash-4.2.42

real    0m1.526s
user    0m1.415s
sys     0m0.098s
# time pkg create  -o ./ bash
Creating package for bash-4.2.42

real    0m4.985s
user    0m1.070s
sys     0m3.861s

$ du -sh ./bash*
1.5M    ./bash-4.2.42.tgz
896k    ./bash-4.2.42.txz
No tags for this post.

[FreeBSD] 日常使いのpkgng その1

Pocket

 

pkgngをしばらく使ってみて感じるのは、情報を十分に与えてくれること。
適当に使っても、あれしろ、これしろ、と教えてくれるから戸惑いが少ない。
それでも、pkgngでやりたいこと別にまとめておくのは有用だと思うので記す。

pkgngへの移行についてはこちら

まずやること

/etc/periodic.confに以下を追加しよう。
periodic.confがなければ/etc/defaults/periodic.confを/etc/peridoc.confとしてコピーして末尾に追加。

daily_backup_pkgng_enable="YES"
daily_status_security_pkgaudit_enable="YES"

1行目はpkgngのdbを/var/db/backupsにバックアップさせるもの。
2行目はインストール済みのpkgにセキュリティの問題がないかを確認し、メールで報告させるもの。

詳しくは以下スクリプトを。

/usr/local/etc/periodic/daily/411.pkg-backup
/usr/local/etc/periodic/security/410.pkg-audit

インストール済みのpkgをアップグレードするには。

pkg upgradeを叩くだけでOK。
pkg upgradeを実行すると、まずpkg updateしてからインストール済みpkgに更新がないかをチェックする。
updateとはrepository catalogueをアップデートすることで、repository catalogueとは、pkgダウンロード先サイトのpkg一覧がsqliteのDBでまとまっているもの。

$ sudo pkg update
Updating repository catalogue
repo.txz   
$ sudo pkg upgrade
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
The following packages will be upgraded:

        Upgrading p5-Tie-IxHash: 1.22 -> 1.23
        Upgrading xterm: 290 -> 291

The installation will require 402 B more space

255 kB to be downloaded

Proceed with upgrading packages [y/N]:Proceed with upgrading packages [y/N]: y
p5-Tie-IxHash-1.23.txz              100%   11KB  10.6KB/s  10.6KB/s   00:00
xterm-291.txz                       100%  245KB 244.7KB/s 244.7KB/s   00:00
Checking integrity... done
Upgrading p5-Tie-IxHash from 1.22 to 1.23... done
Upgrading xterm from 290 to 291... done

不要なpkgを削除したい。

autoremoveを使う。
pkg_cutleavesのようなものですな。

$ sudo pkg autoremove
パスワード:
Packages to be autoremoved:
linux_base-f10-10_5
nvidia-settings-310.14
nvidia-xconfig-310.14

The autoremoval will free 136 MB

Proceed with autoremoval of packages [y/N]: y
Deleting linux_base-f10-10_5...
You may need to do by hand:
o  unmount linprocfs if mounted
o  delete /compat/linux/proc if present
o  remove/comment linprocfs from /etc/fstab if present

done
Deleting nvidia-settings-310.14... done
Deleting nvidia-xconfig-310.14... done

あるpkgが依存している他のpkgを調べるには

-dオプションを与える。DependのDなので覚えやすい。もうこれで間違えないよ!
Rとrで意味を違えるどこかのシステムは猛省していただきたいものである。

$ pkg info -d bash
bash-4.2.42 depends on:
libiconv-1.14
gettext-0.18.1.1

あるpkgに、どのpkgが依存しているかを調べるには。

requiredのrですな。

$ pkg info -r bash
bash-4.2.42 is required by:
gnome-doc-utils-0.20.3
rarian-0.8.1
gnome-desktop-2.32.1_2
policykit-gnome-0.9.2_6

 

pkgngにおけるportaudit的なものはないの?

pkg auditを使う。-Fとセットがいいでしょうな。
package nameを与えるとそのpkgだけをチェックしてくれる。
ただ、package nameはバージョンまで指定しないとダメな模様。
問題なければ何も出力されない。これはちょっとさみしい。
まあこれは冒頭で触れたように、periodic.confからやるものですなあ。

$ pkg audit
pkg: unable to open audit file, try running 'pkg audit -F' first
$ sudo pkg audit -F
パスワード:
auditfile.tbz                            100%   85KB  85.2KB/s  85.2KB/s   00:00
apache22-2.2.23_4 is vulnerable:
apache22 -- several vulnerabilities

$ sudo pkg audit -F bash
Audit file up-to-date.
pkg: bad package name format: bash: No such file or directory
$ pkg info|grep bash
bash-4.2.42                    The GNU Project's Bourne Again SHell
$ sudo pkg audit -F bash-4.2.42
Audit file up-to-date.
$

うわapache…

(追記)日常使いのpkgその2

No tags for this post.

[FreeBSD] pkgを使ったらUndefined symbol “pkg_init”と表示されて使えないでござる。

Pocket

pkgngが大変によくて、あちこちのFreeBSDサーバで使い始めた。
のだが、特定のマシンで以下のメッセージが表示され使えない。

Undefined symbol "pkg_init"

端的に言えばこれはFreeBSDシステムを更新したせいで古いライブラリが残っているせい。
/usr/srcで以下を実行すればOK。

make delete-old-libs

delete-old-libsを忘れてる時はdelete-oldも忘れてる。
また、いちいち「消していいか?」と聞かれて面倒なとき、覚悟があれば以下でよし;

# yes | make delete-old
# yes | make delete-old-libs

 

No tags for this post.

[teleco]ブラウザはVoIP/VoLTEを打ち負かす破壊的技術か?

Pocket

 

さきに結論。

SIPベースのVoIP端末/VoLTE端末が、相互接続で四苦八苦している間に、ブラウザベースでの音声通話に席巻されてしまうんじゃないだろうかという話。

もちろん、これは後述の文章中で引用する記事、データをもとにつらつら書くだけのもの。本当に詳しい人からすれば床屋談義レベルかもしれない。
と、逃げ道をつくったところで。

VoIPとは。

SIPあるいはH.323などをセッションプロトコルに使い、IP(インターネットプロトコル)でリアルタイムに音声を伝送するもの、とする。
http://ja.wikipedia.org/wiki/VOIP

そして携帯電話をVoIP端末にするのなら、どこのキャリアもLTEを選びたいだろう。
というのも2G、3Gでは荷が重すぎるから。つまりVoLTE(Voice Over LTE)。

 

VoLTEとは。

これも定義が難しいけれど、セッションプロトコルにSIPを使い、無線アクセス区間、有線区間では音声用リアルタイム伝送のためのチューニングを加えたものとする。

 

VoLTEへすすめー!

携帯各社にとっては、データ通信が急速に伸びている以上、電波を効率的に使えるLTEへ移行したい。

しかし音声通話はダウントレンドであるものの面倒は見なければいけない。
ではいかにしてLTE上で音声通話を実現するか、の一つの解が先述のVoLTEである。

検索してみて驚いたのだが、VoLTEは総務省推しだったりもする。2012年7月の記事

総務省がVoLTE技術基準策定、LTE通信・音声通話の一本化で省電力や災害時対策などにメリット
http://appllio.com/news/20120707-2289-volte

 

船頭多くして…相互接続(InterOperability)の悩み

しかし、である。
VoIP, VoLTEのセッションプロトコルで使われているSIPは、どうも相互接続に難があるようなんである。

SIP is hard, let’s go shopping!
http://www.slideshare.net/saghul/sip-is-hard-lets-go-shopping

Does WebRTC Standardization Matter?
http://lphs.acmepacket.com/blog/bid/172081/Does-WebRTC-Standardization-Matter

WebRTC Browser Interoperability: Heroic. Important. And…Expected
http://www.nojitter.com/post/240147955/webrtc-browser-interoperability-heroic-important-andexpected

SIPはとても複雑なうえに、たくさんのベンダが関わっているので、いつまで経っても相互接続試験が進まない、ということ。

そして後ろ二つの記事で推されているWebRTC、である。

WebRTC

WebRTCは簡単に言ってしまえばブラウザ間で音声通話してしまうことである。
(音声通話以外も出来る)

http://ja.wikipedia.org/wiki/WebRTC
SIPと違って、Googleがさっさとコード書いてオープンソースにしてしまったので、まさにいまグイグイと流行りだしている。
SIPと比べて有利な点はなんといっても相互接続である。
要はブラウザさえあればよく、相互接続と言ったってたかが知れている。
先述のnojitterで触れられている通り、相互接続試験に参加するのはブラウザ”ベンダ”である以下の5社。5社といえどこれだけ確認してもらえば問題ないでしょう。

Google (Chrome)
Mozilla (Firefox)
Opera
Microsoft (IE)
Apple (Safari)

 

音声通話のYoutube

いうまでもなくWebRTCはアプリレイヤのサービスである。
オーバーヘッドは大きいし、低いレイヤでは他のデータ通信と変わらず扱われる訳だから、遅延は欠落はあるだろう。
携帯キャリア、ベンダからしてみれば、通話品質は噴飯ものかもしれない。
また呼制御の点でも、ブラウザで電話だなんて、携帯「電話」キャリアからしたら大雑把すぎて許せないかもしれない。

しかし、この世の中グズグズ画質/音質の動画サイトが賑わっているのを見ると、WebRTCほかXMPP, RCSなどが破壊的技術になってもおかしくないんじゃなかろうか。

携帯電話キャリア自ら無料通話アプリを始めるとこだって出てきてるのである。

Orange launches smartphone app for free calls, texts
http://uk.mobile.reuters.com/article/idUKBRE8AL0B720121122?irpc=932

No tags for this post.

[FreeBSD] apache22, sudoに脆弱性

Pocket

apache22, sudoに脆弱性ありとのこと。
(みんな、FreeBSDが毎日送ってくれるsecurity run outputはしっかり見ようね!)

Checking for packages with security vulnerabilities:

Affected package: apache22-2.2.23_3
Type of problem: apache22 -- several vulnerabilities.
Reference: http://portaudit.FreeBSD.org/9c88d8a8-8372-11e2-a010-20cf30e32f6d.html

Affected package: sudo-1.8.6.p3_1
Type of problem: sudo -- Authentication bypass when clock is reset.
Reference: http://portaudit.FreeBSD.org/764344fb-8214-11e2-9273-902b343deec9.html

Affected package: sudo-1.8.6.p3_1
Type of problem: sudo -- Potential bypass of tty_tickets constraints.
Reference: http://portaudit.FreeBSD.org/82cfd919-8213-11e2-9273-902b343deec9.html

さっさとsudo portsnap fetch updateしてからpkg_replace sudo apache22して、service apache22 restartしておしまい。

このサーバはまだports運用。pkgngにしようかしら。portsnap fetch updateだるいし。
でもまあ、試験環境でpkgngをしばらく使ってからかな。

No tags for this post.

[FreeBSD] FreeBSDでPythonのIDLE(統合開発環境)を使うには

Pocket

pythonの統合開発環境であるIDLEを起動しようとしてidleと叩くと以下のメッセージが表示される。

** IDLE can't import Tkinter. Your Python may not be configured for Tk. **

「あーpkgngで入れたしなあ。やっぱりportsでmake configしてから入れないとダメか」と思ってたのだが、追加でpkg py27-tkinter-2.7.3_3 を入れるだけでいいみたい。
備忘として残す。

$ pkg search tkinter
py27-tkinter-2.7.3_3           Python bindings to the Tk widget set
$ sudo pkg install py27-tkinter
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
The following packages will be installed:

Installing tcl: 8.5.13
Installing tk: 8.5.13
Installing py27-tkinter: 2.7.3_3

The installation will require 9 MB more space

1 MB to be downloaded

Proceed with installing packages [y/N]: y
tcl-8.5.13.txz                      100%  925KB 925.0KB/s 925.0KB/s   00:00
tk-8.5.13.txz                       100%  869KB 868.7KB/s 868.7KB/s   00:00
py27-tkinter-2.7.3_3.txz            100%   19KB  18.7KB/s  18.7KB/s   00:00
Checking integrity... done
Installing tcl-8.5.13... done
Installing tk-8.5.13... done
Installing py27-tkinter-2.7.3_3... done

これでMITのOpen Courseware 6.00も安心。

No tags for this post.

[FreeBSD] pkg_*システム捨てるのはいつ?今でしょ!(pkgngについて)

Pocket

 

pkgngはpkg_*に変わるFreeBSDの簡単で手軽なバイナリパッケージ管理ツール。

FreeBSDでサードパーティのソフトウェアをインストールする場合、コンパイル済みのpackageか、ソースからコンパイルするportsの2つの手段がある。

このうち、前者を扱うには「pkg_」を接頭辞に持つコマンド群を使いこなす必要があり、Linuxのapt-getなどと比べるとイケてない感は否めなかった。
それでも、FreeBSDには「ベースシステムにないものはportsでインストールしようぜ自分で好きなコンパイルオプションも設定できるしさあ」とか「pkg_*なんて女子供に使わせとけや」という空気があって(感じるのは私だけかもしれないが)、この点にはあまりリソースを割かれていないようだった。

じっさい、後述するように、いまpkgngは公式には使えない状況になっているのだが、あんまり騒がれてなくて、やっぱりみんな興味がないのかなあと感じる。

とはいえ、pkg_*を不便に感じる人はやっぱりいるもので、Baptiste Daroussinという偉い人が作ってくれたのがpkgngである。
前置きが長くなったが、このpkgngがとてもとても便利なので、使ってみた内容をここに記す。

pkgngとは。

wikiFreeBSD Handbookがあるのでそちらを参照。
portmasterやportupgradeの代替ではないことに注意。
portmasterやportupgradeはバイナリパッケージとports双方を扱えるが、pkgngはバイナリパッケージのみ。
代替するのはpkg_*。
9.1-RELEASE以降であればベースシステムにある。

$ uname -r
9.1-RELEASE
$ which pkg
/usr/sbin/pkg

それ以前のシステムであればports/ports-mgmt/pkgにあるが、7.xと8.0では対応していない。

初めてpkgngを使うとインストールされる。

# pkg help install
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg please wait
Installing pkg-1.0.2... done
If you are upgrading from the old package format, first run:

# pkg2ng

もし、いくつかバイナリパッケージやportsからインストールしていたなら、pkg_dbの変換が必要でpkg2ngを実行しろ、と出てますな。

 

もうportsやpkgをインストールしていたら。

root権限でpkg2ngを叩けばよい。

# pkg2ng
Conversion has been successfully finished
Your old packages database has been moved to: /var/db/pkg.bak.

 

make.confに追加

FreeBSD 10.0より前のシステムであれば、handbookの通りに。

WITH_PKGNG=	yes

To ensure the FreeBSD Ports Collection registers new software with pkgng, and not pkg_install, FreeBSD versions earlier than 10.X require this line in /etc/make.conf

 

これで準備万端!…ではないのであった。

2012年11月、FreeBSD.orgへ何者かが侵入する事件があり、pkgngの公式サイトもしばらく閉鎖…。
「もう三ヶ月も経つじゃねーか何してやがんだこのxxxx」と言いたくなるが、こればかりはどうにもならない。

と、ここでPC-BSDの皆様が「俺んとこのを使えよ」と言ってくださったそうなので、ありがたく使おう。

(追記:2013/11/7)
公式のpkgngが公開されている。詳しくは以下を。
http://april.fool.jp/blogs/?p=2357
(追記ここまで)

pkgngの取得先をPC-BSDサイトへ振り向ける

pkg.confを書き換える。
packagesiteはオリジナルのサイトではなく、日本のミラーにすること。
日本のミラーは下記の2つ。いずれも有名どころですな。
もちろん、RELEASEバージョン、アーキテクチャは自分のシステムに合わせること。

ftp://pub.allbsd.org/pub/pcbsd/packages/9.1-RELEASE/i386/
http://ftp.jaist.ac.jp/pub/PC-BSD/packages/9.1-RELEASE/i386/

 

このあと、PC-BSDミラーからpkgngのデータベースをダウンロードする。

# pkg update -f

Updating repository catalogue
repo.txz                            100% 7201KB   1.4MB/s 861.0KB/s   00:05

PC-BSDサイト向けの設定はこれでおしまい。

使ってみようぜ

使い方はhandbookを。
sudoをインストールするので、まず探してみる。

# pkg search sudo
sudoscript-2.1.2               Audited shells in Perl with sudo(8) and script(1)
sudoku-1.0.2                   Console based Sudoku games
sudosh2-1.0.4                  Second version of the sudo shell
sudo-1.8.6.p5                  Allow others to run commands as root
sudoku_solver-1.20             A Sudoku Solver in C
sudosh-1.8.2_5                 A sudo shell
sshsudo-1.0                    A bash script to run sudo command on multiple remote computers

そしてインストール、しようと思ったら「お前のpkgは古い。まず1.0.8にしろよ」とのお達し。FreeBSDにおいてこれは新鮮である。正直驚いた。

# pkg install sudo
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
New version of pkg detected; it needs to be installed first.
After this upgrade it is recommended that you do a full upgrade using: 'pkg upgrade'

The following packages will be installed:

Upgrading pkg: 1.0.2 -> 1.0.8

The installation will free 10 MB

1 MB to be downloaded

Proceed with installing packages [y/N]: y
pkg-1.0.8.txz                       100% 1397KB   1.4MB/s 856.9KB/s   00:01
Checking integrity... done
Upgrading pkg from 1.0.2 to 1.0.8... done

pkg upgradeしろよ、と言うので素直に。

# pkg upgrade
Updating repository catalogue
repo.txz                            100% 7201KB   1.8MB/s 231.0KB/s   00:04
Nothing to do

改めてsudoをインストール。

# pkg install sudo
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
The following packages will be installed:

Installing libiconv: 1.14
Installing gettext: 0.18.1.1
Installing openldap-client: 2.4.33_1
Installing sudo: 1.8.6.p5

The installation will require 22 MB more space

7 MB to be downloaded

Proceed with installing packages [y/N]: y
libiconv-1.14.txz                   100%  595KB 595.4KB/s 595.4KB/s   00:00
gettext-0.18.1.1.txz                100% 4958KB   1.6MB/s 727.7KB/s   00:03
openldap-client-2.4.33_1.txz        100% 1188KB   1.2MB/s   1.2MB/s   00:00
sudo-1.8.6.p5.txz                   100%  609KB 609.2KB/s 609.2KB/s   00:00
Checking integrity... done
Installing libiconv-1.14... done
Installing gettext-0.18.1.1... done
Installing openldap-client-2.4.33_1... done
Installing sudo-1.8.6.p5... done

使ってみて感じたこと

pkgngの第一印象はすごくいい。
検索が出来るだけでかなり違う。
また、ここにはログを上げなかったけれど、インストール済みのパッケージに更新があったら、驚くくらいさっさとやってくれる。
それにpkgngは依存関係を担保してくれてるようなのも安心。

ただ、まだ使い始めたばかりなので、実はいろいろと不便なところがあるのかもしれない。まあ、そこはおいおいと。

(追記)しばらく使った結果はこちらこちら

No tags for this post.