terça-feira, 9 de novembro de 2010

Instalando o OpenSim no linux

A instalação do OpenSim no Linux é idêntica em relação aos arquivos de configuração da instalação no Windows, no entanto há diferenças na preparação do ambiente.

Inicialmente precisamos ter alguns pacotes instalados na nossa distribuição Linux:
  • bison 
  • gettext 
  • gcc 
  • glib2-devel 
  • mysql-server 
  • libgdiplus 
  • gcc
  • g++
  • nant
Tais pacotes ficam mais fáceis de instalar se você usar algum gerenciador de pacotes como o apt-get do Debian e Ubuntu, zypper para o OpenSuse, yum para o Fedora, slackpkg para o Slack etc. Procure saber qual sua distribuição Linux e faça o que é o mais fácil.

Usualmente a instalação é realizada com o nome do gerenciador seguido pela opção install e o nome do pacote (Ex:yum install bison). Caso surja alguma dúvida de como instalar os pacotes citados anteriormente procure saber mais um pouco sobre gerenciamento de pacotes no linux e suas dependências.

O OpenSim é escrito em C# que é uma linguagem que roda naturalmente em um sistema operacional Windows.Já o mono é um conjunto de ferramentas compatível com a plataforma .NET, conforme às normas Ecma, incluindo até um compilador C#. De uma maneira simples, podemos dizer que ele emula as aplicações .exe, que rodam em ambientes Windows, dentro do Linux. Ou seja, você precisa dele para ter o seu simulador de mundos virtuais rodando no Linux, dado que o linux não executa arquivos ".exe" e você também não pode compilar um projeto feito em C# para executar diretamente no linux.

Vamos instalar o mono:

Baixe os arquivos:
1. Download da libgdiplus
  • wget http://ftp.novell.com/pub/mono/sources/libgdiplus/libgdiplus-2.6.4.tar.bz2
2. Download do Mono
  • wget http://ftp.novell.com/pub/mono/sources/mono/mono-2.6.tar.bz2
Uma pergunta interessante é porque não instalar o mono à partir do gerenciador de arquivos? A resposta é simples, algumas distribuições não possuem versões atualizadas do mono em seus repositórios e isto pode causar alguns transtornos para versões novas do OpenSim.

Já a libgdiplus é uma biblioteca que funciona junto com o mono para prover maior compatibilidade entre aplicações .net e sistemas operacionais que não são Windows.

Vamos à instalação:

1-Primeiro extraia o pacote ligbgdiplus usando o comando abaixo:
tar -jxvf libgdiplus-2.6.4.tar.bz2

Entre no diretório que você extraiu:
cd libgdiplus-2.6.4

Execute os comandos:
./configure
make
make install

2-Vamos agora instalar o mono com os comandos abaixo:
tar -jxvf mono-2.6.tar.bz2
cd mono-2.6
./configure --with-libgdiplus=yes
make
make install

3-Baixe o código fonte do opensim.
wget http://dist.opensimulator.org/opensim-0.7.0.2-source.zip

Caso não tenha instale o unzip:

(No Debian)
apt-get install unzip

4-Extraia o código fonte do OpenSim:
unzip opensim-0.7.0.2-source.zip
Entre no diretório extraído e digite:
./runprebuild.sh 
nant

5-Dado que você já tenha configurado o mysql e criado um banco de dados com sua respectiva senha vamos realizar a configuração dos arquivos do OpenSim como no post anterior (link). 

Para facilitar podemos usar o editor de texto "vim"
Instalando no debian com o comando "apt-get install vim"

6-Para abrir um documento digite:
vim nomeDocumento
Em seguida é só apertamos a tecla insert para realizar modificações em qualquer documento, depois ESC seguido de :wq e Enter para salvar o documento. 

7-Realizada as configurações, vamos automatizar a inicialização, visto que poderemos estar utilizando uma dsitribuição Linux em modo texto e também para facilitar a inicialização de modo geral.

Vamos utilizar um aplicativo que simula terminais virtuais num mesmo terminal, para instalar no Debian digite:
apt-get install screen

Agora vamos criar nosso script de automatização:
vim nomedoScript

Cole as seguintes linhas, modificando quando necessário:
#!/bin/sh

killall mono; #Mata algum outro processo aberto com o mono

export MONO_THREADS_PER_CPU=5000; #limite de threads 

#diretório de instalação referenciando para a pasta bin verifique o diretório que você está com o comando pwd
cd /home/projeto/opensim-0.7.0.2-source/bin/ 
screen -S robust -d -m mono Robust.exe &
echo "Iniciando Robust"
sleep 12; # tempo para inicializar o robust (é uma estimativa)
echo "Robust OK!"
screen -S sim -d -m mono OpenSim.exe &
echo "Iniciando Sim"
sleep 10
echo "Sim OK!"

Salve o arquivo.

