# [Tips] Installare mono su gentoo

## innovatel

Spettabile pubblico, ora vi imparerò come si mette su gentoo il supporto mono.

Come prima cosa apriamo la bellissima shell e digitiamo

```

bash-2.05b# emerge dev-dotnet/mono

```

Aspettiamo un pochetto che venga scaricato il pacchetto e compilato e poi possiamo partire. 

Hai finito la compilazione? Bene. Mono è installato. Sul mio pc che è un Atlhon XP 2000 non ci ha messo molto tempo. Stai chiedendo quanto? Te lo dico subito.

```

bash-2.05b# genlop -t mono

 * dev-dotnet/mono

     Merged   at Sun Nov 30 01:04:07 2003    (mono-0.26-r1)

       merge time: 18 minutes and 3 seconds.

 merged totally 1 time in 18 minutes and 3 seconds.

```

Nel caso non hai genlop sulla tua gentoo, ti consiglio di installarlo in quanto è comodissimo. Per farlo è necessario digitare:

```

bash-2.05b# emerge app-portage/genlop

```

Benissimo. Mono è pronto. Come lo usiamo? Come prima operazione utile propongo di provarlo per vedere se realmente funziona. Aprite il vostro editor di testo preferito (io ho usato Kwrite) e creiamo un file dal nome: "test.cs". Il contenuto sarà il seguente:

```

using System;

class test

{

   static void Main()

   {

      Console.WriteLine("Hello Word");

      Console.WriteLine("-----");

      Console.WriteLine("Mono & Gentoo 1.4 - by innovatel");

   }

}

```

Ora viene una bella domanda. Come lo uso questo simpaticissimo ed adorabile file? Molto semplice, ma per farlo dobbiamo tornare dalla nostra amica shell:

```

bash-2.05b# cd /MonoTest

bash-2.05b# mcs test.cs

Compilation succeeded

bash-2.05b# mono test.exe

Hello Word

-----

Mono & Gentoo 1.4 - by innovatel

```

Ora viene la parte divertente. Chissà com'è fatto quel bellissimo file "test.exe". Curiosi anche voi? Bene, tra pochi secondi sarete soddisfatti:

```

bash-2.05b# monodis test.exe

.assembly extern mscorlib

{

  .ver 1:0:3300:0

}

.assembly 'test'

{

  .hash algorithm 0x00008004

  .ver  0:0:0:0

}

  .class private auto ansi beforefieldinit test

        extends [mscorlib]System.Object

  {

    // method line 1

    .method public hidebysig  specialname  rtspecialname

           instance default void .ctor()  cil managed

    {

        // Method begins at RVA 0x20ec

        // Code size 7 (0x7)

        .maxstack 8

        IL_0000: ldarg.0

        IL_0001: call instance void valuetype [corlib]System.Object::.ctor()

        IL_0006: ret

    } // end of method test::instance default void .ctor()

    // method line 2

    .method private static

           default void Main()  cil managed

    {

        // Method begins at RVA 0x20f4

        .entrypoint

        // Code size 31 (0x1f)

        .maxstack 8

        IL_0000: ldstr "Hello Word"

        IL_0005: call void class [corlib]System.Console::WriteLine(string)

        IL_000a: ldstr "-----"

        IL_000f: call void class [corlib]System.Console::WriteLine(string)

        IL_0014: ldstr "Mono & Gentoo 1.4 - by innovatel"

        IL_0019: call void class [corlib]System.Console::WriteLine(string)

        IL_001e: ret

    } // end of method test::default void Main()

  } // end of type test

```

Credevate fosse finito tutto qua? Sbagliato. Ora vediamo come fare funzionare anche le pagine .aspx. Vai ragazzi, non arrendetevi. La situazione è la seguente: il supporto mono c'è ed ora dobbiamo fargli capire come usare le pagine web fatte in c#.

Come prima operazione bisogna scaricare dal sito www.go-mono.com  il webserver ?XSP web server (0.5)?. So che l'ultima versione rilasciata al momento della stesura è la 0.6, ma non sono riuscito ad installarla. Personalmente il file l'o scaricaro io /opt per poi installarlo nella seguente modalità:

```

bash-2.05b# cd /opt

bash-2.05b# tar -xzvf xsp-0.5.tar.gz

bash-2.05b# cd xsp-0.5

bash-2.05b# make && make install

```

Ok, fatta. Ora dobbiamo metterlo in funzione e ci si diverte un pochetto tanto.

```

bash-2.05b# cd /opt/xsp-0.5/server/test/

bash-2.05b# mono xsp.exe

Listening on port: 8080

Listening on address: 0.0.0.0

Root directory: /opt/xsp-0.5/server/test

Virtual directory: /

```

Ora apriamo il browser e  digitiamo 

