Сборка QMassPics

На ослинукс была новость о появлении замечательного менеджера закачки изображений и просто программы QMassPics.

Решил собрать программку, посмотреть ее поближе, поскольку версия (1.1.1) и скриншоты интригуют. Чтобы не размениваться на мелочи. попробую собрать deb, то есть версию программы для Ubuntu готовую к установки сразу после закачки.

Писать я буду как обычно, будто хочу кого-то научить, на самом деле, я так запоминаю.

И как обычно, во всем этом ничего сложного, просто немного терпения. От читателя оно потребуется чтобы дочитать до конца.

Итак в этой статье:

  1. Собираем приложение на Qt4 в среде Ubuntu 9.04
  2. Собираем дистрибутив программы для Ubuntu 9.04

Приступим.

Собираем приложение на Qt4 в среде Ubuntu 9.04

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

Не знаю как в других исходных кодах написанных на библиотеках Qt, в этом архиве сценарий был. Это серьезно.

Открываем терминал, переходим в каталог, куда распаковывали файлы, запускаем ./unix_build.sh

sa@sa-desktop:~$ cd /home/sa/inst/build/qmasspics-1.1.1/
sa@sa-desktop:~/inst/build/qmasspics-1.1.1$ ./unix_build.sh
./unix_build.sh: 2: lupdate: not found
./unix_build.sh: 3: lrelease: not found
./unix_build.sh: 4: qmake: not found
make: *** Нет правила для сборки цели `/usr/share/qt4/mkspecs/linux-g++/qmake.conf', требуемой для `Makefile'. Останов.

Ошибка при первой попытке, это не провал, это дополнительная информация. А информация эта, как бы намекает нам что в GTK-ориентированном Gnom (это такой графический рабочий стол в Ubuntu) нет Qt, которое (в смысле Qt) проще встретить в Kubuntu (в Kubuntu в качестве рабочего стола используют как раз KDE, основанное на Qt). Если этот абзац оказался вам непонятен, можно смело переходить к следующему, так как никакой принципиальной информации в нем нет.

На зависимости для этих исходных файлов указывает гордая фраза:

Depends on: Qt 4.x

Следовательно, нужно привлекать к делу Synaptic, хотя... если у нас уже открыта консоль, зачем так далеко лезть, лучше прямо сюда вбить:

sudo apt-get install qt4-qmake

Когда установщик закончил, я попытку повторил:

sa@sa-desktop:~/inst/build/qmasspics-1.1.1$ ./unix_build.sh
./unix_build.sh: 2: lupdate: not found
./unix_build.sh: 3: lrelease: not found
WARNING: documentation.path is not defined: install target not created

/usr/bin/uic-qt4 src/dialog.ui -o src/ui_dialog.h
make: /usr/bin/uic-qt4: Команда не найдена
make: *** [src/ui_dialog.h] Ошибка 127

В этот раз, мне неоднозначно намекнули, что Qt 4 development tools ставить придется, а не хотелось, канал то узкий... Фраза "Необходимо скачать 72,0MБ архивов." давала понять, что к написанию этого текста я вернусь часа через 2. Итак:

sudo apt-get install qt4-dev-tools

Запрошенный пакет был установлен со всеми своими зависимостями поэтому можно пробовать снова.

sa@sa-desktop:~/inst/build/qmasspics-1.1.1$ ./unix_build.sh
Unknown feature http://qtsoftware.com/xml/features/report-whitespace-only-CharData
Updating 'locale/dialog_ui_en.ts'...

Found 81 source text(s) (0 new and 81 already existing)

Updating 'locale/dialog_ui_ru.ts'...

Found 81 source text(s) (0 new and 81 already existing)

Updating '/home/sa/inst/build/qmasspics-1.1.1/locale/dialog_ui_en.qm'...
Generated 0 translation(s) (0 finished and 0 unfinished)

Ignored 81 untranslated source text(s)
Updating '/home/sa/inst/build/qmasspics-1.1.1/locale/dialog_ui_ru.qm'...
Generated 77 translation(s) (0 finished and 77 unfinished)

Ignored 4 untranslated source text(s)
WARNING: documentation.path is not defined: install target not created

/usr/bin/uic-qt4 src/dialog.ui -o src/ui_dialog.h
g++ -c -pipe -O2 -D_REENTRANT -Wall -W -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4 -Iobj -Isrc -o obj/main.o src/main.cpp
make: g++: Команда не найдена
make: *** [obj/main.o] Ошибка 127

Ну вы уже поняли...

sudo apt-get install g++

