Better Deepin Repo:给 deepin 25 补一口“新硬件快乐水”

Better Deepin Repo:给 deepin 25 补一口“新硬件快乐水”

deepin 25 用起来已经挺完整了,但只要机器稍微新一点,或者你平时爱折腾显卡、Waydroid、Podman、Rust、LLVM 这些东西,就会发现官方源有些地方还是偏稳。

稳当然是好事。系统源太激进,桌面环境容易翻车;但反过来,版本卡得太死,新硬件、新工具链、新容器生态又会受影响。

最近我看了一下 Better Deepin Repo,感觉它刚好就是冲着这个问题来的:不去替代 deepin 官方源,也不是做一个“应用商店”,而是给 deepin 25 补一批额外软件和新一点的底层依赖。

项目页上写得很直白:这是一个“加入了一些额外软件并升级了部分依赖的 deepin 源”,目标仓库是 Deepin_25,APT 源地址为 https://obsci.odata.cc/Better-Deepin-REPO/Deepin_25/,页面显示目前有 212 个包,同时还有少量构建错误。(Open Build Service)

项目地址:

https://obs22.odata.cc/project/show/Better-Deepin-REPO

作者在 deepin 论坛里也说了,这个源的出发点主要是解决 deepin v25 在非信创机器上被部分版本限制拖住的问题,尤其是 Mesa3D、Rust、LLVM、Waydroid 这些包。(Deepin社区)

先把提醒写在前面:这个源不要和 deepin 的 HWE 硬件增强源一起用,二选一。 作者在论坛原帖里就是这么提醒的。(Deepin社区)

它不是星火,也不是乱混源

很多人一看到第三方源,第一反应可能是“是不是类似星火应用商店”。我觉得这个理解不太准。

Better Deepin Repo 更像是 deepin 25 的增强源。它不是拿别的发行版二进制包直接混进来,而是在 deepin v25 的标准 chroot 环境里构建。作者在论坛里也提到,这个源构建的软件完全基于 deepin v25 环境,不保证其他发行版可用。(Deepin社区)

背后的构建系统是 OBS。Open Build Service 本身就是用来从源码自动、一致、可复现地构建和分发 Linux 二进制包的系统,所以拿它来维护这种增强源是比较合适的。(Open Build Service)

更准确地说,它补的是这些东西:

新显卡驱动栈
Intel 视频硬解/硬编
Rust / LLVM / GCC 等开发工具链
SPIR-V / Vulkan / OpenCL 相关组件
Waydroid
Podman 容器网络相关组件
一些开发者常用库和小工具

所以这不是“装完多几个软件图标”的源,而是那种你不一定每天看见它,但它会影响桌面流畅度、硬件支持、编译环境、容器体验的源。

1. Mesa3D:新显卡用户最该看的部分

Better Deepin Repo 里最值得关注的,第一肯定是 Mesa3D。

Mesa 官方介绍里写得很清楚,它提供 OpenGL、OpenGL ES、Vulkan、OpenCL 等开源实现。(Mesa 3D Graphics Library) 这东西平时没什么存在感,但它直接影响 Intel、AMD 开源显卡驱动的 3D 渲染、桌面合成、游戏、Vulkan、部分 OpenCL 场景。

作者在论坛里举的例子也很典型:deepin v25 的 Mesa3D 版本受限制时,对 AMD Radeon RX 9000 系、Intel Arc、酷睿 Ultra 二代及以上核显这类新硬件可能不够友好。Better Deepin Repo 的目标之一,就是把 Mesa 这类必要组件尽量往 Debian Sid 对齐。(Deepin社区)

对普通用户来说,Mesa 更新后最容易感知的是桌面动画、窗口拖动、浏览器渲染、视频页面、游戏启动、Wine / Proton 这类场景。论坛里也有人反馈更新 Mesa 后 deepin 流畅度好很多,虽然这类体验肯定因机器而异,但至少说明它不是纸面升级。(Deepin社区)

可以重点看这些包:

apt policy mesa-vulkan-drivers
apt policy libgl1-mesa-dri
apt policy libegl-mesa0
apt policy libglx-mesa0
apt policy libgbm1
apt policy mesa-utils
apt policy vulkan-tools

想看 OpenGL 版本,可以装 mesa-utils 后跑:

glxinfo | grep "OpenGL version"

