まず、欠落している zlib 問題の解決策を思いついた人に感謝します。(それは私ではありませんでした。:-)
残念ながら、元の投稿へのリンクを失ってしまいましたが、Linux でのソリューションの本質は、zlib ヘッダー ファイルを Ruby 構成スクリプトで使用できる状態で Ruby をコンパイルすることです。Debian では、Ruby のコンパイルを開始する前に zlib 開発パッケージをインストールする必要があることを意味します。
ここでの私のテキストの残りの部分には、新しいものは何も含まれていません。UNIX ライクなオペレーティング システムで実行環境をカスタマイズすることに自信がある場合は、省略することをお勧めします。以下は、いくつかの基本事項の簡単な紹介と段階的な手順の組み合わせです。
------HOW-TOのはじまり-------------------------
プログラム、たとえば irb をコンソールから実行したい場合、irb という名前のファイルが、PATH という環境変数によって記述された順序でフォルダーから検索されます。bash シェルに入力して (Enter キーを押すと)、PATH の値を確認できます。
echo $PATH
たとえば、システムに 2 つのバージョンの irb がある場合、1 つは「公式」パッケージ管理システム (yum または apt-get など) によって /usr/bin/irb にインストールされ、もう 1 つはパッケージ管理システムによってコンパイルされます。 scoobydoo という名前のユーザーが /home/scoobydoo/ourcompiledruby/bin に存在する場合、2 つの irb のどちらが実行されるかという問題が生じます。
/home/scoobydoo/.bashrc に次のような行を書き込むと:
export PATH="/home/scoobydoo/ourcompiledruby/bin:/usr/bin"
ターミナル ウィンドウを閉じて新しいウィンドウを開いて bash シェルを再起動し、コンソールに irb と入力すると、/home/scoobydoo/ourcompiledruby/bin/irb が実行されます。誰かが書いた場合
export PATH="/usr/bin:/home/scoobydoo/ourcompiledruby/bin"
/home/scoobydoo/.bashrc に追加すると、 /usr/bin/irb が実行されます。
実際には、書きたい
export PATH="/home/scoobydoo/ourcompiledruby/bin:$PATH"
これは、この割り当ての前に PATH が持っていたすべての値を /home/scoobydoo/ourcompiledruby/bin に追加するためです。そうしないと、すべての一般的なツールが /usr/bin にあるとは限らず、おそらく複数のカスタムビルドのアプリケーションを使用する必要があるため、問題が発生します。
環境変数の名前が LD_LIBRARY_PATH であることを除いて、ライブラリにも同じロジックが適用されます。
LD_LIBRARY_PATH と PATH を使用すると、root アクセス権を持っていないか、それほど信頼されていないソフトウェアを試してみたい一般ユーザーが、root 権限を必要とせずにそれらを構築して使用できるようになります。
このミニハウツーの残りの部分では、ディストリビューションの公式パッケージ管理ソフトウェアによってシステムに何がインストールされているかに関係なく、独自のバージョンの ruby を構築し、独自のバージョンの Ruby を使用することを前提としています。
1)=============================
まず、いくつかのフォルダーを作成し、環境変数を設定して、フォルダーが「役立つ」ようにします。
mkdir /home/scoobydoo/ourcompiledruby
mkdir -p /home/scoobydoo/lib/our_gems
次の 2 行を /home/scoobydoo/.bashrc に追加します。
export PATH="/home/scoobydoo/ourcompiledruby/bin:$PATH"
export GEM_HOME="/home/scoobydoo/lib/our_gems"
現在のターミナル ウィンドウを閉じてから新しいウィンドウを開くか、次のように入力して、bash シェルを再起動します。
bash
現在開いているウィンドウのコマンドラインで。/home/scoobydoo/.bashrc への変更は、変更されたバージョンの /home/scoobydoo/.bashrc を保存する前に開始された端末ウィンドウ/セッションには影響しません。 /.bashrc は、ssh 経由でログオンした場合でも、セッションの開始時に自動的に実行されます。
2)=============================
ここで、zlib 開発パッケージがシステムで利用可能であることを確認します。2011年4月現在、詳細は整理できていませんが、
apt-get install zlibc zlib1g-dev zlib1g
Debian システムでは十分なようです。ライブラリ ファイルとヘッダー ファイルの両方が、システムの「公式」検索パスで利用できるという考え方です。通常、apt-get などは、ヘッダー ファイルを /usr/include に配置し、ライブラリ ファイルを /usr/lib に配置します。
3)=============================
http://www.ruby-lang.orgからソース tar.gz をダウンロードして解凍します。
./configure --prefix=/home/scoobydoo/ourcompiledruby
make
make install
4)=============================
次のようなコンソールコマンドの場合
which ruby
コンソールに出力します
/home/scoobydoo/ourcompiledruby/bin/ruby
新しくコンパイルされたバージョンは、コマンドで実行されるバージョンです
ruby --help
5)=============================
残りのプログラム、gem、irb などは、次のようなコマンドを使用して適切に実行できます。
ruby `which gem` install rake
ruby `which irb`
そんなはずはありませんが、2011 年 4 月の時点で、これ以上エレガントな方法は思い浮かびませんでした。もし
ruby `which gem` install rake
zlib missing エラーが再び発生する場合は、zlib インクルード ファイルとライブラリを Ruby 構成スクリプトで使用できるようにして再コンパイルする方法を見つけようとする必要があります。(申し訳ありませんが、現在、提供できるより良い解決策はありません。)
次の行を /home/scoobydoo/.bashrc に追加するのが汚い解決策かもしれません
alias gem="`which ruby` `which gem` "
alias irb="`which ruby` `which irb` "
実は普段使っている
alias irb="`which ruby` -KU "
ただし、エラーが発生するため、ルビに「-KU」引数を指定せずに gem を実行する必要があります。
------ハウツーの終わり------------------------