Невозможно определить ОС
Когда я иду на терминал (я установил smlnj), и я набираю sml
, он дает мне ошибку sml: unable to determine architecture/operating system
. Что это значит???
Я установил sml как на этом веб-сайте, но я не уверен, что инструкции неверны?
![enter image description here]()
Ответы
Ответ 1
Если вы используете OSX 10.8 или новее (uname -r
дает вам что-то, начиная с 12 или выше), SML/NJ pre 110.75 не работает слишком хорошо без дополнительной настройки. Это известная проблема, которая может быть исправлена путем добавления выбора 10.8 (см. Строку 12
ниже) в код обнаружения ОС в .arch-n-opsys
:
:
10*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.6
11*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.7
12*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.8
13*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.9 Mavericks
14*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.10 Yosemite
15*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.11 El Capitan
16*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.12 Sierra
17*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.13 High Sierra
*) exit 1;;
esac;;
Ответ 2
Проблема с недавними двоичными установщиками OS X по-прежнему сохраняется, только фокус переместился на 10.9 Mavericks и 10.10 версии Yosemite OS X. Хотя основная причина решена в недавней версии исходного кода.
Вот почему с некоторого времени сейчас решение этой проблемы связано с только что скомпилированным двоичным пакетом. И для этого вам может быть лучше установить smlnj через homebrew
. Вы можете сделать это с помощью следующих команд:
brew update
brew install smlnj
Это скомпилирует пакет для вас, чтобы вы могли избавить себя от необходимости проверять исходный код и выполнять компиляцию самостоятельно.
Чтобы очистить систему и избежать дублирования, вы можете удалить предыдущую установку, выполнив следующие действия:
sudo rm -rf /usr/local/smlnj*
Для звездочки: у меня была одна голая папка smlnj с 110.76 внутри нее и одна папка smlnj-110.75, я предполагаю, что раньше я пытался установить две разные версии...
Вам может потребоваться удалить любые созданные вами программные ссылки, указывающие на более старую папку smlnj непосредственно в /usr/local/deleted на предыдущем шаге.
Ответ 3
Как обновление для paxdiablo answer, если вы используете macOS Sierra (версия 10.12), вам нужно ввести следующую строку, чтобы запустить sml:
16*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # macOS 10.12 Sierra
Таким образом, с большим контекстом он будет выглядеть следующим образом:
11*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.7 Lion
12*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.8 Mountain Lion
13*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.9 Mavericks
14*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.10 Yosemite
15*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # MacOS X 10.11 El Capitan
16*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # macOS 10.12 Sierra
17*) OPSYS=darwin; HEAP_OPSYS=darwin ;; # macOS 10.13 High Sierra
*) exit 1;;
esac;;
Версия SML/NJ 110.79 имела конфигурацию OS X до El Capitan, но Sierra все еще отсутствовала.
Ответ 4
Сьерра 10.12.6
Установить SML через Homebrew brew install smlnj
Отредактируйте .bash_profile
и добавьте export PATH=/usr/local/Cellar/smlnj/110.81/bin:$PATH
в конец файла.
После этого source ~/.bash_profile
применить новый путь, чтобы ваша система добавила новые местоположения, а затем знает, где найти нужный файл при вводе sml
Ответ 5
Я столкнулся с этой проблемой после того, как случайно установил более старую версию SML/NJ. Я удалил свою предыдущую установку путем перебора /usr/local/smlnj
и переустановил с помощью предварительно построенную систему OS X для SML/NJ 110.78. Самая последняя загрузка доступна в разделе Загрузки здесь, о чем должны обращаться просители в будущем, в качестве деталей моего решения вероятно, будут устаревшими к моменту их появления.
Ответ 6
Я боролся с этим в течение нескольких часов после обновления моего Macbook. Ранее я работал на OSX 10.8 Maverick на Macbook Air, для которого дистрибутив https://www.smlnj.org/dist/working/current/index.html#macos-installer действительно работал нормально.
После обновления до Macbook Pro под управлением OSX 10.14 Mojave, запуск sml
после установки и добавления в PATH выдаст мне сообщение об ошибке OP.
После попыток найти какое-то решение, в том числе помеченное как принятое здесь, в итоге получилось brew cask install smlnj
.