LINUX.ORG.RU

Ошибка в скриптах инсталляции Qt 4.8.7 для Debian

 , ,


0

1

Для того, чтобы иметь возможность навигации по исходникам Qt4 в QtCreator (не только по h-файлам), мне нужно собрать этот Qt4 из исходников.

Я получил исходники штатным для Debian 9 способом, описанным здесь:

Как в Debian 9 прописать каталог исходников Qt4 (4.8.7) в QtCreator 4.9 ?

А так как простое прописывание путей к исходникам в QtCreator не помогает, я попытался собрать пакет из этих исходников самостоятельно. Для этого, сначала надо доустановить все зависимости:

apt-get build-dep qt4-default

А потом в каталоге с исходниками надо запустить:
fakeroot ./debian/rules binary

И сборка даже идет, но затыкается на отсутствии некоторых *.h-файлов. Все, какие возможно *.h-файлы я нашел через команды:
apt-file update
apt-file search <имя файла>

И вручную доустановил соответствующие пакеты. Однако оказалось, что в исходниках используются h-файлы, которых просто нет в системе ни в одном пакете.

Тогда я решил проверить, может быть удастся собрать через configure & make, благо configure есть в каталоге исходников. И это сработало. Тоже была пара ошибок, забыли положить исходники jquery в демопримеры, еще что-то, но сборка прошла.

Далее нужно сделать пакет. Традиционно, команда checkinstall -D обосралась и не смогла создать каталоги. Поэтому пришлось сделать make install, и потом запустить checkinstall -D. Но пакет собрать не получилось - система зависает на выхлопе:
/doc/html/declarative-modelviews-stringlistmodel.html
./doc/html/demos-embedded-embeddedsvgviewer-spheres-svg.html
./INSTALL

Файлы копируются во временный каталог...

Ждал полтора часа, толку нет. Пробовал и такую команду:
checkinstall -D --install=no

Виснет на том же месте.

Тогда попробовал опять дать команду:
fakeroot ./debian/rules binary

типа исходники уже собраны, должна пройти только сборка пакета. Так и получилось, исходники уже не собирались, однако процесс сборки пакета завершился ошибкой:
# Fix wrong path in pkgconfig files
find /opt/qt_4_8_7/src/qt4-x11-4.8.7+dfsg/debian/tmp/usr/lib/*/pkgconfig -type f -name '*.pc' \
        -exec perl -pi -e "s, -L/opt/qt_4_8_7/src/qt4-x11-4.8.7+dfsg/?\S+,,g" {} \;
find: ‘/opt/qt_4_8_7/src/qt4-x11-4.8.7+dfsg/debian/tmp/usr/lib/*/pkgconfig’: Нет такого файла или каталога
debian/rules:261: ошибка выполнения рецепта для цели «override_dh_auto_install»
make[1]: *** [override_dh_auto_install] Ошибка 1

И действительно, в файле /debian/rules написано следующее:
override_dh_auto_install:
	dh_auto_install -Smakefile -- INSTALL_ROOT=$(CURDIR)/debian/tmp/

	# Remove libtool-like files
	rm -fv debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/*.la

	# Fix wrong path in pkgconfig files
	find $(CURDIR)/debian/tmp/usr/lib/*/pkgconfig -type f -name '*.pc' \
		-exec perl -pi -e "s, -L$(CURDIR)/?\S+,,g" {} \;

И проблема в том, что каталог ./debian/tmp/usr есть, а каталога ./debian/tmp/usr/lib/ - нет. Вообще-то, есть ./debian/tmp/usr/local/Trolltech/Qt-4.8.7/lib, но непонятно он ли имеется в виду. То есть, что-то где-то напутали.

В общем, я так и не могу собрать пакет с Qt4, чтобы не засирать систему через make install.

Вопрос: как блин получить самосборный пакет Qt4 с исходниками? Что еще и где надо дописывать доконфигурировать?

★★★★★

В общем, я так и не могу собрать пакет с Qt4, чтобы не засирать систему через make install.

