2024/01/25(木) [n年前の日記]
#1 [prog] OSDN版のMinGWについて調べてた
OSDN(osdn.net)の閉鎖が決まったという話を見かけた。
_老舗掲示板サイト「スラド」が2024年1月末に終了、「OSDN」も接続困難なまま閉鎖か - 窓の杜
困った。ここ最近利用している MinGW (C/C++コンパイラ + 開発ツール一式) の最新版は OSDN で配布されているわけで…。今後は MinGW が手に入らなくなってしまう…。アプリのビルド等の実験ができなくなる…。
いやまあ、まだ SourceForge から入手できなくはないのだけど、ただ、色々なパッケージのバージョンが古いのだよな…。
_MinGW - Minimalist GNU for Windows download | SourceForge.net
実際のところ OSDN版 MinGW は、SourceForge版 MinGW と比べて、どのくらいパッケージが差し変わっているのか気になってきた。そんなわけで、少し調べてみた。
_老舗掲示板サイト「スラド」が2024年1月末に終了、「OSDN」も接続困難なまま閉鎖か - 窓の杜
困った。ここ最近利用している MinGW (C/C++コンパイラ + 開発ツール一式) の最新版は OSDN で配布されているわけで…。今後は MinGW が手に入らなくなってしまう…。アプリのビルド等の実験ができなくなる…。
いやまあ、まだ SourceForge から入手できなくはないのだけど、ただ、色々なパッケージのバージョンが古いのだよな…。
_MinGW - Minimalist GNU for Windows download | SourceForge.net
実際のところ OSDN版 MinGW は、SourceForge版 MinGW と比べて、どのくらいパッケージが差し変わっているのか気になってきた。そんなわけで、少し調べてみた。
◎ 全パッケージをインストールしてみた :
とりあえず、SourceForge版、OSDN版、両方の MinGW で、ほぼ全パッケージをダウンロードしてインストールしてみた。インストール時に、なんだか大量にコンフリクト(衝突)が起きていたのが気になるけど…。でもまあ、パッケージファイルのダウンロードぐらいはできてるだろう…。
ダウンロードされたパッケージは、以下の場所にキャッシュとして残っている。
SourceForge版と、OSDN版の、それぞれのキャッシュの状態を比較すれば、どのパッケージが差し変わった/新しくなったのかが分かるのではないかなあ、と…。
ダウンロードされたパッケージは、以下の場所にキャッシュとして残っている。
MinGWインストールフォルダ\var\cache\mingw-get\packages\
SourceForge版と、OSDN版の、それぞれのキャッシュの状態を比較すれば、どのパッケージが差し変わった/新しくなったのかが分かるのではないかなあ、と…。
◎ 差し変わったのかもしれないファイルの一覧 :
ということで、OSDN版のキャッシュにはあるけど、SourceForge版のキャッシュには無いパッケージファイルは、以下のような状態だった。
つまり、上記のパッケージファイルをどうにか入手して、解凍して、SourceForge版のファイル群と差し替えてやれば、OSDN版 MinGW 相当になるのではないのかなと…。考えが甘いだろうか…?
binutils-2.32-1-mingw32-bin.tar.xz binutils-2.32-1-mingw32-dev.tar.xz binutils-2.32-1-mingw32-info.tar.xz binutils-2.32-1-mingw32-lang.tar.xz binutils-2.32-1-mingw32-man.tar.xz dos2unix-7.3.2-1-mingw32-bin.tar.lzma dos2unix-7.3.2-1-mingw32-doc.tar.lzma dos2unix-7.3.2-1-mingw32-lic.tar.lzma expat-2.2.9-1-mingw32-bin.tar.xz expat-2.2.9-1-mingw32-html.tar.xz expat-2.2.9-1-mingw32-lic.tar.xz expat-2.2.9-1-mingw32-man.tar.xz gcc-9.2.0-2-mingw32-info.tar.xz gcc-9.2.0-2-mingw32-lang.tar.xz gcc-9.2.0-2-mingw32-lic.tar.xz gcc-9.2.0-2-mingw32-man.tar.xz gcc-ada-9.2.0-2-mingw32-bin.tar.xz gcc-c++-9.2.0-2-mingw32-bin.tar.xz gcc-c++-9.2.0-2-mingw32-man.tar.xz gcc-core-9.2.0-2-mingw32-bin.tar.xz gcc-fortran-9.2.0-2-mingw32-bin.tar.xz gcc-fortran-9.2.0-2-mingw32-info.tar.xz gcc-fortran-9.2.0-2-mingw32-man.tar.xz gcc-objc-9.2.0-2-mingw32-bin.tar.xz gmp-6.1.2-3-mingw32-dev.tar.xz gmp-6.1.2-3-mingw32-info.tar.xz gmp-6.1.2-3-mingw32-lic.tar.xz isl-0.21-2-mingw32-dev.tar.xz isl-0.21-2-mingw32-doc.tar.xz isl-0.21-2-mingw32-lic.tar.xz libatomic-9.2.0-2-mingw32-dll-1.tar.xz libcharset-1.14-4-mingw32-dll-1.tar.xz libexpat-2.2.9-1-mingw32-dev.tar.xz libexpat-2.2.9-1-mingw32-dll-1.tar.xz libgcc-9.2.0-2-mingw32-dll-1.tar.xz libgfortran-9.2.0-2-mingw32-dll-5.tar.xz libgmp-6.1.2-3-mingw32-dll-10.tar.xz libgmpxx-6.1.2-3-mingw32-dll-4.tar.xz libgnat-9.2.0-2-mingw32-dll-9.tar.xz libgomp-9.2.0-2-mingw32-dll-1.tar.xz libiconv-1.14-4-mingw32-bin.tar.xz libiconv-1.14-4-mingw32-dev.tar.xz libiconv-1.14-4-mingw32-dll-2.tar.xz libiconv-1.14-4-mingw32-html.tar.xz libiconv-1.14-4-mingw32-lang.tar.xz libiconv-1.14-4-mingw32-lic.tar.xz libiconv-1.14-4-mingw32-man.tar.xz libisl-0.21-2-mingw32-dll-21.tar.xz liblzma-4.999.9beta_20100401-1-msys-1.0.13-dll-1.tar.gz liblzma-5.2.5-2-mingw32-dev.tar.xz liblzma-5.2.5-2-mingw32-dll-5.tar.xz libmingwex-5.4.2-mingw32-dev.tar.xz libmingwex-5.4.2-mingw32-dll-4.tar.xz libmpc-1.1.0-1-mingw32-dll-3.tar.xz libmpfr-4.0.2-1-mingw32-dll-6.tar.xz libncurses-6.2-2-mingw32-dev.tar.xz libncurses-6.2-2-mingw32-dll-6.tar.xz libobjc-9.2.0-2-mingw32-dll-4.tar.xz libpthread-2.8.0-3-mingw32-dll-2.tar.lzma libquadmath-9.2.0-2-mingw32-dll-0.tar.xz libquadmath-9.2.0-2-mingw32-info.tar.xz libssp-9.2.0-2-mingw32-dll-0.tar.xz libstdc++-9.2.0-2-mingw32-dll-6.tar.xz libz-1.2.11-1-mingw32-dev.tar.xz libz-1.2.11-1-mingw32-dll-1.tar.xz mingw-get-0.6.3-mingw32-pre-20170905-1-bin.tar.xz mingw-get-0.6.3-mingw32-pre-20170905-1-gui.tar.xz mingw-get-0.6.3-mingw32-pre-20170905-1-lic.tar.xz mingw-get-setup-0.6.3-mingw32-pre-20170905-1-dll.tar.xz mingw-get-setup-0.6.3-mingw32-pre-20170905-1-xml.tar.xz mingwrt-5.4.2-mingw32-dev.tar.xz mingwrt-5.4.2-mingw32-dll.tar.xz mingwrt-5.4.2-mingw32-lic.tar.xz mingwrt-5.4.2-mingw32-man.tar.xz mpc-1.1.0-1-mingw32-dev.tar.xz mpc-1.1.0-1-mingw32-info.tar.xz mpc-1.1.0-1-mingw32-lic.tar.xz mpfr-4.0.2-1-mingw32-dev.tar.xz mpfr-4.0.2-1-mingw32-doc.tar.xz mpfr-4.0.2-1-mingw32-info.tar.xz mpfr-4.0.2-1-mingw32-lic.tar.xz ncurses-6.2-2-mingw32-bin.tar.xz ncurses-6.2-2-mingw32-doc.tar.xz ncurses-6.2-2-mingw32-lic.tar.xz ncurses-6.2-2-mingw32-man.tar.xz pexports-0.48-mingw32-bin.tar.xz pexports-0.48-mingw32-doc.tar.xz pexports-0.48-mingw32-lic.tar.xz terminfo-6.2-2-mingw32-data.tar.xz w32api-5.4.2-mingw32-dev.tar.xz wsl-features-20190122-1-mingw32-cfg.tar.xz xz-5.2.5-2-mingw32-bin.tar.xz xz-5.2.5-2-mingw32-doc.tar.xz xz-5.2.5-2-mingw32-ext.tar.xz xz-5.2.5-2-mingw32-lang.tar.xz xz-5.2.5-2-mingw32-lic.tar.xz xz-5.2.5-2-mingw32-man.tar.xz zlib-1.2.11-1-mingw32-doc.tar.xz zlib-1.2.11-1-mingw32-lic.tar.xz zlib-1.2.11-1-mingw32-man.tar.xz
- 各パッケージの中には、bin/, include/, lib/ などが入っている。MinGWインストールフォルダの bin/, include/, lib/ にそのまま入れるのだろう。
- *bin* や *dll* が、実行に必要なファイルが入ってるパッケージ。
- *dev* が、そのライブラリを使ってコンパイル作業をする際に必要になるパッケージ。
- *doc* や *man* は、おそらくドキュメント。無くてもなんとかなりそう。
- *lic* は、ライセンス文書。これも無くてもなんとかなりそう。
- *lang* は、多言語対応用のリソースだろうか。英語のメッセージで十分なら無くてもどうにか。
つまり、上記のパッケージファイルをどうにか入手して、解凍して、SourceForge版のファイル群と差し替えてやれば、OSDN版 MinGW 相当になるのではないのかなと…。考えが甘いだろうか…?
◎ ミラーサーバについて :
OSDN版のパッケージは他のサーバでミラーリングしてないのだろうか。ググってみたら、以下のメモに遭遇。ありがたや。
_OSDNのミラーコンテンツ 2023/11/19
日本国内のサーバに限れば、IIJ と JAIST に残ってる可能性があるらしい。ありがたや。これは助かりそう。
_https://ftp.iij.ad.jp/pub/osdn.jp/storage/g/m/mi/mingw/
_https://ftp.jaist.ac.jp/pub/sourceforge.jp/storage/g/m/mi/mingw/
この中から、前述のファイル群を探し出して入手していけば、どうにかなるのかな…。いや、分からんけど…。
でも、探し出すの、どう考えても面倒臭いよな…。どうせ全部で100MBも無いから、 _上記のファイル群をzipにして、 試しに OneDrive に置いてみます。問題があったら削除しますので…。まあ、上記のミラーサーバのディレクトリ内を探していけば全く同じものが入手できるだろうけど。
_OSDNのミラーコンテンツ 2023/11/19
日本国内のサーバに限れば、IIJ と JAIST に残ってる可能性があるらしい。ありがたや。これは助かりそう。
_https://ftp.iij.ad.jp/pub/osdn.jp/storage/g/m/mi/mingw/
_https://ftp.jaist.ac.jp/pub/sourceforge.jp/storage/g/m/mi/mingw/
この中から、前述のファイル群を探し出して入手していけば、どうにかなるのかな…。いや、分からんけど…。
でも、探し出すの、どう考えても面倒臭いよな…。どうせ全部で100MBも無いから、 _上記のファイル群をzipにして、 試しに OneDrive に置いてみます。問題があったら削除しますので…。まあ、上記のミラーサーバのディレクトリ内を探していけば全く同じものが入手できるだろうけど。
◎ MinGW以外の選択肢 :
MinGW が入手できなくなりそうで困ったなと書いてみたけど。今現在、Windows上で gcc/g++ (C/C++コンパイラ) を使いたいなら、MSYS2 を導入するのが妥当な気もする。MSYS2 なら、32bit版のみ対応の MinGW と違って、i686版(32bit版)、x86_64版(64bit) も選べるし。MinGW と比べて、より多くのビルド済みパッケージが用意されていて便利な面もあるし。
_MSYS2
あるいは、そもそも、「Windows上で C++ を使いたい!」なら、Microsoft が公式に用意してくれている Visual Studio Community を利用するのが無難な気もする。個人利用や教育/学術目的なら無料で利用させてもらえるし…。
_Visual Studio Tools のダウンロード - Windows、Mac、Linux 用の無料インストール
自分の場合、gcc/g++ を使って Windows用のスクリーンセーバを作ってみたいと思ってしまったので、スクリーンセーバ用ライブラリ libscrnsave.a が用意されている MinGW にこだわっているけれど。 *1
そんなわけで、「OSDNが死んだら Windows上で無料で利用できる C/C++コンパイラが無くなってしまう!」という状態ではないわけで。
とは言え、「昔は新しいパッケージを利用することもできたけど、今は利用できない」という状況もなんだかなあ、と…。いや、単に新しいパッケージを使いたいだけなら MSYS2 を使えばいいんだろうけど…。
_MSYS2
あるいは、そもそも、「Windows上で C++ を使いたい!」なら、Microsoft が公式に用意してくれている Visual Studio Community を利用するのが無難な気もする。個人利用や教育/学術目的なら無料で利用させてもらえるし…。
_Visual Studio Tools のダウンロード - Windows、Mac、Linux 用の無料インストール
自分の場合、gcc/g++ を使って Windows用のスクリーンセーバを作ってみたいと思ってしまったので、スクリーンセーバ用ライブラリ libscrnsave.a が用意されている MinGW にこだわっているけれど。 *1
- 「スクリーンセーバ? そんなもの作らないよ」と言うことなら MSYS2 で問題無し。むしろ MSYS2 のほうが便利かも。
- 「Microsoft公式の開発ツールを使えば妙なところでハマらなくて済むだろう」「利用者も圧倒的に多いから参考資料も多い」と言うことなら Visual Studio Community を選ばない理由は無いし。
- バージョンが古くてもいいなら、まだ SourceForge版 MinGW が入手できる。というか自分も今現在 SourceForge版 MinGW で作業してるし…。
そんなわけで、「OSDNが死んだら Windows上で無料で利用できる C/C++コンパイラが無くなってしまう!」という状態ではないわけで。
とは言え、「昔は新しいパッケージを利用することもできたけど、今は利用できない」という状況もなんだかなあ、と…。いや、単に新しいパッケージを使いたいだけなら MSYS2 を使えばいいんだろうけど…。
*1: MSYS2 に入ってる libscrnsave.a は中身が空なので…。
[ ツッコむ ]
以上です。