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をターゲットマシンに持っていく。
ターゲットマシンでpkgをインストールするには、pkg addを使う。pkg installではダメなことに注意。

pkg add

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

なお、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形式の面目躍如。

No tags for this post.

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

Pocket

 

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

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

まずやること

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

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

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

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

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

不要なpkgを削除したい。

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

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

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

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

requiredのrですな。

 

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

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

うわapache…

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

No tags for this post.

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

Pocket

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

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

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

 

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はしっかり見ようね!)

さっさと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と叩くと以下のメッセージが表示される。

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

これで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以降であればベースシステムにある。

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

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

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

 

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

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

 

make.confに追加

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

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バージョン、アーキテクチャは自分のシステムに合わせること。

 

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

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

使ってみようぜ

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

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

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

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

使ってみて感じたこと

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

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

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

No tags for this post.