зачем пакет ?

  1. собирай qt4 через его configure … –prefix=/home/user_me/qt4; make; make install
  2. делай kit с этой сборкой
  3. запускай и отлаживай с заходом внутрь
x905 ★★★★★ ()
Ответ на: комментарий от x905

зачем пакет ?

В Debian декларируется, что можно самостоятельно собрать пакет из исходников для любого пакета в репозитарии. Вот пример:

https://webhamster.ru/site/page/index/articles/comp/131

Именно это я и делаю. Моя задача - получить тот же самый пакет, что и в системе, но чтобы были его исходники, чтобы по ним можно было лазить.

Проблема в том, что майнтейнеры похоже накосячили, и сборка штатными средствами не идет.

собирай qt4 через его configure … –prefix=/home/user_me/qt4; make; make install
делай kit с этой сборкой

Попробую еще раз собрать, но уже с префиксом. А как делается «kit с этой сборкой»?

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

В Debian декларируется, что можно самостоятельно собрать пакет из исходников для любого пакета в репозитарии.

я не спорю, но к задаче это не имеет прямого отношения, но пробовать собрать пакет можно

А как делается «kit с этой сборкой»?

в КРЕАТОРЕ же, в настройках, выбирай собранный qmake и т.п.

x905 ★★★★★ ()
Ответ на: комментарий от x905

в КРЕАТОРЕ же, в настройках, выбирай собранный qmake и т.п.

Что-то я не пойму, где в QtCreator 4.10 надо прописывать qmake:

http://i.piccy.info/i9/d6b8836440ca50347f9a4ac3d1b2a7cb/1576591537/113416/135...

Сейчас же Qt переезжает на cmake, так что теперь стало вообще непонятно где что надо конфигурировать.

Xintrea ★★★★★ ()
Ответ на: комментарий от x905

собирай qt4 через его configure … –prefix=/home/user_me/qt4; make; make install
делай kit с этой сборкой

Кстати, программа, собранная с таким китом, не будет работать на другом таком же Debian 9 со стандартными либами Qt4. Я правильно понимаю?

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

Кстати, программа, собранная с таким китом, не будет работать на другом таком же Debian 9 со стандартными либами Qt4. Я правильно понимаю?

должна работать - программа найдет qt4 либы и плагины по стандартным путям

есть еще один способ заходить внутрь - поставить debug либы из реп (гугли как это делать), я так делал, заходило, но мне не подошло т.к. хотел версию посвежее чем в репах

x905 ★★★★★ ()
Ответ на: комментарий от x905

Кароч, ничего не получается.

Собрал Qt4.8.7 (из дебиановских исходников), с префиксом /usr/qt_4_8_7. Сделал на этот каталог Кит. Проекты компилятся с данным Китом. Но в реализацию Qt-классов зайти невозможно.

Добавил в настройках дебага путь к сырцам:

/opt/qt_4_8_7/src/qt4-x11-4.8.7+dfsg/src


Но тоже не могу зайти в реализацию Qt-шных классов.

Не пойму, что еще нужно.

Xintrea ★★★★★ ()
Ответ на: комментарий от Xintrea

во время отладки или редактирования ? отладка должна, редактирование - не знаю

x905 ★★★★★ ()
Ответ на: комментарий от Xintrea

Я бы попробовал поставить дополнительную(из доступных) версию Qt стандартным MaintenanceTool, переключился на неё в qtcreator и сравнил, где что прописано.

Elyas ★★★★★ ()
Ответ на: комментарий от x905

собирай qt4 через его configure … –prefix=/home/user_me/qt4; make; make install
делай kit с этой сборкой
запускай и отлаживай с заходом внутрь

Кстати, у меня закрались сомнения, что нужно делать make install.

В течении моих ковыряний QtCreator каким-то волшебным образом нашел qmake в каталоге сборки (т. е. самосборный qmake в каталоге сборки а не в каталоге инсталляции). И для него QtCreator сам сделал Kit, и этот Kit даже работает.

Правда я не знаю, будет ли этот Kit работать, если удалить каталог установки, но мне сейчас не до этих экспериментов.

Xintrea ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.