FSI.exe не работает под Ubuntu 10.10 - PullRequest
5 голосов
/ 23 ноября 2010

Обновление: пробный ноябрьский выпуск CTP.То же сообщение об ошибке.Забыл упомянуть, что на этом сервере установлена ​​версия сервера Ubuntu.У меня нет этой проблемы на моем рабочем столе Ubuntu, на котором работает Desktop 10.10.Поэтому я подозревал, что это может быть связано с отсутствием некоторых библиотек, связанных с командной строкой.После того, как я установил libreadline-dev и libreadline5, сообщение об ошибке исчезло.Однако проблема, которая застряла в fsi, все еще существует.

Update2: пробовал новый Mono 2.8.1.Та же проблема с зависанием FSI.

Обновление 3: поскольку эта проблема очень воспроизводима, я сообщил об этом как об ошибке в fsi.exe для Microsoft.Давайте посмотрим, как это происходит.

Обновление 4: Получил быстрый ответ от Дона Сайма.Решение, которое он предложил, решило эту проблему.Я сам создал ответ.

Привет,

Я установил F # 2.0 на сервер под управлением Ubuntu 10.10 и Mono 2.8.fsc.exe работает отлично, у меня нет проблем с компиляцией файлов fs.Однако, когда я запускаю fsi.exe следующим образом: mono /usr/local/FSharp/bin/fsi.exe

Я получил приглашение FSI, но сообщение об ошибке продолжает повторяться

"Не удалосьустановить обработчик ctrl-c - обработка Ctrl-C будет недоступна. Ошибка была: Исключение было вызвано целью вызова "

Я что-то здесь упускаю?

Mono2.8 был скомпилирован и установлен из исходного кода.

Ответы [ 2 ]

7 голосов
/ 26 ноября 2010

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

Прежде всего, установите libreadline-dev и libreadline5, чтобы вы могли избавиться от следующего сообщения об ошибке

Failedустановить обработчик ctrl-c - обработка Ctrl-C будет недоступна.Ошибка была: Исключение было выдано целью вызова

Если вы столкнулись с проблемой зависания fsi.exe, попробуйте

 fsi --gui-

В моем случае это прекрасно работает.

Вот мое понимание того, почему такая проблема произошла.Если вы посмотрите на код, вы обнаружите, что fsi.exe на самом деле ссылается на System.Windows.Forms, которая далее ссылается на систему Windows.В моем случае я запустил fsi на сервере без установленной системы X.Следовательно, fsi застрял там, пытаясь поговорить с несуществующим X. Это объясняет, почему у меня нет проблемы на моем рабочем столе.

1 голос
/ 23 ноября 2010

F # никогда не работал для меня под Linux. Сегодня с Mono 2.8 и выпуском F # в ноябре 2010 года (который, как ни странно, имеет тот же номер версии, что и предыдущий выпуск ?!), я получаю:

$ sudo ./install-mono.sh
In order to add FSharp.Core.dll to the Mono GAC the DLL needs to be
re-signed with the mono.snk key. The mono.snk key is available from
the 'Mono Sources'.

  http://www.mono-project.com/
  http://github.com/mono/mono/raw/master/mcs/class/mono.snk

For example, run:
  wget -O mono.snk http://github.com/mono/mono/raw/master/mcs/class/mono.snk

Then re-run this script.

An alternative to installing the DLLs in the Mono GAC is to add the
FSharp bin directory to the MONO_PATH variable. For more information
on 'How Mono Finds Assemblies' see http://www.mono-project.com/Gacutil

Если я запускаю предложенную команду wget, то она умирает:

$ wget -O mono.snk http://github.com/mono/mono/raw/master/mcs/class/mono.snk
--2010-11-23 17:02:43--  http://github.com/mono/mono/raw/master/mcs/class/mono.snk
Resolving github.com... 207.97.227.239
Connecting to github.com|207.97.227.239|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://github.com/mono/mono/raw/master/mcs/class/mono.snk [following]
--2010-11-23 17:02:44--  https://github.com/mono/mono/raw/master/mcs/class/mono.snk
Connecting to github.com|207.97.227.239|:443... connected.
ERROR: certificate common name `*.github.com' doesn't match requested host name `github.com'.
To connect to github.com insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.

Теперь, если я перезапущу установщик F #, я получу другую ошибку:

$ sudo ./install-mono.sh
-- Resigning FSharp.Core.dll with mono.snk
ERROR: Invalid number of parameters.

Usage: sn [-q | -quiet] options [parameters]

 -q | -quiet            Quiet mode (minimal display)

Help options
 -? | -h                Show this help screen about the tool
 -? | -h config         Configuration options
 -? | -h csp            Crypto Service Provider (CSP) related options
 -? | -h convert        Format convertion options
 -? | -h sn             StrongName signing options
-- Installing FSharp DLLS into the GAC
Failure adding assembly bin/FSharp.Core.dll to the cache: Strong name cannot be verified for delay-signed assembly

Если я скопирую файл mono.snk из каталога Mono 2.8 вручную в каталог F #, то программа установки, похоже, будет работать:

$ sudo ./install-mono.sh
-- Resigning FSharp.Core.dll with mono.snk
Assembly bin/FSharp.Core.dll signed.
-- Installing FSharp DLLS into the GAC
Installed bin/FSharp.Core.dll into the gac (/usr/local/lib/mono/gac)

Но сам F # по-прежнему не работает точно так же, как раньше (кажется, зависает при вводе):

$ mono bin/fsi.exe

Microsoft (R) F# 2.0 Interactive build 2.0.0.0
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

> 1+2*3;;

Мне нужно использовать CTRL + Z, чтобы восстановить контроль, а затем kill %1, чтобы убить процесс мошенничества.

...