想测 Vulkan,可以用:

vkcube

如果你是 AMD 新显卡、Intel Arc、新核显用户,这块值得重点关注。

2. libdrm:图形栈下面那层地基

Mesa 往上走是 OpenGL、Vulkan,往下走就绕不开 libdrm

libdrm 是用户态访问 Linux 内核 DRM 服务的接口库,Debian 对 libdrm-dev 的描述也提到,它实现了用户态到 kernel DRM services 的接口,而 DRI 会被 Linux 上的硬件加速 OpenGL 驱动使用。(Debian Packages)

这东西普通用户一般不会主动装,但 Mesa、X、Wayland、libva、显卡驱动栈都会跟它打交道。作者在论坛里说 Better Deepin Repo 将 libdrm 用户态接口更新到 2.4.131,这就说明它不是只拉高 Mesa,而是连下层图形接口也一起补。(Deepin社区)

可以看这些包:

apt policy libdrm2
apt policy libdrm-amdgpu1
apt policy libdrm-intel1
apt policy libdrm-radeon1
apt policy libdrm-dev

这类包别乱删,别为了“清理系统”乱动。显卡栈就是这样,平时像空气,出问题的时候才知道它重要。

3. Intel 视频硬解:intel-media-va-driver 不能漏

前面说 Mesa,主要是图形渲染这条线。但 Intel 用户还有另一条非常重要的线:视频硬解和硬编

这块最该看的就是:

intel-media-va-driver
intel-media-va-driver-non-free
intel-gmmlib
libva2
libva-drm2
libva-wayland2
vainfo

intel-media-va-driver 对应的是 Intel Media Driver for VAAPI。Intel 的仓库介绍里写得很明确:它是 Intel GEN 图形硬件的 VA-API 用户态媒体驱动,支持硬件加速的视频解码、编码和视频后处理。(GitHub)

这类包不像浏览器、播放器那样有图标,但影响非常实在。版本不合适的时候,可能会出现这些情况:

浏览器看高清视频 CPU 占用高
mpv / VLC 开不了 VA-API
OBS 找不到 Intel 硬编
FFmpeg 的 h264_vaapi / hevc_vaapi / av1_vaapi 不好用
Jellyfin / Emby / Plex 这类转码场景吃 CPU
笔记本看视频风扇乱转

尤其是 Intel Arc、Meteor Lake、Alder Lake-N、Raptor Lake、后续新核显这类平台,媒体驱动不只是“能不能播放视频”的问题,还关系到 AV1、HEVC、VP9、低功耗编码、视频后处理这些东西。Intel Media Driver 的说明里也列出了 Broadwell、Skylake、Tiger Lake、Alder Lake、DG1、DG2、Meteor Lake 等平台支持信息。(GitHub)

这块我建议单独拎出来写,因为它和 Mesa 不是一回事:

Mesa:管 OpenGL / Vulkan / OpenCL 这些图形接口
intel-media-va-driver:管 VA-API 视频解码、编码、后处理

安装后可以这样检查:

apt policy intel-media-va-driver
apt policy intel-media-va-driver-non-free
apt policy intel-gmmlib
apt policy libva2
apt policy vainfo

看 VA-API 是否正常:

vainfo

如果默认没识别 Intel iHD,也可以临时指定:

LIBVA_DRIVER_NAME=iHD vainfo

FFmpeg 这边可以看硬件加速接口:

ffmpeg -hide_banner -hwaccels

mpv 播放时可以试:

mpv --hwdec=vaapi video.mp4

对 Intel 核显笔记本来说,这块的意义甚至比游戏性能还大。看视频更省电,录屏更轻,转码也不至于把 CPU 打满。

4. Rust / Cargo:不只是给开发者写代码用

很多人看到 Rust 第一反应是:我又不写 Rust,跟我有什么关系?

放在这个源里,Rust 不是单纯给你写项目用的。作者在论坛回帖里解释过,源里的 Rust 编译器是为了配合其他依赖 Rust 的源内项目,比如 Mesa3D;OBS 构建为了保证环境一致性是离线的,Mesa3D 的 Debian 构建规则也要求离线,所以更新系统 Rust 库是有必要的。(Deepin社区)

Rust 官方介绍里也强调了它的几个特点:没有运行时和垃圾回收,强调性能与内存效率;它的类型系统和所有权模型可以在编译期保证内存安全和线程安全。(Rust编程语言)

