ページ 11

CentOS5.3でmonoの最新版をダウンロードとインストール

Posted: 2011年7月21日(木) 18:28
by ターボ
こんばんは。ターボと申します。

CentOS5.3でmonoを動かしたいのですが、ダウンロードして、インストールする方法がわかりません。

出来るだけ新しいmonoをインストールしたいのですが、今の私のスキルでは最初っからはいっているmonoを使う位しか選択肢がないのですが、CentOS5.3をインストールしたときmonoをインストールし忘れたみたいなのです。

なので、今からmonoを使おうと思ったらCentOS5.3を再インストールしなおさないといけないし、Linuxのソフトのダウンロード、インストールの仕方を覚えたいので、誰かCentOS5.3で使えるmonoの最新版をダウンロードして、インストールするやり方が書いてあるホームページのURLを教えてほしいです。

Googleで「CentOS5.3」とか「mono」とか色々検索してホームページとかを見てどうやら「mono2.4.6」のソース一覧に載っていたファイルを4つダウンロードしたのですが、おそらくLinuxは「make」とかいうコマンドを実行してインストールするのかなぁと思ったのですが、やり方が書いてあるホームページを自力で探せず困っています。

ダウンロードしたページも、どこのURLだったか覚えてなくて非常に困ってます。わざわざLinuxを使わなくても・・・。と思うかもしれませんがWidowsVistaとCentOS6.0のデュアルブートにしようとしてCentOS6.0を間違えて全領域にインストールとしてしまって、Vistaのセットアップ領域も全部消してしまって、Vistaは復元不可能になってしまい、おまけにCentOS6.0はインストールの途中で電源が切れてしまったりで、結局CentOS5.3でPCを動かしています。

なので誰か親切な方助けてほしいですよろしくお願いします。

Re: CentOS5.3でmonoの最新版をダウンロードとインストール

Posted: 2011年7月21日(木) 19:16
by h2so5
Monoについて詳しくは知らないのですが、このページはどうでしょうか。

http://www.dollpaper.com/info/437.html

Re: CentOS5.3でmonoの最新版をダウンロードとインストール

Posted: 2011年7月22日(金) 12:47
by hjkl
質問者が初心者と仮定して回答するので冗長な記述になります。

>Linuxのソフトのダウンロード、インストールの仕方を覚えたいので、
Linuxディストリビューションによってパッケージ管理の仕方が違います(めんどくさいですね)。
パッケージ管理をするツール(CentOSではyumだと思います)で
そのディストリ向けに、事前にビルドされたパッケージ(ソフトウェア)の追加(インストール)や削除をします。
なので、まずパッケージ管理ツールの使い方を調べたほうがいいかも。
パッケージ管理システム - Wikipedia

ソフトウェアをソースコードからビルドする場合はビルドツールを使います。
ビルドツールによるビルドはどのディストリでもほぼ手順は一緒ですが、
ソフトウェアによってビルドツールがちがいます(めんどくさいですね)。
例えばmakeコマンドはAutotoolsというビルドツールの一部です。
ビルドツールはAutotools, SCons, CMakeが一般的に使われています。
ビルド(ソフトウェア) - Wikipedia

>monoの最新版をダウンロードして、インストールするやり方が書いてあるホームページのURLを教えてほしいです。
コマンドを実行するのはシェルで、端末(ターミナル)がユーザーとシェルとの入出力をとりもつので、まず端末を起動してください。
基本的なコマンドなどはLinuxの入門サイトなどで確認してください。
Linux入門 - 信州大学
ターミナルエミュレータの使い方 - Linuxで遊ぼう

以下がインストールするための参考URLです。

Install Mono 2.10 on CentOS 5.x
このページではまずmonoのソースをダウンロードし、
yumでビルドするのに必要なパッケージをインストール後、ビルドツールでソースをビルドしています。
monoの最新のソースはMono 2.10.2 Sourcesからもダウンロードできます。

Install Mono on Centos5.5 using YUM - Stack Overflow
こちらの回答では最新のmonoがダウンロードできるレポジトリをyumに追加する方法です。
回答ではテキストエディタにviを使っていますが、使い慣れているエディタでmono.repoを編集したほうがいいと思います。

Re: CentOS5.3でmonoの最新版をダウンロードとインストール

Posted: 2011年7月22日(金) 21:33
by ターボ
h2so5さんhjklさん返信りがとうございます。とても感謝しています。

hjklさんへ
Install Mono 2.10 on CentOS 5.x
のページに書いてある通りやってみたのですが、make installをすると以下のように出ます。また質問なのですが。

