LINUX.ORG.RU

emerge. Продолжить прерванную компиляцию

 


3

2

Возможно ли продолжить прерванную компиляцию и установку пакета в генте? Краем уха вроде слышал, что можно.

А то в процессе компиляции файерфокса комп чего-то подвис, и пришлось делать хард ресет. Уже было накомпилировано больше 3Гб, жалко терять :)

★★★★★

в общем случае - нет

в процессе компиляции файерфокса комп чего-то подвис, и пришлось делать хард ресет

оперативка кончилась, наверное

anonymous
()
Ответ на: комментарий от Tanger

эта команда собирает пакет без установки в систему, к запросу ТС не имеет никакого отношения

anonymous
()

У emerge есть опция --resume (-r), при задействовании которой будет продолжена установка пакетов с уже рассчитанными при прошлом запуске зависимостями, а не будет происходить новый расчёт зависимостей.

Т.е. если вы указали устанавливать firefox:

emerge -av firefox
У вас вначале просчитаются зависимости, а затем они начнут ставиться.

Теперь, если вы прервали процесс установки и затем вызвали emerge с ключём '-r':

emerge -r
То у вас зависимости заново просчитываться не будут, кроме того уже собранные и установленные зависимости заново собираться не будут, а сборка продолжится с того пакета, на котором вы её прервали, но сборка этого пакета начнётся с начала.

kostik87 ★★★★★
()

man emerge

--resume(-r) Resumes the most recent merge list that has been aborted due to an error. This re-uses the options that were given with the original command that's being resumed, and the user may also provide additional options when calling --resume. Please note that this operation will only return an error on failure. If there is nothing for portage to do, then portage will exit with a message and a success condition. A resume list will persist until it has been completed in entirety or until another aborted merge list replaces it. The resume history is capable of storing two merge lists. After one resume list completes, it is possible to invoke --resume once again in order to resume an older list.

(cut)

--keep-going [ y | n ] Continue as much as possible after an error. When an error occurs, dependencies are recalculated for remain‐ ing packages and any with unsatisfied dependencies are automatically dropped. Also see the related --skip‐ first option.

Но в данном случае скорее всего они тебе не помогут.

init_6 ★★★★★
()

Уже было накомпилировано больше 3Гб, жалко терять :)

Если не был установлен ccache - то никак. А так, конечно, вперед

emerge --resume

iVS ★★★★★
()
Ответ на: комментарий от Tanger

merge - это установка пакета в систему (системную иерархию), и это вообще не то, что нужно ТС

anonymous
()
Ответ на: комментарий от kostik87

кроме того уже собранные и установленные зависимости заново собираться не будут

Они вообще не будут заново собираться, даже при emerge firefox, если не было сделано emerge --depclean.

а сборка продолжится с того пакета, на котором вы её прервали

Не всегда, иногда несущественный порядок может чуток измениться.

iVS ★★★★★
()
Ответ на: комментарий от anonymous

merge Normally, to merge an ebuild, you need to fetch, unpack, compile, install and qmerge. If you're simply interested in merging the ebuild, you can use this command, which will perform all these steps for you, stopping along the way if a particular step doesn't complete successfully.

Не путаешь ли ты qmerge с merge?

qmerge This function installs all the files in the install directory to the live filesystem. The process works as follows: first, the pkg_preinst() function (if specified) is run. Then, the files are merged into the live filesystem, and the installed files' md5 digests are recorded in /var/db/pkg/${CATEGORY}/${PN}-${PVR}/CONTENTS. After all the files have been merged, the pkg_postinst() function (if specified) is executed.

Tanger ★★★★★
()
Последнее исправление: Tanger (всего исправлений: 2)
Ответ на: комментарий от iVS

то никак

Скажем так, это не совсем верно, в принципе можно посмотреть Makefile или что там у firefox и посмотреть как всё же собирается firefox, определить на каком этапе прервалась сборка и в ручную указывать команды из Makefile на сборку объектных файлов и их последующую линковку, но проще заново запустить сборки пакета нормальным способом.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от iVS

Они вообще не будут заново собираться, даже при emerge firefox, если не было сделано emerge --depclean.

С чего это, если не был установлен пакет, необходимый для сборки, в данном случае firefox, то при вызове 'emerge -r' соберётся в начале он и все необходимые для сборки firefox, а уже затем будет собираться firefox.

kostik87 ★★★★★
()
Ответ на: комментарий от anonymous

Но ТС же его не использовал, я указал лишь возможный вариант в данном случае, но это не означает, что этот вариант стоит использовать, но ТС может всё же попробовать.

kostik87 ★★★★★
()
Ответ на: комментарий от Tanger

слющай, перестань тупить, да?

тебе в мане чётко написали, что merge, как и qmerge, устанавливает пакет в систему, о чём я и сказал выше

у ТСа установка прервалась на этапе сборки, чем ему поможет твой merge?

anonymous
()
Ответ на: комментарий от kostik87

Скажем так, это не совсем верно, в принципе можно

Так можно и от пакетного менеджера отказаться, и это можно, но это уже будет не гента. Правильный подход в указании FEATURES=«ccache».

iVS ★★★★★
()
Ответ на: комментарий от anonymous

у ТСа установка прервалась на этапе сборки, чем ему поможет твой merge?

что merge, как и qmerge, устанавливает пакет в систему

ТСу и нужно установить пакет в систему. Только вот, когда он пишет emerge <package>, у него стирается весь /var/tmp/portage/<cat>/<package>, а когда делает ebuild <...ebuild> merge - нет.

Tanger ★★★★★
()
Ответ на: комментарий от kostik87

ТС может всё же попробовать.