Better Deepin Repo 的 GitHub 组织里也能看到 rustc-deepinrust-rustls-deepinrust-bindgen-cli-deepin 等仓库。(GitHub)

可以看这些包:

apt policy rustc
apt policy cargo
apt policy rust-bindgen
apt policy rust-bindgen-cli

版本检查:

rustc --version
cargo --version

如果你只是自己写 Rust 项目,当然也可以用 rustup;但如果你关心系统源构建、Mesa、Netavark、Aardvark DNS、rustls 这些依赖 Rust 的包,那系统 Rust 版本就很关键。

5. LLVM / Clang:图形栈和编译环境都绕不开

LLVM 这条线也很重要。

LLVM 官方把它定义为一套模块化、可复用的编译器和工具链技术,里面包括 LLVM Core、Clang、LLDB、libc++、compiler-rt、LLD 等多个子项目。(LLVM)

Better Deepin Repo 这里补 LLVM,不只是为了让开发者有新编译器。Mesa、SPIR-V、OpenCL、Rust 工具链、AMDGPU 相关工具都可能会牵涉到 LLVM。

论坛原帖里提到,deepin 的 LLVM 版本相对保守,而这个源里 llvm、amdgcn-tools、spirv-tools、spirv-llvm-translator 会更新到与 LLVM-21 对齐的版本。(Deepin社区) GitHub 组织里也能看到 deepin-llvm-21deepin-llvm-22。(GitHub)

可以看:

apt policy llvm
apt policy clang
apt policy lld
apt policy lldb
apt search llvm-21
apt search llvm-22
apt search clang-21
apt search clang-22

对开发者来说,这块影响编译器新特性、优化能力和工具链完整度。对桌面用户来说,它更多是间接影响 Mesa、图形栈和一些依赖新 LLVM 的软件包。

6. SPIR-V Tools / SPIR-V LLVM Translator:Vulkan、OpenCL 背后的工具

这两个名字看着有点硬核,但它们在图形栈里挺关键。

SPIRV-Tools 是 Khronos Group 维护的工具集,提供处理 SPIR-V 模块的 API 和命令,包括 assembler、parser、disassembler、validator、optimizer 等。(GitHub)

SPIRV-LLVM-Translator 则是 LLVM IR 和 SPIR-V 之间做双向转换的库和工具。(GitHub)

Better Deepin Repo 组织里有 spirv-tools-deepinspirv-llvm-translator-21-deepinspirv-llvm-translator-22-deepin 这些仓库。(GitHub)

可以看:

apt policy spirv-tools
apt policy spirv-llvm-translator
apt search spirv

这类包对普通用户不显眼,但对 Vulkan、OpenCL、Mesa、着色器工具链来说,版本对齐很有意义。

7. Waydroid:在 deepin 上跑 Android 应用

Waydroid 是普通用户比较容易感兴趣的一块。

它不是传统安卓模拟器,而是用容器方式在 GNU/Linux 系统上启动一个完整 Android 系统。Waydroid 官网介绍说,它是基于容器的方法,在 Wayland 桌面环境中启动完整 Android 系统;它使用 Linux namespaces、LXC 和 binder 接口来运行 Android 容器。(Waydroid)

作者在论坛里提到,Better Deepin Repo 里的 Waydroid 更新到 1.6.2,建议在 treeland 环境下使用,同时国产显卡和 NVIDIA 显卡无法使用。(Deepin社区)

可以看:

apt policy waydroid
sudo apt install waydroid

装完后一般还要初始化、启动服务,具体按 Waydroid 文档来:

sudo systemctl enable --now waydroid-container

这里我建议别把 Waydroid 当成“装上就完美跑安卓”的东西。它很吃 Wayland、binder、内核、显卡驱动、Mesa、容器环境。能跑起来当然爽,跑不起来也别急着怪 deepin 或这个源,先看自己机器的显卡和会话环境。

8. Podman / Netavark / Aardvark DNS:容器网络这块补上了

现在不少人不用 Docker,而是用 Podman。Podman 自身还好,麻烦经常出在网络和 DNS 这块。

Netavark 官方介绍里写着,它是 Rust 写的容器网络栈,主要配合 Podman,也可以用于其他 OCI 容器管理工具;它负责容器网络、接口、NAT、端口转发、IPv4/IPv6、rootless 容器等。(GitHub)

