https://github.com/rails/rails/issues/41750
mimemagic 由於授權原因 yanked 了所有現有 0.3.5 以前的版本 使很多大型系統,如 Rails 都不能正常運行 bundle install
new 了一个 project。没问题的啊
* mimemagic (0.3.6)
Summary: Fast mime detection by extension or content
Homepage: https://github.com/minad/mimemagic
Path: /home/dev/.rvm/gems/ruby-2.7.2/gems/mimemagic-0.3.6
是我的姿势不对吗?
是 mimemagic 作者移除了旧版本,他现在只保留了 0.3.6 和 0.4.0,所有用 0.3.0 版本的可能都要更新下
引用了 0.3.6 Rails 会变成 GPL。应用的话我记得 GPL 好像管不到 SaaS,因为 SaaS 没有发行软件就无需发布代码,所以后来出了 AGPL 来限制 SaaS。
https://github.com/rails/rails/issues/41750#issuecomment-805803294 版本 0.3.6、0.4.0 好像没问题
操作上只要系統不是拿來銷售的 GPL 是影響不了的
實際原因是沒有人知道 SaaS 是否在引用別的庫 想管也管不了
然而你拿出來銷售而且客戶收倒源碼 那便有確實的證據你違反了協定
最新的 0.3.7 和 0.4.1 版本暂时解决了污染问题,回归 MIT 了,当然,必须先有一份Freedesktop.org shared-mime-info database,好在很容易获得,Linux 基本都内置了。
这就不得不吐槽下 rails 了,微服务项目中完全没有用到 activestorage, 硬是有这个依赖,这个依赖还依赖别人 gem. 貌似 activestorage 是 5.1 还是 5.2 之后才有的
现在最简单的解决方案是什么呢 0.3.6 没了,装 0.3.7 报错
Downloading mimemagic-0.3.7 revealed dependencies not in the API or the lockfile (nokogiri (~> 1.11.2)).
Either installing with --full-index
or running bundle update mimemagic
should fix the problem.
https://github.com/rails/rails/issues/41750
不得不说,楼主这个 issue 链接里面的评论质量是真的高。
观点一:如果可以由 rubygems 出面解决问题,大家用 docker 的就不用更新版本号了。
观点二:百万美元错误。
(管理员) 观点三:以上观点毫无价值,封评处理。
管理员停止评论的行为是真的不厚道。
现在不用躲避了,新的 mimemagic (0.4.2, 0.3.9) 都是 MIT License 了,社区处理这个问题比那艘船的快多了!
mimemagic 0.4.2 依赖外部库,需要 Linux 和 Mac 安装系统依赖,Window 没有提及(可能不支持)。在 Nokogiri 都提供预编译包的情况下,这对 Rails 安装是个障碍。
Rails 的新解决方案是使用 Apache Tika 的 Mime 数据包。
Rails 5.2.5, 6.0.3.6, 6.1.3.1 更新,去掉了 mimemagic 依赖。
https://weblog.rubyonrails.org/2021/3/26/marcel-upgrade-releases/
CarrierWave 2.2.0 还在依赖 mimemagic
等发布
https://github.com/carrierwaveuploader/carrierwave/pull/2551
$ bundle update rails carrierwave
目前先这么使用
gem 'mimemagic', github: 'mimemagicrb/mimemagic', ref: '01f92d86d15d85cfd0f20dabd025dcbd36a8a60f'