ラベル MacPorts の投稿を表示しています。 すべての投稿を表示
ラベル MacPorts の投稿を表示しています。 すべての投稿を表示

2014年10月19日日曜日

YosemiteでMacPortsをコンパイルするにはXcode 6.1を入れる

Yosemiteいいですね。そういえば、6月以後、全くよそごとに手がつかなかったので、WWDCの録画も、iPhone 6などの発表イベントも、先日にイベントも、なにも見ていなかったんですけど、昨夜ようやく通して観まして、それで知ったんですが「Yosemite」は「ヨゥーセミリィ」と発音するんですね。

いや、アメリカは去年3回行って、大陸横断する感じで都合結構な滞在期間だったんですが、ほとんど観光らしきことしてないんで、いわゆる観光地のことは全然知らないんです。逆に庶民とか貧困な人たちの生活感覚みたいなのはすごく身体に入ったというか、普通の観光客や企業の海外滞在なんかでお膳立てされた生活している人よりよっぽどアメリカ人化したかもしれない。その勢いで語ると、Apple本社所在地の「Cupertino」も人によって違うけど、だいたい「クパーティノ」か「キュパーティノ」でして、辞書に載ってる「クパチーノ」はメヒカーノ(メキシコ人、つまりスペイン語)に近いんだと思うわけです。

あ、すみません、枕が長すぎました。でもまだ枕が続くんですがすみません。

そのMac OS X 10.10 Yosemiteなんですけど、9月に突然MacBook Air (mid 2011)のSSDがおかしくなりまして、家人拝み倒してMBPの、SSDが128GBでRetinaであること以外は最低スペックのを急遽購入させていただいたので、偶然空いた(Target Disk Modeでは起動できたので、Thunderbolt経由でマウントして内容を移行したあと、MBA側のパーティション壊して再フォーマットし、Internet Recoveryかけてやったら、一応起動した)MacBook AirがあったのでPublic Betaに参加しつつ、全くフィードバックせず、無事先日の公開となりました。

さてようやく本題です。

実は最終のPublic Betaでは、Chromeの安定版が数分固まることがあるという不具合があったんですが、固まるだけでほっとくと元に戻るので、Googleに報告すべきなのかAppleに報告すべきなのか判然としないまま、まあいいや緊急事態ではないから、という感じでありましたが、さすがに公開版のYosemiteではそんなことはありませんでした。「iOS 8公式魔改造の結果大炎上」(とまでは言ってないけど、先日のプレゼンでTim CookだったかCraigだったか忘れてしまいましたが『feedback』を苦笑交じりに連発する形でいいいわけしてましたね)に乗じて「人柱乙」と半笑いの人たちもおりますが、全く問題ないと思っております。

ただ、App Storeに載って大人気とかでもない限り、普通のサードパーティはしょうがないわけで、MacPortsも数日遅れのYosemite対応でありまして、少なくともいまのところは問題が若干あります。

まず、OSのバージョンが上がると全部コンパイルし直す感じになる(いままでそうでなくて済んだんだけど、最新の2.3.2では強制でそうなる)わけですが、CMakeのコンパイルで止まります。検索するといっぱい出てくるんですが、エラーの内容は、

Mac OS 10.10のSDKがないぞ
なわけです。

えっ、と思って入っているXcodeのバージョンをみると6.0.1で、Mac App Storeの最新もこれなんですが、iOS 8とSwift対応はしているのですが、よくみるとターゲットSDKは10.9、つまりMavericksなのです。

それで検索してみると、どうもXcode 6 betaのどこかで10.10のSDK入りがあったようで、ここからダウンロードしろというわけですが、

Xcode 6.1 available shortly
でありまして、そこに、「latest OS X and iOS SDKs」と添え書きがあって不安になるわけです。

しかし、意を決して「Additional Tools」の「View downloads」を選択すると、トップに「Xcode 6.1」があり、説明にもbetaとかGMとかそういうのはなくって、どうも公式っぽいです。が、Mac App Storeにある最新は6.0.1。

それでも、こちらはupgrade途中で環境が壊れて困っているので、そのままdmgをダウンロードして置き換えて、

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
sudo xcode-select --install
なんかしてあげて、Command Line Toolsも10.10用に設定してあげると、無事コンパイルが進んでいるようです。

というわけで、いま泣いている人は試してみてください。

