LinuxForum.Fans
Тема

[Решено] Ошибка ./configure при установке пакета

Автор: andreil 82 сообщений 13195 просмотров
#372565
drBatty написал:
дело не только в "папке" сборки. Ну вам виднее, мне лениво генту ставить.

Я к тому, что "make clean" бесполезен, ибо папка, в которой производилась сборка, перед установкой пакета удаляется.

#372567

Silencer, с тобой лично тоже не хочу спорить. Смысл, если ты ВЕРУЕШЬ в свою рукокнигу? И она для тебя даже ценнее, чем документация от разработчиков этой самой make.

Да и в данном случае должно быть и идиоту понятно, что запускать на одноядерном камне в два потока -- не самая лучшая идея.

и да

If the `-j' option is followed by an integer, this is the number of
recipes to execute at once; this is called the number of "job slots".
If there is nothing looking like an integer after the `-j' option,
there is no limit on the number of job slots. The default number of job
slots is one, which means serial execution (one thing at a time).

One unpleasant consequence of running several recipes simultaneously
is that output generated by the recipes appears whenever each recipe
sends it, so messages from different recipes may be interspersed.

Another problem is that two processes cannot both take input from the
same device; so to make sure that only one recipe tries to take input
from the terminal at once, `make' will invalidate the standard input
streams of all but one running recipe. This means that attempting to
read from standard input will usually be a fatal error (a `Broken pipe'
signal) for most child processes if there are several.