Aardvark DNS 则是容器 A/AAAA 记录的权威 DNS 服务器,通常配合 Netavark 使用。(GitHub)

deepin 论坛回帖里也有人提到 podman-compose 需要 aardvark-dns 才能在 up 的时候正常工作,后面作者回复“现在应该正常了吧”。(Deepin社区)

可以看:

apt policy podman
apt policy podman-compose
apt policy netavark
apt policy aardvark-dns

如果你在 deepin 上跑开发环境,比如数据库、中间件、测试服务、Kubernetes 本地工具链,这块很值得补。

9. GCC 16 / binutils:传统编译工具链也在跟

Better Deepin Repo 不是只看 Rust 和 LLVM,传统 GNU 工具链也有动作。

GitHub 组织里能看到 gcc-16-deepinbinutils-deepingcc-16-deepin 的描述是“为 deepin 适配的 gcc-16 构建仓库”,binutils-deepin 的描述是“为 deepin 适配的高版本 binutils 代码仓库”。(GitHub)

可以看:

apt search gcc-16
apt search g++-16
apt policy gcc
apt policy g++
apt policy binutils

这类包对普通桌面用户没那么直观,但你只要编译过新项目、打过 Debian 包、折腾过内核模块、移植过软件,就知道编译器和 binutils 版本有多现实。

不过这块我建议谨慎升级。编译器可以新,系统基础组件别乱动。作者在论坛里也明确说,直接牵涉 DDE 桌面稳定性的 Qt 6.8、GLIBC 2.38、Binutils、Coreutils 这类不会考虑升级,因为会影响桌面稳定性。(Deepin社区)

10. Kustomize:Kubernetes 用户的小工具

Better Deepin Repo 组织里还有 golang-k8s-sigs-kustomize-api-deepin。(GitHub)

Kustomize 是 Kubernetes 原生配置管理工具,官方介绍说它提供一种不靠模板的方式来自定义应用配置,并且已经内置到 kubectl apply -k。(Kustomize)

如果你只是桌面用户,可以跳过;但如果你在 deepin 上做云原生开发,Kustomize 很常见。

可以看:

apt search kustomize
apt policy kustomize

11. check-jsonschema:写配置文件的人会喜欢

python3-check-jsonschema-deepin 也在 Better Deepin Repo 的 GitHub 组织里。(GitHub)

check-jsonschema 是一个 JSON Schema CLI,也可以作为 pre-commit hook 使用;它支持本地或远程 HTTP/HTTPS schema。(Check JSON Schema)

这东西看起来很小,但写 GitHub Actions、Renovate、Azure Pipelines、各种 JSON / YAML 配置时挺好用。提交前跑一下校验,能少掉很多低级错误。

可以看:

apt search check-jsonschema
apt policy python3-check-jsonschema

12. libgit2:给软件嵌 Git 能力

Better Deepin Repo 组织里还有 libgit2-deepin。(GitHub)

libgit2 官方介绍说,它是 Git 核心方法的可移植、纯 C 实现,可以作为可链接库使用,也方便其他语言通过 FFI 调用。(libgit2)

很多图形 Git 客户端、开发工具、语言绑定都会用到它。普通用户可能只是被它作为依赖装上,开发者就比较容易直接碰到。

可以看:

apt policy libgit2
apt policy libgit2-dev

13. rustls:Rust 生态里的 TLS 库

rust-rustls-deepin 也在这个组织里。(GitHub)

rustls 是 Rust 写的现代 TLS 库。它的仓库介绍里写到,rustls 默认提供较好的加密安全性,不默认提供不安全特性或过时密码学,并实现 TLS 1.2 和 TLS 1.3。(GitHub)

这类包本身不一定是你主动安装的应用,但很多 Rust 网络程序、代理工具、下载工具、服务端程序都可能间接依赖它。

可以看:

apt search rustls
apt policy librust-rustls-dev

14. bindgen:Rust 调 C / C++ 库时的桥

Better Deepin Repo 组织里还有 rust-bindgen-cli-deepin。(GitHub)

bindgen 的作用很直接:自动从 C / C++ 库生成 Rust FFI 绑定。官方用户指南就是这么介绍的。(Rust 语言)

