我在debian包装的基础知识上遇到了麻烦。我正在尝试打包qt,我正在编译一些特定的配置标志。这是我的同事可以使用该包而无需为自己重新编译它。这个问题与qt无关,它只是我正在构建的项目。
运行这些命令。或者,将tarball内容解压缩到此文件夹以利用预生成的文件
wget http://download.qt.io/official_releases/qt/5.10/5.10.0/single/qt-everywhere-src-5.10.0.tar.xz
tar -xf qt-everywhere-src-5.10.0.tar.xz
cd qt-everywhere-src-5.10.0
DEBFULLNAME="My name"
dh_make --email email@company.com \
--file=../qt-everywhere-src-5.10.0.tar.xz \
-s \
--packagename=sim-qt \
--copyright=lgpl
编辑debian / control的这些字段:
Section: devel
Homepage: http://download.qt.io/official_releases/qt/5.10/5.10.0/single/
Description: My Qt build
编辑debian / rules,如下所示:
#!/usr/bin/make -f
%:
dh $@ --with autotools-dev --parallel
override_dh_auto_configure:
./configure --prefix=/opt/sim-qt \
--opensource --confirm-license \
--skip=qtcharts \
--skip=qtvirtualkeyboard \
--skip=qtdatavis3d \
--skip=qtwebengine \
--silent \
--nomake=examples \
--nomake=tests
sudo dpkg-buildpackage -rfakeroot -nc
我正在使用-nc
,因为编译需要一个多小时。如果我不需要,我不想重新编译,过去几天我一直在使用dpkg-buildpackage。
包裹是空的!
stew@stewbian:~/src/qt$ dpkg --contents sim-qt_5.10.0-1_amd64.deb
drwxr-xr-x root/root 0 2018-03-14 10:36 ./
drwxr-xr-x root/root 0 2018-03-14 10:36 ./usr/
drwxr-xr-x root/root 0 2018-03-14 10:36 ./usr/share/
drwxr-xr-x root/root 0 2018-03-14 10:36 ./usr/share/doc/
drwxr-xr-x root/root 0 2018-03-14 10:36 ./usr/share/doc/sim-qt/
-rw-r--r-- root/root 188 2018-03-14 10:36 ./usr/share/doc/sim-qt/README.Debian
-rw-r--r-- root/root 188 2018-03-14 10:36 ./usr/share/doc/sim-qt/changelog.Debian.gz
-rw-r--r-- root/root 1440 2018-03-14 10:36 ./usr/share/doc/sim-qt/copyright
此外,应在包中的内容似乎安装在我的本地计算机上。
答案 0 :(得分:2)
这是我在使用QMake构建时遇到的问题。
QMake制作的常规install
目标使用名为INSTALL_ROOT
的变量,而不是DESTDIR
期望的dpkg
。
当我构建Qt二进制文件时,我添加了我的QMake参数:
QMAKE_ARGS += INSTALL_ROOT=$(DESTDIR) DESTDIR=
如果我没有将DESTDIR
归零,则会出于某种原因尝试同时使用INSTALL_ROOT
和DESTDIR
。
我也有PREFIX
定义;我不知道你是否需要那个:
QMAKE_ARGS += PREFIX=/usr
最后,值得告诉Qt不要删除二进制文件(dh_strip
会这样做,如果你想让符号包与你的二进制文件一起使用,你会想要它:)
QMAKE_ARGS += QMAKE_STRIP=:
然后,当我运行QMake时使用这些参数:
$(PROJECT)/Makefile: $(PROJECT)/my_project.pro
@test -d $(@D) || mkdir -p $(@D) || test -d $(@D)
$(QMAKE) -o $@ $< $(QMAKE_ARGS)