ubuntu上Qt软件打包报错

编译打包和其他
回复
鹤舞九天
帖子: 8
注册时间: 2011-04-24 10:55

ubuntu上Qt软件打包报错

#1

帖子 鹤舞九天 » 2015-05-03 10:53

使用debuild -S构建源码包时,运行lintian检查时出错,下面的英文时报错时提供的解决方法,没用。而且这个库确实是存在啊,而且就在工程的根目录,怎么就找不着呢?
Now running lintian...
E: serials source: source-is-missing libQt5Core.so.5.2.1
N:
N: The source of the following file is missing. Lintian checked a few
N: possible paths to find the source, and do not find it.
N:
N: Please repack your package to include the source or add it to
N: "debian/missing-sources" directory.
N:
N: If this is a false-positive, please report a bug against Lintian.
N:
N: Severity: serious, Certainty: possible
N:
N: Check: cruft, Type: source
......
Finished running lintian.
难道时打包源码包的时候不能由共享库?
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: ubuntu上Qt软件打包报错

#2

帖子 astolia » 2015-05-04 20:21

它说的是libQt5Core.so.5.2.1的源代码没找到,不是库本身没找到。既然是“源码包”,为什么要包含一个编译好的库?直接依赖qtbase5-dev不就行了?
如果你非要把库打包进去,debuild也可以传个--no-lintian来略过lintian检查这步
鹤舞九天
帖子: 8
注册时间: 2011-04-24 10:55

Re: ubuntu上Qt软件打包报错

#3

帖子 鹤舞九天 » 2015-05-05 9:53

astolia 写了:它说的是libQt5Core.so.5.2.1的源代码没找到,不是库本身没找到。既然是“源码包”,为什么要包含一个编译好的库?直接依赖qtbase5-dev不就行了?
如果你非要把库打包进去,debuild也可以传个--no-lintian来略过lintian检查这步
本来是打包成deb的,为了在没装Qt的电脑上也能用,所以把用到的共享库都打包了。并写好了安装脚本把这些库都装到了一个目录(如/usr/lib/foo)。
现在需要上传到ppa,需要上传源码包,但是如果这些库都不打包,这意味着脚本需要修改,安装的目录结构需要修改(不需要foo目录来放库文件了)。这样,直接用deb包安装和通过apt-get install 安装同一软件将产生不同的目录。还有一个问题,系统中那么多库,我怎么确定每个库对应的软件包,并把它源码找到?(比如,怎样确定Qt5的库对应的软件包是qtbase5-dev 而不是qt5-dev或其它名字,有什么地方查询??)针对现实的这个问题,是不是意味着,我要下载qtbase5-dev并修改control文件?
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: ubuntu上Qt软件打包报错

#4

帖子 astolia » 2015-05-05 14:51

既然你弄ppa,就说明不是个闭源软件,那就按照开源的方案来呗。
你的control就这么写
Source: xxx
Build-Depends: qtbase5-dev
...

Package: xxx
Depends: ${shlibs:Depends}, ${misc:Depends}
...
编译时需要qtbase5-dev,生成的deb安装包自动根据实际情况设置相关库依赖。你就直接把ppa上编译出deb包给人用,最多叫对方用gdebi而不是dpkg安装,不存在什么产生不同的目录的问题

你的第二个问题更奇怪了,你既然能把程序编译出来,说明程序需要的头文件你系统上都有。如果你是从源里安装的qt的开发包,那直接依赖那个开发包的名字就是了
如果非要从库文件倒推开发包的话,先dpkg-query -S libQt5Core.so.5.2.1找到对应的库包是libqt5core5a,然后再找依赖这个库包的开发包有哪些apt-cache rdepends libqt5core5a | grep -E -- '-dev$'
鹤舞九天
帖子: 8
注册时间: 2011-04-24 10:55

Re: ubuntu上Qt软件打包报错

#5

帖子 鹤舞九天 » 2015-05-26 13:15

astolia 写了:既然你弄ppa,就说明不是个闭源软件,那就按照开源的方案来呗。
你的control就这么写
Source: xxx
Build-Depends: qtbase5-dev
...

Package: xxx
Depends: ${shlibs:Depends}, ${misc:Depends}
...
编译时需要qtbase5-dev,生成的deb安装包自动根据实际情况设置相关库依赖。你就直接把ppa上编译出deb包给人用,最多叫对方用gdebi而不是dpkg安装,不存在什么产生不同的目录的问题

你的第二个问题更奇怪了,你既然能把程序编译出来,说明程序需要的头文件你系统上都有。如果你是从源里安装的qt的开发包,那直接依赖那个开发包的名字就是了
如果非要从库文件倒推开发包的话,先dpkg-query -S libQt5Core.so.5.2.1找到对应的库包是libqt5core5a,然后再找依赖这个库包的开发包有哪些apt-cache rdepends libqt5core5a | grep -E -- '-dev$'
非常感谢,解决了我不少的疑惑,现在,我直接不打包库文件了,源码包可以上传了。但是在PPA编译时报错:
Can't exec "qmake": No such file or directory at /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 218.
dh_auto_configure: qmake -makefile -nocache QMAKE_CFLAGS_RELEASE=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 QMAKE_CFLAGS_DEBUG=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 QMAKE_CXXFLAGS_RELEASE=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 QMAKE_CXXFLAGS_DEBUG=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 QMAKE_LFLAGS_RELEASE=-Wl,-Bsymbolic-functions -Wl,-z,relro QMAKE_LFLAGS_DEBUG=-Wl,-Bsymbolic-functions -Wl,-z,relro QMAKE_STRIP=: PREFIX=/usr failed to to execute: No such file or directory
make: *** [build-arch] Error 2
dpkg-buildpackage: error: debian/rules build-arch gave error exit status 2

它说没找到qmake,在PPA里的源码是官方编译的,官方的环境没有qmake?看起来就差最后一步了,真是太闹心了。
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: ubuntu上Qt软件打包报错

#6

帖子 astolia » 2015-05-26 20:05

ppa预先设置的编译环境实际就是build-essential包,其他要用到的工具都需要写到control文件里的Build-Depends中,你自己加个qt5-qmake就是了
鹤舞九天
帖子: 8
注册时间: 2011-04-24 10:55

Re: ubuntu上Qt软件打包报错

#7

帖子 鹤舞九天 » 2015-06-02 19:56

astolia 写了:ppa预先设置的编译环境实际就是build-essential包,其他要用到的工具都需要写到control文件里的Build-Depends中,你自己加个qt5-qmake就是了
是管用了,但是还是有错
qmake: could not find a Qt installation of ''
这个错误应该是找不到安装的qmake,如果出现在我自己电脑上,我可以修改PATH,但是出现ppa的编译时,真是束手无策。
鹤舞九天
帖子: 8
注册时间: 2011-04-24 10:55

Re: ubuntu上Qt软件打包报错

#8

帖子 鹤舞九天 » 2015-06-03 9:45

已经解决了,现在可以通过sudo apt-get install 安装我的软件了。
回复