SPARC T4, Solaris 11, нет доступа к интернету, как установить системные заголовки (или работающий компилятор)
Мне нужно скомпилировать программу на C на машине SPARC T4-1 (Solaris 11), которая была развернута в сети заказчика, и у нее больше нет доступа к Интернету. Первоначально во время установки были установлены инструменты компиляции или системные заголовки, и теперь у меня возникают проблемы при компиляции C-программы.
Я установил локальный репозиторий в соответствии с инструкциями в Интернете, и pkg pubisher
сейчас показывает:
# pkg publisher
PUBLISHER TYPE STATUS URI
solaris origin online file:///export/repoSolaris11/repo/
Однако, если я попытаюсь установить пакет gcc (gcc-dev
Я думаю?) Мне куча жалоб от менеджера пакетов (This version is excluded by installed incorporation
), Я пришел к выводу, что это потому, что изначально это была заводская установка (машина была настроена из Oracle, и она не была затронута), а теперь я попытался добавить локальный репозиторий, и версии не совпадают. Полная попытка установки: http://pastebin.com/m3wazmU7
Я подумал о другом способе установки компилятора C - это IDE Solaris Studio (на DVD), и у меня есть cc
сейчас на машине, но в ней отсутствуют системные заголовки, поэтому я не могу скомпилировать даже простой привет мир. Попытка установить system/headers
результаты очень похожи на gcc-dev:
sudo pkg install system/header
Creating Plan /
pkg install: No matching version of system/header can be installed:
Reject: pkg://solaris/system/header@0.5.11,5.11-0.175.1.0.0.24.2:20120919T184855Z
Reason: This version is excluded by installed incorporation
pkg://solaris/consolidation/osnet/osnet-incorporation@0.5.11,5.11-0.175.0.9.0.5.1:20120705T180850Z
Я совсем не знаком с тем, как работает управление пакетами Solaris, и мне интересно, можно ли каким-то образом избавиться от этих сообщений о включении? Или я могу просто разархивировать нужные файлы заголовков и скомпилировать программу с этими заголовками?
Спасибо за любые советы
3 ответа
Я не могу не согласиться с Данилой - если у вас есть контракт на поддержку, используйте его. Фактически, вы, вероятно, захотите использовать его для обновления с Solaris 11 до Solaris 11.1.
Тем не менее, ваша проблема в том, что подключенный вами локальный репозиторий новее установленной системы и не имеет соответствующего набора пакетов. Вы хотите получить ISO репозитория Solaris 11 (и все SRU), а не ISO репо Solaris 11.1.
Это ключевая часть сообщения об ошибке:
Reason: All versions matching 'require' dependency pkg:/group/feature/developer-gnu@0.5.11,5.11-0.174.0.0.0.0.0 are rejected
Reject: pkg://solaris/group/feature/developer-gnu@0.5.11,5.11-0.175.1.0.0.24.0:20120904T180329Z
Reason: This version is excluded by installed incorporation pkg://solaris/consolidation/ips/ips-incorporation@0.5.11,5.11-0.175.0.9.0.3.0:20120623T000446Z
Это говорит о том, что нельзя установить версию пакета "developer-gnu" (новое имя для "gcc-dev"). Он нашел только один (версия S11.1 - "0.5.11" - это версия для всех системных пакетов Solaris 11, а версия ветки после тире говорит "Solaris 11" (0.175) "Обновление 1" (.1), нет SRU (.0), нет специальной платформы (.0), сборка 24 (.24), нет респинов (.0)), но это невозможно, потому что пакет ips-orporation, который является S11 (FCS) Версия SRU 9 установлена, и это ограничит Developer-GNU для соответствующей версии. Вы можете увидеть это точно, если вы бежите
pkg contents -m ips-incorporation
и найдите зависимое действие (типа = включить) на fmri = group / feature / developer-gnu @...
Совет по смягчению ограничений путем установки фасетов полезен для некоторых пакетов, но, как оказалось, не для этого. Кроме того, developer-gnu - это просто групповой пакет, который включает в себя множество утилит разработки GNU поверх самого gcc, включая GNU binutils, GNU make, autotools, gdb и т. Д. В лучшем мире вы сможете установить для фасетов блокировки версии для каждого из этих пакетов значение false и просто установить их независимо, игнорируя групповой пакет. Но вы все равно столкнетесь с проблемой, заключающейся в том, что версии этих пакетов в вашем репо были построены для версии ОС, которая новее той, что вы установили, и поэтому их зависимости также от этих более новых версий. Единственным вариантом, кроме обхода системы упаковки, является обновление или получение репозиториев S11+SRU.
Если это серийная коробка SPARC T4 с Solaris 11 на ней. Если бы я был в вашей ситуации, я бы не стал связываться с ней и получить поддержку Oracle. Особенно в случае сомнений при установке одного из важных системных аспектов в качестве системных заголовков для "gcc", находясь в состоянии "I'm not at all familiar with how solaris package management works."
Пожалуйста, сделайте это, и вы сэкономите много времени для себя и для других людей.
Ну, во-первых, прочитайте ответ Данилы.
Если вы не знакомы с управлением пакетами Solaris, не пытайтесь использовать его в производственной системе - делайте так, как он сказал, и попросите кого-нибудь, кто знает, что они делают, помочь вам.
С этим из пути:
Ваш первый вариант - сказать Solaris не быть таким привередливым зверьком по поводу ограничений версии в инкорпорациях.
(Для более подробной информации о включении, проверьте этот пост в блоге.)
Другой вариант - загрузить и установить сторонние пакеты компилятора из другого источника, такого как sunfreeware.com. Поскольку вы говорите, что у вас нет доступа к Интернету, вам придется записать их на CD/DVD/USB-накопитель / некоторые другие носители, которые вы можете подключить к вашей системе.
Как правило, у системы без доступа к Интернету есть другие ограничения безопасности, и ответственные лица будут недовольны установкой неаудированных сторонних пакетов.
Что приводит нас к варианту 3: установить компилятор в какой-то другой системе, собрать там свое программное обеспечение, упаковать его и установить на этом компьютере.
В зависимости от причины, по которой у вас нет компилятора, это может быть лучшим вариантом...