- Хроники. - -
Компиляция Mono 2.10.2 с исходного кода
Posted By Ikutsin On 25 июня 2011 @ 13:25 In .NET C# | Comments Disabled
[1]Устал я ждать обновление Longterm версии, так-что решил обновится уже сейчас. Longterm версия сейчас 2.6.7 особо не отличается от описанной в моем предыдущем посте [2]. И для меня, как для человека, пишущего код на C# практически каждый день — морально устарела.
Чтобы сохранить Вам, дорогой читатель немного времени, выложил я также, обновленные скрипты. Сегодня речь пойдет о ручной установке Mono 2.10.2 на Debian. Точнее скрипт тестировался на debian, но ничего не мешает запустить его в другой Linux системе.
Для данной статьи я выбрал сборку с исходного кода по ряду причин:
Ладно, поехали…
Мне потребовался не один вечер, чтобы разобраться во всех зависимостях и поставить все библиотеки в одно локальное место, без надобности корневых привилегий. Самой проблемной частью оказался libGdiPlus. Вполне возможно, что даже с этим скриптом понадобится определенный «допил», редактирование конфигурационных файлов и перезапуск. К сожалению, без понимания того что делает скрип, при возникновении проблем будет не обойтись. По этому расскажу сначала о нем.
Скачать mono-install.sh [3]
Я попытался сохранить ссылки на решения возникающих проблем прямо в файле скрипта. Из конфигурации тут пожалуй только MONO_PREFIX. Остальной экспорт параметров зависит от него. Скрипт содержит две функции — одна для логирования (файл создается в текущей папке. За прогрессом можно следить с помощью команды tail). Вторая — getLib — его основное тело, взято из моей предыдущей статьи [2]. Я также разделил установку моно и графической библиотеки на два массива, это libs и libsGdiPlus.
Не думаю, что это хорошая идея просто запустить скрип и ждать результата. Во первых это определенно долгий процесс, во вторых при перезапуске, уже собранные библиотеки пере собирать уже не надо. В общем, процесс такой:
запускам скрипт, если упал, смотрим где по логам, все что было собрано комментируем в списках, решаем проблему, пере запускаем скрипт.
Эта часть отличается от предыдущего скрипта только обновлением версий. С этой частью проблем нигде не возникало. Но возможно, в целях экономии ресурсов, некоторые библиотеки стоит использовать из стандартного набора (если они были установлены заранее).
Я бы не советовал вообще ставить эту библиотеку без необходимости. Основная проблема, особенно при установке на серверные версии, это зависимость libgdiplus от X11. Если X11 есть, то нужен glib и как показывает практика, версии посвежей, чес в стабильных репозиториях дистрибутивов. Вместе с glib устанавливаем и все форматы файлов. Далее, хоть один шрифт для Cairo и саму библиотеку.
Теперь последняя проблема связанная с X11, без запущенного сервера тесты не пройдут. Не могу сказать насколько это важно, но подобные проблемы возникают и на Mac OS и на FreeBSD [4]. В этом случае «дособрать» 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 |
Несмотря на то что тесты были пропущены, вроде результаты похожи.
Article printed from Хроники.:
URL to article: /2103-kompilyaciya-mono-2-10-2-s-isxodnogo-koda
URLs in this post:
[1] Image: /wp-content/uploads/2011/06/install_program_ubuntu.jpg
[2] моем предыдущем посте: /1202-sborka-mono-2-6-1-iz-isxodnogo-koda
[3] mono-install.sh: /wp-content/uploads/2011/06/mono-install.sh_.txt
[4] FreeBSD: http://dev.n0ll.com/?p=857
Click here to print.
Copyright © 2008 Все, что меня окружает. All rights reserved.