Прошу заметить. для сборки пакета мне не пришлось повышать права своего пользователя. Так что все это безопасно. А установленные по ходу дела пакеты проверены тысячами (сотнями тысяч?) людей. В общем вся процедура безопасна, но полезной ее найдут те, кто собирается программировать. К стати, обобщим то, что бы делали, запишем команду для установки всех необходимых пакетов сразу:

sudo apt-get install qt4-qmake qt4-dev-tools g++

И запустить сценарий сборки. В нашем случае это:

sa@sa-desktop:~/inst/build/qmasspics-1.1.1$ ./unix_build.sh

Собирается эта программка быстро. Запускаем:

sa@sa-desktop:~/inst/build/qmasspics-1.1.1$ ./bin/qmasspics

У меня получилось. Переходим ко второму обещанному пункту.

Собираем дистрибутив программы для Ubuntu 9.04

В данном случае слово "дистрибутив" я использую в смысле "готовый для передачи конечному пользователю продукт". Если речь идет об Ubuntu, то нужно создать deb пакет, так как ее менеджер пакетов работает с этим типом дистрибутивов.

У deb пакета есть определенная система:

  • Это каталоги в которых лежат файлы программы
  • Это файл в котором указаны пути копирования файлов программы
  • Это файл контрольной суммы файлов программы

По порядку. Начнем с создания каталога, в котором сложим наши ингредиенты, при этом каталог DEBIAN в нем - обязателен:

mkdir -p ./deb/DEBIAN

Создаем самые необходимые файлы:

cd ./deb/DEBIAN
touch control md5sums postinst postrm

Права на запуск файлов postinst и postrm, так как они будут выполняться системой, производя установку.

chmod +x postinst postrm

Теперь можно перейти к заполнению созданных файлов (control, md5sums, postinst и postrm).

Перед завершением операции структура моих каталогов такова (составить ее мне помогла вот эта статейка):

sa@sa-desktop:~/inst/build/deb$ tree
.
|-- DEBIAN
| |-- control
| |-- md5sums
| |-- postinst
| `-- postrm
`-- usr
`-- bin
`-- qmasspics
|-- README.utf8
|-- description.txt
|-- locale
| |-- dialog_ui_en.qm
| |-- dialog_ui_en.ts
| |-- dialog_ui_ru.qm
| `-- dialog_ui_ru.ts
|-- qmasspics
`-- qmasspics.desktop

5 directories, 12 files

После всего этого выполняем:

dpkg -b deb QMassPics_1.1.1_i386.deb

... и никакой магии или загадок тут нет.

Но это в теории, так как собрать пакет правильно пока не получилось, а очень хочется. Это связано с тем, что писать сценарий установки сегодня некогда. Отложу ка этот процесс ввиду его кропотливости. До этого я обновлял пакеты. но собирать с нуля много дольше.

Подведем итоги

Собирать программу QMassPics мы научились, создадим для нее пакет в другой раз, попробовать запустить приложенный к статье файл уже можно сейчас. Для всех желающих во вложении к этой статье исполняемый файл. Если у вас установлено Qt4 - то под Ubuntu 9.04 он заработает почти наверняка.

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

ВложениеРазмер
Исполняемый файл QMassPics 1.1.1151.57 КБ
10
в среднем: 10 (1 голос)
Skala аватар
User offline. Last seen 1 неделя 2 дня ago. Offline
Зарегистрирован: 05/13/2008

Хочется дополнить парой слов:
1. Во втором пункте написано, что в пакет идут 4 файла: dialog_ui_ru.* и dialog_ui_en.* (простите мне мой ДОС). Можно обойтись двумя - с расширением qm : dialog_ui_ru.qm и dialog_ui_en.qm . ts-файлы это "исходники" переводов. QT-программa ищeт скомпилированный перевод, а не исходник.

2. В результате выполнения unix_build.sh && make && sudo make install ... Ну или так скажем: В результате выполнения последовательности команд
./unix_build.sh
make
sudo make install
(Конечно при условии, что все идет без ошибок) у пользователя должно появиться меню "Интернет->Загрузчик картинок QMassPics". В KDE точно появится, в GNOME не смотрел.

[добавлено]
Несмотря на то, что пункт меню должен появиться (а если не появится, то прошу извинений. пишите багрепорт.), Значка там не будет. Т.е.- из меню в кедах видно, а значок не нарисовал. Причина очень проста- рисовать значки не умею. Хотя уже научился в блендере рисовать абстрактные фигуры, все равно на значки это не подходит. Если кто-то нарисует подобающую картинку, то буду благодарен.

____________________________________
Linux разрабатывали для так сказать людей ©

sa
sa аватар
User offline. Last seen 5 дней 1 час ago. Offline
Зарегистрирован: 05/11/2008

Спасибо за уточнение, все учту

______________________________
In the world without walls, who needs windows?

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".