[infra/devex] Linux RPM 打包 spec 使用 %files / 导致在 Fedora 上与 filesystem 包冲突无法安装
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- linux, rust
- Ambito
- build-system, devops
Direzione di ricerca
Inizia da openless-all/app/scripts/package-linux-egui.sh, nella sezione %files di openless.spec, poi esamina openless-all/app/scripts/verify-linux-egui-packages.sh. Limita il manifest RPM ai file e alle directory di proprietà di OpenLess e aggiungi un controllo che escluda le directory di sistema condivise. Il risultato è raggiunto quando il manifest RPM generato omette tali directory e il pacchetto si installa su Fedora 44.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
现象
- 触发条件:在 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实测验证可正常安装。
- Lingua principale
- Rust
- Stelle
- 3.7k
- Fork
- 349
- Merge medio
- 1g 13h
- PR unite (30g)
- 98
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Open-Less/openless
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
[windows] 录音快捷键还不支持设置为ScrllLock键Forse già presa @HKLHaoBin l’ha presa 14 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Open-Less/openless#1241 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
area:ui bug P2
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Open-Less/openless
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
RustCrypto/utils#1597 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Non-`main` default branchesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
max-sixty/worktrunk#4727 · 7 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
follow-up
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
carrick-sh/carrick#1859 ·
I maintainer di solito rispondono entro 1 giorno