Rails Rails 因為 mimemagic 炸了

Aiken00 · 2021年03月25日 · 最后由 dai123AAA 回复于 2021年04月03日 · 6359 次阅读

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 炸了 就是因为这个

puma #0 回复

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

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

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

xeruzo #4 回复

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

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

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

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

ericguo #8 回复

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

heroyct #12 回复

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

即需要开源你的程序

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

Rei #9 回复

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

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

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

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

ericguo #15 回复

作者剛把 0.3.6 and 0.4.0 yanked 了

Aiken00 #16 回复

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

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

ThxFly #17 回复

继续吐槽吧~ 😂 刚看到,最新版已经是 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.

dearest #20 回复

试试 0.3.9

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

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

ThxFly #23 回复

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

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

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

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

观点二:百万美元错误。

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

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

愚人节都提前开始过了吗

ThxFly #18 回复

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

Aiken00 #27 回复

现在不用躲避了,新的 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'

需要 登录 后方可回复, 如果你还没有账号请 注册新账号