Автоматически обновите GCC к более позднему выпуску, не обновляя распределение

Кажется, что Вы хотите установить файлы на том же месте, где Вы извлекли tarball. Извлеките tarball к другому месту или попробуйте другой префикс, и он должен работать (худшая опция: использовать make install -i проигнорировать все сообщения об ошибках).

6
18.08.2014, 12:15
4 ответа
[113843] Управление пакетами дает вам набор пакетов, которые "принадлежат друг другу". Попытка обмануть его, чтобы установить новый набор программ, который не принадлежит вашему дистрибутиву, скорее всего, "не получится хорошо". Обычно вы получаете огромную цепочку последующих пакетов, которые также необходимо обновить (например, "gcc нуждается в новом glibc, новый glibc нуждается в новых бинутилях, новый бинутиль ломает ваш gdb, так что вам нужно обновить его" и т.д.).

Я нахожу лучшим решением сохранить существующие установленные инструменты там, где они есть, а затем собрать мою собственную версию gcc, llvm+clang, gdb, lldb или что-то еще, что мне кажется мне нужной более поздней версией. Обычно это работает без проблем, так как устанавливается в /usr/local/{bin,lib,include,...}, где инструменты дистрибутивов устанавливаются в /usr/{bin,lib,include,...}. - так что если вам когда-нибудь понадобится использовать старые (а иногда так получается, например, у вас есть более новый gcc, который, к сожалению, не способен компилировать проект A - или даже сам по себе) - вы используете /usr/bin/gcc или отредактируете ваш $PATH, чтобы не использовать /usr/local.

У меня установлена Fedora-16, но я использую gcc 4.8.2 (последняя версия на конец марта) и clang 3.5 - компиляторы по умолчанию, которые поставляются с системой - gcc 4.6.3 и clang 2.9. Для работы clang 3.5 требуется компилятор, совместимый с C++11, поэтому для этого проекта требуется 4.7 или 4.8. Он отлично работает. (но новый gcc и clang ломают старый gdb так, что символы работают не так, как ожидалось, поэтому мне либо нужно пересобрать gdb, либо обновить его)[113848].

4
27.01.2020, 20:27
[112795]GCC 4.9 находится в debian sid. Для установки вам нужно добавить нестабильное repo в ваш [113174]source.list[113175] и установить его вместе с любыми предварительными требованиями, которые понадобятся для установки вместе с ним. 4.9 в конце концов превратит его в тестируемый, но никогда не в хрипящий, так что вы не сможете установить его без добавления репозитория или сборки вручную.[112796].
-1
27.01.2020, 20:27
[113739]Боюсь, что это невозможно или, по крайней мере, не стоит того. Вы можете сделать следующее:

Установить chrooted окружение с более новым g++, идущим из репозиториев. [114579]debootstrap должен помочь вам в этом.

ffmpeg -i in.mp4 out.mp3
Преимущества: ваша установка не тронута. Она может быть автоматизирована.

Недостатки: правильная настройка chrooted окружения иногда не тривиальна. Время.

Сборка пакетов самостоятельно (обратный ход).

Преимущества: высокая персонализация. Нет необходимости тратить место на жестком диске

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

Использование виртуальной машины:

Преимущества/недостатки: как и в случае с chrooted решением, просто обе системы полностью отделены от ядра.

1
27.01.2020, 20:27
[114909] Правильный способ сделать это - использовать бэкспорты. Смотрите [115262] Как я могу установить более свежие версии программного обеспечения, чем то, что Debian обеспечивает?[115263] для Подоплёка. К сожалению, это не "автоматический", что бы это ни было. означает.

Я опишу процедуру ниже. Вопрос не уточняет версию gcc, но 4.9 только что был выпущен, так что я ограничусь описанием того, как это сделать. Каждый бэкпорт отличается и имеет свои проблемы; общего рецепта нет.

1) Загрузите исходники gcc 4.9 в какой-нибудь подкаталог, скажем [115264]gcc-4.9[115265].

2) Затем

3) Потом поместите каталог [115266]debian/[115267] под контроль версии. Я использую Mercurial. Это необязательный шаг, но он полезен, если что-то пойдёт не так.

4) Клонируйте этот [115268]Mercurial репозиторий, содержащий патч к репозиторию файлов пакета Debian[115269]. Вы можете клонировать его в каталоге [115270]debian/[115271]. Т.е.

4) Теперь вы можете попробовать собрать. Вам понадобится установить несколько пакетов, как [115272] build-essential [115273], [115274] fakeroot [115275] и [115276] devscripts [115277].

smb://username:password@192.168.0.1/ *or whatever your volume's IP is.*

Вероятно, это не сработает, если у вас нет необходимой сборки. зависимости. Итак, установите их; [115278] debuild [115279] скажет вам, что такое Пропал. С патчем вы должны быть в состоянии успешно устранить все зависимости от хрипа.

