我对所有 Ubuntu 应用程序的打包等都很陌生,所以这里可能不是提出这个问题的正确地方,或者可能有更合适的地方重新提出这个问题。如果确实如此,我很乐意重定向。
我希望反向移植 3.8.1-1ubuntu3 以实现精确运行。
我按照以下说明进行操作http://architects.dzone.com/articles/how-backport-packages-ubuntu并且它们运行完美,只是似乎存在一些依赖问题,阻碍了它们的正常构建。
您可以在以下站点查看完整的构建日志。 https://launchpad.net/~peter64/+archive/ppa/+build/5342072(amd64 构建)这个问题太长了,无法包含在内。
失败的部分如下。
...
tcl8.4: already deinstalled
tcl8.4-dev: already deinstalled
Checking for source dependency conflicts...
/usr/bin/sudo /usr/bin/apt-get --purge $CHROOT_OPTIONS -q -y install debhelper autoconf libtool automake autotools-dev chrpath libreadline-dev tcl8.5-dev dh-autoreconf
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
bsdmainutils dh-apparmor file gettext gettext-base groff-base html2text
intltool-debian libcroco3 libgettextpo0 libmagic1 libpipeline1
libreadline6-dev libtinfo-dev libunistring0 libxml2 m4 man-db po-debconf
tcl8.5
Suggested packages:
autoconf2.13 autoconf-archive gnu-standards autoconf-doc wamerican wordlist
whois vacation dh-make gettext-doc groff libtool-doc automaken gfortran
fortran95-compiler gcj less www-browser libmail-box-perl tclreadline
tcl8.5-doc
Recommended packages:
autopoint curl wget lynx-cur libltdl-dev xml-core libmail-sendmail-perl
The following NEW packages will be installed:
autoconf automake autotools-dev bsdmainutils chrpath debhelper dh-apparmor
dh-autoreconf file gettext gettext-base groff-base html2text intltool-debian
libcroco3 libgettextpo0 libmagic1 libpipeline1 libreadline-dev
libreadline6-dev libtinfo-dev libtool libunistring0 libxml2 m4 man-db
po-debconf tcl8.5 tcl8.5-dev
0 upgraded, 29 newly installed, 0 to remove and 0 not upgraded.
...
./configure --prefix=/usr --mandir="/usr/share/man" \
--build x86_64-linux-gnu --with-tcl=/usr/lib/x86_64-linux-gnu/tcl8.5 --enable-threadsafe \
--enable-load-extension \
--libdir=\${prefix}/lib/x86_64-linux-gnu \
--libexecdir=\${libdir}/sqlite3 \
TCLLIBDIR=/usr/lib/tcltk/sqlite3 \
`if (echo | grep -q debug) then echo "--enable-debug"; else echo ""; fi`
...
checking for Tcl configuration... configure: error: /usr/lib/x86_64-linux-gnu/tcl8.5 directory doesn't contain tclConfig.sh
make: *** [configure-stamp] Error 1
似乎它正在尝试使用不可用的 tcl 版本,我需要更改哪个文件才能进行此构建,因为依赖项似乎指示它正确使用 tcl8.5,并且构建器在尝试构建之前将 tcl8.4 native 删除为 precise。但随后它找不到它。
另一块可能感兴趣的相关代码是 sqlite3_3.8.1-1ubuntu3/debian/rules。
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
confflags += --build $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl8.5
export CROSS_BUILDING=no
else
confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl8.5 LDFLAGS=-L/usr/lib/$(DEB_HOST_MULTIARCH)
export CROSS_BUILDING=yes
endif
#export DEB_CFLAGS_MAINT_APPEND = -O2 -fno-strict-aliasing
export CFLAGS += -O2 -fno-strict-aliasing \
-DSQLITE_SECURE_DELETE -DSQLITE_ENABLE_COLUMN_METADATA \
-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_SOUNDEX=1 \
-DSQLITE_ENABLE_UNLOCK_NOTIFY \
-DSQLITE_OMIT_LOOKASIDE=1 \
-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 \
-DSQLITE_MAX_SCHEMA_RETRY=25 \
-DSQLITE_MAX_VARIABLE_NUMBER=250000
configure: configure-stamp
configure-stamp:
dh_testdir
dh_autoreconf
dh_autotools-dev_updateconfig
./configure --prefix=/usr --mandir="/usr/share/man" \
$(confflags) --enable-threadsafe \
--enable-load-extension \
--libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \
--libexecdir=\$${libdir}/sqlite3 \
TCLLIBDIR=/usr/lib/tcltk/sqlite3 \
$(DDEBUG)
# remove double -ldl from sqlite3.pc
sed -i "s/\([-ldl .+]\) -ldl/\1/" sqlite3.pc
touch $@
查看库 3.7.9-2ubuntu1.1/debian/rules 的精确版本,好像该行。
confflags += --build $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/$(DEB_HOST_MULTIARCH)/tcl8.5
需要改回
confflags += --build $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/tcl8.5
基于较早的精确文件包含的事实
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
confflags += --build $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/lib/tcl8.5
export CROSS_BUILDING=no
else
confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) --with-tcl=/usr/$(DEB_HOST_GNU_TYPE)/lib/tcl8.5 LDFLAGS=-L/usr/$(DEB_HOST_GNU_TYPE)/lib
export CROSS_BUILDING=yes
endif
使用 backportpackage(可自动执行整个过程)进行原始构建后,我不确定 1) 上述修复是否真的能解决问题。2) 如何将上述修复应用于单个文件,重新打包并将其全部作为 backport 提交以供批准。如能提供任何有关如何完成此操作的指导,我将不胜感激。
如果您需要任何进一步的信息,请随时询问,我会提供。谢谢!