1

По определенным причинам я должен понизить свой GCC до версии 2.x, используя apt-get (не загружая и не компилируя исходный код).

Это возможно? Если да, как я могу найти адрес хранилища и установить его через apt-get?

Заранее спасибо.

1 ответ1

1

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

Хотя gcc, glibc, ядро Linux и другие различные системные библиотеки не так тесно связаны, как во FreeBSD и OpenBSD, они имеют параллельную эволюцию. Поскольку последние воздержания от поддержки gcc 2.95 перестали поддерживаться в ядре еще в 2005 году, она также имеет поддержку в основных системных библиотеках.

Получение версии 2.x gcc для установки на современную систему было бы серьезным препятствием из-за всех зависимостей - это зависит от более старых версий системных библиотек, из которых сообщество Linux давно перешло, создавая ситуацию "ад зависимости" даже для установки из исходного кода, а тем более - для установки из пакетов - одни только зависимости, вероятно, вынудят вас перейти с более чем десятка поколений вашего дистрибутива Linux на версию, которая не только больше не поддерживается, но и также ужасно небезопасно.

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

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

обходные

Однако вся надежда не потеряна. Краткосрочные решения - это chroot или виртуализация. В одном из ответов на https://stackoverflow.com/questions/8176798/install-gcc-2-95-3-in-ubuntu-10-04-3 упоминается, что Debian Etch был одним из последних дистрибутивов, поддерживавших gcc. 2,95. Построение chroot Debian Etch или виртуальной машины должно быть возможным. Последний раз этот дистрибутив получал поддержку в области безопасности в 2010 году, поэтому вы все равно будете искать накопленные уязвимости безопасности за 4 года.

Старые версии Debian, которые вам понадобятся для этого, можно найти только по адресу https://archive.debian.org/debian, так как на данный момент они совершенно не поддерживаются.

Похоже, что debootstrap (https://wiki.debian.org/Debootstrap) по-прежнему может устанавливать etch, что позволяет создавать работающий chroot, внутри которого вы сможете компилировать и запускать старое программное обеспечение.

Учитывая последствия для безопасности, долгосрочное решение должно состоять в том, чтобы как можно скорее обновить код для его компиляции в современном поддерживаемом в настоящее время дистрибутиве. Если рассматриваемое программное обеспечение не используется для одноразовых целей, таких как восстановление данных из более старой версии программы, это абсолютно необходимо.

Жизнеспособным решением для обеспечения управляемости этого процесса переноса может быть постепенное продвижение вперед, продвижение вперед и исправление проблем компиляции для каждого промежуточного выпуска Debian перед окончательным обновлением кода для самого последнего выпуска Ubuntu. Поскольку Debian имеет гораздо более длительный цикл выпуска, чем Ubuntu, и приличную прямую совместимость, это не должно быть слишком непреодолимой задачей и почти наверняка будет более выполнимым, чем портирование gcc 2.x на последнюю Ubuntu.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .