LinuxForum.Fans
Тема

Как собрать пакет из исходников? Совсем с нуля.

Автор: KaaPitoshka 21 сообщений 2456 просмотров
#375462

После распаковки соответствующего tar.gz в папке отсутствует не только config, но даже config.in или config.ac, зато есть файл config.pri. Т.е. большая часть туториалов по сборке не работает.

В приложенных пояснениях к исходникам:

Для компиляции требуются:
1) g++
2) flex
3) pkg-config

Компиляция:
> qmake
> make

Инсталляция (под рутом):
> make install

Бинарник копируется в /usr/local/bin, файлы данных (переводы) в /usr/local/share/myagent-im
Изменить пути можно подредактировав файл проекта src.pro (переменные BINDIR и DATADIR)

В папке лежат исходники cpp, h, картинки и прочее.

Система: Linux Mint 13
процессор: i686
desktop: KDE

Основной вопрос - как собрать =) Желательно подробное объяснение с наименьшим геморроем, т.к. я новичок в сборке.

#375464
sun написал:

Как уже писалось выше, файла configure или файла configure.in нет, этот способ не работает, пробовали.

#375466

А что за программа?

#375474

Не, а расстрелять, кто в Минте собирает из исходников. Ну, если уж горит - checkinstall http://ru.wikipedia.org/wiki/CheckInstall :)

#375478

mvt, если собрать пакет - то почему бы и нет?)

#375480
-=Serj=- написал:
mvt, если собрать пакет - то почему бы и нет?)

Да я что, против? :) Просто Минт- это Минт. А поискать в репах? Не выйдет - сделать пакет? Вот, поэтому - и checkinstall
Я не прав?

#375487
KaaPitoshka написал:

Как уже писалось выше, файла configure или файла configure.in нет, этот способ не работает, пробовали.

Потому что эта программа не использует Autotools. Она использует qmake. Следовательно, простейший способ собрать программу с опциями по умолчанию таков:

text
$ tar xf program.tar.gz
$ cd program 
$ qmake .
# make
# make install

Если же нужно что-то изменить, то процедура будет похожа, за следующим исключением:

text
# make PREFIX=/usr MANDIR=/usr/man
# make install DESTDIR=/tmp/package-program PREFIX=/usr MANDIR=/usr/man
cd /tmp/package-program
# makepkg ../program-0.0.1-i486-1.txz

Как-то так, вся процедура примерная и описана на примере Slackware, для Debian и использующих его формат пакета нужно использовать dpkg-buildpackage. Ну и, вероятно, что-то мог забыть/опустить.

#378608

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

yars написал:
Следовательно, простейший способ собрать программу с опциями по умолчанию таков:

На стадии make оно сделало подозрительное действие и выдало две ошибки: Error 1 и Error 2. Ладно, три, не нашло какой-то файл аккаунта черти где.

text
g++ -c -pipe -Werror=return-type -O2 -fPIC -Wall -W -D_REENTRANT -DVERSION=\"0.4.7-devel\" -DDATADIR=\"/usr/local/share/program\" -DQT_NO_DEBUG -DQT_NO_KEYWORDS -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -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 -I. -o account.o account.cpp
In file included from account.cpp:21:0:
account.h:24:19: fatal error: QObject: No such file or directory
compilation terminated.
make[1]: *** [account.o] Error 1
make[1]: Leaving directory `/home/downloads/new/myagent-im/src/core'
make: *** [sub-core-make_default-ordered] Error 2

Возможно, это связано с тем, что система не шибко аккуратно разбита на два жестких диска (/home находится целиком на другом)

#378615
KaaPitoshka написал:
Касательно того, зачем мне вообще этот геморрой. Искомая программа есть в готовых deb-пакетах, но не под мою архитектуру.

[quote=yars]Следовательно, простейший способ собрать программу с опциями по умолчанию таков:

На стадии make оно сделало подозрительное действие и выдало две ошибки: Error 1 и Error 2. Ладно, три, не нашло какой-то файл аккаунта черти где.

text
g++ -c -pipe -Werror=return-type -O2 -fPIC -Wall -W -D_REENTRANT -DVERSION=\"0.4.7-devel\" -DDATADIR=\"/usr/local/share/program\" -DQT_NO_DEBUG -DQT_NO_KEYWORDS -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -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 -I. -o account.o account.cpp
In file included from account.cpp:21:0:
account.h:24:19: fatal error: QObject: No such file or directory
compilation terminated.
make[1]: *** [account.o] Error 1
make[1]: Leaving directory `/home/downloads/new/myagent-im/src/core'
make: *** [sub-core-make_default-ordered] Error 2

Возможно, это связано с тем, что система не шибко аккуратно разбита на два жестких диска (/home находится целиком на другом)[/quote]
Да нет. Походу, у вас просто не стоят исходники ядра. В Минте - это естественно, хотите собирать самостоятельно - поставьте.

#378623

"KaaPitoshka" написал:
Касательно того, зачем мне вообще этот геморрой. Искомая программа есть в готовых deb-пакетах, но не под мою архитектуру.
значит собрать под вашу архитектуру ни у кого не получилось.
"KaaPitoshka" написал:
Возможно, это связано с тем, что система не шибко аккуратно разбита на два жестких диска (/home находится целиком на другом)
не.

ppkg-config поставили? Проблема скорее всего в нём (я надеюсь, весь Qt у вас уже есть)