ちなみに、Xcode 6.1はいま現在、日本語ロケールに対応した表示がありません。メニューその他、表示は全部英語です。だから日本向けには公開されていないのかな、と思います。

2013年1月18日金曜日

Zabbixでマシンの稼働状況監視をしてみる

ネットワーク屋さんやSI屋さんが設置する、導入システムの稼働状況監視(障害検知)には、いくつかのシステムがあるようだけれど、今回、職場の情報処理センターに導入予定のZabbixを手元で動かして試してみることにした。

Zabbixは1.x系と2.x系があるようだけれど、今回ははじめてなのでいま最新の2.0.4を使うことにした。

サーバが情報を集約し、PHPを使ったWebインタフェースでリアルタイムに情報を見るというしくみ。情報収集にはSNMPを使ったりサービスポートを叩いたりといった原始的なものから、システムの稼働状況を詳細に計測してサーバからの問合せに応える「agent」とよばれるプログラムをインストールしておくという方法もある。

今回は、手元のMac miniでサーバを動かし(グローバルアドレスが振られている)、職場のNAT内のWindowsマシンやプリンタ、WiFiルータなどと、個人的に契約しているさくらのVPSを一括でみることを考えた。

さくらのVPSは、ISOイメージさえあれば、それを一時的なアカウントでアップロードして、Java経由の仮想コンソールでインストール作業を完了することができるので、OSはたいていのものが使える。僕はLinuxに慣れていないので、以前からFreeBSDを使ってきた。いまは9.1が動いている。

zabbix2のagentは、もちろんFreeBSD用もあり、portsに入っている。PKGNGではそのまま入るところにまだなっていないので、/usr/ports/net-mgmt/zabbix2-agent以下でmake install distcleanすることになる。/usr/local/etc/zabbix2/zabbix_agentd.confに、サーバを動かすマシンのIPアドレスを設定し、/etc/rc.localからでも起動スクリプトを動かしてやればおしまい。

サーバを動かすMacでは、MacPortsを使っているので、port install zabbix2で入れることになった。

ところが、昨日現在での最新状態では、アカウントzabbix、グループzabbixが作成されないため、インストールスクリプトのなかでchownするところで落ちてしまう。しかたがないので、dsclコマンドでアカウントとグループを作り、再度インストールして切り抜けた。

ただ、インストール後のMySQL5の準備(データベースの作成、テーブルの作成、データの挿入)などはすべて手作業になるので、portコマンド実行後に表示される長い説明を読み飛ばさないように注意する必要がある。あと、PHPのモジュールもいろいろと必要なので、Webインタフェースで最初の設定作業をするときのPHPの診断表示に合わせて足りないモジュールや/opt/local/etc/php5/php.iniの書き換えと、カーネルパラメータの設定(共有メモリを大きくとるように設定変更する)は必要だ。カーネルパラメータの値はどの値が適切なのかよくわからなかったが、とりあえずFreeBSD用の値と同じで動いている。FreeBSDと違うのは、/etc/sysctl.confというファイルではなく、sysctl -wコマンドで直接データベースの値変更を行うところ。

なお、ZabbixのWebインタフェースで最初にZabbix Serverを追加するような説明が多いのでそのようにすると思うけれども、MacPortsの起動スクリプトではzabbix_agentdは起動されないので、障害として報告されてしまう。エージェント監視を無効にするか、エージェントも起動するように手を入れておくことが必要になるので注意。

最後に、Windowsについて。Windowsのエージェントをサービスとして登録し、起動するにはコマンドプロンプトを使うが、管理者権限でなければならないので、コマンドプロンプトを管理者権限で起動することを忘れずに。また、zabbix_agentd.confファイルもC:\に置くことになっているので、これも管理者権限がないとできない。設定ファイルの内容は、たった1行、「Server=サーバのIPアドレス」だけで十分なはず。

あともうひとつ罠は、Windows Firewallの設定で、zabbix_agentd.exeの通信許可を手動で行わなければならないということ。コントロールパネルから、Windowsファイアーウォールを開いて、設定をすれば、Zabbixサーバと通信ができて、通信障害が出ることはなくなる。

とりあえずいまのところはこんな感じ。WiFiルータの状態監視もしたいのだが、SNMPトラップをどうみるかは、まだ検討中というところ。