Boxen で mid3v2 を入れる
また boxen...
自分のマシンにはradiko を録音する仕組みを設けていたりします。
前もそうだったのですが、radiko 録音の作業で面倒なのが、id3 タグでの日本語(マルチバイト文字?)。
ここでは、この為に mid3v2 と言うツールを使うことにしています。
そして、この mid3v2 を使いたいが為に、ちょっとした冒険をすることになりました。
と言うのが今回のお話。
あらすじは、
mid3v2 -> python -> mutagen -> pip -> virtualenv ...ん? ん? ヴぁ、ヴァーチャルエンヴぅ?
## python python::pip { 'mutagen': virtualenv => $python::config::global_venv }
これ長くなりそうだな...
mid3v2 のために...
もちろん、python は要る。そして... ;
- mid3v2 がパックされている mutagen を入れる必要がある。
- mutagen 要るなら、それ入れる為に pip を用意する必要がある。
- pip 要るなら、virtualenv 要る。
んな感じで、別に急がないんだけど、遠回らなくちゃいけないみたいで... orz
素人にとっては何てまどろっこしぃ思ってしまうわけです、えぇ。
python のインストールについては普通通り。すぐ分かる。
mutagen
mutagen の導入についても、構えていたより、すんなりでありました。
...が、問題はその先に。
一応、mutagen とは。
Mutagen is a Python module to handle audio metadata.
ちなみに、自分にとって導入のキッカケとなったのが、こちら。一応、残しておきます。
mutagen のようなモノは "パッケージ" と言うらしいのですが、
その管理/インストールを引き受けてくれる "パッケージマネージャ" っつーのがあるらしく、ここではそのひとつである "pip" なるアイテムを使うことに。理由は、何かこの子がよりイケてるように見えるから、という実に根拠なき感覚的なシロート発想。真意は不明。*1
そして、パッケージのインストールは pip install <パッケージ名>
な感じ。
なので、今回のケースですと sudo pip install mutagen
みたいな感じになるのでしょう。
では、boxen の puppet では? となると。
python::pp を見ると、example 。;
=== Examples
python::pip { 'flask':
virtualenv => '/var/www/project1',
proxy => 'http://proxy.domain.com:3128',
}
python::pip { 'mutagen': }
な感じになりますかね。
と、ソースを眺めていたら気になる記述が。 ;
# Parameter validation if ! $virtualenv { fail('python::pip: virtualenv parameter must not be empty') }
は? virtualenv って、これ何指定したらいいの...
virtualenv ナヌソレ
名前の雰囲気から、何であるかは分かる。
ですが実際のところ、何をどう指定するが正解かが分からない。
作業目的から、この辺りについて今はあまり掘る気はないので、
知りたいのは、指定する値がテキトーでいいのか、それとも何かお作法があって、それに則った形で決めるようなものなのか。しかし、分かっていない分 :p、この二択すらジャッジできない為体。
こんな時は、皆どうしているのだろう、と先達へ学ぶことに。
最終的に参考にさせて頂いたのはこちら。;
include python
include python::virtualenvwrapper
include 'qt'
python::pip{ 'py-mysql2pgsql':
virtualenv => $python::config::global_venv,
ensure => present
}
うん、なるほど。
virtualenv
には $python::config::global_venv
を充てれば良いらしいが。
$python::config::global_venv
って?
manifests/config.pp 覗いたら、こんあんあるけど。;
# The "global" scope for python modules in boxen
$global_venv = $homebrew::config::installdir
indtalldir
はどこから? ... ま、いいや(笑*2
ついでに、どうやら pip は virtualenv による仮想環境内で動作するようなものらしいです。
だから、virtualenv の指定は必要、となる。
ここまでは分かった。
じゃ、どうして仮想環境は無くても良いん、と言う選択肢は用意されていないの? とかその辺りが分かっていない。
と言うか、どうして pip に virtualenv が必要なのか自身が分かっていないからですね。
後で調べる、と、うっちゃりん。
と言う事で
何か、うまく行っているみたいです。何か録音までは出来ているみたいですし。
% pip --version pip 1.2.1 from /opt/boxen/homebrew/Cellar/python/2.7.3-boxen2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg (python 2.7)
pip は入ってくれているみたい。
% pip freeze distribute==0.6.34 libxml2-python==2.9.1 mutagen==1.22 stevedore==0.13 virtualenv==1.10.1 virtualenv-clone==0.2.4 virtualenvwrapper==3.7 wsgiref==0.1.2
問題児、mutagen も居るみたい。
% type mid3v2
mid3v2 is /opt/boxen/homebrew/share/python/mid3v2
そして、肝心の mid3v2 も。
動いてもらえてるから良いみたいですけど...
うーん...
もっときちんとしなくちゃならない事が沢山ありますね。
とりあえず、ここまでのおべんきょしゅうりょう。
とゆことではい、おしまい。
*1:つか、このあたり何か分かりにくくありません? あ、いや複雑、と言う訳でもなく、個々言っていることは分かるんです。が、それぞれ仰ることがちょっとずつ、何か、こー錯綜していて。で、シンプルに捉えようとグっと引いて見てみると、どうも腑に落ちない。例えば、pip は easy_install に変わる、より強いヤツとして、easy_install より pip 使うのがよろしいって言われてるけど、その pip は easy_install でインストールする、とか...とか、なぁんか。そんなもんだ、と理解無く理解すれば良いのは分かるのですが、やっぱ落ちてこない。