Agora dê permissão de execução através do comando:
chmod 775 nomedoArquivo  

Agora basta executar
./nomedoScript

8-Para visualizar o terminal virtual referente ao Robust, veja o nome que você o referenciou, no exemplo usamos o nome robust, mas fique livre para colocar qualquer um.

Agora digite:
screen –r –d robust
Pronto você deve visualizar o terminal virtual do Robust! 
OBS: Para sair aperte simultaneamente ctrl+a+d.
Para visualizar o terminal virtual referente ao OpenSim.exe, segundo a configuração anteriores digite:
screen –r –d sim

Realize o fim da instalação segundo igualmente o post anterior de instalação no Windows e fim!

13 comentários:

  1. Olá, eu estou com um problema na finalização

    no post fala que aparece os seguintes comandos:

    Estate owner first name [Test]:

    Estate owner last name [User]:

    até aí tudo bem pra mim aparece normal e eu coloco o nome e sobrenome certinho, porém, aparece isso posteriormente:

    17:15:41 - [FORMS]: exception occured on sending request to http://189.22.42.81:8003/accounts: Error: ConnectFailure (Connection timed out)
    17:17:21 - [FORMS]: InvalidOperationException on receiving request
    17:17:21 - [ACCOUNT CONNECTOR]: GetUserAccount received null or empty reply
    17:17:21 - [SCENE]: Unable to store account. If this simulator is connected to a grid,
    The current estate has no owner set.
    Estate owner first name [Test]:


    Alguém pode me dar uma força ai pq aqui ta bem complicado :P

    ResponderExcluir
  2. Já consegui resolver o problema aí em cima, era o meu roteador que nao tava liberando as portas :D

    porém agora tenho outro problema ao iniciar o OpenSim.exe
    segue a baixo o que aparece:

    17:53:29 - [APPLICATION]:
    APPLICATION EXCEPTION DETECTED: System.UnhandledExceptionEventArgs

    Exception: System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus ---> System.DllNotFoundException: gdiplus.dll
    at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
    at System.Drawing.GDIPlus..cctor () [0x00000] in :0
    --- End of inner exception stack trace ---
    at System.Drawing.Bitmap..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000] in :0
    at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (int,int,System.Drawing.Imaging.PixelFormat)
    at OpenSim.Region.CoreModules.Scripting.VectorRender.VectorRenderModule.Initialise (OpenSim.Region.Framework.Scenes.Scene scene, IConfigSource config) [0x00000] in :0
    at OpenSim.Region.Framework.ModuleLoader.InitialiseSharedModules (OpenSim.Region.Framework.Scenes.Scene scene) [0x00000] in :0
    at OpenSim.OpenSimBase.CreateRegion (OpenSim.Framework.RegionInfo regionInfo, Boolean portadd_flag, Boolean do_post_init, IScene& mscene) [0x00000] in :0
    at OpenSim.OpenSimBase.CreateRegion (OpenSim.Framework.RegionInfo regionInfo, Boolean portadd_flag, IScene& scene) [0x00000] in :0
    at OpenSim.ApplicationPlugins.LoadRegions.LoadRegionsPlugin.PostInitialise () [0x00000] in :0
    at OpenSim.OpenSimBase.StartupSpecific () [0x00000] in :0
    at OpenSim.OpenSim.StartupSpecific () [0x00000] in :0
    at OpenSim.Framework.Servers.BaseOpenSimServer.Startup () [0x00000] in :0
    at OpenSim.Application.Main (System.String[] args) [0x00000] in :0
    InnerException: System.DllNotFoundException: gdiplus.dll
    at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
    at System.Drawing.GDIPlus..cctor () [0x00000] in :0

    Application is terminating: True


    Se alguém pelo menos puder me dizer o que isso significa eu agradeço! kkkkkkkkk
    Vlw e até mais

    ResponderExcluir
  3. Pelo erro dado está faltando instalar o pacote libgdiplus, verifica se a instalação foi feita.
    Se tiver instalado pelo apt utilize apt-get remove --purge e instale baixando o pacote .tar.gz citado no início do post. Além disso verifique se na hora que você compilou o mono você utilizou o parâmetro ./configure --with-libgdiplus=yes

    ResponderExcluir
  4. eu ja fiz o teste com os 2 e da no mesmo, mas agora eu percebi que na instalação da libgdiplus aparece isso aki na hora do ./configure :

    checking for BASE_DEPENDENCIES... configure: error: Package requirements (glib-2.0 >= 2.2.3) were not met:

    No package 'glib-2.0' found

    Consider adjusting the PKG_CONFIG_PATH environment variable if you
    installed software in a non-standard prefix.

    Alternatively, you may set the environment variables BASE_DEPENDENCIES_CFLAGS
    and BASE_DEPENDENCIES_LIBS to avoid the need to call pkg-config.
    See the pkg-config man page for more details.

    a glib-2.0 eu ja instalei o que será que ta ocasionando esse erro?

    ResponderExcluir
  5. eu ja baixei o glib-2.0 2.2.3 e da no mesmo e quando eu dou o comando make ele simplesmente nao funciona o que fazer? :S

    ResponderExcluir
  6. acabei de ver aqui o glib2-devel eu nao consegui achar pra baixar ele, nem pelo comando apt-get install glib2-devel eu consigo achá-lo no ubuntu onde eu posso achar ele pra ver se é isso que ta fazendo tudo dar errado? :S

    ResponderExcluir
  7. Eu instalei isso:
    apt-get install libglib2.0-dev

    agora o problema nao é mais o glib e sim o libpng12, cara esse negócio de Linux ta me deixando doido! faz 3 dias que to só mexendo na configuração do OpenSim e quando finalmente consigo finalizar o OpenSim o Linux vem com isso! Assim não dá né!hausahsuh Mais fazer oq preciso disso rodando no Linux :P vou ver aqui em relação a esses programas que ta faltando e depois posto aqui o que eu consegui e o que eu não consegui!
    até mais

    ResponderExcluir
  8. Instale todos esse pacotes que deve resolver seu problema, o ruim é que não sei qual deles você precisa e o nome exato na distribuição que você usa do Linux:

    svn install bison gettext make gcc glib2-devel pkgconfig libgdiplus compat-gcc-34-c++ gcc-c++ libexif libgdiplus sysconftool automake libedit libtoolize libtool libtool-ltdl libtool-ltdl-devel debootstrap libpng libpng-devel libsx libsx-devel cairo freetype fontconfig fontconfig-devel freetype-devel

    ResponderExcluir
  9. Este comentário foi removido pelo autor.

    ResponderExcluir
  10. Eu instalei todos esses pacotes, mais algum deles ferrou com o Linux :P ele nao aparece a tela de login mais, ou entao aparece no terminal. Ai complica. Vou instalar o Linux denovo e ver o que dá pra fazer!

    ResponderExcluir
  11. Não entendo o que pode ter havido de errad =/

    Um conselho que eu posso dar é baixe o dvd e não o cd pois ele já vêm com várias dependências resolvidas. Além disso se você continuar com o Ubuntu instale o pacote build-essential.

    Espero que dessa vez ajude.

    ResponderExcluir
  12. E aí pessoal, fico feliz em comunicar que consegui resolver os problemas que eu tive ao instalar o OpenSim na minha máquina.
    O problema que eu estava tentando resolver aqui no post em relação a fazer ele a rodar era que o meu SO é de 64bits. No caso ele nunca ia rodar com o comando OpenSim.exe, que para quem não sabe só funciona em SO de 32bits. Então eu executei o OpenSim com o OpenSim.32BitLaunch.exe e deu tudo certo! :D
    Só tive um probleminha em relação as regiões! No post diz pra colocar no endereço na hora de criar a região onde o IP é 0.0.0.0 o IP externo da máquina. Quando eu faço isso dá uma série e erros. Então eu coloquei o IP padrão que é 0.0.0.0 e deu tudo certo, até testei com um amigo para ver se ele conseguia logar no OpenSim e ocorreu tudo bem, então caso isso aconteça com vocês tente mudar o IP que talves dê certo.
    Feito isso aí surgiu o imprevisto de eu ter que fazer a grid entre 2 máquinas, ou seja, criar uma região em uma máquina diferenciada do servidor com o Robust. Isso aí deu uma dor de cabeça violenta.
    Em questão de editar os arquivos e tudo mais é tranquilo. Para criar outras Regiões em máquinas diferentes você faz o mesmo processo com os arquivos do post porém na hora de colocar o IP nos arquivos você só coloca o IP onde está instalado o Robust.exe, ou seja no computador servidor. E na hora de executar você só executa o OpenSim.exe ou o OpenSim.32BitLaunch.exe caso seu SO seja 64bits.
    Mas o problema para mim foi o mysql. Ele não tava dando acesso remoto ao usuário, no caso eu não estava conseguindo acessar nada do banco de dados apartir de outras máquinas. Então pesquisando na net eu encontrei o seguinte comando:

    grant all privileges on BD.TABELA to usuário identified by "senha";

    dessa forma eu dou permissão para um usuário ter acesso remoto ao banco de dados e resolvi o problema que estava sofrendo. Enfim espero que eu ajude alguém com essas informações :D

    Quero agradecer ao Marcelo por ser tão prestativo ao me ajudar a resolver os problemas referentes ao OpenSim e parabeniza-lo pelo blog que realmente tem ajudado e muito.

    Vlw galera e um forte abraço.

    ResponderExcluir
  13. Estou tentando instalar o OpenSim. em PuTTY, mas sou bem novato ainda, alguém sabe como proceder, me explicar passo a passo?

    ResponderExcluir