Troubleshooting

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
m
(added pkg-config configuration note)
Line 108: Line 108:
  
 
  apt-get install nant
 
  apt-get install nant
 +
 +
This can also be due to <tt>pkg-config</tt> not being able to locate the <tt>mono.pc</tt> file.  Adding the directory containing this file to the environment variable <tt>PKG_CONFIG_PATH</tt> may solve this.

Revision as of 07:46, 29 October 2007

This page gives any system-specific configuration settings that may be useful, and advice for problems that might be encountered.

Contents

System-specific configuration

CentOS 5

To install mono and nant, you can use the "Linux Installer for x86" found at http://www.mono-project.com/Downloads.

SVN can be installed by:

yum install subversion

Mono defaults to installing into /opt, so you may have to add this path to your environment variables, for example, in your ~/.bashrc:

export PATH="/opt/mono-1.2.5/bin:$PATH"
export PKG_CONFIG_PATH="/opt/mono-1.2.5/lib/pkgconfig:$PKG_CONFIG_PATH"
export MANPATH="/opt/mono-1.2.5/share/man:$MANPATH"
export LD_LIBRARY_PATH="/opt/mono-1.2.5/lib:$LD_LIBRARY_PATH"

After changing LD_LIBRARY_PATH, you should update the dynamic linker cache:

ldconfig

You may still encounter the "The current runtime framework 'mono-2.0' is not correctly configured in the NAnt configuration file." error listed below. In that case, this may fix this:

yum install glib

If you are running a firewall as well (i.e., if iptables -L shows a list of ACCEPT and REJECT rules), you'll have to open the necessary ports if you want to access the sim from other machines. For standalone mode:

iptables -I RH-Firewall-1-INPUT -p tcp --dport 9000 -j ACCEPT
iptables -I RH-Firewall-1-INPUT -p udp --dport 9000 -j ACCEPT

Debian 4.0r0

If you set your system to use unstable sources, and then install some packages listed below, everything should just work. To use unstable sources, modify your /etc/apt/sources.list file, replacing 'etch' or 'stable' with 'unstable':

deb ftp://ftp.debian.org/debian/ unstable main
deb-src ftp://ftp.debian.org/debian/ unstable main

Then update your packages to the new versions:

apt-get update
apt-get dist-upgrade

This will probably change a large number of packages, and may break things. In my experience, however, if you do not use unstable sources then the packages are not up to date enough, and you run into version issues, which lead to two DllNotFoundException errors below appearing in the console output: gdiplus.dll and libopenjpeg-libsl-2.1.2.0.so.

Once the sources are updated, we need to install the necessary packages to be able to build OpenSim:

apt-get install subversion mono nant mono-gmcs mono-mjs libmono-microsoft8.0-cil libmono-system-runtime2.0-cil

If any of these packages are missing, you'll probably encounter one of the errors listed below. However, with these packages, OpenSim should build cleanly.

Errors and fixes

System.DllNotFoundException: gdiplus.dll

First, check to make sure that libgdiplus.so is known to the dynamic linker:

/sbin/ldconfig -p | grep libgdiplus

If nothing is found, make sure that the directory libgdiplus.so exists in is either in your LD_LIBRARY_PATH environment variable or listed in a *.conf file (e.g., gdiplus.conf) in /etc/ld.so.conf.d/. Then run ldconfig to update the cache. Then it should be able to find the library.

You may still have the above error, however, since libgdiplus also depends on other dynamic libraries, and if they fail to load, libgdiplus will fail. To test for this, run OpenSim with debugging information turned on:

MONO_LOG_LEVEL=debug mono OpenSim.exe

It may show errors loading other libraries, like libexif.so.9. In that case, linking to an existing version of the offending library may work:

ln -s libexif.so.12 libexif.so.9

(Is there a cleaner solution than this?)

The assembly mscorlib.dll was not found or could not be loaded

This indicates that you are missing one of the mscor libs that comes with nant. This is easily solved by getting NAnt, which comes with both versions 1.0 and 2.0 of the required lib.

apt-get install nant

External Program Failed: /usr/lib/pkgconfig/../../lib/mono/2.0/gmcs.exe

This is quickly fixed by retrieving mono-gmcs.

apt-get install mono-gmcs

The type or namespace name JScript does not exist in the namespace Microsoft

Note that it says Jscript over and over again. Hint perhaps?

apt-get install mono-mjs libmono-microsoft8.0-cil

The type or namespace name Tcp does not exist in the namespace System.Runtime.Remoting.Channels

This one is taken care of with a quick install:

apt-get install libmono-system-runtime2.0-cil

error while loading shared libraries: libgthread-2.0.so.0: cannot open shared object file

If you start with a base Debian system as we did at the top of the page, but instead of using the apt version of mono you use the installer from their website, then you may encounter this issue.

After getting the .bin file from http://www.mono-project.com/Downloads, and executing it as per its instructions, upon finishing, you may find that if you try to run `mono --version` you are presented with this message. This one means you need to install libglib2.0-0.

apt-get install libglib2.0-0

The current runtime framework 'mono-2.0' is not correctly configured in the NAnt configuration file.

This one seems to be fixed by retrieving the apt version of nant.

apt-get install nant

This can also be due to pkg-config not being able to locate the mono.pc file. Adding the directory containing this file to the environment variable PKG_CONFIG_PATH may solve this.

Personal tools
General
About This Wiki