Я довольно новичок во всех пакетах приложений 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 и builder удаляет родной tcl8.4 до точного, прежде чем пытаться собрать. Но тогда он не может его найти.
Другой блок связанного кода, который может представлять интерес, - 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) как применить вышеупомянутое исправление к одному файлу, повторно смонтировать его и отправить все в качестве бэкпорта на утверждение. Любое руководство о том, как это сделать, будет оценено.
Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать, и я предоставлю ее. Спасибо!