Установка lxml на vagrant-box’e

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

Решил я как-то теплым вечерком развернуть рабочее окружение на одной из домашних машин, благо это делается достаточно просто, в два волшебных слова:

$ vagrant up

Одной командой запускается пачка вагрант боксов и раскатывается ansible-кофигурация. Получаем прктически идентичное окружение как на продакшене или стейджинге.

Но что-то в этот раз пошло не так.. Два слова, которые всегда работали “без сучка, без задоринки”, стали вываливать лог ошибок сборки lxml для питоновского окружения, при том только на части vagrant-боксов. Всегда тяжело собирать питоновские библиотеки, которые имеют бинарные зависимости. Правда, сколько бы не пинали эту проблему, не вней оказалось дело.

Прозаично до безобразия… gcc прибивался системой в процессе сборки lxml, так как кончалась память на боксе (OOM-Killer постарался, нашел свою жертву).

Тот факт, что я сразу не обратил внимание на память, отнял у меня 20 мин жизни в попытке найти то самое, чего не хватает lxml в системе, чтобы быть успешно скомпилированной.

В очередной раз убедился, что магии нет.. а жаль. Ну ничего, может в следующий раз.