如果你在 deepin 上打包 Rust 项目,尤其是需要链接 C 库的项目,bindgen 迟早会碰到。

可以看:

apt policy rust-bindgen
apt policy rust-bindgen-cli

这个源怎么加?

项目页给的 APT 源地址是:

https://obsci.odata.cc/Better-Deepin-REPO/Deepin_25/

项目页也特别提醒了:这是 OBS 生成的 flat repository,源行最后用 /,不要写 stable mainbookworm main 这种发行版组件。(Open Build Service)

我个人更喜欢用 /etc/apt/keyrings 的写法:

sudo apt update
sudo apt install -y ca-certificates curl gnupg

sudo install -d -m 0755 /etc/apt/keyrings

curl -fsSL https://obsci.odata.cc/Better-Deepin-REPO/Deepin_25/Release.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/better-deepin-repo.gpg

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/better-deepin-repo.gpg] https://obsci.odata.cc/Better-Deepin-REPO/Deepin_25/ /" | \
sudo tee /etc/apt/sources.list.d/better-deepin-repo.list

sudo apt update

如果你想用项目页原本那种写法,也可以直接按项目页来。项目页给的核心源行是:

deb https://obsci.odata.cc/Better-Deepin-REPO/Deepin_25/ ./

两种思路都能用,我只是更倾向于 keyrings 写法,后面清理起来也舒服。

加完以后别急着 full-upgrade

我建议加完源先看策略,不要上来就一把梭:

apt-cache policy

看某个包来自哪里:

apt policy waydroid
apt policy rustc
apt policy mesa-vulkan-drivers
apt policy intel-media-va-driver
apt policy libdrm2

按需求装包更稳:

sudo apt install waydroid
sudo apt install vainfo intel-media-va-driver
sudo apt install vulkan-tools mesa-utils
sudo apt install podman podman-compose netavark aardvark-dns

我的建议是:

新 AMD / Intel 显卡用户:重点看 Mesa、libdrm、Vulkan
Intel 核显 / Arc 用户:额外看 intel-media-va-driver、libva、vainfo
Waydroid 用户:重点看 Waydroid、Mesa、Wayland 会话、binder
Podman 用户:重点看 podman-compose、netavark、aardvark-dns
开发者:重点看 Rust、LLVM、GCC、binutils、SPIR-V、bindgen
普通办公用户:不建议闭眼全量升级

怎么删?

不想用了,删源很简单:

sudo rm -f /etc/apt/sources.list.d/better-deepin-repo.list
sudo rm -f /etc/apt/keyrings/better-deepin-repo.gpg
sudo apt update

但这里要注意:删源不等于自动回退包版本。

如果你已经从这个源升级过 Mesa、libdrm、Rust、LLVM、libva 这类包,删掉源以后系统不会自动降回官方源版本。真要回退,需要自己用:

apt policy 包名

看官方源版本,再手动降级。这个地方不要偷懒。

我对这个源的看法

Better Deepin Repo 这东西,我觉得挺像 deepin 25 的“民间增强包”。

它不是给系统换皮,也不是塞一堆桌面应用,而是在补 deepin 25 目前比较容易卡住的地方:

新显卡要新 Mesa
Intel 视频硬解要新 media-driver / libva
现代图形栈要 LLVM / SPIR-V
Mesa 构建要新 Rust
Waydroid 要容器和图形栈配合
Podman 要 netavark 和 aardvark-dns
开发者要更完整的工具链

它的方向是对的,而且很务实。

当然,第三方源永远要谨慎。尤其是这种会动到底层图形栈、编译器、系统库的源,舒服的时候是真舒服,出问题的时候也确实需要你有一点排查能力。作者自己在论坛里也说了,不保证 100% 稳定,不怕炸系统再来。(Deepin社区)

所以我的态度很简单:

日常办公主力机,谨慎;
新硬件机器,值得试;
开发机,值得关注;
deepin 折腾用户,基本可以收藏;
完全小白,不建议闭眼加完就全量升级。

deepin 官方源负责稳,社区增强源负责往前探一步。Better Deepin Repo 现在做的就是后面这件事。对 deepin 25 来说,这种源其实挺重要。

Show Better-Deepin-REPO -
Open Build Service
"

        Rust Programming Language
    "
无标签
打赏
评论区
头像
文章目录