[infra/devex] Linux RPM 打包 spec 使用 %files / 导致在 Fedora 上与 filesystem 包冲突无法安装
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 2/5
- 預估耗時
- 1-3 小時
- 新手友好度
- 82/100
- Issue 類型
- 缺陷
- 描述清晰度
- 描述清楚
- 活躍度
- 活躍
- 技術堆疊
- linux, rust
- 領域
- build-system, devops
研究方向
先從 openless-all/app/scripts/package-linux-egui.sh 中 openless.spec 的 %files 區段附近開始查看,接著檢查 openless-all/app/scripts/verify-linux-egui-packages.sh。將 RPM 清單限制為 OpenLess 擁有的檔案和目錄,並新增一項檢查以排除共用系統目錄。完成標準是產生的 RPM 清單不包含這些目錄,且套件能在 Fedora 44 上安裝。
由索引模型根據 Issue 內容生成。
描述
现象
- 触发条件:在 Fedora 44(x86_64)上使用
sudo dnf install安装官方发布的OpenLess-Linux-egui-2.0.2-Beta.4-150-x86_64.rpm(或OpenLess_linux_x86_64.rpm)。 - 当前表现:RPM 事务因
/usr/bin与/usr/lib64目录所有权/权限与系统基础包filesystem冲突而直接失败,无法完成安装。 - 证据:
- Fedora 44
dnf install实测报错:Running transaction Transaction failed: Rpm transaction failed. - file /usr/bin from install of openless-2.0.2.beta.4.150-1.x86_64 conflicts with file from package filesystem-3.18-52.fc44.x86_64 - file /usr/lib64 from install of openless-2.0.2.beta.4.150-1.x86_64 conflicts with file from package filesystem-3.18-52.fc44.x86_64 - RPM 包内目录清单检查(
rpm -qlv):
在 Fedora 等 RPM 发行版中,drwxr-xr-x 2 root root 0 Nov 6 20:48 / drwxr-xr-x 2 root root 0 Nov 6 20:48 /usr drwxr-xr-x 2 root root 0 Nov 6 20:48 /usr/bin drwxr-xr-x 2 root root 0 Nov 6 20:48 /usr/lib64 drwxr-xr-x 2 root root 0 Nov 6 20:48 /usr/share/usr/bin和/usr/lib64由filesystem包以0555权限拥有;openlessRPM 将这些系统标准目录以0755纳入自身文件清单导致冲突。 - 源码定位:
https://github.com/Open-Less/openless/blob/c002b56c38d81bcd5044ddb22597a4e78ff2a88d/openless-all/app/scripts/package-linux-egui.sh#L189-L190
package-linux-egui.sh生成的openless.spec中%files段直接写了/,导致rpmbuild递归声明了对/,/usr,/usr/bin,/usr/lib64,/usr/share等所有父级系统目录的所有权。
- Fedora 44
影响
- 所有使用 RPM 包管理器的目标发行版(Fedora / RHEL / openSUSE 等)用户均无法直接安装官方发布的
.rpm安装包。
建议接受标准
- 修改
openless-all/app/scripts/package-linux-egui.sh中openless.spec的%files清单,仅声明归属openless自身的文件与专属子目录(如/usr/bin/openless、/usr/lib64/fcitx5/libopenless.so、/usr/share/applications/openless.desktop、/usr/share/fcitx5/addon/openless.conf、/usr/share/icons/hicolor/*/apps/openless.png、/usr/share/metainfo/top.openless.OpenLess.metainfo.xml、%dir /usr/share/doc/openless、%dir /usr/share/openless等),不再声明/,/usr,/usr/bin,/usr/lib64,/usr/share等系统级共享目录。 - 在
openless-all/app/scripts/verify-linux-egui-packages.sh中增加对rpm -qlp输出的断言,确保生成的.rpm清单不包含/、/usr、/usr/bin、/usr/lib64、/usr/share等系统根目录条目。
TODO / 不确定项
- 无。在本地使用移除了系统目录声明的
%files重新执行rpmbuild后,生成的.rpm已在 Fedora 44 上通过sudo dnf install实测验证可正常安装。
- 主要語言
- Rust
- 星號
- 3.7k
- 分支
- 349
- 平均合併
- 1 天 13 小時
- 30 天內合併 PR
- 98
環境準備
這個專案沒有提供開發容器、Dockerfile 或貢獻指南,環境需要你自己搭建:先看它的 README,通用步驟見我們的新手貢獻指南。
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
Open-Less/openless 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 62/100
維護者通常 1 天內回覆
-
[windows] 录音快捷键还不支持设置为ScrllLock键可能已有人在做 @HKLHaoBin 於 14 天前認領。 未關閉bug
難度 2/5 1-3 小時 新手友好度 75/100
Open-Less/openless#1241 · 5 則留言 ·
維護者通常 1 天內回覆
-
難度 4/5 3-5 天 新手友好度 48/100
維護者通常 1 天內回覆
-
難度 3/5 1-2 天 新手友好度 72/100
維護者通常 1 天內回覆
-
area:ui bug P2
難度 4/5 3-5 天 新手友好度 45/100
維護者通常 1 天內回覆
查看 Open-Less/openless 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 82/100
RustCrypto/utils#1597 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 68/100
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 68/100
max-sixty/worktrunk#4727 · 7 則留言 · 1 個 reaction ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 86/100
維護者通常 1 天內回覆
-
follow-up
難度 2/5 1-3 小時 新手友好度 73/100
carrick-sh/carrick#1859 ·
維護者通常 1 天內回覆