分享 rpm 和 deb 打包中遇到的一些坑

最近学习了 rpm 和 deb 的打包,虽然只是把已经编译好的程序文件打包成软件包,但也遇到了很多问题。

  1. 关于目录结构的问题,一开始不知道 spec 文件的%prep 的工作目录是在%{_builddir},绕了很大弯路。
  2. 如果要往/usr/share/icons/hicolor 安装图标的话,需要在 spec 文件添加 BuildRequires: hicolor-icon-theme,否则可能会提示无权使用文件夹的错误。
  3. deb 打包时处理依赖要比 rpm 打包时麻烦,在打包前还要向.dsc 文件和 debian.control 文件的 Build-Depends 添加相关依赖,不然 dh_shlibdeps 会报错。可以在 https://www.debian.org/distrib/packages 上根据 dh_shlibdeps 的报错信息中的文件名(通常是找不到某共享库)确定相关依赖的包名。不知道有没有更方便的办法。
  4. 使用 debtransform 时,还需要在 debian.rules 中添加 echo 12 > debian/compat,不然很多 deb 打包特有的命令会提示无法满足兼容性要求而拒绝运行(如 Compatibility levels before 5 are no longer supported)。
4赞

顺便分享一下重新打包的 joplin-desktop 和 typora
https://software.opensuse.org//download.html?project=home%3Afusionfuture&package=joplin-desktop
https://software.opensuse.org//download.html?project=home%3Afusionfuture&package=typora

1赞

关于第二条,我猜是遇到了 directories not owned by a package ?
这个时候用 %dir 声明这个目录所有就行了
https://zh.opensuse.org/openSUSE:Packaging_checks#Files_not_owned_by_a_package

1赞

小狼毫那几个包是你提交的吧,我不小心过了几个,你赶快把卡着没过的包修好吧。

说实话我还没看懂为什么苏大原来要这样编译 go 的程序,不过还是把原来的部分放上去了。

不是不可以像你那么改,我没有打消积极性的意思…是因为 rime-plum-go 我过年时候重构了一次,然后现在在重构它依赖的 shell pattern matching,只能先用老版本。

我放 brise 里是因为 brise 现在是个数据包,数据是 rime-plum-go 生成的。搞新包已有 Leap 送不进去,送进去数据不送进去 plum 相当于砍了功能…

可以只向 Tumbleweed 提交而不向 Leap 提交吗,我不懂这些发行版对包的管理规定。

可以,然后 Leap 的 brise 更新和修复谁来负责?还是上一个人吗?你接的是一个 package,不是一个 package 从某个时间点开始往后的一段…如果也是你,那随便拆…如果不是就跟上一个人沟通免得来个 surprise…

1赞

懂了,提交 revert 请求了,怎么简单怎么来吧 :sweat_smile:

我维护了一小小的没有打包过的软件列表,如果你想找东西练手的话。

3赞

@fusionfuture rime-plum-go 我已经写完了,你愿意拆 brise 现在可以拆了