Проблема Backporting SQLite 3.8.1 в Ubuntu Precise от Trusty

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

Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать, и я предоставлю ее. Спасибо!

3
задан 16 December 2013 в 11:03

0 ответов

Другие вопросы по тегам:

Похожие вопросы: