はじめに (対象読者・この記事でわかること)

この記事は、Linux環境でRubyをソースコードからビルド・インストールしたものの、その環境をきれいに削除したい方を対象にしています。特に、RVMやrbenvのようなバージョン管理ツールを使わずに手動でRubyをインストールし、システムから完全に除去する方法を探している方にとって役立つ内容です。

この記事を読むことで、ソースからビルド・インストールされたRubyのファイルが通常どこに配置されるか、そしてそれらのファイルを安全かつ完全にシステムから削除するための具体的な手順を習得できます。これにより、不要なRuby環境によってシステムが「汚染」されるのを防ぎ、クリーンな開発環境を維持できるようになります。手動ビルドされたRubyのアンインストールは、パッケージマネージャを利用する場合と異なり、手順が明確でないことが多いですが、本記事を通してそのプロセスを理解し、自信を持って実行できるようになるでしょう。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。 - Linuxの基本的なコマンド操作 (cd, ls, rm, find, sudoなど) - シェルの設定ファイル(例: ~/.bashrc, ~/.zshrc)に関する基本的な理解

なぜ手動ビルドしたRubyの削除は難しいのか?

LinuxシステムでRubyをインストールする方法はいくつかあります。最も一般的なのはaptyumなどのパッケージマネージャを使う方法です。この場合、sudo apt remove rubyのようなコマンドで簡単にアンインストールできます。しかし、ソースコードからRubyをビルド・インストールした場合、話は異なります。

ソースコードからのビルドは、通常以下の手順で行われます。

  1. ./configure: ビルド環境をチェックし、Makefileを生成します。この際、--prefix=/path/to/installのようにインストール先を指定できます。
  2. make: ソースコードをコンパイルします。
  3. sudo make install: コンパイルされたファイルを指定されたインストール先に配置します。

このmake installコマンドは、Rubyの実行ファイル、ライブラリ、ヘッダーファイル、ドキュメントなどをシステム上の複数のディレクトリ(通常は/usr/local配下)にコピーします。しかし、残念ながら多くのソフトウェアでは、これに対応するmake uninstallコマンドが提供されていません。提供されていても、完璧にすべてのファイルを削除してくれるとは限りません。

そのため、手動でインストールされたRubyを削除するには、どのファイルがどこに配置されたかを特定し、それらを一つずつ手動で削除していく必要があります。これはシステム全体に影響を及ぼす可能性があるため、慎重な作業が求められます。

ビルドしたRubyを完全に削除する手順

ソースコードからビルド・インストールしたRubyをシステムから完全に削除するには、以下の手順を慎重に実行する必要があります。作業を開始する前に、万が一の事態に備え、重要なファイルのバックアップを取るか、仮想環境で試すことを強く推奨します。

ステップ1: インストール場所の特定

