CentOS7でAtomを使う

私はRedHat系Linux、特にCentOSでサーバーを運用することが多いのですが、開発自体もCentOS上で行えれば、互換性の問題を最小限に抑えられるかもしれません。CentOS7上にAtomをインストールし、開発環境を作成します。

Atomのインストール

開発環境を作成するCentOSを立ち上げ、CentOS上のブラウザでAtomの公式サイトを開きます。すると、自動的にLinux用のダウンロードボタンが表示されます。「Download.rpm」をクリックし、ダウンロードします。

ダウンロードしたrpmファイルは、「~/ダウンロード」フォルダに配置されます。

続いて端末を立ち上げ、yumを使用してローカルインストールします。

$ sudo yum localinstall ~/ダウンロード/atom.x86_64.rpm

インストールが終わると、メニューの「アプリケーション」-「プログラミング」の中に「Atom」が現れます。

ですが、残念ながら私の環境では起動しませんでした・・・

~/.atom/nohup.outを開くと、

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

というメッセージがありました。CentOS7のgccはバージョンが古く、「GLIBCXX_3.4.21」は入っていないようです。

ネットで調べたところ、Qiitaの『CentOS7で良さげなCode Serverを試したらエラーが出た (“Error: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21′ not found 等)』にgccをソースからビルドする方法が紹介されていました。これを参考にさせていただき、gccをビルド・インストールします。

gccのビルドとインストール

まず、gccのソースをダウンロードします。gcc公式サイトのミラーサイトのリストを見ると、日本にはftp.tsukuba.wide.ad.jpがあるようです。ブラウザで開くと、gccソースがバージョン毎にフォルダ分けされています。このフォルダ名から最新版を見つけます。

私がインストールした時点では、10.2.0が最新でした。下記コマンドでダウンロードします。

$ curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-10.2.0/gcc-10.2.0.tar.gz

チェックサムの確認を行います。

$ curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-10.2.0/sha512.sum
$ sha512sum --check sha512.sum

ダウンロードしたsha512.sumファイルには、「~tar.gz」「~tar.gz.sig」「~tar.xz」「~tar.xz.sig」の4ファイル分のチェックサムが入っていました。そのため、sha512sumを実行すると下記のような警告が表示されます。

gcc-10.2.0.tar.gz: 完了
sha512sum: gcc-10.2.0.tar.gz.sig: そのようなファイルやディレクトリはありません
gcc-10.2.0.tar.gz.sig: オープンまたは読み込みに失敗しました
sha512sum: gcc-10.2.0.tar.xz: そのようなファイルやディレクトリはありません
gcc-10.2.0.tar.xz: オープンまたは読み込みに失敗しました
sha512sum: gcc-10.2.0.tar.xz.sig: そのようなファイルやディレクトリはありません
gcc-10.2.0.tar.xz.sig: オープンまたは読み込みに失敗しました
sha512sum: 警告: 一覧にある 3 個のファイルが読み込めませんでした

「gcc-10.2.0.tar.gz」しかダウンロードしていないので、このファイルのチェックサムが確認できれば大丈夫です。

続いて、ダウンロードしたファイルを展開します。

$ sudo tar xzvf gcc-10.2.0.tar.gz -C /usr/local/src

展開したフォルダに移動し、設定・ビルドし、インストールします。makeにはかなりの時間を要します。気長にお待ちください。

$ cd /usr/local/src/gcc-10.2.0/
$ sudo ./contrib/download_prerequisites
$ sudo mkdir build
$ cd build
$ sudo ../configure --enable-languages=c,c++ --prefix=/usr/local --disable-bootstrap --disable-multilib
$ make
$ make install

ビルド・インストールに成功したら、ライブラリの依存関係情報を更新します。CentOS7では「/etc/ld.so.conf.d」の下に「~.conf」というファイルを配置し、その中にライブラリのフォルダ名を記述します。その後「ldconfig」を実行すれば、自動的にそのフォルダのライブラリを参照するよう設定されます 。

$ cd /etc/ld.so.conf.d
$ sudo sh -c "echo /usr/local/lib64 >> usr_local_lib64.conf"

/usr/local/lib64フォルダの中には、gccのコンパイルにより生成されたlibstdc++.so.*.*.*-gdb.pyがあります(私の環境では「libstdc++.so.6.0.28-gdb.py」でした)。ldconfigを実行するとエラーになるので、このファイルの名前を変更しておきます。

$ cd /usr/local/lib64
$ sudo mv libstdc++.so.6.0.28-gdb.py back_libstdc++.so.6.0.28-gdb.py

最後に、ldconfigを実行します。

$ sudo ldconfig -v

「-v」を付けて実行すると、依存関係が表示されます。「/usr/local/lib64」の箇所で、libstdc++.soの新しいバージョンが参照されていることを確認できます。

/usr/local/lib64:
	...
	libstdc++.so.6 -> libstdc++.so.6.0.28
	...

私の環境では、上記の操作でAtomを起動することができるようになりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です