Сборка dev-qt/qtwebkit-5.6.0 и создание swap файла

Третьего дня зашел на сайт Calculate Linux и узнал, что месяц назад начался переезд на KDE/Plasma5. Судя по каментам, всё работает более-менее стабильно, поэтому нужно было переезжать, тем более переезд был принудительный, KDE 4 перестал поддерживаться сообществом и всё такое.

И вот, система обновляется, всё нормально, пока дело не доходит до сборки dev-qt/qtwebkit-5.6.0

Выдаёт такую ошибку:

make[2]: Entering directory '/var/calculate/tmp/portage/dev-qt/qtwebkit-5.6.0/work/qtwebkit-opensource-src-5.6.0/Source/JavaScriptCore'
ruby /var/calculate/tmp/portage/dev-qt/qtwebkit-5.6.0/work/qtwebkit-opensource-src-5.6.0/Source/JavaScriptCore/offlineasm/generate_offset_extractor.rb llint/LowLevelInterpreter.asm LLIntDesiredOffsets.h
/usr/lib64/ruby/2.0.0/rubygems.rb:15:in `require': cannot load such file -- rubygems/compatibility (LoadError)
from /usr/lib64/ruby/2.0.0/rubygems.rb:15:in `<top (required)>'
from <internal:gem_prelude>:1:in `require'
from <internal:gem_prelude>:1:in `<compiled>'
Makefile.LLIntOffsetsExtractor:426: recipe for target 'LLIntDesiredOffsets.h' failed
make[2]: *** [LLIntDesiredOffsets.h] Error 1

Засоветовали пересобрать dev-lang/ruby и dev-ruby/rubygems - не помогло. Далее я обратил внимание, что установлено 2 версии ruby - 2.0 и 2.1.7. Переключение профиля  ruby20 на ruby21 через eselect ruby set ruby21 помогло решить проблему.

Но на этом проблемы не закончились. Дальше при сборке выдаёт такое:

x86_64-pc-linux-gnu-g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://bugs.gentoo.org/> for instructions.
Makefile.WebCore.Target:151688: recipe for target '.obj/inspector/InspectorAllInOne.o' failed
make[2]: *** [.obj/inspector/InspectorAllInOne.o] Error 4
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/var/calculate/tmp/portage/dev-qt/qtwebkit-5.6.0/work/qtwebkit-opensource-src-5.6.0/Source/WebCore'
Makefile.WebCore:68: recipe for target 'sub-Target-pri-make_first-ordered' failed
make[1]: *** [sub-Target-pri-make_first-ordered] Error 2
make[1]: Leaving directory '/var/calculate/tmp/portage/dev-qt/qtwebkit-5.6.0/work/qtwebkit-opensource-src-5.6.0/Source/WebCore'
Makefile:178: recipe for target 'sub-Source-WebCore-WebCore-pro-make_first-ordered' failed
make: *** [sub-Source-WebCore-WebCore-pro-make_first-ordered] Error 2

Полез на багтрекер Gentoo - пишут, что скорее всего просто закончилась память.

Действительно, dmesg подтверждает:

[27324.991323] Out of memory: Kill process 6800 (cc1plus) score 125 or sacrifice child
[27324.991337] Killed process 6800 (cc1plus) total-vm:1123472kB, anon-rss:1051444kB, file-rss:0kB

Пришлось подключать дополнительно swap-файл, т.к. раздел для него на жёстком диске я просто не создавал, оперативной памяти в 8Гб всегда хватало.

Создаём файл:

sudo dd if=/dev/zero of=/swapfile bs=1G count=6

Заместо G можно подставить M и K, соответственно мегабайт и килобайт.

Значение count умножаются на значение bs, я создал файл размером в 6 гигабайт.

Создаем swap в файле:

mkswap /swapfile

Включаем его:

swapon /swapfile

После подключения swap'a сборка завершилась успешно.

Более подробно про создание, подключение и настройки своппинга написано здесь.

Добавить комментарий

Ваш e-mail не будет опубликован.