Сборка QMassPics
На ослинукс была новость о появлении замечательного менеджера закачки изображений и просто программы QMassPics.
Решил собрать программку, посмотреть ее поближе, поскольку версия (1.1.1) и скриншоты интригуют. Чтобы не размениваться на мелочи. попробую собрать deb, то есть версию программы для Ubuntu готовую к установки сразу после закачки.
Писать я буду как обычно, будто хочу кого-то научить, на самом деле, я так запоминаю.
И как обычно, во всем этом ничего сложного, просто немного терпения. От читателя оно потребуется чтобы дочитать до конца.
Итак в этой статье:
- Собираем приложение на Qt4 в среде Ubuntu 9.04
- Собираем дистрибутив программы для 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.1 | 151.57 КБ |
Спасибо за уточнение, все учту


Хочется дополнить парой слов:
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 разрабатывали для так сказать людей ©