```

http://localhost:8080/

```

Magia. Avete visto che bello? Sinceramente non mi va di finire qui la spiegazione in modo maleducato, quindi ultimo sforzo. Apriamo Kwrite e creiamo un file "IoSaluto.aspx":

```

<%@ Page Language="C#" %>

<script runat="server">

   void Page_Load(object sender, System.EventArgs e)

   {

      if(!this.Page.IsPostBack)

      {

         this.txtNome.Text="";

         this.lblDomanda.Text = "Posso sapere come ti chiami? ";

         this.lblPower.Text = "<br><br>C# Powered by Gentoo 1.4 - by innovatel";

      }

      else

      {

         if(this.txtNome.Text!="")

            this.lblSaluto.Text = "Ciao " + this.txtNome.Text ;

         else

            this.lblSaluto.Text = "Ciao anonimo .... " ;

         this.lblDomanda.Visible = false ;

         this.txtNome.Visible = false ;

         this.btnSaluta.Visible = false ;

      }

   }

</script>

<html>

   <body>

      <form id="frmSaluto" method="post" runat="server">

         <asp:label id="lblSaluto" runat="server" />

         <br>

         <asp:label id="lblDomanda" runat="server" /><asp:TextBox id="txtNome" runat="server" />

         <asp:Button id="btnSaluta" Text="Cliccami" runat="server" />

         <asp:label id="lblPower" runat="server" />

      </form>

   </body>

</html>

```

Come usarlo? Bhe semplicissimo.

```

http://localhost:8080/IoSaluto.aspx

```

Bene. Ho finito di spiegare questo piccolo ma esaltante viaggio. Spero di esser stato d'aiuto a qualcuno e di non avervi rotto le scatole in tutto questo tips.

Ultimissima, spero di esser stato all'altezza, se così non fosse non mi picchiate  :Smile: 

### Note Finali ###

Articolo scritto da Carratta Andrea ? innovatel il 01/12/2003

Sito Web: www.innoland.net

Mail: info(at)innoland.net

L'articolo è liberamente utilizzabile purchè venga citata la fonte.

----------

## Gondor

Tnx to inno   :Cool: 

----------

## fedeliallalinea

Volevo sapere se mono e' completo al 100% o no. Mi pare che non funzioni

ancora tutto.

----------

## emix

 *fedeliallalinea wrote:*   

> Volevo sapere se mono e' completo al 100% o no. Mi pare che non funzioni
> 
> ancora tutto.

 

Ancora non è completo al 100%. Dovrebbe essere rilasciata la versione 1.0 a metà 2004. Comunque sul sito puoi vedere le classi già implementate e quelle mancanti.

----------

## innovatel

* ciccio -> de nada

mono è ancora in fase di sviluppo. Il compilatore c# è molto più avanti di quello vb.net del quale non ne capisco un senso pratico inambiente linux, ma fà nulla. La "stabilità" di una soluzione non posso dartela per un semplice motivo. Ci sono operazioni complesse su cui mono va bene ed altre più semplici dove si incarta dando anomalie. Bisogna sviluppare la soluzione e provarla. Chi mi conosce sa bene che sono contrario a questi miscugli in quanto reputo che ogni linguaggio nasce per il suo ambiente e non è giusto levarlo da esso. Il perchè ho messo mono allora vi chiedete? Bhe, installarlo per provare è corretto. Non è la curiosità che ci spinge nell'usare linux assieme alla voglia di imparare. Onestamente credo che il framework sia una delle migliori cose fatta da casa bill. Lo dico con una certa sicurezzza perchè lavoro in un ambito dotnet e lo vivo come realtà tuti i giorni: è immenso e non si finiscono mai di trovare cose nuove. In conclusione che voglio dire? Prima di tutto bisogna ammarirare davvero le persone che stanno facendo il porting data la complessità. Spero che con la voglia ed il sostegno di un "pubblico" il mono arrivi presto ad una versione stabile.

----------

## emix

 *innovatel wrote:*   

> Chi mi conosce sa bene che sono contrario a questi miscugli in quanto reputo che ogni linguaggio nasce per il suo ambiente e non è giusto levarlo da esso.

 

Secondo me invece è una buona cosa... se il c# (che io reputo una imitazione del java) si rivela un buon linguaggio, trovo positivo il porting su un altra piattaforma.

----------

## innovatel

il c# (per quel poco che lo conosco) è davvero un ottimo linguaggio sulla via del clike (i simili al c) tra cui vi è anche java.

Con java non mi trovo, ma con c# si (fine idea personale)

Il porting non è malvagio come idea ma vedi, quello che non mi piace è il fato di trapiantare un linguaggio in un ambiente non suo. Non voglio specifcare un caso particolare  ma è generico. E' anche vero che a volte "ignoro" questa regola pure io.