最も重要なのは、Rubyがどこにインストールされたかを特定することです。

  1. 現在有効なRubyのパスを確認する: まず、which rubyコマンドで現在シェルが参照しているrubyコマンドのパスを確認します。 bash $ which ruby # 例: /usr/local/bin/ruby これがシンボリックリンクである場合も多いため、実際に指している場所も確認しておきましょう。 bash $ ls -l /usr/local/bin/ruby # 例: lrwxrwxrwx 1 root root 20 Jan 1 12:00 /usr/local/bin/ruby -> ../Cellar/ruby/3.2.2/bin/ruby (macOS Homebrewの場合) # 例: lrwxrwxrwx 1 root root 18 Mar 1 10:00 /usr/local/bin/ruby -> /usr/local/ruby-3.2.2/bin/ruby (手動インストールの場合)

  2. Rubyのバージョンを確認する: ruby -vでバージョンを確認し、削除したいRubyが正しいことを確認します。 bash $ ruby -v # 例: ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]

  3. ビルド時の--prefixオプションを思い出す/特定する: ソースからビルドした際、./configure --prefix=/path/to/installのようにインストール先を指定したはずです。この/path/to/installが、Rubyがインストールされているルートディレクトリになります。 もし覚えていない場合、一般的には/usr/local/usr/local/ruby-<version>、またはユーザーのホームディレクトリ内(例: ~/opt/ruby)などが使われます。

  4. 関連ファイルを探索する: findコマンドを使って、インストール先の可能性があるディレクトリからRuby関連のファイルを探索します。例えば、/usr/localにインストールされた可能性が高い場合: ```bash # /usr/local/bin 以下のRuby関連実行ファイル find /usr/local/bin -name "ruby" find /usr/local/bin -name "gem" find /usr/local/bin -name "bundle*"

    /usr/local/lib 以下のRuby関連ライブラリ

    find /usr/local/lib -name "libruby*" find /usr/local/lib -name "ruby" # gemのインストールディレクトリも含む

    /usr/local/include 以下のRuby関連ヘッダーファイル

    find /usr/local/include -name "ruby*"

    /usr/local/share 以下のドキュメントやmanページ

    find /usr/local/share -name "ruby*" `` これらのコマンドで得られたパスを注意深くメモしてください。特に、gem envコマンドを実行し、INSTALLATION DIRECTORY`が指すパスも確認してください。これはインストールされたgemが格納されているディレクトリです。

    一般的なインストールパスの例: - /usr/local/bin/ruby - /usr/local/bin/gem - /usr/local/bin/bundle - /usr/local/lib/libruby.so.X.Y - /usr/local/lib/ruby/gems/X.Y.Z (Gemのインストールパス) - /usr/local/include/ruby-X.Y.Z - /usr/local/share/man/man1/ruby.1 - /usr/local/share/doc/ruby-X.Y.Z

ステップ2: 関連ファイルの削除

特定したファイルを削除します。このステップは非常に重要であり、誤ったパスを削除するとシステムに深刻な影響を与える可能性があります。必ず正しいパスを確認してから実行してください。

  1. 実行ファイルとシンボリックリンクの削除: /usr/local/binなどにあるRuby関連の実行ファイルやシンボリックリンクを削除します。 bash sudo rm -f /usr/local/bin/ruby sudo rm -f /usr/local/bin/gem sudo rm -f /usr/local/bin/bundle # 必要に応じて他の関連実行ファイルも削除

  2. ライブラリファイルの削除: /usr/local/libにあるRubyの共有ライブラリや静的ライブラリを削除します。 bash sudo rm -f /usr/local/lib/libruby.so.* sudo rm -f /usr/local/lib/libruby.a # Rubyバージョンに特化したディレクトリがある場合 sudo rm -rf /usr/local/lib/ruby/<バージョン> # 例: /usr/local/lib/ruby/3.2.0 Gemのインストールディレクトリが/usr/local/lib/ruby/gems/X.Y.Zのようなパスであれば、そのディレクトリも削除します。 bash sudo rm -rf /usr/local/lib/ruby/gems/<Rubyバージョン> # 例: /usr/local/lib/ruby/gems/3.2.0

  3. ヘッダーファイルの削除: /usr/local/includeにあるRubyのヘッダーファイルディレクトリを削除します。 bash sudo rm -rf /usr/local/include/ruby-<バージョン> # 例: /usr/local/include/ruby-3.2.0 sudo rm -rf /usr/local/include/ruby # 必要に応じて

  4. ドキュメントやManページの削除: /usr/local/shareにあるドキュメントやManページを削除します。 bash sudo rm -rf /usr/local/share/man/man1/ruby.1 sudo rm -rf /usr/local/share/doc/ruby-<バージョン> # 例: /usr/local/share/doc/ruby-3.2.0

  5. もし--prefixで指定したディレクトリを特定できる場合: もしビルド時の--prefix=/path/to/my/rubyのように、特定のルートディレクトリにインストールされていることが明確であれば、そのディレクトリ全体を削除するのが最も効率的で確実です。 bash # 例: ビルド時に --prefix=/opt/ruby-3.2.2 と指定した場合 sudo rm -rf /opt/ruby-3.2.2 ただし、/usr/local全体を削除するなど、他のシステムコンポーネントに影響が出る可能性がある場合は絶対に避けてください。 削除対象のディレクトリがRuby専用であることを確認してください。

ステップ3: 環境変数のクリーンアップ