Можно попробовать и стену лбом расшибить, а подсказывать желательно то, что сам делал. Встав в позу диванного теоретика, я с тобой соглашусь, но на деле у ТС на это уйдет куда больше времени, чем на простую пересборку. Т.е. ты у нас специалист по вредным советам.

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от Tanger

ТСу и нужно установить пакет в систему

у тебя проблемы не только с английским, но и с русским

Только вот, когда он пишет emerge <package>, у него стирается весь /var/tmp/portage/<cat>/<package>, а когда делает ebuild <...ebuild> merge - нет

ога

а несуществующие собранные бинарники в /var/tmp/portage/... твой merge высрет из астрала, видимо

anonymous
()
Ответ на: комментарий от anonymous

у тебя проблемы не только с английским, но и с русским

О Великий онанимус, переведи никчёмному с русского на его язык..

а несуществующие собранные бинарники в /var/tmp/portage/... твой merge высрет из астрала, видимо

Нет. man make до просветления.

Tanger ★★★★★
()
Ответ на: комментарий от kostik87

при вызове 'emerge -r' соберётся в начале он и все необходимые для сборки firefox

Что-то мне подсказывает, что если начал собирать firefox, то все ему нужные зависимости уже были собраны, и пересобирать их не придется при 'emerge -r'.

iVS ★★★★★
()
Ответ на: комментарий от iVS

И не только, при emerge firefox уже собранные зависимости тоже никуда не пропадут.

iVS ★★★★★
()
Ответ на: комментарий от iVS

Читаем ещё раз сообщение emerge. Продолжить прерванную компиляцию (комментарий)

kostik87

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

От того, что это сложно не означает, что это не возможно выполнить. Кроме того это единственно возможный вариант продолжить сборку пакета.

kostik87 ★★★★★
()
Ответ на: комментарий от iVS

Это пример. Я описал ситуацию прерывания работы emerge на этапе сборки зависимостей для устанавливаемого пакета.

Неужели это сложно понять ?

kostik87 ★★★★★
()
Ответ на: комментарий от anonymous

на что именно мне обратить внимание?

DESCRIPTION. Там не много. А с английским у тебя проблем походу нет..

Tanger ★★★★★
()
Ответ на: комментарий от kostik87

Ясно, диванный теоретик детектед. А по сути сказано пшик.

iVS ★★★★★
()
Ответ на: комментарий от Tanger

ладно, допустим

сейчас проверю на том же firefox

anonymous
()
Ответ на: комментарий от iVS

Ну вообще это ты ответил мне на моё сообщение emerge. Продолжить прерванную компиляцию (комментарий), адресованное ТС, а я тебе ответил на твоё сообщение.

В общем не путайся.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Я тебя поправил emerge. Продолжить прерванную компиляцию (комментарий)

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

iVS ★★★★★
()

в итоге, насколько понимаю, нельзя?

Но чисто ради интереса, если я сейчас сделаю

cd /var/tmp/portage/www-client/firefox-19.0/ && make install

оно же куда-то должно установиться, во временную директорию. Можно потом оттуда в систему поставить?

Harald ★★★★★
() автор топика
Ответ на: комментарий от Harald

оно же куда-то должно установиться, во временную директорию. Можно потом оттуда в систему поставить?

И это по-твоему как-то решает следующее?

Уже было накомпилировано больше 3Гб, жалко терять :)

iVS ★★★★★
()
Ответ на: комментарий от Harald

по ходу облом,

пошастал по разным директориям вроде /var/tmp/portage/www-client/firefox-19.0/work/mozilla-release/build

нигде Makefile готовый не лежит

Harald ★★★★★
() автор топика
Ответ на: комментарий от iVS

С какого потолка, я написал пример в своём первом сообщении в теме, ты мне на него ответил, в ответе на это сообщение я расписал свой пример. Твоя поправка не верна.

kostik87 ★★★★★
()
Ответ на: комментарий от Harald

Можно:

открываешь ebuild

Смотришь в каком порядке вызываются функции (src_prepare, src_compile ....)

Далее смотришь на каком этапе оборвалась установка (допустим на кимпиляции).

Далее ebuild /path/to/ebuild compile

А потом ebuild /path/to/ebuild ... (все функции после src_compile, обычно install)

ubiquitine
()
Ответ на: комментарий от Harald

ну да, то что уже скомпилировано, заново компилировать не будет

Откуда трава? Если make полностью не выполнен, то как оно будет работать? И вообще неинтересно, поскольку ты не понимаешь, зачем пакетный менеджер. Кто потом мусор убирать будет от ручной сборки, когда новый firefox появится? Тоже ручками?

iVS ★★★★★
()
Ответ на: комментарий от iVS

Откуда трава?

из мануала GNU Make, свёрнута и раскурена :) Ибо зачем тогда make нужен? Это его как бы основное предназначение

Harald ★★★★★
() автор топика
Ответ на: комментарий от Harald

Ибо зачем тогда make нужен?

А зачем пакетный менеджер? Очень горишь желанием превратить генту в слаку? Ну, вперед.

iVS ★★★★★
()
Ответ на: комментарий от ubiquitine

вроде то что нужно, ща попробую

Harald ★★★★★
() автор топика
Ответ на: комментарий от iVS

А зачем пакетный менеджер?

чтоб пакетами управлять.
Пакет уже как бы сконфигурирован так, чтобы make install ставил всё во временную директорию, а оттуда уже Portage копирует файлики в системные директории.

И вообще уйди из топика, если разбираешься в теме меньше меня :)

Harald ★★★★★
() автор топика
Ответ на: комментарий от ubiquitine

Далее ebuild /path/to/ebuild compile

Да можно сразу делать ebuild /path/to/ebuild merge..

Tanger ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.