It is unpredictable which recipe will have a valid standard input
stream (which will come from the terminal, or wherever you redirect the
standard input of `make'). The first recipe run will always get it
first, and the first recipe started after that one finishes will get it
next, and so on.
RTFM.
#372569

"andreil" написал:
Я к тому, что "make clean" бесполезен, ибо папка, в которой производилась сборка, перед установкой пакета удаляется.
"andreil" написал:
./configure --prefix=/usr --build=armv7a-hardfloat-linux-gnueabi --host=armv7a-hardfloat-linux-gnueabi --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib
configure: error: expected an absolute directory name for --datadir:
что-то вы там напутали в "папках". Не?
#372570
drBatty написал:
что-то вы там напутали в "папках". Не?

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

#372571

дык если у вас цель /usr/, то вы так всю свою /usr попортите. Надо было --prefix=/tmp/ или типа того. Это "для проверки". Тогда оно будет собирать В /tmp/.

Кстати, make clean это вообще говоря make-цель, и чего оно делает, известно только разработчику ПО(hz в данном случае). Чистит чего-то.

#372573
"drBatty" написал:
документация от разработчиков этой самой make

Я к тому, что может все-таки ограничить число одновременных процессов компиляции, ибо

text

If there is more than one -j option, the last one is effective.  If the -j option is given without an  argument,  make will not limit the number of jobs that can run simultaneously.

без оного ограничения его просто нет. *DONT_KNOW*

#372574
drBatty написал:
дык если у вас цель /usr/, то вы так всю свою /usr попортите. Надо было --prefix=/tmp/ или типа того. Это "для проверки". Тогда оно будет собирать В /tmp/.

Кстати, make clean это вообще говоря make-цель, и чего оно делает, известно только разработчику ПО(hz в данном случае). Чистит чего-то.

До сборки вообще не дошло дело. Всё стопорилось на ./configure...

PS: Всё, останавливаем флуд. Я пока восстанавливаю базовую систему.

#372576
drBatty написал:
Чистит чего-то.

Это вполне себе стандартная цель, чистит дерево исходников от промежуточных результатов компиляции. Часто вместо этого просто удаляют дерево целиком и заново распаковывают. А конечные результаты можно зачистить при помощи цели "uninstall".

#372578

Silencer, make это программа для разработчиков, а не для гентушников. Без j AFAIK там вообще никакой многозадачности нет, т.к. она не нужна. Обычно собирают не всё, а только некоторые файлы в программе. Вот как раз make этим и рулит. Но нет никакого смысла собирать зависимые файлы(не все) в несколько потоков. Их надо строго по очереди собирать, в определённом порядке.

И лишь в релизе есть смысл собирать СРАЗУ несколько файлов, и для этого в make и встроены ключи -j, -l. Без них make работает последовательно, что-бы меньше было глюков.

А в рукокниге наверное опечатка, + с минусом перепутали. У вас ведь гента, попробуйте разные варианты -j, как быстрее. Ещё учтите, что не все любят смотреть на сборку мира, некоторым ещё и работать надо при этом. ;)

#372580

"yars" написал:
Это вполне себе стандартная цель, чистит дерево исходников от промежуточных результатов компиляции. Часто вместо этого просто удаляют дерево целиком и заново распаковывают. А конечные результаты можно зачистить при помощи цели "uninstall".
в теории да.
#372582

drBatty, в рукокниге ничего никто не перепутал - схема кол-во_ядер+1 даёт самый лучший результат.
проверял много раз, так что не надо тут.
с одноядерником, пожалуй лучше оставить дефолтный 1 поток.
а про работать - пора осилить приоритеты - при компилянии я и поиграть могу, а уж про другое вообще и говорить нечего.
единственное но - надо чтобы хватало рамы на все задачи, а уж про проц при нормально настроенных приоритетах можно забыть.
аналогично с I/O.
ТС, а тебе походу надо пересобрать sys-apps/coreutils

#372583
"megabaks" написал:
в рукокниге ничего никто не перепутал - схема кол-во_ядер+1 даёт самый лучший результат.
проверял много раз, так что не надо тут.

ну может быть. Расскажи лучше почему так?

#372584

"drBatty" написал:
Расскажи лучше почему так?
потому что по потоку на ядро + один прыгающий.
поток может не полностью съедать ядро, оставшуюся часть и съедает прыгающий.
можешь сам помониторить на большом проекте - при схеме кол_во_ядер+1 ядра нагружены более равномерно и при этом сильней, нежели при поядерной схеме или тем более -1
#372585
megabaks написал:
потому что по потоку на ядро + один прыгающий.
поток может не полностью съедать ядро, оставшуюся часть и съедает прыгающий.
можешь сам помониторить на большом проекте - при схеме кол_во_ядер+1 ядра нагружены более равномерно и при этом сильней, нежели при поядерной схеме или тем более -1

Полностью согласен. Во всех статьях о многозадачности пишется именно количество ядер + 1. Не раз наблюдал за эффектом от этого при компиляции Chromium - при +1 загрузка всегда 100%, а без - появляются пробелы при переходах между компилируемыми файлами.

PS: coreutils пересоберу, если опять выскочит данная ошибка...

#372586

"megabaks" написал:
потому что по потоку на ядро + один прыгающий.
оно конечно быстрее будет, об этом я не подумал, каюсь. Но ИМХО работать будет тяжко с такой загрузкой.

"andreil" написал:
загрузка всегда 100%, а без - появляются пробелы
ну и куда впихнуть новый поток, которых при работе Linux открывается Over9000? Не, я знаю про nice, но оно только работающие потоки разруливает. А не новые.

Ну да ладно, вам виднее, я Мир не собираю, ибо лень.

PS: на одноядерном по любому разницы нет никакой. Там эта опция просо смысла не имеет.
#372588

drBatty, я же писал про приоритеты - если портажу дать минимальный или хотя бы 10 приоритет, то ты и не заметишь нагрузки от компиляния.
естессно, то же самое надо сделать и для I/O.
в идеале, конечно, компилять в раме, но не у всех есть возможность.

#372590

"megabaks" написал:
я же писал про приоритеты - если портажу дать минимальный или хотя бы 10 приоритет, то ты и не заметишь нагрузки от компиляния.
ага. На своём g2020 замечу o_O

"megabaks" написал:
естессно, то же самое надо сделать и для I/O.
в идеале, конечно, компилять в раме, но не у всех есть возможность.
нет, с этим всё понятно, я про то, что системе не приткнуть новый процесс, т.к. make их пихает во все щели.

Пойми, если ты запустил два процесса, один с nice, то у тебя тот, что с nice будет работать медленно, а обычный -- быстро(на одном ядре).

Но я про старт новых процессов говорил.
#372604

Теперь еще интереснее. Другая ошибка на другом пакете:
[console]>>> Emerging (24 of 45) sys-apps/kbd-1.15.5-r1
* kbd-1.15.5.tar.gz SHA256 SHA512 WHIRLPOOL size ;-) ... [ ok ]
>>> Unpacking source...
>>> Unpacking kbd-1.15.5.tar.gz to /var/tmp/portage/sys-apps/kbd-1.15.5-r1/work
>>> Source unpacked in /var/tmp/portage/sys-apps/kbd-1.15.5-r1/work
>>> Preparing source in /var/tmp/portage/sys-apps/kbd-1.15.5-r1/work/kbd-1.15.5 ...
* Applying kbd-1.15.5-loadkeys-parse.patch ... [ ok ]
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/sys-apps/kbd-1.15.5-r1/work/kbd-1.15.5 ...
* econf: updating kbd-1.15.5/config/config.sub with /usr/share/gnuconfig/config.sub
* econf: updating kbd-1.15.5/config/config.guess with /usr/share/gnuconfig/config.guess
./configure --prefix=/usr --build=armv7a-hardfloat-linux-gnueabi --host=armv7a-hardfloat-linux-gnueabi --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --disable-dependency-tracking --enable-nls --enable-vlock
----blah----
checking if armv7a-hardfloat-linux-gnueabi-gcc supports -Wmissing-declarations flag... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating data/Makefile
config.status: creating man/Makefile
config.status: creating man/man1/Makefile
config.status: creating man/man1/dumpkeys.1
config.status: creating man/man1/loadkeys.1
config.status: creating man/man1misc/Makefile
config.status: creating man/man5/Makefile
config.status: creating man/man8/Makefile
config.status: creating man/man8/loadunimap.8
config.status: creating man/man8/mapscrn.8
config.status: creating man/man8/setfont.8
config.status: creating man/man8misc/Makefile
config.status: creating po/Makefile.in
config.status: WARNING: 'po/Makefile.in.in' seems to ignore the --datarootdir setting
config.status: creating src/Makefile
config.status: creating src/vlock/Makefile
config.status: creating config.h
gawk: ./conf397qnu/defines.awk:61: fatal error: internal error
./config.status: line 1137: 30112 Aborted $AWK -f "$ac_tmp/defines.awk" 'config.h.in'
config.status: error: could not create config.h[/console]
Установку делал на чистой системе - развернул из stage3, накатил из бинарников пару пакетов (emerge -av1k binutils gcc gcc-config linux-headers glibc) и запустил пересборку системы (emerge -av1bk system).

#372605
"andreil" написал:
накатил из бинарников пару пакетов (emerge -av1k binutils gcc gcc-config linux-headers glibc)

А зачем gcc из бинарников? Он же в stage есть. (про остальные не скажу)

#372608

"andreil" написал:
gawk: ./conf397qnu/defines.awk:61: fatal error: internal error
а что в 61й строке этого скрипта? ./conf397qnu/defines.awk
Войдите или зарегистрируйтесь, чтобы ответить.