[ 已解决 ] 本地和 obs 的打包规则不一样?原:obs 玩不下去了

在我自己的机子上编译打包好好的,到了 OBS 就不行了,总是说我

。其实更难搞的是开发者的 Makefile 不太好用,sudo make install 不会复制文件到安装路径下。真是蛋疼啊。 :joy:

  1. 很正常,本地打包没有 BRP check 和 rpmlint check。

你那个是 BRP check 里的,简单说没有 RPM_OPT_FLAGS,你的软件包不可能 strip 出 -debuginfo -debugsource 软件包,这不符合 openSUSE 官方软件的规矩。所以要 play with rule

方法是

export CFLAGS="%{optflags}"

或 CXXFLAGS

另外知道我为什么拒绝你的 SR 么,因为你完全不知道 rpmlint 是什么。它是提示你所犯的常见打包错误的帮手。openSUSE:Packaging checks - openSUSE

  1. 当然。人家服务器不可能把 root 权限给你让你装到服务器的 /usr 去的。

所以是

%make_install 
或
make install INSTALL_ROOT=%{buildroot}
或
make install DESTDIR=%{buildroot}

zh.opensuse.org/openSUSE:Specfile_guidelines

这些至少我都讲过,维基也有文档。

80 后最大的问题在于一不看说明书,二看说明书不仔细。

只有纠正了人格上的缺陷,做事才能完美。

学着吧骚年。

1赞

另外根据《提问的艺术》,这是一个很典型的 loser question,我真不知道该鼓励你还是该嘲笑你。

1赞

那个,我只是点一下提交试试看。rpmlint 结果我也有看了,我还以为那几个警告不重要所以我就忽略了。make install 那部分是根据人家开发者生成的 Makefile 本来就不会复制文件到实际安装目录下的,我看到他有一个 .spec 文件就照抄过来的。 :joy: 不过现在好了,我自己修改了他的源码,其实只是修改了 Qt project 文件,就一个 .pro 文件,然后就可以直接 make INSTALL_ROOT=%{buildroot} install 安装了。打个包还要去学习一下 qmake,Qt project 真心不容易。昨晚给项目开发者发送邮件竟然邮件地址不存在。这个包可能以后都没有更新了。
现在已经修改好了,也编译打包成功,rpmlint 的唯一一个警告是说

那人家的软件本来就没有写 man page,这个警告就可以忽略了吧。女王大人帮我看一下这回都 OK 了吧。 build.opensuse.org/package/show?package=shadaradio&project=home%3Ahottea
and export CFLAGS="%{optflags}" 要写在哪里?

修改别人的源代码请用补丁的形式。

export 写在 make 前面

别的没有问题。

这个,开发者联系不上,改天我在 code.google.com 创建新的项目好了。 :joy:

你走遍各大编译农场,看哪个打包者发现源代码有问题是直接修改源代码后直接上传的?

这样叫不尊重上游,而且会给后续维护带来天大的麻烦。

难道下次升级你还改源代码?

或者说如果这个包你不维护了,别人更新一下,难道强迫别人去看源代码才知道你修改了哪些东西?

你要把你修改过的东西做成 .patch,然后在 specfile 里

Souce: blabla
# PATCH-FIX-UPSTREAM hotteaxxx@example.com - fix build
Patch: abuild.patch

然后在 %prep 里

%patch -p1

这些都在

zh.opensuse.org/openSUSE:Packaging_Patches_guidelines

另外你随便找个官方软件包就能看人家是怎么处理补丁的了,比如:

build.opensuse.org/package/show?project=M17N&package=fcitx

不尊重上游的罪名挺大的啊,我会尽快修改的。 :scream:

不尊重事小,掉节操事大