Linux - сделать установку без замены символических ссылок

999
chrisb2244

Я недавно (и по глупости, поскольку здесь есть простое решение, если бы я установил --prefix=параметр на что-то другое, чем это по умолчанию /usr/bin) configured и maked gcc-4.9.1, не устанавливая --prefix=параметр. Я действительно не хочу переосмысливать makeвсе это, так как это займет довольно много времени.

Мой /usr/bin/каталог уже содержит gcc-4.8.2, как установлено ОС (Ubuntu-14.04). Ключевым моментом является то, что все существующие символические ссылки указывают на подобные вещи gcc-4.8и будут заменены по команде make installсимволическими ссылками на gcc-4.9и g++-4.9т. Д.

Могу ли я передать аргумент make, сказав, чтобы он не заменял символические ссылки, которые уже существуют? Или похожие?

0
Давайте просто уточнить кое-что; Вы хотите просто не перезаписывать существующую установку GCC, правильно? Будет ли установка новых файлов в другой каталог (как если бы вы использовали `./configure --prefix = $ something`) приемлемой заменой? Пожалуйста, отредактируйте, чтобы указать свой ответ. a CVn 9 лет назад 0
Я предположил бы, что это сработало бы хорошо для меня - тогда я мог бы либо добавить новое местоположение каталога к пути, либо создать символическую ссылку, как я выбрал. Теперь мне нужно либо «установить» и заново связать двоичные файлы «4.8.2», либо найти более изобретательное решение. Я здесь ищу сказанное более изобретательное решение. В любом случае, вопрос отредактирован, чтобы попытаться уточнить chrisb2244 9 лет назад 0

1 ответ на вопрос

0
a CVn

Прежде всего, обратите внимание, что префикс по умолчанию, если он не указан явно, чаще всего / usr / local. Таким образом, перезапись установки в / usr может даже не быть проблемой в вашем случае, хотя это, безусловно, может привести к путанице в будущем, когда один GCC находится в / usr, а другой - в / usr / local.

Хотя я не уверен, работает ли он специально с gcc-4.9.1 (хотя я не вижу особой причины для этого), autoconf (который генерирует configureскрипт) предоставляет средства для переопределения префикса во время установки.

Цитируем документацию по autoconf, раздел «имена установок» :

Самый переносимый способ повлиять на места установки - передать правильные места для настройки; однако многие пакеты предоставляют один или оба из следующих ярлыков для передачи назначений переменных в командную строку «make install» для изменения мест установки без необходимости перенастраивать или перекомпилировать.

Первый метод предусматривает предоставление переменной переопределения для каждого затронутого каталога. Например, 'make install prefix = / path / to / alternate' выберет альтернативное расположение, а также повлияет на все остальные переменные конфигурации каталога, которые были выражены в терминах '$ ' (или, другими словами, все каталоги, указанные во время конфигурирования, но не в терминах общего префикса, должны быть переопределены во время установки для перемещения всей установки). Подход переопределений переменных makefile для каждой переменной каталога требуется стандартами кодирования GNU и в идеале не вызывает перекомпиляции. Однако некоторые платформы имеют известные ограничения в семантике разделяемых библиотек, которые требуют перекомпиляции при использовании этого метода, особенно это заметно в пакетах, использующих GNU Libtool.

Второй метод предусматривает предоставление переменной 'DESTDIR'. Например, 'make install DESTDIR = / path / to / alternate' будет предшествовать '/ path / to / alternate' перед всеми путями установки. Подход переопределений «DESTDIR» не требуется стандартами кодирования GNU и не работает на платформах с буквами дисков. С другой стороны, он лучше избегает проблем с перекомпиляцией и работает хорошо, даже когда некоторые параметры каталога не были указаны в терминах «$ » во время настройки. Для пакетов, которые поддерживают 'DESTDIR', переменная должна оставаться неопределенной во время конфигурации и 'make all' и указываться только во время 'make install'.

Так make install DESTDIR=/opt/gcc-4.8.2 что делайте то, что вам нужно. Возможно, после этого вам может понадобиться немного переместить файлы в зависимости от желаемой структуры каталогов, но это должно быть достаточно для начала.

Обратите внимание, что я не проверял это; Вы управляете этим на свой страх и риск.