Когда этот процесс завершится, у вас будут дебеты gcc на верхнем уровне. вашего каталога, [115280]gcc-4.9 [115281], который должен быть установлен в Уизи. Примечание: Я не проверял это на момент написания статьи - см. ниже.

  • ПРИМЕЧАНИЕ: Этот патч может не продолжать работать для дальнейшего обновления [115282]gcc-4.9[115283]. Для справки, вот версия, которую я исправляю. против. Это первый пакет Debian, следующий за выпуском gcc 4.9 на 2014-04-22.
  • Поэтому я включаю некоторые заметки о том, как был сгенерирован патч, чтобы другие могли сделать это сами. Пожалуйста, прочтите это. На сайте в частности, примечание (6) (Multiarch) может касаться вас, даже если вы не планируете сделайте свой собственный патч.
  • 1) Во-первых, зависимости от сборки - для нестабильных, и это неоправданно ограничительный. Первое, что нужно сделать, это ослабить ограничения таким образом, чтобы строительные зависимости были удовлетворены от с хрипами. Итак, первая попытка
  • debuild[115285] пожалуется на то, что зависимости от сборки не являются установленный. Даже после их установки [115286]debuild[115287] будет жаловаться на то, что версии не достаточно свежие. Итак, самое простое do - удалить упомянутые номера версий.
  • Примерами этого являются различные [115288]binutils[115289], [115290]libcloog-isl-dev[115291], и [115292]libmpc-dev[115293].
  • Так, например, измените
  • на

в строке [115294]Build-Depends:[115295] вверху файла [115296]debian/control[115297], который содержит информацию о сборочных зависимостях и бинарном Пакеты. Как только это будет сделано для всех оскорбительных пакетов, и у вас есть установил необходимые пакеты сборки, запустится система сборки Debian.

2) Другое, что вам нужно сделать, это удалить поддержку для [115298]x32[115299]. Это недоступно для Уизи. Например, пакет [115300]libc6-dev-x32[115301] на Wheezy не существует. Этот . выполняется путём захода в [115302]debian/rules.defs[115303] и удаления всех упоминаний о x32. Этот файл используется файлом сборки [115304]debian/rules[115305].

3) Вы также хотите изменить [115306]debian/source/format[115307]. Это исходный текст формат 1, по какой-то причине. Измените его на версию [115308]3.0 (квилт)[115309]. Итак, изменить содержимое этого файла с [115310]1.0[115311] на [115312]3.0 (квилт)[115313].

Это необходимо только в том случае, если вы поместили каталог [115314]debian/[115315] под контроль версий. По причинам, в которые я не хочу сюда входить, формат 1 делает Если [115316]debian/[115317] находится под контролем версий, то сборка завершится неудачно.

  1. 4) gcc запускает экстенсивный, и я имею в виду экстенсивный, тестовый набор во время сборки. Если вы не хотите, чтобы он выполнялся, то его можно отключить, изменив следующие строки в [115318]rules.defs[115319] (что появляется ниже [115320]# если вы не хотите запускать тестируемый набор gcc, отметьте следующую строку [115321])

  2. от

до

я отключил тестовый набор в моём патче.

5) Сразу же после того, как система сборки Debian запустится, на экране появится сообщение Файл [115322] управления [115323] будет заменен на автогенерируемый файл с использованием [115324]control.m4[115325]. Тем не менее, необходимо изменить управление [115326][115327], потому что в противном случае система сборки откажется от продолжения. Так и есть можно заставить, но это, как правило, не рекомендуется.

6) Multiarch имеет раздражающую особенность, которая заключается в том, что если вы обновляете пакет, то любой другая установленная архитектура должна остаться в той же версии. Я запуск amd64, и это влияет на меня, потому что я запускаю пакеты i386. для моей установки Skype. Итак, если вы используете amd64, проверьте и посмотрите. если у вас установлены одинаковые gcc-пакеты amd64 и i386. В частности, пакет libgcc1 будет обновлен, если вы установите 4.9. Это безвредно.

В любом случае, на момент написания статьи я не генерировал i386 debs, поэтому не смог проверить установку gcc 4.9 amd64 с хрипами.

UPDATE: Наконец-то удалось собрать i386 debs для gcc 4. 9 (в chroot на i386, используя [115328]schroot[115329] (см. [115330]Как запускать 32-битные программы на 64-битной системе Debian/Ubuntu?[115331])), и установить их в тандеме с amd64, из-за упомянутого выше ограничения на мультилиб. Я все еще тестирую, но и g++ 4.7, и g++-4.9 компилируют код, с которым я его тестировал. Установка [115332]gcc 4.9[115333] debs не совсем проста, так как некоторые общие библиотеки для 4.7 и 4.9 тоже нуждаются в обновлении, например [115334]libstdc++6[115335].

  1. Мне было бы интересно услышать сообщения от других людей об этом. Если кому-то понадобится помощь в настройке патча для более поздних версий/релизаций gcc 4.9, дайте мне знать, комментируя здесь.[114966].
3
27.01.2020, 20:27

Теги

Похожие вопросы