----------

## fedeliallalinea

 *emi wrote:*   

> Ancora non è completo al 100%. Dovrebbe essere rilasciata la versione 1.0 a metà 2004. Comunque sul sito puoi vedere le classi già implementate e quelle mancanti.

 

Grazie per la risposta.

----------

## emix

 *fedeliallalinea wrote:*   

> Grazie per la risposta.

 

Dovere  :Wink: 

----------

## emix

E' stato rilasciato Mono 0.29 con il supporto completo ad ASP.net

http://www.go-mono.com/archive/mono-0.29.html

----------

## innovatel

Mitico. grazie emi per la segnalazione  :Smile: 

----------

## Kralizek

volevo aggiungere che da poco è entrato nel portage tree (ancora masked) una ebuild chiamata mono-wine che permette di avere anche interfaccia grafica (in pratica è un porting del namespace Systems.Window.Forms)

Aggiungo ancora...

che la differenza sostanziale tra Java e .Net è che mentre su java si lavora sempre sulla stessa macchina virtuale, appiattendo alla fine il contesto su cui si lavora, con .net è possibile utilizzare caratteristiche proprie del sistema operativo con cui si lavora.

Ad esempio, sto sviluppando un'applicazione che girerà sicuramente sotto windows quindi posso avvalermi, oltre allo sterminato framework, anche del namespace Microsoft.Win32 che permette di utilizzare classi e funzioni per l'accesso al registro di configurazione (per es.) cosa che in ambito linux non avrebbe senso.

Ai puristi dell'hard portability questa cosa non piace, a me invece tanto perchè trovo + intelligente una portability che permette però di sfruttare le caratteristiche intrinseche del sistema su cui vogliamo lavorare.

Scusate il "papiello"

Byez

P.S: non esistono IDE buoni per programmare in .net sotto gentoo? thk

----------

## Cagnulein

oggi è uscita la beta 1 di mono e colgo l'occasione per fare l'up di questa domanda:

 *Quote:*   

> P.S: non esistono IDE buoni per programmare in .net sotto gentoo? thk

 

perchè altrimenti a scrivere senza autocompletamento fai notte...

cmq intanto proviamo   :Cool: 

edit: ho visto sul sito di mono che usano eclipse come editor...proviamo anche questo  :Razz: 

----------

## tocas

 *innovatel wrote:*   

> 
> 
> ....
> 
> Nel caso non hai genlop sulla tua gentoo, ti consiglio di installarlo in quanto è comodissimo. Per farlo è necessario digitare:
> ...

 

Intanto io non riesco a emergere neanche genlop   :Sad:  .

Questa è l'uscita di: 

```
emerge app-portage/genlop
```

```

ACCESS DENIED  mkdir:     /usr/man/man3pm

mkdir /usr/man/man3pm: Permission denied at /usr/lib/perl5/5.8.0/ExtUtils/Install.pm line 80

make: *** [pure_vendor_install] Error 255

!!! ERROR: dev-perl/Time-Duration-1.02 failed.

!!! Function perl-module_src_install, Line 73, Exitcode 2

!!! (no error message)

--------------------------- ACCESS VIOLATION SUMMARY ---------------------------

LOG FILE = "/tmp/sandbox-Time-Duration-1.02-4908.log"

mkdir:     /usr/man/man3pm

--------------------------------------------------------------------------------

dante root #

```

---

----------

## xlyz

 *Kralizek wrote:*   

> Ai puristi dell'hard portability questa cosa non piace, a me invece tanto perchè trovo + intelligente una portability che permette però di sfruttare le caratteristiche intrinseche del sistema su cui vogliamo lavorare.

 

domanda ingenua: ma in questo caso la "portability" non va semplicemente a farsi benedire?

cosa mi sfugge?

----------

## emix

 *xlyz wrote:*   

> domanda ingenua: ma in questo caso la "portability" non va semplicemente a farsi benedire?

 

Diciamo che è un modo per potenziare un linguaggio quando non si hanno esigenze di portabilità. Una cosa del genere è necessaria se la Microsoft vuole far diventare C# il linguaggio di riferimento su Windows. E poi a loro della portabilità non gliene frega niente... anzi.

----------

## xlyz

 *emix wrote:*   

> E poi a loro della portabilità non gliene frega niente... anzi.

 

ok, lo ammetto. la domanda non era poi così ingenua   :Wink: 

----------

## fedeliallalinea

 *tocas wrote:*   

> Intanto io non riesco a emergere neanche genlop   .
> 
> Questa è l'uscita di:

 

```
FEATURES="-sandbox" emerge app-portage/genlop
```

----------

## tocas

 :Very Happy:   :Very Happy:   ... tutto ok.

grazie fedeliallalinea..... sempre !

---

----------

