V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
unclemcz
V2EX  ›  Ubuntu

snap 已经在污染 apt

  •  
  •   unclemcz · 14 天前 · 8427 次点击

    前几天是看到这个新闻: https://news.itsfoss.com/ubuntu-24-04-disappointment/

    心里想不至于吧,Canonical 这么无良了么?

    今天验证了下,握草,真的是这样。

    apt 安装 chromium 的时候,会同时安装 chromium-browser 包和 snap 的 chromium,chromium-browser 是一个马甲,实际是使用 snap 的 chromium 。

    我只能说,Canonical 我日你先人。

     2024-05-03 18-35-55.png  2024-05-03 18-45-42.png

    第 1 条附言  ·  13 天前
    补充一下我在 41 楼的回复:我一点都不反感 snap ,相反,我平时也用 snap ,flatpak ,但我无法接受我输入的是 apt ,实际偷偷摸摸执行的是 snap 。

    我觉得这和 Windows 用户用 360 打系统补丁但红衣偷偷摸摸给你装个 360 浏览器的行为也没有多大区别。
    88 条回复    2024-05-16 18:27:39 +08:00
    jinqzzz
        1
    jinqzzz  
       14 天前   ❤️ 2
    记得 firefox 已经污染很多年了,我 google "news ubuntu firefox snap default" 可以搜到 21 年的结果。还是 Debian 干净一些
    hez2010
        2
    hez2010  
       14 天前
    主要是 snap 如果好用的话那也就算了,就当是类似 app store 一样的玩意也不错。
    然而问题就在于这玩意又慢 bug 又多。
    unclemcz
        3
    unclemcz  
    OP
       14 天前 via Android   ❤️ 1
    @jinqzzz #1 如果不是链接中的新闻,我根本想不到这种操作,平时 apt install 的时候,除非找不到包,否则从不看提醒。谁能想到会有这么不要脸的事发生在 ubuntu 。

    @hez2010 #2 我觉得这么偷偷摸摸的就是问题,用户输入 apt install 亦或 snap install 的时候,预期是不一样的。
    EVANGELIONAir
        4
    EVANGELIONAir  
       14 天前
    22.04 就强推 snap 了,firefox ,vscode 都是
    不是很懂 ubuntu 好用在哪里
    yyzh
        5
    yyzh  
       14 天前   ❤️ 1
    @EVANGELIONAir 易用.例如我输入了一个命令而系统又没有安装相应的程序的话会提示我下一步应该怎么做.而其他系统就直接报错我还得自己上网找对应的包是啥.
    hefish
        6
    hefish  
       14 天前
    啥时候 certbot 能脱离 snap 啊。。
    Jirajine
        7
    Jirajine  
       14 天前
    你不要 snap 那你干嘛用 ubuntu ?
    还是 LTS 通道,LTS 的更新本来就只有安全更新/bugfix 和 backport ,显然不该包括浏览器这种需要一直更新的程序。
    你真的知道 LTS 是干什么的,自己为什么要用 LTS 吗?
    yyzh
        8
    yyzh  
       14 天前 via Android
    @Jirajine ubuntu 最新的 24.04 就只有 lts 这一个版本
    Narcissu5
        9
    Narcissu5  
       14 天前
    @Jirajine 我用 ubuntu 就是习惯使然,毕竟我开始用的时候还没有 snap 这种东西
    cnt2ex
        10
    cnt2ex  
       14 天前   ❤️ 4
    @Jirajine
    不是 LTS 的 ubuntu ,难道 apt 仓库里的 chromium 就不是 snap 的了?
    https://packages.ubuntu.com/mantic/chromium-browser 2310 版本里的 chromium 一样是 snap 版的壳。

    再退一步,用 LTS 的版本就是为了能够长时间不升级,怎么到你这里就成了用 LTS 反而就该用更新的版本了?

    再再退一步,你想某个整体系统长时间不升级,但是某些特定包更新,那也应该给用户自己选择。同时在 apt 仓库里维护一个版本,snap 提供另外一个版本,交给用户自己选择想要哪个版本,而不是强制推 snap 版。
    vincent7245
        11
    vincent7245  
       14 天前
    即使这个原因,我换 Debian 好几年了,世界很清爽
    Jirajine
        12
    Jirajine  
       14 天前   ❤️ 1
    @yyzh #8 @Narcissu5 #9 @cnt2ex #10
    你说对了,LTS 就是为了能够长时间不升级,ubuntu 的稳定版其实也只是不那么长的 lts 。
    所以官方仓库里自然不应该打包 chromium ,因为浏览器是必须要一直升级的程序,无论你通过 snap/第三方仓库等方式安装。
    snap 是专为 ubuntu 的目标用户设计的,如果你发现你很讨厌它,说明你已经不再是 ubuntu 的目标用户了,继续使用 ubuntu 确实是习惯使然。
    wizardyhnr
        13
    wizardyhnr  
       14 天前
    @hefish
    这个不是可以自己 pip 安装么?
    flyqie
        14
    flyqie  
       14 天前   ❤️ 4
    @Jirajine #12

    `所以官方仓库里自然不应该打包 chromium ,因为浏览器是必须要一直升级的程序,无论你通过 snap/第三方仓库等方式安装。`

    应该交给用户选择,因为据我所知有些给终端用户的就是要固定的版本,不需要一直升级,整一套都是内外网隔离的。

    `snap 是专为 ubuntu 的目标用户设计的,如果你发现你很讨厌它,说明你已经不再是 ubuntu 的目标用户了,继续使用 ubuntu 确实是习惯使然。

    你这话总感觉有种爱用不用不用拉到厂商就是爷的感觉,这话也就适合 toC 说说了,toB 。。。
    FrankAdler
        15
    FrankAdler  
       14 天前   ❤️ 6
    @Jirajine 问别人知不知道什么是 LTS 的时候你自己搞明白什么是 LTS 了吗
    FrankAdler
        16
    FrankAdler  
       14 天前
    我已经开始改用 Debian 了,但是 Ubuntu 有 PPA ,很多三方包可以用,挺舍不得的。
    ltkun
        17
    ltkun  
       14 天前 via Android
    2204 以后就弃用 ubuntu 了 当时 firefox 另存不到 home 目录
    cnt2ex
        18
    cnt2ex  
       14 天前 via Android   ❤️ 5
    @Jirajine
    谁告诉你浏览器是必须要一直升级的程序?

    按你这说法,内核还是必须要升级的,服务器还是必须要升级的,或者说操作系统本身就是必须要升级的。所以用 LTS 的结果就是我必须要升级???

    用 LTS 的目的就是不升级,同时还能接收必要的安全更新,这本是 security 源的作用,而不是为了最新的功能不停的升级。

    至于 snap ,canonical 都没敢这么直白的说出专门给 Ubuntu 用,官方的说法都是为了提供跨平台的 Linux 包格式,你是怎么才能说出这话的?
    ysc3839
        19
    ysc3839  
       14 天前 via Android
    @Jirajine 有时候使用 LTS 是迫不得已,比如 NVIDIA 官方就只对 Ubuntu 的 LTS 版本提供驱动
    xtyuns
        20
    xtyuns  
       14 天前
    两年前的文章都提到过这个事情了
    https://cloud.tencent.com/developer/article/2017496
    ExplodingFKL
        21
    ExplodingFKL  
       14 天前   ❤️ 2
    LTS 和浏览器要经常更新并不冲突 ... 只要新版本与当前兼容就行,又不是 libxxx , 而且隔壁 firefox 也有 esr 呢,而且要是 snap 有 flatpak 一半好用都没人骂,闭源后端 + 下载慢且做不了镜像站 + 各种各样的小 bug 还和 docker/podman 不太兼容啥的 .....
    hefish
        22
    hefish  
       14 天前
    @wizardyhnr 这个插件也能用吗,我去研究一下
    debuggerx
        23
    debuggerx  
       14 天前 via Android   ❤️ 1
    @yyzh 你说的这个效果只要安装 command-not-found 这个包就能实现了,并不是只有 ubuntu 可以:
    https://packages.debian.org/bookworm/command-not-found
    https://salsa.debian.org/jak/command-not-found
    https://wiki.ubuntu.com/CommandNotFoundMagic

    类似的,有些发行版或者系统 tab 键补全效果不好,并不是发行版不行,而只是因为没有预装 bash_completion 包,自己装上就好
    shijingshijing
        24
    shijingshijing  
       14 天前   ❤️ 3
    snap 如果只是安静的当一个商店或者安装工具,我能忍。但是他不满足于做这样一个角色,而且要命的是,他这个角色也做不好。其次,snap 还有下面几宗罪:
    1 ,snapd 会在后台运行,占据你的 CPU 和内存资源;
    2 ,snap 会把很多上游 apt 源里面的包,悄咪咪的替换成自己的 snap 包,他自己的那些个安装包一个个都奇大务必,随便一个简单的工具,都大几百 M ,完全不 care 你的磁盘空间;
    3 ,snap 不会主动清理程序的旧版本的 snap 包。
    4 ,你千辛万苦干掉了 snap ,不小心升级了一下,他又回来了。

    最后,给大家分享一个手动清理旧版本的 snap 包的脚本:
    ``` shell
    #!/bin/bash
    # del_old_snap.sh
    # https://superuser.com/a/1330590
    # Removes old revisions of snaps
    # CLOSE ALL SNAPS BEFORE RUNNING THIS set -eu

    snap list --all | awk '/disabled/{print $1, $3}' |
    while read snapname revision; do
    snap remove "$snapname" --revision="$revision"
    done
    ```
    kuanat
        25
    kuanat  
       14 天前   ❤️ 2
    如果你在用 Ubuntu ,同时你又不认可 Canonical 的做法,我建议你考虑一下 Debian ,它是 Ubuntu 的上游发行版。

    Debian 的全称是 Debian GNU/Linux ,如果不清楚什么是 GNU 可以看官方 FAQ https://www.debian.org/doc/manuals/debian-faq/basic-defs.en.html#whatisdebian

    至于原因,我这里引用一下 Richard Stallman 于 1985 年写的 GNU Manifesto 中的一段话 https://www.gnu.org/gnu/manifesto.html

    - Why All Computer Users Will Benefit
    Users will no longer be at the mercy of one programmer or company which owns the sources and is in sole position to make changes.
    just4id
        26
    just4id  
       14 天前 via iPhone   ❤️ 1
    Arch Linux 不香?
    dcsuibian
        27
    dcsuibian  
       14 天前 via Android
    Debian 用户情绪稳定
    huiyifyj
        28
    huiyifyj  
       14 天前
    污染的 ubuntu 的 apt ,不是 debian 就行。
    yolee599
        29
    yolee599  
       14 天前 via Android
    一直不喜欢用 Ubuntu ,感觉很多东西不受自己控制,就很不爽。我喜欢一行一行敲命令,每一个步骤都了然于心
    DefoliationM
        30
    DefoliationM  
       14 天前
    用什么 ubuntu ,自带一堆没用的东西,debian testing 一把梭。
    DeWjjj
        31
    DeWjjj  
       14 天前   ❤️ 1
    我真正跑过 arm 版本的编译各种安装失败,如果没有 snap 给的打包环境。
    arm 系统装上各类软件,就需要大量 debug 。
    snap 有啥不好,帮你做个底层,能接受 docker 受不了 snap 是什么问题?
    jinliming2
        32
    jinliming2  
       14 天前 via iPhone   ❤️ 7
    @DeWjjj #31 试想一下,apt install 某个软件,之前是直接装上这个软件。现在是只提供 docker 镜像,apt install 是先给你装个 docker ,然后自动帮你跑一个 docker pull ,创建的 bin 是个 docker run 的脚本,你再想想能不能接受了。
    snap 和 docker 都有存在的价值,可以接受一个软件同时提供 snap 和 docker 的安装方式,但是不接受的是你改变原本工作正常的 apt 安装的逻辑。
    想用或者需要用 snap 的人自然知道怎么装 snap 版本。
    jiaxinbinggan
        33
    jiaxinbinggan  
       14 天前
    很早就转大便了
    mikewang
        35
    mikewang  
       14 天前
    Ubuntu ✘
    Debian ✔
    holulu
        36
    holulu  
       14 天前
    就因为 snap ,现在本地和服务器都用大便了。
    felixcode
        37
    felixcode  
       14 天前 via Android
    需要什么自己在 debian 基础上配置,不会或不想动手的才考虑 ubuntu 吧
    Paull
        38
    Paull  
       14 天前 via Android   ❤️ 2
    习惯了 ubuntu 的可以试试 linux mint ,这个发形版也不认同 snap ,默认禁用,这是他们的说明: https://linuxmint-user-guide.readthedocs.io/en/latest/snap.html
    Paull
        39
    Paull  
       14 天前 via Android   ❤️ 3
    mint 团队分析得很透彻:
    1. snap 开源,但 snap 仓库闭源且唯一不可更改
    2. snap 仓库不存在上下游,社区和个人都不可以给它打补丁
    3. 悄摸替换用户操作属于后门行为


    第 2 点在微软苹果那不算个事,Canonical 毕竟是个商业公司,已经为开源做了不少贡献了,习惯了开源的用户还是改发行版吧
    Jirajine
        40
    Jirajine  
       14 天前
    @cnt2ex #18 浏览器是 security critical 的,你不会想运行没有安全更新的浏览器访问一个网站直接被 RCE 。
    同时浏览器的复杂度厂商也没有办法一直给你 backport 和安全补丁,除非你让 chromium 自己提供 esr 这种通道。
    用 LTS 的目的就是不升级,所以原则上 LTS 源不打包浏览器合情合理,进了源他就有义务不能升级一直维护 backport 和安全更新。
    unclemcz
        41
    unclemcz  
    OP
       14 天前 via Android   ❤️ 1
    我一点都不反感 snap ,相反,我平时也用 snap ,flatpak ,但我无法接受我输入的是 apt ,实际偷偷摸摸执行的是 snap 。
    largep
        42
    largep  
       14 天前 via Android
    Update Google Chrome
    To make sure you're protected by the latest security updates, Google Chrome can automatically update when a new version of the browser is available on your device. With these updates, you might sometimes notice that your browser looks different.

    https://support.google.com/chrome/answer/95414?hl=en

    现代的浏览器都是自动更新的(说的就是从 chrome 开始玩的),OS 厂商既无意愿也没有能力维护一个所谓的 LTS 版本浏览器
    MaybeRichard
        43
    MaybeRichard  
       13 天前
    炼丹没得选,ubuntu 只能忍着
    williamx
        44
    williamx  
       13 天前
    看了所有的留言,一点都不觉得意外。古往今来,新和旧的冲突一直是这样的。绝大部分的“旧”根本不愿意去了解一丁点“新”。反对 snap 的很多人真的去了解过为什么要有 snap 以及 apt 到底有什么问题吗?他们只是习惯性的抗拒新东西而已,甚至没有意识到他们讨厌的根本不是 snap ,而是 Canonical 的安装和更新政策!

    回到 snap vs apt ,对我而言,就一个点我就很乐意接受 snap (但也可能是最为反对者所不喜的吧):依赖一起打包。

    全局依赖在“远古”硬盘和内存空间受限的时候是不得已的选择,Windows 上所谓的 dll 地狱;但是现在硬盘和内存相对充裕,我更关心方不方便,稳不稳定,安不安全。依赖一起打包虽然增大了安装包,运行时还会增加内存,但是不会受到其他安装包的影响,可以很容易实现:

    * 沙盒,
    * 原子安装和删除,
    * 多版本并存。

    这种趋势并不是 snap 独有,我同样很乐意使用 AppImage ,只是在 Ubuntu 上,snap 有“官方”支持。
    liaojl
        45
    liaojl  
       13 天前 via iPhone
    用 fedora 吧,Linus 都说好
    june4
        46
    june4  
       13 天前
    @cnt2ex 浏览器和内核还是完全不同的,浏览器直面网络,直接受各种安全威胁,Google 也不可能会花力气给所有老版本浏览器打安全补丁,而其它基本组件如内核直接有 lts 版,会给老版本打安全补丁。所以给浏览器这种特殊存在搞滚动更新我是觉得很合理的。
    cyp0633
        47
    cyp0633  
       13 天前
    @Jirajine #40 你说得对,那么 Ubuntu 仓库里的 Firefox 是 ESR DEB 吗?
    cloud107202
        48
    cloud107202  
       13 天前
    snap 这东西就很离谱,我们生产环境有一太负载飙到 40-60 毫无线索,top/ps 也看不出来。把 snap 强制删除就好了
    dayeye2006199
        49
    dayeye2006199  
       13 天前 via Android
    换 debian
    imes
        50
    imes  
       13 天前 via Android
    @williamx 44#
    类似的设计甚至 AppImage ,大家都用的很开心。我们讨厌的不是 canonical 的安装和更新策略,就是单纯的反对 snap 的设计:
    1 只有官方源,没有第三方镜像。canonical 都不考虑为什么会出现 mirror 吗?
    2 一堆/dev/loop 到底有什么意义?有必要吗?没有提升途径吗?
    3 基于 Ubuntu core ,面向 ununtu 的 Linux 开发是吧?
    4 和 unity 一样,想做点什么,但是强行推私有( mir ,你也别躲),关键还一堆现实问题(启动慢,功能支持差)。菜就多练,能力不足还想挣主导权,这是原罪。

    归根结底,还是因为 canonical 是个商业资本公司,它想把 Linux 的一切都捆绑到自己身上。它所做的一切都是赚钱,不是开发 Linux 系统和发展生态。
    jqtmviyu
        51
    jqtmviyu  
       13 天前
    我一直以为 snap 只是在桌面版, 原来服务器版也有呀.

    看了眼 orbstack 虚拟机, 并没有这东西.

    服务器我是用 deian.桌面 arch, 从未被这东西困扰过.
    nicaiwss
        52
    nicaiwss  
       13 天前 via iPhone   ❤️ 1
    @williamx 是的,非常喜欢 mac 和 win 的编译和打包,用最新的编译工具支持老的系统。linux 下面只能打 docker 镜像解决这个问题,蛋疼。
    dingwen07
        53
    dingwen07  
       13 天前
    @jinqzzz #1 Ubuntu 虽然默认安装的 Firefox 是 Snap 的,但是你可以删掉改成 apt 的吧
    @yyzh #5 错误的,Fedora 会提示你该命令需要安装某个包,你回答 Y 就直接给你安装上然后自动运行
    dingwen07
        54
    dingwen07  
       13 天前
    不对啊,OP 这个我查了一下,2019 就开始了
    https://ubuntu.com/blog/chromium-in-ubuntu-deb-to-snap-transition
    yyzh
        55
    yyzh  
       13 天前 via Android
    @dingwen07 fedora 更垃圾,那个 cockpit 居然是预装而且删不掉的,一不小心你的机子就被黑了
    GentsunCheng
        56
    GentsunCheng  
       13 天前 via Android
    @DeWjjj 按照你的意思,直接把 apt 删了得了,然后把 apt 链接到 snap 。
    unclemcz
        57
    unclemcz  
    OP
       13 天前 via Android
    @dingwen07 很惭愧,从 8.04 开始用到 24.04 ,我现在才知道有这个操作。
    cnt2ex
        58
    cnt2ex  
       13 天前
    @Jirajine #40
    安全补丁不是功能性的补丁,不是要求你一直不停的升级到最新版本。浏览器自然也不需要一直升级,而只是在必要的安全漏洞出现时才更新。否则内核也是 security critical 的,你难道想运行一个有提权漏洞的内核,让随便一个普通用户都能随时提权为 root ?各种服务器( sshd/nginx/apache )也是 security critical 的,总不可能一个服务器存在 RCE 随随便便让人黑进来?

    我前面已经说过,LTS 的目的就是保持系统不升级,但依旧接受必要的安全布丁。这些必要的安全补丁是通过 security 源给你推送的(比如 noble-security/jammy-security )。既然 LTS 里带一个 S 当然是指厂商提供支持( Support ),并且还是能维持较长的时间( Long Term ),不然怎么叫 Long Term Support ?
    DeWjjj
        59
    DeWjjj  
       13 天前
    @GentsunCheng 不是我的意思是为什么要排斥一种更稳定的安装形式?
    你缺这点内存?
    12101111
        60
    12101111  
       13 天前   ❤️ 1
    https://www.zhihu.com/question/645196882/answer/3413656682

    Debian/Ubuntu 这种发行版是没有办法追着 chromium 版本升级的,迟早会遇到 gcc 无法编译的新 c++特性。

    想要 apt 装新版本浏览器,最好的方法就是装 Chrome,这个是 Google 自己打包的闭源版本,依赖都是静态链接的。或者用 mozilla 官方出的 Firefox apt 源。
    Hantong
        61
    Hantong  
       13 天前
    所以实在受不了 Canonical 的骚操作就投入 Debian 的怀抱吧.jpg, 特别是生产环境给服务器用的, Debian 干净多了, 要高级支持不如 RedHat 系列.

    虽然日用 Debian 就一毛坯房, 啥都得得自己装修, 最近从 Windows 切换过来还蛮不习惯的.
    adoal
        62
    adoal  
       13 天前
    Cannnical 历史上搞 upstart 搞 unity 最终都坚持不下去了……目测 snap 也火不起来。
    Jirajine
        63
    Jirajine  
       13 天前
    @cnt2ex #58 你要知道大部分的安全漏洞根本没有 CVE ,也不会被 backport 。一个普通用户能提权到 root 的内核,危险性跟一个需要 jit (违反 w^x )执行任意代码的浏览器根本不是一个量级的。同理 sshd 这些 network facing 的应用同样也是 security critical 。
    不同于内核,浏览器的复杂度和攻击面摆在那里,你的 lts 厂商没有不能长期的为其维护 backport 和安全补丁,自然就不应该包含在 lts 的仓库中。
    shijingshijing
        64
    shijingshijing  
       13 天前
    @dingwen07 你试过卸载 snap 就知道这玩意儿有多流氓了,堪比 360 和 windows update 。

    删了之后,你 apt 装了个被重定向(劫持)为 snap 安装的软件之后,snap 他又回来了(像楼主提到的 chromium )
    你升级下系统,snap 他又回来了。

    最搞笑的很多人为了省系统资源、图稳定装的是 Ubuntu Server ,这个 snap 也会给你装上。需要 snap 的场景很多都是那种 apt 里面没有的桌面应用,比如 7zip ,我上 Ubuntu Server 都不要图形界面了,你还给我弄一个 snap ,我真的谢谢 Canonical 。
    shijingshijing
        65
    shijingshijing  
       13 天前
    @Jirajine 其实我想说的是,滚动升级没毛病,安全漏洞肯定要修,但是还需要考虑一个问题,真的需要引入一个 snap 么?应用程序有漏洞,snap 就没有漏洞了吗?而且 snap 的权限可比应用程序高多了,snap 本身也很复杂,安装之后不仅有 snap 本身,还有 bare, core, snap-store 等等一堆东西,这些东西为了兼容应用程序还保留着不同的版本(我机器上就有 core18, core20, core22 ),此外还给你挂载一堆/dev/loop ,这些难道不是进一波扩大了攻击面么? Canonical 能保证这些都没有漏洞么?
    按照最小必须原则,snap 就不该存在,好一点的做法还是 Google 给 chrome 自建 apt 源的做法;要沙盒也是 AppImage 这种。
    cnt2ex
        66
    cnt2ex  
       13 天前   ❤️ 1
    @Jirajine #63
    我不知道我需要说多少遍,安全更新不是功能更新,你偏要把二者混淆。
    backports 和 security 也是两个东西。https://help.ubuntu.com/community/UbuntuBackports ,backports 的目的是给旧版的 ubuntu 提供新版的包,而不在与修复其中的安全漏洞。

    我根本不知道你口中所谓的“大部分的安全漏洞根本没有 CVE”这句结论怎么来的。如果一个漏洞或者 bug 根本不重要,那么没有 CVE 也很正常。但如果是严重的漏洞,肯定会有 CVE 。而不重要的 bug fix 不会作为安全更新被推送也正常。

    # 12:
    > 因为浏览器是必须要一直升级的程序

    # 40:
    > 浏览器是 security critical 的,你不会想运行没有安全更新的浏览器访问一个网站直接被 RCE 。

    我再重复一边,一个包我需要安全更新,不代表我需要一直保持到最新版本。一个包 5.1.0 的版本存在严重安全漏洞,我只需要 5.1.1 的版本,或者是 5.2.x 的版本修复这个漏洞,不代表我就一定要更新到 6.8.1 。
    e3c78a97e0f8
        67
    e3c78a97e0f8  
       13 天前 via iPhone
    snap 软件启动速度忒慢了,以后不用 Ubuntu 了
    busier
        68
    busier  
       13 天前
    用个毛线的 chromium-browser

    直接用 firefox 官网下载的 .tar.gz 发行的版本不就完了,系统自带的 snap 版本视而不见~
    satoru
        69
    satoru  
       13 天前
    有一次需要打个 snap 包,测试过程中遇到个错误,在系统里找了对应的 Python 脚本读了下源码,那源码质量真是一言难尽,要是只看官网我还以为是多成熟的包管理系统 ……
    yyzh
        70
    yyzh  
       13 天前 via Android
    @shijingshijing 对于 chrome 一直都是由 google 自建 apt/dnf 源维护,但是看楼主好像是想装 chromium
    Jirajine
        71
    Jirajine  
       13 天前
    @cnt2ex #66 backport 是指把上游更新的代码中部分(需要的功能、bug 修复、安全漏洞修复)移植到旧版而不破坏兼容性。给旧版系统提供新版的包,只是其中一种。
    大部分漏洞并不是严重的安全漏洞,甚至没有被认作为安全漏洞就被当作一般的 bug 修了,这些漏洞是不会收到 cve 的。

    不知道你要强调的是什么,上面说的很清楚了,浏览器作为足够复杂和足够大攻击面的应用,os 厂商既没有能力也没有意愿为你提供 long term 的安全更新。所以你要安全更新,就只能一直升级到新版,并且不应该被包含在 lts 的 repo 里。
    @shijingshijing #65 你说的是两个不同的问题。浏览器不适合包含在 lts 源里,但 ubuntu 推荐你用什么方式去安装最新版的浏览器就是另一回事了。还是那句话,如果你发现你不喜欢 snap ,那你真的确实不适合用 ubuntu ,snap 是给特定的目标群体设计的,ubuntu 这个发行版也是只适合这个群体。snap 不是容器,它的设计有它的 trade off ,比如 snap 可以一键安装 k3s ,并非 linux 用户但工作中需要操作 linux 服务器的开发和运维人员非常喜欢这种功能。
    brookegas
        72
    brookegas  
       13 天前
    因为安装 vps 要使用 certbot 自动更新证书,结果发现新版的 certbot 强制要 snapd

    You'll need to install snapd and make sure you follow any instructions to enable classic snap support.
    Follow these instructions on snapcraft's site to install snapd.

    一开始没在意,就按它的要求安装了 snapd ,然后就看它花花地下载一堆各类依赖项
    因为是个小机,对空间占用有点敏感,所以安装完以后 df -lh 一看,硬盘空间少了 2G

    我只要定期更新下证书而已,可你到底干了些什么?!真是一坨大便啊!

    赶紧卸载了
    shijingshijing
        73
    shijingshijing  
       13 天前
    @Jirajine
    >你说的是两个不同的问题。

    你看到的是浏览器的漏洞问题和 snap 的漏洞问题,我认为这本质是一个问题,用户使用安全的问题。snap 的做法更像是为了解决一个问题,引入了一堆更糟糕的东西,似乎是解决了最初的问题,但对用户来说代价却很大:
    1 ,snap 的包闭源,自己即使发现问题也无法手动去修;
    2 ,snap 本身可能带来更多的问题;
    3 ,即使前面的都 OK ,snap 本身占用大量不必要的资源,严重影响了用户正常使用;
    4 ,即使真的发生严重的问题,我相信上游发布更新绝对会优先考虑 apt, rpm 这种影响力更大的源,snap 不仅时效性差,而且掌握在 Canonical 一家手里,什么时候更新得看 Canonical 的心情,所以真的出了问题,我觉得 snap 可能对用户损失更大。

    >snap 是给特定的目标群体设计的,ubuntu 这个发行版也是只适合这个群体。

    我倒觉得 snap 不是给什么群体设计的,是纯粹出于 Canonical 的商业目的设计的,snap 没有吸收开源社区里面一些优秀的案例,出发点本身就是 Canonical 的商业利益,所以没有所谓的适合这个群体,反倒是伤害了整个社区。
    adoal
        74
    adoal  
       13 天前
    @cnt2ex 他说的 backport 看来是作为一个通用词,不是说指 deb 系发行版里的`backports`这个 repo

    不过“一个包 5.1.0 的版本存在严重安全漏洞,我只需要 5.1.1 的版本,或者是 5.2.x 的版本修复这个漏洞,不代表我就一定要更新到 6.8.1”这事不一定可行。虽然大部分基础设施类软件的上游一般都会在受支持的版本里仍然提供 critical fix ,但有一种情况,可能 distro 里打包的随着时间已经不受上游支持了,那就只能 distro 自己 backport 了;还有一种情况就是像 chromium 这样,上游一直在 rolling ,并不会维护特定的 LTS 版本,要安全补丁只能跟着更新,而且代码量又巨大,distro 做不来 backport 的。
    huyanprc
        75
    huyanprc  
       13 天前
    还是回归 debian 的好。
    Paull
        76
    Paull  
       13 天前 via Android
    fedora 就用了两套包管理系统,dnf 和 flatpak ,其中 flatpak 有自己维护的源,也可以切换至 flathub
    Paull
        77
    Paull  
       13 天前 via Android   ❤️ 1
    开源世界我们拥有的就是选择的自由,可以用社区维护的,也可以自己参与维护,snap 本身好不好用是一回事,但是它破坏了用户的选择权,所以换发行版😏,或者学习 mint 的做法
    Jirajine
        78
    Jirajine  
       13 天前
    @shijingshijing #73 snap 不是为了解决这个问题,浏览器不能被包含到主 repo 里,也可以通过其他 repo 安装,并且打包所有不兼容的依赖库,只是 ubuntu (作为一个 preconfigured 发行版)希望你使用 snap 的方式来安装而已。
    snap 客户端是开源的,协议是开放的,也支持 sideload ,没有第三方源只是没人有兴趣部署。
    snap 不是容器,你看到的这些缺点不是因为 canonical 技术垃圾,而是因为它的 trade off 不不同。
    snap 当然是出于商业目的设计的,docker/podman/flatpak/flathub 这些也一样。
    对于不了解也不关心系统是怎么运行的用户,ubuntu/snap 这一套代替他们喜欢的一键脚本和宝塔面板,提供的用户体验是独有的。当你不再是 ubuntu 的目标用户后而习惯使然接着使用 ubuntu ,自然会感觉哪哪都不好用。
    mayli
        79
    mayli  
       13 天前 via Android
    @Jirajine 我觉得这是 snap 这种类似于绿色软件的打包办法,比起 deb 的方案对于某些用户友好很多,就不容易装新软件出现一堆库冲突。
    而且像复杂的软件,比如 lxd 和浏览器, 也能包进来,用户体验类似 apk 这种 allinone 的软件包,比起装个 chrome 还要一万个依赖,体验好一些。
    cnt2ex
        80
    cnt2ex  
       13 天前
    @Jirajine #71
    @adoal #74
    我觉得我说的已经很直白了,因为 @Jirajine 通过强调浏览器有多么多么 security critical ,从而得出"浏览器需要不停升级"这个结论,所以我说他把安全更新和其他功能性更新混在一起。我也举了例子了,如果一个包 在 5.1.0 版本 存在严重的 security 漏洞,那么我只需要更新到任意一个没有这个严重漏洞的版本,从而停止继续升级,而不需要继续升级到 6.8.1 ,更不需要再未来出了 7.0 的版本继续升级。

    看到了吗?我在 5.1.0 升级到 5.1.1 以后已经修复了严重的安全漏洞,我就已经停止更新了,这意味着不需要继续升级了。
    我已经停了,可能你们还没看到我停在这里,我举下手✋,看到没,我停下来了。here here ,I am at 5.1.1 now.

    总结上面的,说明 security critical 这一点,根本无法作为一个包"必须要一直升级的程序"的理由。这也是我举其他几个软件的原因(内核,各种服务器)。

    现在知道我说的什么意思了吗?
    adoal
        81
    adoal  
       13 天前
    @cnt2ex 我对你和 @Jirajine 的整个话题没有参与讨论的欲望,他说的因为 security critical 而一直升级的合理性我也不帮他辩护(事实上我也不同意)。

    只是针对你说的“一个包 5.1.0 的版本存在严重安全漏洞,我只需要 5.1.1 的版本,或者是 5.2.x 的版本修复这个漏洞,不代表我就一定要更新到 6.8.1”这段。

    你认为 5.1.0 有严重 security 漏洞,你升到 5.1.1 修复了,就不需要继续升级了。但如果上游的浏览器开发团队坚持 rolling 发布,过时的版本哪怕安全漏洞也不修,想要解决安全问题就要跟着它升到很信的版本呢?如果 5.1.0 里的某个严重安全漏洞过了很久才被人发现,这时上游发布的版本已经是 5.2.x 甚至 6.8.x 了,它只会在 6.8.x branch 里修这个漏洞,已经不管 5.2.x 了,你还想要一个 5.1.1 ,跟谁去要呢?浏览器团队已经不管这事了。那只能 distro 软对来做 backport……然后这么大一个软件,并不能指望 distro 团队的力量跟的上,即使能力有,也不能指望人家愿意往这上面投精力,毕竟这个“特定的”浏览器没有那么刚需,人家还有肯出 ESR 版的保底浏览器呢。

    再重申一边,我不支持 @Jirajine 的观点。我同意你举的例子,很多服务器基础设施软件的安全更新行为足以证明“security critical 这一点,根本无法作为一个包"必须要一直升级的程序"的理由”。但是,回到某个“特定的”浏览器这事,人家上游怎么发版,是人家自己说了算的,人家就是要 rolling ,就是不管旧版本的 branch ,那么对这个“特定的”软件的“security critical”保障,那就只能靠追新来解决。说到底是 symver point release 的 distro 跟 rolling release 的应用程序之间维护方式的矛盾,只是个特例,咱们拿具体程序来讨论的时候就是说的这个特例。
    Jirajine
        82
    Jirajine  
       13 天前
    @cnt2ex #80 @adoal #81
    我不知道哪条回复让你们得出“所有 security critical 的程序都必须要一直升级”的含义。
    我说的是浏览器必须要一直升级,因为:
    1. 浏览器是 security critical 的。
    2. 浏览器的攻击面巨大( jit 需要违背 w^x )。
    3. 浏览器的复杂度非常高。
    4. 大部分安全漏洞不会收到 cve ,也不会被 backport 。
    5. 基于以上原因,无论浏览器开发商还是 os 厂商都没有办法长期可靠的 backport 所有安全更新并维护旧版本,尤其是 10 年起步的 lts 更是几乎不可能。
    因此,浏览器必须要一直升级,独立于 lts 的仓库以外,无法像其他程序(内核/sshd )一样收到 lts 的支持。
    现在知道我说的什么意思了吗?
    adoal
        83
    adoal  
       13 天前
    晕,两头挨怼。我还是匿了吧。
    cnt2ex
        84
    cnt2ex  
       13 天前
    @Jirajine #82
    真无语,看来我说的又没有让你理解。

    怎么又回到了之前的原点呢,我说了,需要安全更新不代表需要一直升级。

    我前面的例子已经说过了,我已经在 5.1.1 停了,没继续往 6.8.x 版本继续升级了,你知道了吗?看到了吗? 5.1.1 ,不是 6.8.x 。不过我估计你还是没看到。

    你要是还不理解我说的什么意思的话,估计之后你也无法理解了。
    AstroProfundis
        85
    AstroProfundis  
       13 天前
    @cnt2ex 他想说发行版的打包者没有能力跟上浏览器上游的更新速度,会导致 backport 不及时

    我的评价是:这个能力恰恰是发行版搞 LTS 的原因,以及一些厂家拿来卖钱的地方,如果不信任这种能力那就不要用 LTS 直接来愉快地滚 Arch 好了,也犯不上用这种自带一大坨专用依赖的包(
    cybort
        86
    cybort  
       12 天前 via Android
    @jinliming2 Ubuntu 的大部分用户并不想这样或者没有精力这样折腾,需要作为默认的行为提供使用便利。
    ch3n9w
        87
    ch3n9w  
       11 天前
    @Jirajine LTS 不能提供常用软件的安全更新, 不是软件的问题, 就是厂商问题, 别扯什么复杂不复杂, 写一个自动化脚本更新很难吗?
    xing2387
        88
    xing2387  
       1 天前
    chromium 很久很久前就用 snap 了,比 ubuntu 自带的 firefox 还早,我就换了用 chrome 。我宁愿用 edge 也不要 snap !
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1270 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:46 · PVG 07:46 · LAX 16:46 · JFK 19:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.