LINUX.ORG.RU

Как опакетить qmake проект ничего не делая?

 , ,


2

3

При попытке собрать и поставить alphaplot и shotcut из исходников вылетает что то похожее на это.

$ qmake
...
$ make
...
$ sudo checkinstall
...

Installing with make install...

========================= Результаты установки ===========================
cd alphaplot/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /mnt/Disk_738/Apps-from-sourse/AlphaPlot-1.02/alphaplot/alphaplot.pro ) && make -f Makefile install
make[1]: вход в каталог «/mnt/Disk_738/Apps-from-sourse/AlphaPlot-1.02/alphaplot»
/usr/lib/qt5/bin/qmake -install qinstall -exe /mnt/Disk_738/Apps-from-sourse/AlphaPlot-1.02/data/alphaplot.desktop /usr/share/applications/alphaplot.desktop
Error copying /mnt/Disk_738/Apps-from-sourse/AlphaPlot-1.02/data/alphaplot.desktop to /usr/share/applications/alphaplot.desktop: Cannot create /usr/share/applications/alphaplot.desktop for output
make[1]: *** [Makefile:8720: install_desktop_entry] Ошибка 3
make[1]: выход из каталога «/mnt/Disk_738/Apps-from-sourse/AlphaPlot-1.02/alphaplot»
make: *** [Makefile:76: sub-alphaplot-install_subtargets-ordered] Ошибка 2

****  Установка неудачна. Отменяется создание пакета.

Очищается...OK

Удачи.

Можно конечно собирать дебпакет и другими улитами, более универсальными, НО как справедливо заметил всея Линус Торвальдс, мейнтейнерство это не то на что вы должны тратить своё время если профессионально этим не занимаетесь. По сему ищется именно простой способ.

sudo make install конечно работает но я каку в рот тянуть не собираюсь, ибо можно будет нарваться на неприятные последствия.

P.S. да будет проклят этот qmake!

P.P.S. Ладно ставим вопрос шире.

Как опакетить приложение ничего не делая?



Последнее исправление: nikitalol (всего исправлений: 2)

Я сначала делаю deb пакет

checkinstall -D --install=no --fstrans=yes

Опции:

  • -D – cоздать пакет Debian
  • --install=no – не устанавливать созданный пакет, поэтому sudo не нужен
  • --fstrans=yes – включить трансляцию файловой системы. Для создания пакета файлы будут скопированы во временную папку, а не в /usr/local

Затем устанавливаю его

sudo dpkg --install my_pack.deb
RussianWarShip
()
Ответ на: комментарий от UVV

Я бы рад

Но тут вот проблема

Даже две

  1. Люди опять не читают вопросов(при этом просят логи)
  2. Там огромная совтина, и я пытаюсь её поставить собрав из исходников
nikitalol
() автор топика
Последнее исправление: nikitalol (всего исправлений: 1)

Попробуйте в файле config.pri удалить строчки

!contains(PRESET, linux_all_static) {                 # Linux Desktop integration
  unix:INSTALLS   += desktop_entry mime_package mime_link icons
}

И добавить эти строчки в конце файла alphaplot/alphaplot.pro, потом сделать qmake -r

RussianWarShip
()
5 ноября 2023 г.

Столкнулся с такой же проблемой в одном проекте. И вот что удалось выяснить.

С версии 5.9 в qmake поменялось поведение при генерации Makefile. Если в Makefile раньше было

INSTALL_FILE  = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR   = cp -f -R

и для установки в качестве команд использовались INSTALL_FILE и INSTALL_PROGRAM, то теперь стало

INSTALL_FILE  = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR   = cp -f -R
QINSTALL      = /usr/lib/qt5/bin/qmake -install qinstall
QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe

и для установки используются QINSTALL и QINSTALL_PROGRAM. И это не дает нормально использовать инструменты вроде checkinstall.

Есть простой костыль – после вызова qmake поменять переменные QINSTALL и QINSTALL_PROGRAM во всех сгенерированных Makefile проекта.

find ./ -type f -name Makefile -exec \
sed -i 's$/usr/lib/qt5/bin/qmake -install qinstall -exe$install -m 755 -p$g' {} \; \
-exec \
sed -i 's$/usr/lib/qt5/bin/qmake -install qinstall$install -m 644 -p$g' {} \;

Это команда выполняется в корневом каталоге сборки, тут все просто: find ищет файлы Makefile и вызывает для них sed, который и делает нужные замены. Далее можно делать make и checkinstall.

Естественно, путь /usr/lib/qt5/bin/qmake нужно заменить на тот, который используется в вашей системе.

NickNotNick
()
Последнее исправление: NickNotNick (всего исправлений: 2)
Ответ на: комментарий от NickNotNick

Там была проблема в конкретном проекте в добавок, разраб захардкодил ссылки на qt

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