mimemagic問題についての情報を集めていく場所
以下追記です。
5.2.5
, 6.0.3.6
, 6.1.3.1
で対応済
Rails これらのリリースでmimemagicが他のライブラリ(Apache Tika)に置き換えられたため特に対応が不要となりました。
carrierwaveも2.2.1で対応済み
これで使用者の多いGemではmimemagic問題が解決されたと思われます。
mimemagic の件でruby界隈が混乱していますね。このスクラップはそのへんの情報をまとめたいと思ってます。
注意
- 2021/03/26時点では色々と動きが激しいです。ここに書いてある情報をそのまま参考にはせず、最新の情報か確かめるようにしてください。
- 推測を含んだコメントを投稿するかもしれません。誤りや補足があれば返信コメントをどうぞ。
mimemagic の何が問題だったのか
この部分はすでに多くの人がツイートや記事にしていると思うので、軽くまとめておきます。
- mimemagic というMIMEタイプを検出するライブラリ(gem)がもともとMITライセンスで公開されていた。
- しかし mimemagic に含まれていた
freedesktop.org.xml
のライセンスがGPLだと発覚。 - GPLのライブラリに依存している場合、それを使っているライブラリはMITライセンスで配布できなかったりする(このあたりはMITとGPLライセンス?とかを読んでもらえば)
- Rails や Carrierwave といった人気のライブラリが mimemagic に依存していたため影響範囲がとんでもなく大きい。
なぜこれまで気づかれなかったのか
- mimemagic が
freedesktop.org.xml
をソースコードの一部として配置していたから、というのはありそう。機械的に判断しようがない。画像はv0.3.5の時点のもの。
- 2016年から全く更新されていなかったから中身まで見る人が少なかった(?)
mimemagicの新バージョンリリースと旧バージョンの配布停止
- 上記の問題を解決するためにmimemagic
v0.3.6
にてMITからGPLへとライセンスが変更される- それ以下のバージョンはyanked(配布停止)されてダウンロードできなくなった。
- この時点ではライセンスが変更されただけだったので、自分が担当するプロジェクトがGPLライセンスで良いならmimemagicを
v0.3.5
からv0.3.6
にアップデートするだけで良かった。
- その後すぐに
v0.3.7
がリリース。これが「freedesktop.org.xml
を除くことでMITに戻す」という破壊的な変更を含むものだった。しかもv0.3.6
もyankedされてしまいダウンロードできなくなった。- →
freedesktop.org.xml
の部分は自分で用意しなければならなくなった。
- →
- その後もこまめにパッチバージョンがリリースされる。
現状の対処法
2021/03/26時点の話です。GPLでも問題のないプロジェクトは以下のように対処すれば良さそうですが、MITでなければならないような場合はどうしようも無さそう?
shared-mime-info
が使用できる環境を整えたうえでmimemagicをアップデート
選択肢1. これを書いている時点で最新の mimemagic バージョンv0.3.9
ではGPLであるfreedesktop.org.xml
が既に含まれなくなっているため自分で用意する必要があります。freedesktop.org.xml
はshared-mime-info
というパッケージに含まれています。
Linuxではshared-mime-info
が既にインストールされているようです(この認識は合っている?)。Macならbrew install shared-mime-info
でインストールする必要があります。
もしくはfreedesktop.org.xml
(ソース)だけをプロジェクト内のどこかのディレクトリに配置して環境変数ENV["FREEDESKTOP_MIME_TYPES_PATH"]
でそのファイルのパスを指定することもできるようです。
詳しくはソースコードを見てもらうのが早そうです。
※ 注意点はmimemagic
(v0.3.9)はMITでも、shared-mime-info
はGPLということです。
そのうえでbundle update mimemagic
でgemをアップデートすれば動くようになります。
選択肢2. RailsのActiveStorageを使わないようにする
詳しくはRailsユーザーはどうすればいい?- mimemagicの最新動向 - HackMDが参考になりそうです。
今後のRailsの対応
追記:対応されました
メンテナのpixeltrixさんのコメントによるとmimemagicを使わないように修正されることになりそうです。
...略...
we're planning to release a fix this week based upon a database of file signatures licensed under the Apache 2.0 license
...略...
↓ こちらのIssueでワークアラウンド的な対処法などが議論されています。
↓ Rails自体の対応としてはこちらのIssueに続報が投稿されるのではないかと予想しています(コメントは既にロックされています)。