Nginxとffmpegで映像プレイヤーの検証環境を構築(RTMP、HLS)
背景
FlowPlayerを仕事で使うことになり、デザインの変更やFlash Failbackの検証などを行うための軽量な環境が欲しかった。
やりたいこと
- 映像ソースを送る側と、それを配信するサーバーをローカル環境上に立ち上げたい(LIVE配信で!!)
- 同一LANの他の端末から接続できるようにしたい
- RTMPとHLSどちらも検証したい
- コマンドひとつで環境を立ち上げたい!
構成
そこで以下のような構成を作ることにしました。
コンテナ1の作成(Web、配信サーバ)
要件
- Webサーバの機能を持つこと
- RTMPサーバの機能を持つこと
- HLSのセグメント化もできること
設定ファイル
nginxのRTMPモジュールを使えば、nginxだけで上記の機能のすべてを賄えるとのこと。
インストール方法はこちらを参照。
これをベースにDockerfileを作成します。
FROM centos:latest RUN yum update -y && \ yum -y install gcc pcre-devel openssl openssl-devel wget unzip tar git make && \ useradd --shell /sbin/nologin nginx && \ wget http://nginx.org/download/nginx-1.10.2.tar.gz && \ tar -zxvf nginx-1.10.2.tar.gz && \ wget https://github.com/arut/nginx-rtmp-module/archive/master.zip && \ unzip master && \ cd nginx-1.10.2 && \ ./configure \ --user=www-data \ --group=www-data \ --with-http_ssl_module \ --with-http_realip_module \ --add-module=../nginx-rtmp-module-master && \ make && \ make install COPY ./nginx.conf /usr/local/nginx/conf/nginx.conf WORKDIR /usr/local/nginx/html EXPOSE 80 1935 ENTRYPOINT ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;", "-c", "/usr/local/nginx/conf/nginx.conf"]
RTMPサーバの設定については、以下の記述をnginx.conf
に追記すればOKのようです。
参考:nginx-rtmp-module/wiki
rtmp { server { listen 1935; application live { live on; wait_video on; exec ffmpeg -i rtmp://localhost/live/$name -c:a libfdk_aac -b:a 32k -c:v libx264 -b:v 128K -f flv rtmp://localhost/hls/$name_low -c:a libfdk_aac -b:a 64k -c:v libx264 -b:v 256k -f flv rtmp://localhost/hls/$name_mid -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 512K -f flv rtmp://localhost/hls/$name_hi; } application hls { live on; hls on; hls_path /usr/local/nginx/html/hls; hls_nested on; hls_fragment 5s; hls_variant _low BANDWIDTH=160000; hls_variant _mid BANDWIDTH=320000; hls_variant _hi BANDWIDTH=640000; } } }
まずrtmp://{IPアドレス}/live/{ストリーム名}
にストリームを送ると、
それを受け取ったあと、
exec ffmpeg -i rtmp://localhost/live/$name -c:a libfdk_aac -b:a 32k -c:v libx264 -b:v 128K -f flv rtmp://localhost/hls/$name_low -c:a libfdk_aac -b:a 64k -c:v libx264 -b:v 256k -f flv rtmp://localhost/hls/$name_mid -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 512K -f flv rtmp://localhost/hls/$name_hi;
上記が実行されrtmp://localhost/hls/$name_low
、rtmp://localhost/hls/$name_mid
、rtmp://localhost/hls/$name_hi
の3ストリームに更に流されるという仕組みのようです。
そして、下記の部分でHLSについての設定が記述してあるので、ここでセグメント化がされるという流れみたいです。
application hls { live on; hls on; hls_path /usr/local/nginx/html/hls; hls_nested on; hls_fragment 5s; hls_variant _low BANDWIDTH=160000; hls_variant _mid BANDWIDTH=320000; hls_variant _hi BANDWIDTH=640000; }
しかし、自分の環境ではこのHLS化の部分がうまく動作してくれなかったので、nginxでストリームを受け取ってからHLSに流すのではなく、最初から映像ソースを送信するffmpeg側でRTMP+HLS×3の4ストリーム流すことで対応しました。
最終的に、nginx.conf
は以下のようになりました。
user nginx nginx; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; location / { root /usr/local/nginx/html; index index.html index.htm; expires -1; sendfile off; } location /hls { types { application/vnd.apple.mpegurl m3u8; } root /usr/local/nginx/html; add_header Cache-Control no-cache; # To avoid issues with cross-domain HTTP requests (e.g. during development) add_header Access-Control-Allow-Origin *; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } include servers/*; } rtmp { server { listen 1935; application live { live on; wait_video on; } application hls { live on; hls on; hls_path /usr/local/nginx/html/hls; hls_nested on; hls_fragment 5s; hls_variant _low BANDWIDTH=160000; hls_variant _mid BANDWIDTH=320000; hls_variant _hi BANDWIDTH=640000; } } }
参考
コンテナ2の作成(映像ソース)
要件
このあたり↓を参考に設定させていただきました。
テスト用の自動配信環境をDockerとFFmpegで構築してみる
というかDockerfile
に関しては全く同じです(汗)。
FROM jrottenberg/ffmpeg:3.2-centos COPY source.mp4 ./ COPY start.sh ./ COPY ./ffserver.conf /etc/ffserver.conf EXPOSE 80 1935 ENTRYPOINT bash start.sh
ただし、前述のようにffmpeg側で4ストリーム流す必要があったので、実行するシェルスクリプトを以下のように書き換えました。
#!/bin/bash ffmpeg -re -stream_loop -1 -i 'source.mp4' -acodec libfdk_aac -vcodec libx264 -f flv "${TARGET_RTMP_IP}/live/{設定したストリーム名}" \ -c:a libfdk_aac -b:a 32k -c:v libx264 -b:v 128K -f flv "${TARGET_RTMP_IP}/hls/{設定したストリーム名}_low" \ -c:a libfdk_aac -b:a 64k -c:v libx264 -b:v 256k -f flv "${TARGET_RTMP_IP}/hls/{設定したストリーム名}_mid" \ -c:a libfdk_aac -b:a 128k -c:v libx264 -b:v 512K -f flv "${TARGET_RTMP_IP}/hls/{設定したストリーム名}_hi"
この状態でDockerコンテナを立ち上げれば映像ソースを以下の4つに対して延々と配信してくれるはずです。
${TARGET_RTMP_IP}/live/{設定したストリーム名} ${TARGET_RTMP_IP}/hls/{設定したストリーム名}_low ${TARGET_RTMP_IP}/hls/{設定したストリーム名}_mid ${TARGET_RTMP_IP}/hls/{設定したストリーム名}_hi
docker-composeでの立ち上げ
ffmpeg(コンテナ2)からnginx(コンテナ1)に映像ストリームを送る際にはコンテナ間通信となるため、コンテナをリンクさせる必要がある(??Dockerまだあまり詳しくないので多分です。。。)ので、docker-composeを使ってコンテナをリンクさせて立ち上げるようにします。
結果的に以下のようなdocker-compose.yml
となりました。
version: '2' services: nginx: build: context: ./ dockerfile: ./Dockerfile_nginx container_name: nginx ports: - "80:80" - "1935:1935" volumes: - ./:/usr/local/nginx/html ffmpeg: build: context: ./ dockerfile: ./Dockerfile_ffmpeg container_name: ffmpeg environment: - TARGET_RTMP_IP=rtmp://{Dockerが動作するゲストOSのIPアドレス}:1935 links: - nginx
TARGET_RTMP_IP
として映像ソースの送信先を環境変数として渡しています。
コンテナ2で記述したシェルスクリプトがこの宛先に向けて映像を送ります。
{Dockerが動作するゲストOSのIPアドレス}
については、ゲストOSのIPアドレスなので、次項で設定するVagrant上のCentOSのIPアドレスを記載します。
参考
ゲストOSの立ち上げ
要件
- LAN内の外部端末から接続できるような基盤とすること
- 立ち上げる際にDockerも自動で実行できること
ここまでで、メインの機能となるDockerコンテナは作成できました。 そしていよいよそのDockerの土台となるゲストOSを立ち上げてきます。
Dockerのコンテナに別の端末から接続する際には、そのDockerが動作しているOSのIPアドレスを指定すれば可能なようです。 Docker の基本学習 ~ コンテナ間のリンク
また、Vagrantで立ち上げる仮想OSも以下の記述を加えるだけで簡単に外部からのアクセスが可能になるようです。
config.vm.network "public_network", :ip => "{IPアドレス}" , :bridge => "en0: Wi-Fi (AirPort)"
[Vagrant] LAN内の別マシンから仮想マシンにアクセスする
よって、Vagrantで立ち上げるOSに上記の設定を加えれば、その上で動作しているDockerコンテナのサーバにも外部から接続ができるようになるということです。
更に、Vagrantで仮想OSを立ち上げる際に、同時にDocker、docker-composeも実行したいです。
dockerをVagrantのprovisionerとして使う方法は公式に記述してあります。 DOCKER PROVISIONER
また、docker-composeをprovisionerとして使うためのプラグインもあり、
$ vagrant plugin install vagrant-docker-compose
でインストールできるようです。 leighmcculloch/vagrant-docker-compose
設定
結果的に以下のようなVagrantfileになりました。
Vagrant.configure("2") do |config| config.vm.box = "bento/centos-7.2" # LAN内部に公開するため、public_networkを選択 # IPアドレスはホストOSと同じセグメントのIPアドレスでないと接続できない config.vm.network "public_network", :ip => "192.168.0.100" , :bridge => "en0: Wi-Fi (AirPort)" config.vm.synced_folder "./", "/vagrant", type: "virtualbox" # provisionerとしてdockerとdocker-composeが使えるようにする # 起動のたびにコンテナを起動 config.vm.provision :docker config.vm.provision :docker_compose, yml: "/vagrant/docker-compose.yml", run: "always" end
参考
- Docker の基本学習 ~ コンテナ間のリンク
- [Vagrant] LAN内の別マシンから仮想マシンにアクセスする
- DOCKER PROVISIONER
- leighmcculloch/vagrant-docker-compose
プレイヤーを作る
今回はFlowPlayerの検証のために環境を作ることが目的だったので、FlowPlayerのセットアップ方法に従いindexhtml
を作成しました。
まずは、flowplayerのライブラリを読み込みます。
<head> <!-- flow player --> <link rel="stylesheet" href="//releases.flowplayer.org/6.0.5/skin/minimalist.css"> <script src="//code.jquery.com/jquery-1.12.4.min.js"></script> <script src="//releases.flowplayer.org/6.0.5/flowplayer.min.js"></script>
今回はFlowPlayer上でHLSも使いたいので、hls.jsも読み込みます。
<!-- load the Flowplayer hlsjs engine, including hls.js --> <script src="//releases.flowplayer.org/hlsjs/flowplayer.hlsjs.min.js"></script> <!-- optional: the quality selector plugin for quality selection when hlsjs is not supported --> <script src="//releases.flowplayer.org/quality-selector/flowplayer.quality-selector.min.js"></script> </head>
プレイヤーを作成するには、<div>
要素に対して、jsでソースを指定します。
RTMPは下記のように指定。
var rtmp_player_flv = document.getElementById("rtmp_player_flv"); flowplayer(rtmp_player_flv, { autoplay : true, clip: { sources: [ { type: "video/flash", rtmpt : false, src: "rtmp://{配信サーバのIPアドレス}:1935/live/mdst" }, ] } });
HLSは下記のように指定。
var hls_player = document.getElementById("hls_player"); flowplayer(hls_player,{ autoplay : true, live : true, clip: { sources: [ { type: "application/x-mpegurl", src: "http://{配信サーバのIPアドレス}/hls/mdst.m3u8" }, ] }, });
最終的にindex.html
は以下のような形になりました。
<!DOCTYPE html> <html lang="en" class=""> <head> <!-- flow player --> <link rel="stylesheet" href="//releases.flowplayer.org/6.0.5/skin/minimalist.css"> <script src="//code.jquery.com/jquery-1.12.4.min.js"></script> <script src="//releases.flowplayer.org/6.0.5/flowplayer.min.js"></script> <!-- load the Flowplayer hlsjs engine, including hls.js --> <script src="//releases.flowplayer.org/hlsjs/flowplayer.hlsjs.min.js"></script> <!-- optional: the quality selector plugin for quality selection when hlsjs is not supported --> <script src="//releases.flowplayer.org/quality-selector/flowplayer.quality-selector.min.js"></script> </head> <body> <div> <h2>RTMP</h2> <div id="rtmp_player_flv"></div> </div> <div> <h2>HTTP Live Streaming</h2> <div id="hls_player"></div> </div> <p id="vinfo" class="info"> </p> <script type="text/javascript"> flowplayer(function (api) { api.on("load", function (e, api, video) { $("#vinfo").text(api.engine.engineName + " engine playing " + video.type); }); }); var rtmp_player_flv = document.getElementById("rtmp_player_flv"); flowplayer(rtmp_player_flv, { autoplay : true, clip: { sources: [ { type: "video/flash", rtmpt : false, src: "rtmp://{配信サーバのIPアドレス}:1935/live/mdst" }, ] } }); var hls_player = document.getElementById("hls_player"); flowplayer(hls_player,{ autoplay : true, live : true, clip: { sources: [ { type: "application/x-mpegurl", src: "http://{配信サーバのIPアドレス}/hls/mdst.m3u8" }, ] }, }); </script> </body> </html>
起動
起動する際は、Vagrantfile
があるディレクトリで下記のコマンドを実行します。
$ vagrant plugin install vagrant-docker-compose $ vagrant up
まとめ
これにて、コマンド一つ(実際には2つ)で動画配信と視聴の環境を構築することができました。
あとはindex.html
を修正することで様々なプレイヤーの検証を行うことができます。
応用情報技術者に2週間で合格できた背景と方法
先日12月16日に合格発表があり、無事合格していました。
8月に試験を申し込んだあと、そのことを忘れていたので試験勉強を始めたのは10月に入ってからでした。。。。
実質2週間程度しか勉強時間はなかったのですが、なんとか合格することができました。
今回はその経緯と勉強方法について書きたいと思います。
なぜ応用情報技術者試験を受験したか
理由としては以下の3つです。
- 昨年、基本情報技術者試験を受験してから一年が経っていたため、次の資格を取得したかった
- 通信系の会社にいるが、情報系の学部を卒業していないので、体系的に学ぶために資格勉強を活用したかった
- 来年にでもネットワークスペシャリストを取得したいが、その前段階として応用を取得しておきたかった
午前 | 午後 | |
---|---|---|
出題形式 | 多肢選択式(四肢択一) | 記述式 |
出題数 解答数 |
出題数:80問 解答数:80問 |
出題数:11問 解答数:5問 |
合格基準は午前試験、午後試験でそれぞれ60点/100点を取得することです。
午前試験で60点が取得できていない場合、午後試験については採点すらも行われません。
試験範囲としては、以下の範囲が出題されます。
- 基礎理論
- アルゴリズムとプログラミング
- コンピュータ構成要素
- システム構成要素
- ソフトウェア
- ハードウェア
- ヒューマンインターフェース
- マルチメディア
- データベース
- ネットワーク
- セキュリティ
- システム開発技術
- ソフトウェア開発管理技術
- プロジェクトマネジメント
- サービスマネジメント
- システム監査
- システム戦略
- システム企画
- 経営戦略マネジメント
- 技術戦略マネジメント
- ビジネスインダストリ
- 企業活動
- 法務
特に16以降なんかは、正直なんか別の人が考えてよ・・・と言いたくなってしまう気がします。。。
とはいえ、応用情報技術者資格を持つ人材に対して期待されていることは、
基本戦略立案又はITソリューション・製品・サービスを実現する業務に従事し、独力で次のいずれかの役割を果たす。(1) 需要者(企業経営、社会システム)が直面する課題に対して、情報技術を活用した戦略を立案する。(2) システムの設計・開発を行い、又は汎用製品の最適組合せ(インテグレーション)によって、信頼性・生産性の高いシステムを構築する。また、その安定的な運用サービスを実現する。
もちろん、これらの範囲を専門家並に理解しなくても問題ないのでご安心ください。
自分のもともとの学習レベル
先に、「学習時間が2週間程度しかなかった」と書いたのですが、もちろん完全にゼロからのスタートで2週間で合格したわけではありません。
- 仕事でもある程度ネットワークの設計などを行っている
- 学生時代にプログラマとしてのバイト経験があり、また趣味でもプログラムを多少書く
- 直前にドットコムマスター を受験して合格していた
- 基本情報技術者を一年前に取得
- プログラム、データベース、ネットワーク周りはある程度理解している。
- 法律的な部分であったり、CPUの構成がなんたらとかという部分は、一度ある程度勉強したことがある
勉強方法
前述のような状態からのスタート、時間も限られていたのでひたすら過去問を解くという戦略を取りました。
午後試験は4問選択だったので、プログラミング、データベース、ネットワークを選択すればまぁ解けるだろうという甘い考えでした。
それ以上に、午前試験で60点以上を取得しないと無条件で不合格になってしまうので、そちらの対策に全力を注いだわけです。
毎日こちら↓のサイトを使って過去問を解き、5年分は解きました。
応用情報技術者試験ドットコム
また、下記の本も購入しわからないことは調べて、理解を深めました。
まぁ、一応本は買いましたが、正直使用頻度も少なかったですし、買わなくても大丈夫だったと思います。
こうしてひたすら過去問を解いたことで、概ね出題されるパターンも分かってきて、よく出る知識については効率よく覚えることができました。
午後試験の選択問題もすんなりと解くことができ、無事合格することができました。
まとめ
応用情報技術者試験は上述の通り、試験範囲も広いですし、午後試験も基本情報技術者試験に比べ記述式の分量が多く、とても大変な試験に見えるかもしれませんが、受けてみるとさらっと合格することができました。
その要因としてはやはり、ある程度技術的な知識を持っていたということが大きいと思います。
そういう意味では、もともと技術職の方であったり、そういった勉強をしている方なら、とてもかんたんに取ることができる資格なので、範囲の広さに怯える必要は無いと思います。
逆に技術にあまり詳しくない方は、午前試験に加えて午後試験の記述対策もしっかりと行う必要があるので、結構たいへんかもしれません。
ブログタイトル変えました
今ではもう社会人にもなり、結婚もし、子供も居るので、改めてブログをやろうと思って変えました。
社会人になって
大学では、学部は宇宙系、大学院では土木を専攻していましたが、会社は通信会社に就職しました!
今ではNE(ネットワークエンジニア)としてお仕事をしています。
プログラミングも好きなので、趣味でソフトウェア開発もしています。
まだまだネットワークもソフトウェアも学ぶことが多そうです。
このブログ
今後はこのブログでは普段の日常とかで考えたことだったり、技術的な事を書いていきたいと思います。
またすぐ更新しなくなるかもしれませんが、頑張っていきます!
vagrant 上のCentOSにSymfonyをインストール
下記↓を参考にしながら実行。
Symfony のインストールと設定 | Symfony2日本語ドキュメント
まず、
curl -s https://getcomposer.org/installer | php
を実行すると、
#!/usr/bin/env php
All settings correct for using Composer
Downloading...
というメッセージが返ってきて無事入れられたようです。
次に、
php composer.phar create-project symfony/framework-standard-edition /path/to/webroot/Symfony 2.7.0
というコマンドを実行。
すると、しばらくの後、
というエラーメッセージが、、、、
どうしようどうしよう、、、なんか権限がないらしいけど、こういうのイジるの怖い、、、
と、思ったら、単純にパスを指定していなかっただけっぽい。笑
普通に/path/to/webroot/のままやってた。
じゃぁここを変更しよう、と思ったはいいが、
rootディレクトリの場所がわからない、、、、、
確か仮想環境のフォルダとlocalのフォルダを共有するのにどこだかをいじった気がする、、、、
と思って調べたら/var/www/htmlがrootであるということが分かりました。
そこで、ここをrootパスとして再度
php composer.phar create-project symfony/framework-standard-edition /var/www/html/Symfony 2.7.0
を実行。
すると、無事ダウンロードが始まり、うまく進みました。
そしたら、最後の最後で下記のエラーメッセージが!!!!!
Fatal errorが出てしまった、、、、
何やらphp-xmlとか言うのがないとのこと(何だそれ?)
と言うわけで、以下のページを参考にしてインストール。
PHP Fatal error: Class ‘DOMDocument’ not found in … - Techie Corner
sudo yum install php-xml
を実行。
そしたらまたエラー、、、、
もうイヤだ、、、、
もうなんなのさ。。。と思いながらまた調べてみると、この記事を発見↓。
kuma memo: Symfony2をComposerでインストール
どうやらPHPをインストールした際の方法と違うから同じ方法じゃないとphp-xmlをインストールすることも出来ないらしい(?よく分からん)
ひとまず下記コマンドを実行。
sudo yum install --enablerepo=remi php-xml
すると、うまく進み完了したようです。
OSX - yosemiteにアップデートしてhosterが起動しなくなった
まぁ今回はちょっとしたことだけど。
初心者なので逐一備忘録としてとっておきます。
内容としては掲題の通り。
アップデートしたのは結構前だけど、Hosterを起動したのが相当久しぶりなので気が付かなかった。。。
yosemiteにアップロードしたからなんか再インストールしなきゃならないっぽい?ので、一端アプリを削除。一個しか登録してなかったしね。
そしたら以下の記事を発見
OSX - yosemiteにアップデートしてhosterが立ち上がらなくなった時の解決方法 - Qiita
復活出来たんか。。。。。
そっちにすればよかった。。。
まぁしょうがないので、以下の記事を参考に再インストール。
Mac - OS X 10.10 Yosemite に Hoster がインストールできない場合の対処法 - Qiita
記事を書くほどではないとか言わないでください。
自分にとってはこんなんでも大変なことなんです、、、、
サイドインストールしたら無事動きました。
vagrant upで仮想マシンが立ち上がらない
就職活動も落ち着いてきたことだし、Webアプリを作りたいなぁと思ったので、
以前挫折した開発にもう一度取り組んで見ようと思いました。
最近はバイトを通してPHP扱うのにも慣れてきたし、色々と作りたいものもあるし!!
と思ったわけです。
「オレ結構技術力ついてきたんじゃね?なんか作れそうな気がする!!フラットにPHP書いちゃってもいいんだけど、それもなんかダサいな!とはいえバイト先でSmarty使ってるけどなんか嫌いだし、、、」
「そうだ!なんか誰かがSymfonyいいよって言ってたしそれにしよう!!」
そう思って↓この辺を読んで勉強してみました。
ガイドブック | Symfony2日本語ドキュメント
最初の頃を読んで、とりあえずHTTPが何なのかを理解し(?) 、ひとまず導入してみようという流れに。
最近こういった事をしていなかったので、PHPのバージョンがわからない。
いくつだっけ?
と、思ってVagrantから仮想マシンを立ち上げようとした所、
$ vagrant up
A Vagrant environment or target machine is required to run this
command. Run `vagrant init` to create a new Vagrant environment. Or,
get an ID of a target machine from `vagrant global-status` to run
this command on. A final option is to change to a directory with a
Vagrantfile and to try again.
というメッセージが。
!!!!?????
焦りました。もしかして以前必死こいて構築した環境はもう使えなくなってしまったのか。
また1からやらなくてはならないのかぁーーーーーー!!!
モチベーション持つかな、、、、
でも調べてみたところ↓これでした。。
vagrant up実行時のエラー - ズブのど素人のblog
まったく同じミス、、
普通にフォルダ間違ってただけだった、、、、
先が思いやられる、、、、
という感じでした。。。
これから頑張ってみたいと思います。
Mac Book AirにHomebrewとgnuplotを導入
公式サイトよりインストールして使ってみると、なにやら図形描写がされない
どうやらOSX Marvericsになってから (というかMountain Lionから?)勝手が違うらしい
X11が使えなくなったっぽい
うーん、IT音痴には意味がわかりません、、、、
とりあえず、X11の代わりにAquatermってやつを入れればいいらしい!!!
そうして再インストールしてみたけど、結局グラフ描写されねー!!!!!
もういいー!!!!
ん??なになに??
Homebrewとかいう便利なのがあるの?
しかもなんだか調べてみると、これを使ってGnuplotをインストールするやり方なら、結構な情報量がありそうだ
というわけで、
Homebrewインストールした
この辺を参考に。
http://maezono.info/2013/12/14/1350
とはいってもコマンド一発なんだけど!
まぁとりあえず無事導入出来ました
そしてようやくGnuplotの導入だけど、Mountain LionまではHomebrewですぐにインストールできていたみたいなんだけど、Marvericsになってからは更に変な事になっているっぽい
なんだよもー
とはいっても、探してみたらありました
http://qiita.com/jtwp470/items/09f8aea31d172bd4acc7
これを参考にすればオッケーじゃん!!
と思ったけど、自分の環境では出来ない
Warning: gnuplot-4.6.5 already installed, it's just not linked
あ、前のやつ消さなきゃー
brew uninstall gnuplot
Uninstalling /usr/local/Cellar/gnuplot/4.6.5...
そして改めてインストール!!
brew install gnuplot
とおもいきや、以下のエラーメッセージが、、、
==> Downloading https://downloads.sourceforge.net/project/gnuplot/gnuplot/4.6.5/Already downloaded: /Library/Caches/Homebrew/gnuplot-4.6.5.tar.gz==> ./configure --disable-silent-rules --prefix=/usr/local/Cellar/gnuplot/4.6.5 ==> make==> make install==> CaveatsAquaTerm support will only be built into Gnuplot if the standard AquaTermpackage from SourceForge has already been installed onto your system.If you subsequently remove AquaTerm, you will need to uninstall and thenreinstall Gnuplot.Error: The `brew link` step did not complete successfullyThe formula built, but is not symlinked into /usr/localYou can try again using: brew link gnuplot
と言われたので、言われるがままに
brew link gnuplot
のコマンドを実行
しかし、
> Linking /usr/local/Cellar/gnuplot/4.6.5...> Error: Could not symlink share/emacs/site-lisp/gnuplot.el> /usr/local/share/emacs/site-lisp is not writable
とか言われた
アクセス権限変えないとダメだったのか
というわけで、
sudo chmod o+w site-lisp/
をやって無事完了しましたー!