とりあえず一般ユーザーでログインしてsu -でrootにログインしてインストールしてみました。

それで、うまくインストールできたと思ったのですが、rootにも一般ユーザーでログインしても左上の「アプリケーション」に「mono」の項目は表示されません。インストールはうまくいったと思いました。ちなみに下のように表示されます。

文字制限のため途中まで省略して途中から載せますが、


Making install in docs
make[1]: ディレクトリ `/root/mono-2.10/docs' に入ります
cd . && make PROFILE=net_2_0 -f docs.make topdir=../mcs AgilityPack.dll
make[2]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[2]: `AgilityPack.dll' は更新済みです
make[2]: ディレクトリ `/root/mono-2.10/docs' から出ます
cd . && make PROFILE=net_2_0 -f docs.make topdir=../mcs convert.exe
make[2]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[2]: `convert.exe' は更新済みです
make[2]: ディレクトリ `/root/mono-2.10/docs' から出ます
/bin/mkdir -p ./html
runtimedir=`cd ../runtime && pwd`; export runtimedir; \
cd . && MONO_PATH=../mcs/class/lib/net_2_0 perl ./exdoc -h . ../mono/*/*.c
Merging: mono-api-embedding.html
Merging: mono-api-security.html
Merging: mono-api-profiler.html
Merging: mono-api-counters.html
Merging: mono-api-jit.html
Merging: mono-api-metadata.html
Merging: mono-api-utils.html
Merging: mono-api-marshal.html
Merging: mono-api-types.html
Merging: mono-api-type.html
Merging: mono-api-debug.html
Merging: mono-api-assembly.html
Merging: mono-api-object.html
Merging: mono-api-threads.html
Merging: mono-api-image.html
Merging: mono-api-wapi.html
Merging: mono-api-codegen.html
Merging: mono-api-vm.html
Merging: mono-api-gc.html
Merging: mono-api-gchandle.html
Merging: mono-api-class.html
Merging: mono-api-internal.html
Merging: mono-api-methods.html
Merging: mono-api-reflection.html
Merging: mono-api-unsorted.html
Merging: mono-api-string.html
Merging: mono-api-jitinternal.html
Merging: mono-api-exc.html
Merging: mono-api-domains.html
Merging: mono-api-dynamic-codegen.html
touch deploy/.stamp
cd . && make -f docs.make topdir=../mcs mono-file-formats.tree
make[2]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[2]: `mono-file-formats.tree' は更新済みです
make[2]: ディレクトリ `/root/mono-2.10/docs' から出ます
cd . && make -f docs.make topdir=../mcs mono-tools.tree
make[2]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[2]: `mono-tools.tree' は更新済みです
make[2]: ディレクトリ `/root/mono-2.10/docs' から出ます
cd . && cp -f api-style.css deploy
cd . && make -f docs.make topdir=../mcs monoapi.tree
make[2]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[2]: `monoapi.tree' は更新済みです
make[2]: ディレクトリ `/root/mono-2.10/docs' から出ます
make[2]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[2]: `install-exec-am' に対して行うべき事はありません.
cd . && make PROFILE=net_2_0 -f docs.make topdir=../mcs AgilityPack.dll
make[3]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[3]: `AgilityPack.dll' は更新済みです
make[3]: ディレクトリ `/root/mono-2.10/docs' から出ます
cd . && make PROFILE=net_2_0 -f docs.make topdir=../mcs convert.exe
make[3]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[3]: `convert.exe' は更新済みです
make[3]: ディレクトリ `/root/mono-2.10/docs' から出ます
/bin/mkdir -p ./html
runtimedir=`cd ../runtime && pwd`; export runtimedir; \
cd . && MONO_PATH=../mcs/class/lib/net_2_0 perl ./exdoc -h . ../mono/*/*.c
Merging: mono-api-embedding.html
Merging: mono-api-security.html
Merging: mono-api-profiler.html
Merging: mono-api-counters.html
Merging: mono-api-jit.html
Merging: mono-api-metadata.html
Merging: mono-api-utils.html
Merging: mono-api-marshal.html
Merging: mono-api-types.html
Merging: mono-api-type.html
Merging: mono-api-debug.html
Merging: mono-api-assembly.html
Merging: mono-api-object.html
Merging: mono-api-threads.html
Merging: mono-api-image.html
Merging: mono-api-wapi.html
Merging: mono-api-codegen.html
Merging: mono-api-vm.html
Merging: mono-api-gc.html
Merging: mono-api-gchandle.html
Merging: mono-api-class.html
Merging: mono-api-internal.html
Merging: mono-api-methods.html
Merging: mono-api-reflection.html
Merging: mono-api-unsorted.html
Merging: mono-api-string.html
Merging: mono-api-jitinternal.html
Merging: mono-api-exc.html
Merging: mono-api-domains.html
Merging: mono-api-dynamic-codegen.html
touch deploy/.stamp
cd . && make -f docs.make topdir=../mcs mono-file-formats.tree
make[3]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[3]: `mono-file-formats.tree' は更新済みです
make[3]: ディレクトリ `/root/mono-2.10/docs' から出ます
cd . && make -f docs.make topdir=../mcs mono-tools.tree
make[3]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[3]: `mono-tools.tree' は更新済みです
make[3]: ディレクトリ `/root/mono-2.10/docs' から出ます
cd . && cp -f api-style.css deploy
cd . && make -f docs.make topdir=../mcs monoapi.tree
make[3]: ディレクトリ `/root/mono-2.10/docs' に入ります
make[3]: `monoapi.tree' は更新済みです
make[3]: ディレクトリ `/root/mono-2.10/docs' から出ますocal/lib/monodoc/sources/monoapi.zip'
make[2]: ディレクトリ `/root/mono-2.10/docs' から出ます
make[1]: ディレクトリ `/root/mono-2.10/docs' から出ます
make[1]: ディレクトリ `/root/mono-2.10' に入ります
make[2]: ディレクトリ `/root/mono-2.10' に入ります
make[2]: `install-exec-am' に対して行うべき事はありません.
make[2]: `install-data-am' に対して行うべき事はありません.
make[2]: ディレクトリ `/root/mono-2.10' から出ます
make[1]: ディレクトリ `/root/mono-2.10' から出ます


その後下のような表示が出るからそれが何か関係があるのかもしれないのですが、たびたびすみませんが、アドバイスお願いします。

>システムは更新を受信できません
>システムは現在、ソフトウェアの更新ができません。ネットワークの設定、およびソフトウェアの更新の設定を確認してください。

Re: CentOS5.3でmonoの最新版をダウンロードとインストール

Posted: 2011年7月23日(土) 18:06
by hjkl
>その後下のような表示が出るからそれが何か関係があるのかもしれないのですが、たびたびすみませんが、アドバイスお願いします。
>システムは更新を受信できません
>システムは現在、ソフトウェアの更新ができません。ネットワークの設定、およびソフトウェアの更新の設定を確認してください。
たぶんmonoとは関係ありません。ネットワークの問題だと思います。

>左上の「アプリケーション」に「mono」の項目は表示されません。

ユーザーが使いやすいように
メニューやタスクバーの表示やドラッグアンドドロップを実現するためのユーザーインターフェイス部分を担当するソフトウェアや
ウィンドウを管理するソフトウェア等(ウィンドウマネージャ)を統合したものを
デスクトップ環境といいます。
デスクトップ環境 - Wikipedia

デスクトップ環境のGNOMEでいうと「GNOMEパネル」が
ユーザーインターフェイス部を担当するソフトウェアで
Metacityがウィンドウマネージャです。
他にもGNOME端末などたくさんのソフトウェアで構成されています(GNOME 2系とGNOME 3系で構成は違いますが)。

WindowsではAero。Mac OS XはAquaが標準で使用されています。
Linuxの場合はGNOMEやKDEが一般的ですが
ディストリビューションによってまちまちですし、
アプリケーションメニューや標準で付属するソフトウェアがいらないユーザーは
ウィンドウマネージャだけ使用する場合もあります。
ウィンドウマネージャ - Wikipedia

例えばWindowsではスタートメニューに項目を追加するには
レジストリを書き換えたりする必要があると思います。
しかし、ただブラウザやゲームをインストールしたいだけのユーザーに
そんなめんどいコトをさせたくはありません。だから、そのソフトウェア付属のインストーラーが代わりにそういった処理をしているはずです。

たぶんGNOMEやKDEでもメニューに項目を追加するには
メニュー表示を設定するファイルを編集する必要があると思います。

GUIで操作できるパッケージ管理ツールのSynaptic等からインストールしたものは、
もしかしたら自動的にメニューに追加してくれるかもしれません。

しかし、そもそもmono自体がアプリケーションメニューに
追加するようなタイプのソフトウェアではないと思います。

前置きがくそ長くなりましたが、つまりアプリケーションのメニュー項目に表示されるのと
アプリケーションがインストールされるのはイコールではありません。
yumやmakeはメニューに表示されてませんよね?

>インストールはうまくいったと思いました。
makeはビルドやインストールに失敗すればErrorと出力して停止するので
そのようなコトがなければmonoはインストールできてると思います。

端末から
mono --version
と打ち、ずらずらとバージョンや著作権の情報が出力されればインストールできてます。
もし表示されない場合は環境変数PATHに
インストール先ディレクトリが登録されていないかもしれないので
PATHにディレクトリを追加してください。
インストールに失敗していてもビルド自体は成功していれば
monoやdmcsはmono-2.10のフォルダのどっかしらにあります(たぶん)。


/root/mono-2.10/で作業(?)していると思われますが、
rootのホームディレクトリで作業するより
一般ユーザのホームディレクトリ下で作業するほうがいいと思います。
好みの問題かもしれませんが。
あと自分はsuよりsudoの方をつかっています。
管理者権限が必要なときだけrootになります。
今回の場合だと
./configure
make
sudo make install
ってカンジになりますね。

あと自分の中ではMonoプロジェクトは.NET Frameworkの部分的な代替実装 + C#コンパイラという認識なんですが
ターボさん的にはどういった認識ですか?
monoをメニューに表示させたいあたりが、なんとなくWineの様なソフトウェアと誤解されているような気がします。
勘違いだったらすみません。
.NET Framework - Wikipedia
Mono (ソフトウェア) - Wikipedia
Wine - Wikipedia

Re: CentOS5.3でmonoの最新版をダウンロードとインストール

Posted: 2011年7月24日(日) 08:39
by ターボ
おはようございます。返信ありがとうございます。親切に回答していただき大変助かっています。

Widowsになれていたので、インストールが成功するとメニューに追加されるものだと思っていました。勉強不足で住みません。

そこで、又質問なのですが、私はmonoはVisual C#のようなことをLinuxとかでもできるようにしたソフトと思っていたのですが、monoだけではgccやg++みたいなものなのでしょうか?

いろいろ調べてMonoDevelopとかいうソフトを入れるとVisual C#の用に統合開発環境になるのでは?と思いダウンロード・インストールを試みたのですが中止と出てしまいます。

参考にしたURLを載せます。
http://smdn.jp/programming/mono/build_i ... velop-2.4/

[root@localhost monodevelop-2.4.2]# ./configure --prefix=/opt/mono/2.10/
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking how to create a ustar tar archive... gnutar
checking whether to enable maintainer-specific portions of Makefiles... no
checking for mono... /usr/local/bin/mono
checking for gmcs... /usr/local/bin/gmcs
checking for update-mime-database... /usr/bin/update-mime-database
checking for pkg-config... /usr/bin/pkg-config
checking for msgfmt... /usr/bin/msgfmt
checking for msgmerge... /usr/bin/msgmerge
checking pkg-config is at least version 0.9.0... yes
checking for UNMANAGED_DEPENDENCIES_MONO... no
configure: error: Please install mono version 2.6.1 or later to install MonoDevelop.
Please see http://www.mono-project.org/ to download latest mono sources or pa[root@localhost monodevelop-2.4.2]# ./configure --prefix=/opt/mono/2.10/
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking how to create a ustar tar archive... gnutar
checking whether to enable maintainer-specific portions of Makefiles... no
checking for mono... /usr/local/bin/mono
checking for gmcs... /usr/local/bin/gmcs
checking for update-mime-database... /usr/bin/update-mime-database
checking for pkg-config... /usr/bin/pkg-config
checking for msgfmt... /usr/bin/msgfmt
checking for msgmerge... /usr/bin/msgmerge
checking pkg-config is at least version 0.9.0... yes
checking for UNMANAGED_DEPENDENCIES_MONO... no
configure: error: Please install mono version 2.6.1 or later to install MonoDevelop.
Please see http://www.mono-project.org/ to download latest mono sources or packages
[root@localhost monodevelop-2.4.2]# make
make: *** ターゲットが指定されておらず, makefile も見つかりません. 中止.
ckages
[root@localhost monodevelop-2.4.2]# make
make: *** ターゲットが指定されておらず, makefile も見つかりません. 中止.

一般ユーザーでログインして管理者権限でインストールしようとしたらエラーだったんですが、最初からrootでログインしてmakeしようとすると上のようになります。度々ですみませんが、又助けてはいただけけないでしょうか?

Re: CentOS5.3でmonoの最新版をダウンロードとインストール

Posted: 2011年7月24日(日) 18:09
by hjkl
>そこで、又質問なのですが、私はmonoはVisual C#のようなことをLinuxとかでもできるようにしたソフトと思っていたのですが、monoだけではgccやg++みたいなものなのでしょうか?

まずMonoについて整理したいんですが
Monoプロジェクトは主に以下のような構成だと思います。
  • C#コンパイラ
  • Monoランタイム(共通言語基盤の実装、.NET Frameworkで言えばCLRにあたる)
  • .NET Framework互換の基本クラスライブラリ
  • Mono独自のクラスライブラリ
What is Mono - Mono

MonoのC#コンパイラはmcs,gmcs,smcs,dmcsといくつか種類があります。
状況によって使い分けてください。

Monoランタイムがmonoです。
共通言語ランタイムは仮想機械(以下VM(virtual machine))とほぼ同じ意味だと思います。
仮想機械 - Wikipedia
共通言語ランタイム - Wikipedia

VMはゲーム機エミュレータと似たようなもので
仮想的なCPUを作ってそれに計算してもらうものです。
monoなどは理論上の存在しないCPUで、ゲーム機エミュレータは実際のCPUを実装する違いはありますが。

LinuxやWindowsなどにVMを実装すればそのVM向けにコンパイルした
ネイティブコードをいろんなプラットフォームで実行できます。

例えばファミコンのエミュだったらCPUのMOS 6502(apple2にも載ってた奴ですね)を
プログラムでソフトウェア実装して、6502のネイティブコードを逐次実行します(実際には6502のメモリにマップされた周辺機器なども実装しないとですが)。
これでファミコン向けにコンパイルされたネイティブコードが
エミュレータさえ実装していればx86やPowerPCやARMといった
まったく違うCPUでも実行できるわけです。

単にVMといってもシンプルなものから
ガベコレやらJITやらが実装されているものまで様々ですが
有名ドコではJVM, .NET Framework, LLVM, Parrotとか他にはスクリプト言語にも
実装言語ではなく内部のVMでインタプリタするものも多いです。

つまり(?)
C#のソースファイルをmcs, gmcs, dmcs等でコンパイルして
それをmonoで読み込むことで実行されます。
なのでまずテキストエディタでhello world的な簡単なソースを書いて
実際にコンパイル、実行がうまくいくか試してみては。
Mono Basics - Mono



>いろいろ調べてMonoDevelopとかいうソフトを入れるとVisual C#の用に統合開発環境になるのでは?と思いダウンロード・インストールを試みたのですが中止と出てしまいます。

まずmakeではなくconfigureスクリプトの時点でエラーが出ています。
ログを見る限りmono関係は/usr/local/以下にインストールされているっぽいですね。
んでpkg-configとかldが使う環境変数に/usr/local/lib/pkgconfigだとかが
設定されていないようですね。
以下のページを参考にしてみては
CentOS で /usr/local/lib を認識させる設定方法 - ふにょい日記

あとターボさんが参考にしたURLのページや
MonoDevelopの公式ページにも書いてあるとおり
MonoDevelopをビルドするには最低でもMonoの他にMono AddinsとGTK#が必要です。
Building MonoDevelop - MonoDevelop

とりあえずあまり急ぎではないのならLinuxの基本的な使い方を調べてから
でも遅くはないと思います。
例えば./configure --prefix=/opt/mono/2.10/の
configureの前に付いている./の意味や
--prefixオプションの意味をわかっていますか?
/rootや/usr/localといったディレクトリの構造(構成)の慣習について
理解していますか?

闇雲にやっていても気持ちが悪いと思うので身近にLinuxユーザがいたら
教えてもったり入門サイト(あんまり良いサイトが無い気もしますが)を
参考に少しずつ進めたほうが良いと思います。

以下の参考URLはLinuxではなくFreeBSDのハンドブックですがChapter 3 Unixの基礎知識のページは
参考になると思います(たぶん)。
FreeBSD ハンドブック

エラそうに長々と書きましたが間違いなどもあると思うので鵜呑みにせず怪しいと思ったところは自分で調べてください :)

Re: CentOS5.3でmonoの最新版をダウンロードとインストール

Posted: 2011年7月26日(火) 21:02
by ターボ
hjklさん返信ありがとうございます。返信遅れて申し訳ございません。仕事と英語の勉強でなかなか返信できませんでした。

丁寧に解説していただきとても感謝しています。まだまだ、Linuxの基本的なことから理解できてないので、この前Linuxの基本的なことから中級レベルらしい本と2冊買っていてまだやっていないのをやってからmonoに手をつけようと思いました。

私のLinuxの知識は林比古さんのLinux入門をやっただけなので、解説にあったホームページも参考にしようと思いました。本当にありがとうございました。

今後ともよろしくお願いします。