シェルの設定ファイル(例: ~/.bashrc, ~/.zshrc, /etc/profileなど)で、削除したRubyに関連するパスや環境変数が設定されている場合、それらを削除またはコメントアウトします。特にPATH変数に/usr/local/bin/usr/local/ruby-X.Y.Z/binなどが追加されている場合は、その行を削除してください。

Bash
# 例: ~/.bashrc を編集 vi ~/.bashrc # PATHに追加した行を削除またはコメントアウト # export PATH="/usr/local/ruby-3.2.2/bin:$PATH"

ステップ4: シェルのリロードまたは再起動

環境変数の変更を反映させるために、シェルをリロードするか、ターミナルを再起動します。

Bash
source ~/.bashrc # または ~/.zshrc など # または exec $SHELL

ステップ5: 削除の確認

最後に、Rubyが完全に削除されたことを確認します。

Bash
which ruby

このコマンドが何も返さないか、期待する別のRuby(RVMやrbenvで管理されているRubyなど)のパスを指していれば成功です。 また、ruby -vgem listを実行して、コマンドが見つからないエラーが出れば、削除は完了です。

ハマった点やエラー解決

1. 間違ってシステムが管理するRubyを削除しようとした

/usr/bin/rubyなどのシステムがパッケージマネージャで管理しているRubyを削除してしまうと、OSの動作に悪影響を与える可能性があります。

解決策: 削除対象のパスは必ずwhich rubyls -lで確認し、手動でインストールしたパスであることを二重三重に確認しましょう。安易に/usr/bin以下のファイルを削除しないでください。

2. sudo rm -rf /usr/localを実行してしまい、他のアプリケーションに影響が出た

/usr/localはRuby以外にも多くの手動インストールされたソフトウェアが配置される場所です。このディレクトリ全体を削除すると、システム上の他のアプリケーションが動作しなくなる可能性があります。

解決策: /usr/local全体を削除するのではなく、その配下のRuby関連のディレクトリやファイルのみをターゲットとして削除するようにしましょう。findコマンドで特定したパスを一つずつ削除するか、configure --prefix=で指定したRuby専用のルートディレクトリ(例: /opt/ruby-3.2.2)を削除するのが最も安全です。

3. PATH変数から削除したパスが消えておらず、古いRubyを参照し続けていた

環境変数のクリーンアップを忘れると、Rubyの実行ファイルがシステムから削除されても、シェルが古いパスを覚え続けてしまうことがあります。

解決策: シェルの設定ファイル(~/.bashrc, ~/.zshrc, /etc/profileなど)を丹念にチェックし、Rubyに関連するPATH設定やその他の環境変数をすべて削除またはコメントアウトしてください。変更後は必ずsourceコマンドで設定を再読み込みするか、ターミナルを再起動しましょう。

まとめ

本記事では、Linux環境でソースコードからビルド・インストールしたRubyをシステムから完全に削除する手順を解説しました。パッケージマネージャによるインストールとは異なり、手動でインストールされたRubyは削除プロセスが複雑になりますが、以下の要点を押さえることで安全かつ確実にクリーンアップが可能です。

  • 要点1: ビルド時に./configure --prefix=で指定したインストールパスが削除の鍵となります。このパスを特定し、その配下にあるRuby関連ファイルを削除することが基本です。
  • 要点2: which rubygem envfindコマンドを駆使して、Rubyの実行ファイル、ライブラリ、ヘッダーファイル、Gemなどがどこに配置されているかを正確に特定しましょう。
  • 要点3: sudo rm -rfコマンドは非常に強力であり、誤った使用はシステムに深刻な影響を与えます。必ず削除対象のパスを慎重に確認し、Ruby専用のディレクトリのみをターゲットとして削除してください。また、環境変数(特にPATH)のクリーンアップも忘れずに行いましょう。

この記事を通して、不要になった手動ビルドのRuby環境をシステムから安全に除去し、開発環境を健全な状態に保つための知識と手順を得られたことと思います。今後は、RVMやrbenvのようなRubyバージョン管理ツールを導入することで、複数のRubyバージョンを容易に切り替え、アンインストールもシンプルに行えるようになります。

参考資料