Re:気づいたらpythonbrewをプチハックしていて月曜の明け方に突入した件
自己レスです。少し前に
なんてものを書いてたんですが、結局その後ノータッチ...
ホントやるやる詐欺はよくないですね。
で、ちょっとだけ言い訳をしておくと、思いついた直後、Pythonistaな友人に数点気になるところを教えてもらいました。
とりあえず、あまりconfigureをいじってPythonをビルドすることはなさそう、とのことで、"--as"オプションの需要はレアだろうというのが個人的結論です。
その後、Rubyのバージョン別管理ツール(という言葉が正しいかはおいといて)のrvmも試してみましたが、こちらもperlbrew同様に
source $HOME/.rvm/scripts/rvm
だけやればよかったので、環境変数PYTHONBREW_ROOTをツール側で設定する機能の方はあってもいいのかなと思います。
まぁ必要に迫られたらやる方向で...
気づいたらpythonbrewをプチハックしていて月曜の明け方に突入した件
なんか雨振ってきましたね。y_echoです、こんばんは。
先日
なんてエントリを書いた訳ですが、pythonbrewについて個人的に気になったことを調べてみました。
perlbrewの--asオプション相当のものが欲しいかも
同じバージョンでConfigureが異なる環境を用意したいパワーユーザさんはいそうですね。
先日のエントリを書いた後、あらためて
のマニュアルを読んでみたのですが、やはりそのようなオプションは今のところありませんでした。
環境変数PYTHONBREW_ROOT「を」pythonbrewで管理して欲しいかも
少し試してみたのですが、pythonbrewを
% export PYTHONBREW_ROOT=~/python/pythonbrew % ./pythonbrew-install
のようにインストールした場合、自分でも.zshenvなどに
# .zshenv export PYTHONBREW_ROOT=~/python/pythonbrew
しておく必要がありそうです。
一方、perlbrewはinitコマンドにて自動作成される~/.perlbrew/init
export PERLBREW_ROOT=/Users/y_echo/perl5/perlbrew
にインストール時設定の環境変数が保存され、.zshrcなどに取り込む${PERLBREW_ROOT}/etc/bashrcで
if [[ -f $HOME/.perlbrew/init ]]; then source $HOME/.perlbrew/init fi
しているため、自前でexportする必要がありません。
...ちょっと待てよ、と
pythonbrewはperlbrewにインスパイアされたツールであり、ある程度同じことをやっているはずです。
なんで自前でやる必要があるんだーッ、とまたしてもカッとなりました。
まず、${PYTHONBREW_ROOT}/scripts/pythonbrew/define.pyのこの部分
import os VERSION = "0.6.7" if os.environ.has_key("PYTHONBREW_ROOT"): ROOT = os.environ["PYTHONBREW_ROOT"] else: ROOT = os.path.join(os.environ["HOME"],".pythonbrew")
で環境変数PYTHONBREW_ROOTがスクリプト全体に効いてきます。
また、perlbrew同様に.zshrcなどに取り込むための${PYTHONBREW_ROOT}/etc/bashrc
PATH_ROOT="/Users/y_echo/python/pythonbrew" PATH_ETC="$PATH_ROOT/etc" #... __pythonbrew_set_current_path() { if [[ -s "$PATH_ETC/current" ]] ; then source "$PATH_ETC/current" else __pythonbrew_set_default fi __pythonbrew_set_path } #... # main __pythonbrew_set_current_path
には、確かにインストール時設定の環境変数が反映されていますし、
# $PATH_ETC/current PATH_PYTHONBREW="/Users/y_echo/python/pythonbrew/bin"
に関してもそうです。
...で、結局何が悪そうか
個人的な結論ですが、PYTHONBREW_ROOTをexportし忘れているのではないかと。
もちろん、どこかでexportするつもりで実装していたのに、という意味です。patchるとしたら、$PATH_ETC/currentにpythonbrewインストール時のPYTHONBREW_ROOTを吐くだけなら影響範囲小さそうですね(勘)。
ダメもとで書いて送ってみようかな...
Homebrewな人がMercurialインストール時にカッとなった場合の対処方法
2連投、いい調子のy_echoです。こんばんは。
プライベートのとあるリポジトリを触るために必要なMercurial。MacPortsやめたので、こいつも再インストールです。
brew install hg...あれ??
brew install mercurial · Issue #3825 · Homebrew/legacy-homebrew · GitHubとのことです。
ググるといくつか解決策が見つかるんですが、
- もろもろを~/homebrewで管理するべく心に決めたばかり
- Perlはperlbrewで~/perl5に気持ちよく管理中
なので、何の考えもなしに普通にインストールはしたくありません。よもや禿コマンドなんぞ...
ここらへんでカッとなったわけです。
pythonbrewでPython環境を管理すればよさそう
UTAHTAさん、素晴らしすぎます。
Pythonistaな方々はすでにご存知のツールかもしれませんが、ぼくはPython疎いので知りませんでした...perlbrewと同じ感覚で管理できるのであれば、学習コスト分もお得なので、今回はこいつで解決することにします。
pythonbrewをインストール
詳細なインストール手順は作者UTAHTAさんの記事など参考にしてもらうとして、ここではざっとログるのみとします。
[y_echo@MacBook ~]% curl -kLO https://github.com/utahta/pythonbrew/raw/master/pythonbrew-install [y_echo@MacBook ~]% chmod +x ./pythonbrew-install [y_echo@MacBook ~]% mkdir -p ~/python/pythonbrew # perlbrewのdir構成と同じにする [y_echo@MacBook ~]% export PYTHONBREW_ROOT=~/python/pythonbrew [y_echo@MacBook ~]% ./pythonbrew-install
これで~/python/pythonbrew/配下にごっそりインストールされたのを確認した後、.zshrcに以下を追記しておきます。
### .zshrc ... ## perlbrew source $HOME/perl5/perlbrew/etc/bashrc # 元からあるperlbrew用の設定 ## pythonbrew source $HOME/python/pythonbrew/etc/bashrc # 今回新しく追加したpythonbrew用の設定
設定をzshに反映して確認してみます。
[y_echo@MacBook ~]% source ~/.zshrc [y_echo@MacBook ~]% which pythonbrew pythonbrew () { __pythonbrew_find_command "$@" case $command_name in (use) __pythonbrew_use "$@" ;; (switch) __pythonbrew_switch "$@" ;; (off) __pythonbrew_off "$@" ;; (update) __pythonbrew_update "$@" ;; (*) command pythonbrew "$@" ;; esac builtin hash -r }
よさそうです。
PythonとMercurialをインストール
とりあえずPythonは2.7.1にしました。
[y_echo@MacBook ~]% pythonbrew install 2.7.1 [y_echo@MacBook ~]% pythonbrew switch Python-2.7.1 [y_echo@MacBook ~]% which python /Users/y_echo/python/pythonbrew/pythons/Python-2.7.1/bin/python
今更ながらですが、インストール時perlbrewみたいにas指定できるのであれば、適宜しておいた方が良さそうですね。switch時のタイプ量減りますし、「pythonbrew switch Python-x.x.x」って何か許せない...
追記です。githubのマニュアル読むと、switchするときはバージョン指定(つまり数字のみ)だけでもいけるみたいですね。ごめんなさいです。
最後にMercurialをインストールします。
[y_echo@MacBook ~]% which pip /Users/y_echo/python/pythonbrew/pythons/Python-2.7.1/bin/pip [y_echo@MacBook ~]% pip install Mercurial [y_echo@MacBook ~]% which hg /Users/y_echo/python/pythonbrew/pythons/Python-2.7.1/bin/hg
ということで、だいぶ寄り道した感がありますが、気持ちよく管理したいという目的は達成することができました。
補足
Pythonistaな方々はこの後virtualenvで仮想環境を構築するようです。
Term::ReadLine::Gnu...というよりperlshのインストールメモ
サッカーアジア杯、日本優勝しましたね。サッカー観戦日に記事を書くy_echoです。どうもこんばんは。
最近~/homebrew、~/perl5/perlbrewな開発環境に再構築したんですが、perlshインストール時に少し手作業が必要だったのでメモっときます。
perlshはPerlのインタラクティブシェル
「perl interactive shell」でググるといくつか他のものも発見できますが、ぼくはWEB-DB PRESS*1の記事(by id:naoyaさん)でその存在を知ったperlshを使ってます。
[y_echo@MacBook ~]% perlsh main[1]$ use Data::Dumper; main[2]$ $dumped = { foo => 'bar' }; HASH(0x10093edc8) main[3]$ print Dumper($dumped); $VAR1 = { 'foo' => 'bar' }; 1 main[4]$
こんな感じです。たまーに使う程度ですが、あったらあったで便利なときもあります。
このperlsh、Term::ReadLine::Gnuのサンプルとしてディストリビューションに含まれているので、まずはTerm::ReadLine::Gnuをインストールします。
Term::ReadLine::Gnuのインストール
とりあえずcpanmすると
[y_echo@MacBook ~]% cpanm perlsh ! Finding perlsh on cpanmetadb failed. --> Working on perlsh Fetching http://search.cpan.org/CPAN/authors/id/H/HA/HAYASHI/Term-ReadLine-Gnu-1.20.tar.gz ... OK Configuring Term-ReadLine-Gnu-1.20 ... N/A ! Configure failed for Term-ReadLine-Gnu-1.20. See /Users/y_echo/.cpanm/build.log for details. [y_echo@MacBook ~]%
通りません。「perlshでも検索してくれるんですね。かしこい!」というのは置いておいてbuild.logを見ると
... !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! The libreadline you are using is the libedit library. Use the GNU Readline Library. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ...
ということで、GNU Readlineが入っていませんでした。GNU ReadlineのHombrew Formulaはデフォルトで含まれているので
[y_echo@MacBook ~]% brew install readline [y_echo@MacBook ~]% brew link readline
とします。なお、インストール時に「BSDのlibreadlineが云々...もし必要なら云々」と言われるため、brew linkして~/homebrew/libにライブラリのリンクを貼っておきます*2。
ここで再びcpanmするのですが、GNU Readlineがいわゆるデフォルトパスにないので、途中で自前configureします。
[y_echo@MacBook ~]% cpanm --prompt Term::ReadLine::Gnu --> Working on Term::ReadLine::Gnu Fetching http://search.cpan.org/CPAN/authors/id/H/HA/HAYASHI/Term-ReadLine-Gnu-1.20.tar.gz ... OK Configuring Term-ReadLine-Gnu-1.20 ... Configuring Term-ReadLine-Gnu failed. You can s)kip, r)etry or l)ook ? [s] l Entering /Users/y_echo/.cpanm/work/1296331256.12924/Term-ReadLine-Gnu-1.20 with /bin/zsh [y_echo@MacBook ~/.cpanm/work/1296331256.12924/Term-ReadLine-Gnu-1.20]%
INSTALLを読むとprefixだけいじればよさそうです。
[y_echo@MacBook ~/.cpanm/work/1296331256.12924/Term-ReadLine-Gnu-1.20]% perl Makefile.PL --prefix=~/homebrew/ ... Writing Makefile for Term::ReadLine::Gnu [y_echo@MacBook ~/.cpanm/work/1296331256.12924/Term-ReadLine-Gnu-1.20]% exit Configuring Term-ReadLine-Gnu failed. You can s)kip, r)etry or l)ook ? [s] s ... Successfully reinstalled Term-ReadLine-Gnu-1.20
perlshをディストリビューションからサルベージ
perlsh自体は自分でcpとかします。ちなみに、ぼくは以下の場所に置くことにしました。
[y_echo@MacBook ~]% cp ~/.cpanm/latest-build/Term-ReadLine-Gnu-1.20/eg/perlsh ~/perl5/perlbrew/perls/5.12.2/bin/perlsh
最後に、perlshのshebangを/usr/local/bin/perlから適当なものへ変更します。
#!/usr/bin/env perl
perlbrewを使ってる場合のshebangについては、@lestrratさんのエントリhttp://mt.endeworks.jp/d-6/2010/08/perlbrew.htmlなどを読んでみてください。
zshでCtrl-AとかCtrl-Eとか急に効かなくなって発狂しそうになったのでメモ
おとといくらいから困ってました
日韓戦のPKではらはらしてます*1。y_echoです、こんばんは。
zsh でいつの間にか Ctrl+R とか Ctrl+A とかきかなくなっていた - 肉とビールとパンケーキ by @sotarok
そうですか
bindkey -e
ですか。でも、今使ってる.zshrcでわざわざ設定してなかったんだけどなぁ...まったくどのタイミングで変わっちゃったんだろう。
*1:勝ちましたね! 川島が神過ぎた...
Homebrew formula for tscreen
こんばんは
Homebrew使い始めました。y_echoです。
ググればどこかにありそうですが、Homebrew覚えるついでに書いたのでさらしておきます。
# tmuxはデフォでformula入ってたけど、GNU Screenやtscreenは入ってないようですね
注意
なお、初回実行時はmake install中にこけます。それ以降はヌルっと通ります。明日直すので許してください。
追記: brew uninstall後、~/Library/Caches/Homebrewのキャッシュを消去し再現を試みたところ、普通にヌルっと通りました。tscreen.rbに手は入れてないんだけどな...何が差分なんでしょう...
tscreen.rb
require 'formula' class Tscreen <Formula url 'http://www.steve.org.uk/Software/tscreen/dist/tscreen-0.4.9.tar.gz' md5 '12303c84a93a78f1c44441323ba38845' homepage 'http://www.steve.org.uk/Software/tscreen/' def install system "./configure", "--prefix=#{prefix}", "--enable-colors256" system "make" system "make install" end end