Устал я ждать обновление Longterm версии, так-что решил обновится уже сейчас. Longterm версия сейчас 2.6.7 особо не отличается от описанной в моем предыдущем посте. И для меня, как для человека, пишущего код на C# практически каждый день — морально устарела.
Чтобы сохранить Вам, дорогой читатель немного времени, выложил я также, обновленные скрипты. Сегодня речь пойдет о ручной установке Mono 2.10.2 на Debian. Точнее скрипт тестировался на debian, но ничего не мешает запустить его в другой Linux системе.
Для данной статьи я выбрал сборку с исходного кода по ряду причин:
- лучше позволяет контролировать процесс установки
- обычно устанавливается все в одно место
- позволяет иметь несколько установленных версий
- сложнее убить систему (и это проверенно автором 😉 )
- подходит для установки на VPS — например DreamHost
Ладно, поехали…
Мне потребовался не один вечер, чтобы разобраться во всех зависимостях и поставить все библиотеки в одно локальное место, без надобности корневых привилегий. Самой проблемной частью оказался libGdiPlus. Вполне возможно, что даже с этим скриптом понадобится определенный «допил», редактирование конфигурационных файлов и перезапуск. К сожалению, без понимания того что делает скрип, при возникновении проблем будет не обойтись. По этому расскажу сначала о нем.
Скачать mono-install.sh
Я попытался сохранить ссылки на решения возникающих проблем прямо в файле скрипта. Из конфигурации тут пожалуй только MONO_PREFIX. Остальной экспорт параметров зависит от него. Скрипт содержит две функции — одна для логирования (файл создается в текущей папке. За прогрессом можно следить с помощью команды tail). Вторая — getLib — его основное тело, взято из моей предыдущей статьи. Я также разделил установку моно и графической библиотеки на два массива, это libs и libsGdiPlus.
Не думаю, что это хорошая идея просто запустить скрип и ждать результата. Во первых это определенно долгий процесс, во вторых при перезапуске, уже собранные библиотеки пере собирать уже не надо. В общем, процесс такой:
запускам скрипт, если упал, смотрим где по логам, все что было собрано комментируем в списках, решаем проблему, пере запускаем скрипт.
Установка lib
Эта часть отличается от предыдущего скрипта только обновлением версий. С этой частью проблем нигде не возникало. Но возможно, в целях экономии ресурсов, некоторые библиотеки стоит использовать из стандартного набора (если они были установлены заранее).
Установка libgdiplus
Я бы не советовал вообще ставить эту библиотеку без необходимости. Основная проблема, особенно при установке на серверные версии, это зависимость libgdiplus от X11. Если X11 есть, то нужен glib и как показывает практика, версии посвежей, чес в стабильных репозиториях дистрибутивов. Вместе с glib устанавливаем и все форматы файлов. Далее, хоть один шрифт для Cairo и саму библиотеку.
Теперь последняя проблема связанная с X11, без запущенного сервера тесты не пройдут. Не могу сказать насколько это важно, но подобные проблемы возникают и на Mac OS и на FreeBSD. В этом случае «дособрать» libgdiplus прийдется в ручную. Так как сборка падает на make, то ./configure проходит правильно. Нужно отредактировать файл Makefile (в моем случае путь ~/src/mono-build-2.10.2/libgdiplus-2.10) убрав от-туда упоминание о папке tests (переменные SUBDIRS и DIST_SUBDIRS). Посде этого оставить в массиве только ссылку на libgdiplus и за комментировать ./configure в функции getLib.
После завершения, получаем следующие результаты:
Debian подопытный | OpenSuse с предустановленной версией Mono |
user@debian:~/mono-2.10.2/bin$ ./mono -V Mono JIT compiler version 2.10.2 (tarball Wed Jun 15 10:42:32 EDT 2011) Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: x86 Disabled: none Misc: softdebug LLVM: supported, not enabled. GC: Included Boehm (with typed GC and Parallel Mark) |
rupert@linux:~> mono -V Mono JIT compiler version 2.10.2 (tarball Mon Apr 18 15:10:34 UTC 2011) Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com TLS: __thread SIGSEGV: altstack Notifications: epoll Architecture: x86 Disabled: none Misc: debugger softdebug LLVM: yes(2.9svn-mono) GC: Included Boehm (with typed GC and Parallel Mark) |
user@debian:~/mono-2.10.2$ source ./mono-env [mono] ~/mono-2.10.2 @ mono-test-install Active Mono: /home/user/mono-2.10.2/bin/mono Other Mono executables: /usr/bin/monoYour have a working System.Drawing setup Your file system watcher is: System.IO.InotifyWatcher |
mono-test-install Active Mono: /home/user/mono-2.10.2/bin/mono Other Mono executables: /usr/bin/monoYour have a working System.Drawing setup Your file system watcher is: System.IO.InotifyWatcher |
Несмотря на то что тесты были пропущены, вроде результаты похожи.
Метки:C#, Linux, mono, OpenSource
Похожие статьи
- 14 июня 2011 -- Обновление Mono до 2.10 на DreamHost (0)
- 24 июня 2011 -- Установка Mono 2.10.2 и MonoDevelop 2.6 на Debian (1)
- 17 января 2010 -- Сборка Mono 2.6.1 из исходного кода (14)
- 3 ноября 2009 -- Установка Mono на Dreamhost или другой выделенный сервер. (1)
- 21 января 2010 -- Mono 2.6.1 и VirtualBox (20)
1 июля, 2011 at 0:32
Большое спасибо за инфу как раз искал
30 августа, 2011 at 14:51
Вот если бы вы еще deb-пакет собрали и поделились
10 сентября, 2011 at 13:17
Да вроде есть такие уже..здесь описаны.