Код
sudo apt-get update
Далее обновим ВСЕ пакеты и ядро:
Код
sudo apt-get -y upgrade
Затем перезагрузим:
Код
sudo reboot now
Первую часть закончили, приступаем ко второй. Тут надо установить необходимые пакеты:
Код
sudo apt-get -y install mono-complete subversion
Далее получаем последнюю версию SVN с http://runuo.googlecode.com/svn/devel/ Для этого заходим в директорию, в которой у нас будет жить ультима и выполняем комаду:
Код
sudo svn export http://runuo.googlecode.com/svn/devel/
Когда загрузка завершиться можно приступать к компиляции ядра RunUO, но для начала стоит переименовать папку devel, хотя это и не обязательно, просто для удобства:
Код
sudo mv devel runuo
cd runuo
Теперь сборка:
Код
gmcs -optimize -unsafe -d:MONO -out:RunUO.exe -win32icon:Server/runuo.ico -recurse:Server/*.cs
Когда сборка завершится вы скорее всего увидите множество предупреждений (Warning), но на сборку и работу сервера это не повлияет (проверено). Теперь последняя часть, конфигурация, самая простая:
Код
echo "<configuration>" >> RunUO.exe.config echo " <dllmap dll=\"libz\" target=\"libz.so.1.2.3.4\"/>" >> RunUO.exe.config
echo "</configuration>" >> RunUO.exe.config
Вот и все! Осталось только залить на сервер файлы нужного вам клиента (не младше 7.0.29.1) и запустить наш сервер:
Код
root@yourdomain:/var/runuo# mono RunUO.exe
Потом отвечаете на вопрос Enter the Ultima Online directory:
> /var/runuo/uodata (или где там у вас файлы клиента) и далее создаете аккаунт владельца. На этом все.
Теперь начинаются Бяки и Баги.
Когда вы убедились что все работает и радостно запрыгали от счастья вы начинаете добавлять скрипты и строить свой мир. Добавив что требуется для заселения вы перезагружаете сервер прямо из игры через [admin. И тут на сервере происходит крах:
Код
Save done in 3,60 seconds.
Exiting...done
stealch@odinet:/home/uoadmin/runuo$ RunUO - [www.runuo.com] Version 2.2, Build 5014.40550
Core: Running on .NET Framework Version 2.0.50727
Core: Unix environment detected
Scripts: Compiling C# scripts...done (0 errors, 0 warnings)
Scripts: Skipping VB.NET Scripts...done (use -vb to enable)
Scripts: Verifying...done (2977 items, 874 mobiles) (1,27 seconds)
Enter the Ultima Online directory:
> Error:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.IOException: Invalid handle to path "/home/uoadmin/runuo/[Unknown]"
at System.IO.FileStream.ReadData (IntPtr handle, System.Byte[] buf, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.FileStream.ReadInternal (System.Byte[] dest, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.FileStream.Read (System.Byte[] array, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.StreamReader.ReadBuffer () [0x00000] in <filename unknown>:0
at System.IO.StreamReader.Read () [0x00000] in <filename unknown>:0
at System.TermInfoDriver.GetCursorPosition () [0x00000] in <filename unknown>:0
at System.TermInfoDriver.Init () [0x00000] in <filename unknown>:0
at System.TermInfoDriver.ReadLine () [0x00000] in <filename unknown>:0
at System.ConsoleDriver.ReadLine () [0x00000] in <filename unknown>:0
at System.Console.ReadLine () [0x00000] in <filename unknown>:0
at Server.Misc.DataPath.Configure () [0x00000] in <filename unknown>:0
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <filename unknown>:0
at Server.ScriptCompiler.Invoke (System.String method) [0x00000] in <filename unknown>:0
at Server.Core.Main (System.String[] args) [0x00000] in <filename unknown>:0
This exception is fatal, press return to exit
exception inside UnhandledException handler: Invalid handle to path "/home/uoadmin/runuo/[Unknown]"
[ERROR] FATAL UNHANDLED EXCEPTION: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.IOException: Invalid handle to path "/home/uoadmin/runuo/[Unknown]"
at System.IO.FileStream.ReadData (IntPtr handle, System.Byte[] buf, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.FileStream.ReadInternal (System.Byte[] dest, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.FileStream.Read (System.Byte[] array, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.StreamReader.ReadBuffer () [0x00000] in <filename unknown>:0
at System.IO.StreamReader.Read () [0x00000] in <filename unknown>:0
at System.TermInfoDriver.GetCursorPosition () [0x00000] in <filename unknown>:0
at System.TermInfoDriver.Init () [0x00000] in <filename unknown>:0
at System.TermInfoDriver.ReadLine () [0x00000] in <filename unknown>:0
at System.ConsoleDriver.ReadLine () [0x00000] in <filename unknown>:0
at System.Console.ReadLine () [0x00000] in <filename unknown>:0
at Server.Misc.DataPath.Configure () [0x00000] in <filename unknown>:0
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <filename unknown>:0
at Server.ScriptCompiler.Invoke (System.String method) [0x00000] in <filename unknown>:0
at Server.Core.Main (System.String[] args) [0x00000] in <filename unknown>:0
Хватаясь за голову и проклиная всех и вся вы нервно жмете control+c... повторный запуск проходит идеально, за исключением того, что ваша RunUO "забыла" где лежат файлы клиента, и просит ввести путь заново. Редактирование DataPath.cs ни к чему не приводит, т.к. ранка почему-то не понимает никсового пути из этого скрипта...
Если кто знает как это лечить - не стесняйтесь, пишите в эту тему!
С глубочайшим уважением, Stealch.