Rails Rails 因為 mimemagic 炸了

Aiken00 · March 25, 2021 · Last by dai123AAA replied at April 03, 2021 · 6202 hits

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

😂 是我的姿势不对吗?

昨天镜像 build 炸了 就是因为这个

Reply to puma

是 mimemagic 作者移除了旧版本,他现在只保留了 0.3.6 和 0.4.0,所有用 0.3.0 版本的可能都要更新下

建议管理员临时置顶该帖 @huacnlee

我还想着怎么没人讨论呢
这个影响蛮大的

Reply to xeruzo

给我个感觉 Ruby 社区好多团队还没用上 docker 部署。不知道是人气不行,还是生产工具普遍落后。🤐

等等,MimeMagic 现在是 GPL 的了,我觉得这个比 build 失败问题更大。

Rails 需要尽快给出替代方案。

所以我的理解是,在修复之前,如果用了 MimeMagic 0.3.6,那么就是违反了 GPL?除非开源并且 GPL 你的代码?

Reply to ericguo

引用了 0.3.6 Rails 会变成 GPL。应用的话我记得 GPL 好像管不到 SaaS,因为 SaaS 没有发行软件就无需发布代码,所以后来出了 AGPL 来限制 SaaS。

我来水图啦

Reply to heroyct

理论上会将你的程序协议变更为 GPL

即需要开源你的程序

会存在一定的协议风险,可能风控不会过

Reply to Rei

操作上只要系統不是拿來銷售的 GPL 是影響不了的

實際原因是沒有人知道 SaaS 是否在引用別的庫 想管也管不了

然而你拿出來銷售而且客戶收倒源碼 那便有確實的證據你違反了協定

最新的 0.3.7 和 0.4.1 版本暂时解决了污染问题,回归 MIT 了,当然,必须先有一份Freedesktop.org shared-mime-info database,好在很容易获得,Linux 基本都内置了。

Reply to ericguo

作者剛把 0.3.6 and 0.4.0 yanked 了

Reply to Aiken00

昨天刚升级到 0.3.6, 今天又要升级,对这个作者芜话可说了 😀

这就不得不吐槽下 rails 了,微服务项目中完全没有用到 activestorage, 硬是有这个依赖,这个依赖还依赖别人 gem. 😀 貌似 activestorage 是 5.1 还是 5.2 之后才有的

Reply to ThxFly

继续吐槽吧~ 😂 刚看到,最新版已经是 0.3.9 了,不过作者好像换人了 不是那个 minad 了。

现在最简单的解决方案是什么呢 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.

Reply to dearest

试试 0.3.9

相同功能可以考虑使用 https://github.com/blackwinter/ruby-filemagic 不过如果是依赖就不好弄了😂

Reply to alex_marmot

另外 rubygems 应该限制已经发布了的版本不能作者删除。明明东西都是从 rubygems 下载的,作者说删就删。😀

Reply to ThxFly

记得好像几年前 nodejs 也出过类似的时候,当时好像搞得 React 啥得都跑不起来。

Reply to alex_marmot

https://github.com/rails/rails/issues/41750

不得不说,楼主这个 issue 链接里面的评论质量是真的高。

观点一:如果可以由 rubygems 出面解决问题,大家用 docker 的就不用更新版本号了。

观点二:百万美元错误。

(管理员) 观点三:以上观点毫无价值,封评处理。 😀

管理员停止评论的行为是真的不厚道。

愚人节都提前开始过了吗

Reply to ThxFly

創建新項目可以以--skip-active-storage避免加載 active-storage

Reply to Aiken00

现在不用躲避了,新的 mimemagic (0.4.2, 0.3.9) 都是 MIT License 了,社区处理这个问题比那艘船的快多了

mimemagic 0.4.2 依赖外部库,需要 Linux 和 Mac 安装系统依赖,Window 没有提及(可能不支持)。在 Nokogiri 都提供预编译包的情况下,这对 Rails 安装是个障碍。

Rails 的新解决方案是使用 Apache Tika 的 Mime 数据包。

https://github.com/rails/marcel/pull/30

https://hackmd.io/@mametter/mimemagic-info-ja 折腾我一下午,在这里找到了解决方式

又炸了

Rails 5.2.5, 6.0.3.6, 6.1.3.1 更新,去掉了 mimemagic 依赖。

https://weblog.rubyonrails.org/2021/3/26/marcel-upgrade-releases/

Have a great day!

炸的前一天晚上,我熬夜到凌晨五点,也没解决这个问题,哎。

CarrierWave 2.2.0 还在依赖 mimemagic

等发布

https://github.com/carrierwaveuploader/carrierwave/pull/2551

$ bundle update rails carrierwave

0.3.10 了。。。。。

目前先这么使用

gem 'mimemagic', github: 'mimemagicrb/mimemagic', ref: '01f92d86d15d85cfd0f20dabd025dcbd36a8a60f'

You need to Sign in before reply, if you don't have an account, please Sign up first.