"ksuha" написал:
Походу, у вас просто не стоят исходники ядра.
ядро тут совсем не причём.

QObject этоо Qtшная хрень. К ядру не имеет никакого отношения.
#378633

drBatty написал:
[quote="KaaPitoshka"]Касательно того, зачем мне вообще этот геморрой. Искомая программа есть в готовых deb-пакетах, но не под мою архитектуру.
значит собрать под вашу архитектуру ни у кого не получилось.
"KaaPitoshka" написал:
Возможно, это связано с тем, что система не шибко аккуратно разбита на два жестких диска (/home находится целиком на другом)
не.

ppkg-config поставили? Проблема скорее всего в нём (я надеюсь, весь Qt у вас уже есть)

"ksuha" написал:
Походу, у вас просто не стоят исходники ядра.
ядро тут совсем не причём.

QObject этоо Qtшная хрень. К ядру не имеет никакого отношения.[/quote]
Да. Почитала внимательно. Вы правы.
#378649
"drBatty" написал:
значит собрать под вашу архитектуру ни у кого не получилось.

Скорее этим никто не занимался (программа не распространенная).

drBatty написал:

ppkg-config поставили? Проблема скорее всего в нём (я надеюсь, весь Qt у вас уже есть)

Минут пять пыталась поставить несуществующий пакет, после чего выяснила, что пакет pkq-config уже стоит. Qt стоит, судя по всему - четвертый, насколько "весь" не знаю. Даже Qt creator есть.

#378652

"KaaPitoshka" написал:
Скорее этим никто не занимался (программа не распространенная).
ну может и так.

"KaaPitoshka" написал:
Минут пять пыталась поставить несуществующий пакет, после чего выяснила, что пакет pkq-config уже стоит. Qt стоит, судя по всему - четвертый, насколько "весь" не знаю. Даже Qt creator есть.
всё равно в вашей системе чего-то не хватает. Может каких-то dev-пакетов? Вы пробовали собирать другие Qt программы? Попробуйте. Соберите какую-нибудь программу в дефолтный префикс (/usr/local/), найдите хаутушку по сборке, а то у меня в слаке всё и так отлично собирается, потому ничем помочь не могу.
#378679

drBatty написал:
[quote="KaaPitoshka"]Скорее этим никто не занимался (программа не распространенная).
ну может и так.

"KaaPitoshka" написал:
Минут пять пыталась поставить несуществующий пакет, после чего выяснила, что пакет pkq-config уже стоит. Qt стоит, судя по всему - четвертый, насколько "весь" не знаю. Даже Qt creator есть.
всё равно в вашей системе чего-то не хватает. Может каких-то dev-пакетов? Вы пробовали собирать другие Qt программы? Попробуйте. Соберите какую-нибудь программу в дефолтный префикс (/usr/local/), найдите хаутушку по сборке, а то у меня в слаке всё и так отлично собирается, потому ничем помочь не могу.[/quote]
Док, насчет слаки - вы просто пальцы гнёте. Конечно, всё там на месте (я как-то поработала в slackware - получалось, но убунта лучше :) )
Человек хочет совместить. Слаку, убунту и ваше QT. А вы умный человек, а попробуйте этот вопрос разложить на составляющие. Не будет проще?
#378688

"ksuha" написал:
насчет слаки - вы просто пальцы гнёте.
в данном случае -- нет. Вот пруфлинк на ВСЕ исходники в дистрибутиве: http://mirror.yandex.ru/slackware/slackware-current/source/ В отличие от всех остальных дистров(бинарных), в слаке нет разделения на "dev" пакеты и на обычные, там все "dev". Да, это не нужно "простому пользователю", а нужно только разработчикам.

"ksuha" написал:
Человек хочет совместить. Слаку, убунту и ваше QT. А вы умный человек, а попробуйте этот вопрос разложить на составляющие. Не будет проще?
слака тут не причём вообще. Ну а в /usr/local/ можно в любом линуксе собирать исходники, и это не приводит к бардаку в системе(точнее бардак локализован в /usr/local/).

В убунте тоже так можно. Можно даже потом пользоваться собранным(конечно правильнее опакетить по правилам данного дистра, и установить пакетным менеджером свой пакет. Но это уже сл. ступень дао, ТС пока даже в /usr/local/ собрать не осилил).
#378743

Да, вы правы. Ещё checkinstall и будет всё прилично. Но убунта как-то исторически сложилась из готовых пакетов, это всё - уж на крайняк?

#378746

"ksuha" написал:
Ещё checkinstall и будет всё прилично.
ну это тоже не лучший вариант опакечивания. Только для своего локалхоста подходит.

"ksuha" написал:
Но убунта как-то исторически сложилась из готовых пакетов, это всё - уж на крайняк?
конечно. Естественно лучше найти пакет. И это относится к любому бинарному дистру(и к слаке тоже. Просто в слаке пакетов немного)
#378749

drBatty написал:
[quote="ksuha"]Ещё checkinstall и будет всё прилично.
ну это тоже не лучший вариант опакечивания. Только для своего локалхоста подходит.
[/quote]
ТС - пока хватит. Он же себе делает?
#378850

KaaPitoshka, установлен ли libqt4-dev?
И если он стоит, то каков путь до файла QObject?

Войдите или зарегистрируйтесь, чтобы ответить.