2014-09-03T06:58:20の更新内容

programming/mono/build_install/mono-3.6/index.wiki.txt

current previous
1,6 1,6
 
${smdncms:title,Mono 3.6 のビルド・インストール}
${smdncms:title,Mono 3.6 のビルド・インストール}
~
${smdncms:keywords,Mono 3.6,Ubuntu 14.04}
${smdncms:keywords,Mono 3.6,Ubuntu 12.04}
~
[[Mono 3.6:http://www.mono-project.com/Main_Page]]をソースからビルドしてインストールする手順。 検証に使った環境はUbuntu 14.04 LTS 64bit。
[[Mono 3.6:http://www.mono-project.com/Main_Page]]をソースからビルドしてインストールする手順。 検証に使った環境はUbuntu 12.04 (Precise Pangolin)。
 

        

        
 
-リンク
-リンク
 
--[[Release Notes Mono 3.6 | Mono:http://www.mono-project.com/docs/about-mono/releases/3.6.0/]]
--[[Release Notes Mono 3.6 | Mono:http://www.mono-project.com/docs/about-mono/releases/3.6.0/]]
17,9 17,7
 

        

        
 
#googleadunit
#googleadunit
 

        

        
~
*libgdiplus [#libgdiplus]
*libgdiplus
+
Mono 3.6リリース時点では3.6にバージョン付けされたlibgdiplusはリリースされていないため、gitから最新のソースを取得してビルドする。 (関連するページ:[[programming/mono/build_install/mono_from_git-master#libgdiplus]])
+

          
 
**依存するパッケージのインストール
**依存するパッケージのインストール
 
#code(sh){{
#code(sh){{
 
sudo apt-get install \
sudo apt-get install \
27,11 25,14
 
libtiff4-dev libgif-dev libx11-dev libxrender-dev
libtiff4-dev libgif-dev libx11-dev libxrender-dev
 
}}
}}
 

        

        
~
**ソースのチェックアウトとautogen、configure
**ソースのダウンロードとconfigure
-
Mono 3.6リリース時点では3.6にバージョン付けされたlibgdiplusはリリースされていないため、現時点で最新の2.10.9を使用する。
-

          
 
#code(sh){{
#code(sh){{
~
git clone git://github.com/mono/libgdiplus.git
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.9.tar.bz2
~
cd ./libgdiplus
tar -xvf libgdiplus-2.10.9.tar.bz2 
~
./autogen.sh --prefix=/opt/mono/3.6/
cd libgdiplus-2.10.9/
-
./configure --prefix=/opt/mono/3.6/
 
}}
}}
 

        

        
 
``configure``の結果例。
``configure``の結果例。
40,7 41,7
 
Configuration summary
Configuration summary
 

        

        
 
   * Installation prefix = /opt/mono/3.6
   * Installation prefix = /opt/mono/3.6
~
   * Cairo = 1.13.1 (system)
   * Cairo = 1.10.2 (system)
 
   * Text = cairo
   * Text = cairo
 
   * EXIF tags = yes
   * EXIF tags = yes
 
   * Codecs supported:
   * Codecs supported:
55,11 56,10
 
            autogen.sh to include them in the build.
            autogen.sh to include them in the build.
 

        

        
 
---
---
+
Now type `make' to compile
 
}}
}}
 

        

        
 
**ビルド、インストール
**ビルド、インストール
~
configureした結果に問題が無ければmake、make installする。
``configure``した結果に問題が無ければ``make``, ``make install``する。
 
#code(sh){{
#code(sh){{
 
make
make
 
sudo make install
sudo make install
70,8 70,39
 
ls -l /opt/mono/3.6/lib/libgdiplus*
ls -l /opt/mono/3.6/lib/libgdiplus*
 
}}
}}
 

        

        
-
#commentout{{{
-
*LLVM
-
LLVMバックエンドを有効にする場合のみ。 不要な場合はこのステップはスキップできる。
-

          
-
-LLVMに関するドキュメント
-
--[[Mono LLVM - Mono:http://www.mono-project.com/Mono_LLVM]]
-
--[[Mono:Runtime:Documentation:LLVM - Mono:http://www.mono-project.com/Mono:Runtime:Documentation:LLVM]]
-

          
-
**ソースのチェックアウトとautogen、configure
-
#code(sh){{
-
git clone git://github.com/mono/llvm.git
-
cd llvm/
-
./configure --prefix=/opt/mono/3.6 --enable-optimized --enable-targets='x86 x86_64'
-
}}
-

          
-
**ビルド、インストール
-
``configure``した結果に問題が無ければ``make``, ``make install``する。
-
#code(sh){{
-
make
-
sudo make install
-
}}
-

          
-
参考までに、Core 2 Duo E6600を積んだマシンでのビルド所要時間は以下のとおり。
-
#prompt{{
-
$ time make
-

          
-
real	28m5.238s
-
user	24m24.584s
-
sys	1m5.848s
-
}}
-
}}}
 

        

        
~
*Mono本体(コンパイラ、クラスライブラリ) [#Mono]
*Mono本体(コンパイラ、クラスライブラリ)
 
**依存するパッケージのインストール
**依存するパッケージのインストール
 
#code(sh){{
#code(sh){{
 
sudo apt-get install \
sudo apt-get install \
114,7 145,7
 

        

        
 
.NET Framework 2.0/3.5のプロファイルが不要な場合、ビルドする必要がない場合はコンパイルオプションに``--with-profile2=no``を追加して``configure``を行う。
.NET Framework 2.0/3.5のプロファイルが不要な場合、ビルドする必要がない場合はコンパイルオプションに``--with-profile2=no``を追加して``configure``を行う。
 

        

        
~
LLVMバックエンドを有効にしたい場合の手順については[[programming/mono/build_install/mono_from_git-master#LLVM]]。
LLVMバックエンドを有効にしたい場合の手順については[[programming/mono/build_install/mono_from_git-master]]。
 

        

        
 
-コンパイルオプションに関するドキュメント
-コンパイルオプションに関するドキュメント
 
--[[Advanced Mono Compile Options - Mono:http://www.mono-project.com/Advanced_Mono_Compile_Options]]
--[[Advanced Mono Compile Options - Mono:http://www.mono-project.com/Advanced_Mono_Compile_Options]]
135,9 166,9
 
参考までに、Core 2 Duo E6600を積んだマシンでのビルド所要時間は以下のとおり。
参考までに、Core 2 Duo E6600を積んだマシンでのビルド所要時間は以下のとおり。
 
#prompt{{
#prompt{{
 
$ time make
$ time make
~
real	27m31.842s
real	24m42.146s
~
user	22m29.238s
user	20m27.293s
~
sys	2m16.600s
sys	1m24.021s
 
}}
}}
 

        

        
 
古いバージョンのMonoを使ってビルドしようとすると、Mono.Http/NtlmClient.csのコンパイルに失敗する場合がある模様。 ([[Bug 20462 – Mono actual version from github has compilation errors:https://bugzilla.xamarin.com/show_bug.cgi?id=20462]])
古いバージョンのMonoを使ってビルドしようとすると、Mono.Http/NtlmClient.csのコンパイルに失敗する場合がある模様。 ([[Bug 20462 – Mono actual version from github has compilation errors:https://bugzilla.xamarin.com/show_bug.cgi?id=20462]])
151,12 182,12
 

        

        
 
#prompt{{
#prompt{{
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 3.6.0 (tarball 2014年  9月  2日 火曜日 05:45:43 JST)
Mono JIT compiler version 3.6.0 (tarball 2014年  8月 19日 火曜日 21:01:42 JST)
 
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	SIGSEGV:       altstack
	SIGSEGV:       altstack
 
	Notifications: epoll
	Notifications: epoll
~
	Architecture:  amd64
	Architecture:  x86
 
	Disabled:      none
	Disabled:      none
 
	Misc:          softdebug 
	Misc:          softdebug 
 
	LLVM:          supported, not enabled.
	LLVM:          supported, not enabled.
182,16 213,16
 
$ which mono
$ which mono
 
/usr/bin/mono
/usr/bin/mono
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-4ubuntu1)
Mono JIT compiler version 2.10.8.1 (Debian 2.10.8.1-1ubuntu2.2)
~
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	SIGSEGV:       altstack
	SIGSEGV:       altstack
 
	Notifications: epoll
	Notifications: epoll
~
	Architecture:  amd64
	Architecture:  x86
 
	Disabled:      none
	Disabled:      none
 
	Misc:          softdebug 
	Misc:          softdebug 
 
	LLVM:          supported, not enabled.
	LLVM:          supported, not enabled.
~
	GC:            sgen
	GC:            Included Boehm (with typed GC and Parallel Mark)
 
}}
}}
 

        

        
 
続いて、先ほど用意したスクリプトを読み込んだあとで``mono -V``を実行し、新しくインストールしたmonoが動作することを確認する。
続いて、先ほど用意したスクリプトを読み込んだあとで``mono -V``を実行し、新しくインストールしたmonoが動作することを確認する。
201,12 232,12
 
$ which mono
$ which mono
 
/opt/mono/3.6/bin/mono
/opt/mono/3.6/bin/mono
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 3.6.0 (tarball 2014年  9月  2日 火曜日 05:45:43 JST)
Mono JIT compiler version 3.6.0 (tarball 2014年  8月 19日 火曜日 21:01:42 JST)
 
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	SIGSEGV:       altstack
	SIGSEGV:       altstack
 
	Notifications: epoll
	Notifications: epoll
~
	Architecture:  amd64
	Architecture:  x86
 
	Disabled:      none
	Disabled:      none
 
	Misc:          softdebug 
	Misc:          softdebug 
 
	LLVM:          supported, not enabled.
	LLVM:          supported, not enabled.
334,7 365,7
 
---
---
 
}}
}}
 

        

        
~
***"symbol lookup error"が発生する場合の対処 [#gtk-sharp-symbol-lookup-error]
***symbol lookup errorが発生する場合の対処 [#gtk-sharp-symbol-lookup-error]
 
GLibのバージョンが2.31以上の場合、g_thread_*が定義されていないため、MonoDevelopの起動時に以下のようなエラーが発生する。 (MonoDevelop本体ではなくgtk-sharp-2.0の問題)
GLibのバージョンが2.31以上の場合、g_thread_*が定義されていないため、MonoDevelopの起動時に以下のようなエラーが発生する。 (MonoDevelop本体ではなくgtk-sharp-2.0の問題)
 
#prompt{{
#prompt{{
 
monodevelop: symbol lookup error: /opt/mono/2.11/lib/libglibsharpglue-2.so: undefined symbol: g_thread_supported
monodevelop: symbol lookup error: /opt/mono/2.11/lib/libglibsharpglue-2.so: undefined symbol: g_thread_supported
381,26 412,6
 
--[[[2 commits] be18f433: glib: do not call g_thread_ functions in GLib >= 2.31 - mono-svn-patches | Google グループ:http://groups.google.com/group/mono-svn-patches/browse_thread/thread/3b20cf2ed5617cc5?pli=1]]
--[[[2 commits] be18f433: glib: do not call g_thread_ functions in GLib >= 2.31 - mono-svn-patches | Google グループ:http://groups.google.com/group/mono-svn-patches/browse_thread/thread/3b20cf2ed5617cc5?pli=1]]
 

        

        
 

        

        
+
***"Only <glib.h> can be included directly."が発生する場合の対処
+
ビルド中に以下のエラーが発生する場合の対処。
+

          
+
#prompt{{
+
/usr/include/glib-2.0/glib/gthread.h:29:2: error: #error "Only <glib.h> can be included directly."
+
 #error "Only <glib.h> can be included directly."
+
  ^
+
In file included from /usr/include/glib-2.0/glib/gthread.h:32:0,
+
                 from thread.c:23:
+
}}
+

          
+
``glib/glue/thread.c``を編集し、``glib/gthread.h``をincludeするかわりに``glib.h``をincludeするように変更する。
+

          
+
#code(diff,glib/glue/thread.c){{
+
< #include <glib/gthread.h>
+
---
+
> #include <glib.h>
+
}}
+

          
+

          
 
***make, make install
***make, make install
 
問題が無ければ、``make``, ``make install``する。
問題が無ければ、``make``, ``make install``する。
 
#code(sh){{
#code(sh){{
508,7 519,8
 
依存するパッケージのインストール。
依存するパッケージのインストール。
 
#code(sh){{
#code(sh){{
 
sudo apt-get install \
sudo apt-get install \
~
libgtksourceview2.0-dev libgtkhtml3.14-dev librsvg2-dev libvte-dev libwnck-dev
libgtksourceview2.0-dev libgnomeprint2.2-dev libgnomeprintui2.2-dev libgtkhtml3.14-dev \
-
librsvg2-dev libvte-dev libwnck-dev
 
}}
}}
 

        

        
 
ソースのダウンロードと``configure``。
ソースのダウンロードと``configure``。
530,7 542,7
 
   Optional assemblies included in the build:
   Optional assemblies included in the build:
 

        

        
 
      * gnome-panel-sharp.dll: no
      * gnome-panel-sharp.dll: no
~
      * gnome-print-sharp.dll: no
      * gnome-print-sharp.dll: yes
 
      * gtkhtml-sharp.dll: yes
      * gtkhtml-sharp.dll: yes
 
      * gtksourceview2-sharp.dll: yes
      * gtksourceview2-sharp.dll: yes
 
      * nautilusburn-sharp.dll: no
      * nautilusburn-sharp.dll: no
788,6 800,7
 
gecko-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=ccf7d78a55e9f021
gecko-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=ccf7d78a55e9f021
 
glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
glade-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
 
glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
-
gnome-print-sharp, Version=2.18.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
 
gnome-sharp, Version=2.24.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
gnome-sharp, Version=2.24.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
 
gnome-vfs-sharp, Version=2.24.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
gnome-vfs-sharp, Version=2.24.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
 
gnomedesktop-sharp, Version=2.20.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
gnomedesktop-sharp, Version=2.20.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
856,6 869,6
 
rsvg2-sharp, Version=2.18.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
rsvg2-sharp, Version=2.18.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
 
vte-sharp, Version=0.16.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
vte-sharp, Version=0.16.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
 
wnck-sharp, Version=2.20.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
wnck-sharp, Version=2.20.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f
~
Number of items = 300
Number of items = 301
 
}}
}}
 

        

        

programming/mono/build_install/mono_from_git-master/index.wiki.txt

current previous
1,17 1,18
 
${smdncms:title,Mono のビルド・インストール (Git master)}
${smdncms:title,Mono のビルド・インストール (Git master)}
 
${smdncms:keywords,Git,master}
${smdncms:keywords,Git,master}
~
[[Mono:http://www.mono-project.com/Main_Page]]を[[Gitのソース:http://github.com/mono]]からビルドしてインストールする手順。 ビルドに使用した環境はUbuntu 14.04 LTS 64bit。 本文は2014年09月02日現在のバージョンに基づく。 また、本文中の所要時間はCore 2 Duo E6600を積んだマシンで計測したもの。
[[Mono:http://www.mono-project.com/Main_Page]]を[[Gitのソース:http://github.com/mono]]からビルドしてインストールする手順。 ビルドに使用した環境はUbuntu 12.04 (Precise Pangolin)。 本文は2013年06月21日現在のバージョンに基づく。 また、本文中の所要時間はCore 2 Duo E6600を積んだマシンで計測したもの。
 

        

        
 
-関連するページ
-関連するページ
-
--[[archives/mono/build_install/mono_from_svn-trunk]]
 
--[[programming/mono/build_install]]
--[[programming/mono/build_install]]
 

        

        
~
ここで紹介する手順はMono本体といくつかのアセンブリをインストールするためのもの。 ディストリビューションが提供しているバージョンのMonoと共存できるようにするため、``/opt/mono/master``にインストールする。
ここで紹介する手順はMono本体といくつかのアセンブリをインストールするためのもの。 ディストリビューションが提供しているバージョンのMonoと共存できるようにするため、/opt/mono/masterにインストールする。
 

        

        
 
1つの環境に複数のMonoをインストールする方法については[[Parallel Mono Environments - Mono:http://www.mono-project.com/Parallel_Mono_Environments]]で詳しく解説されている。
1つの環境に複数のMonoをインストールする方法については[[Parallel Mono Environments - Mono:http://www.mono-project.com/Parallel_Mono_Environments]]で詳しく解説されている。
 

        

        
 
ビルドにはgcc、libtool、autotools、gettext、pkg-config等が必要になるので、あらかじめインストールしておく必要がある。
ビルドにはgcc、libtool、autotools、gettext、pkg-config等が必要になるので、あらかじめインストールしておく必要がある。
 

        

        
~
*libgdiplus [#libgdiplus]
*libgdiplus
 
**依存するパッケージのインストール
**依存するパッケージのインストール
 
#code(sh){{
#code(sh){{
 
sudo apt-get install \
sudo apt-get install \
32,7 33,7
 
Configuration summary
Configuration summary
 

        

        
 
   * Installation prefix = /opt/mono/master
   * Installation prefix = /opt/mono/master
~
   * Cairo = 1.13.1 (system)
   * Cairo = 1.10.2 (system)
 
   * Text = cairo
   * Text = cairo
 
   * EXIF tags = yes
   * EXIF tags = yes
 
   * Codecs supported:
   * Codecs supported:
62,7 63,7
 
ls -l /opt/mono/master/lib/libgdiplus*
ls -l /opt/mono/master/lib/libgdiplus*
 
}}
}}
 

        

        
~
*LLVM [#LLVM]
*LLVM
 
LLVMバックエンドを有効にする場合のみ。
LLVMバックエンドを有効にする場合のみ。
 

        

        
 
-LLVMに関するドキュメント
-LLVMに関するドキュメント
73,7 74,7
 
#code(sh){{
#code(sh){{
 
git clone git://github.com/mono/llvm.git
git clone git://github.com/mono/llvm.git
 
cd llvm/
cd llvm/
~
./configure --prefix=/opt/mono/master --enable-optimized
./configure --prefix=/opt/mono/master --enable-optimized --enable-targets='x86 x86_64'
 
}}
}}
 

        

        
 
**ビルド、インストール
**ビルド、インストール
92,7 93,7
 
sys	1m5.848s
sys	1m5.848s
 
}}
}}
 

        

        
~
*Mono本体(コンパイラ、クラスライブラリ) [#Mono]
*Mono本体(コンパイラ、クラスライブラリ)
 
**依存するパッケージのインストール
**依存するパッケージのインストール
 
#code(sh){{
#code(sh){{
 
sudo apt-get install \
sudo apt-get install \
100,7 101,7
 
}}
}}
 

        

        
 
**ソースのチェックアウトとautogen、configure
**ソースのチェックアウトとautogen、configure
~
.NET Framework 2.0のアセンブリを含めない場合は、``--with-profile2=no``を指定する。 また、ここでは``--enable-llvm``を指定してLLVMバックエンドを有効にしてビルドする。
.NET Framework 2.0のアセンブリを含めない場合は、--with-profile2=noを指定する。 また、ここでは--enable-llvmを指定してLLVMバックエンドを有効にしてビルドする。
 
#code(sh){{
#code(sh){{
 
git clone git://github.com/mono/mono.git
git clone git://github.com/mono/mono.git
 
cd mono
cd mono
113,9 114,7
 
        mcs source:    mcs
        mcs source:    mcs
 

        

        
 
   Engine:
   Engine:
~
	Host:	       x86_64-unknown-linux-gnu
	GC:	       sgen and bundled Boehm GC with typed GC and parallel mark
+
	Target:	       x86_64-unknown-linux-gnu
+
	GC:	       sgen and Included Boehm GC with typed GC and parallel mark
 
	TLS:           __thread
	TLS:           __thread
 
	SIGALTSTACK:   yes
	SIGALTSTACK:   yes
 
	Engine:        Building and using the JIT
	Engine:        Building and using the JIT
130,7 129,6
 
	.NET 4.5:      yes
	.NET 4.5:      yes
 
	MonoDroid:     no
	MonoDroid:     no
 
	MonoTouch:     no
	MonoTouch:     no
+
	Xamarin.Mac:   no
 
	JNI support:   
	JNI support:   
 
	libgdiplus:    assumed to be installed
	libgdiplus:    assumed to be installed
 
	zlib:          system zlib
	zlib:          system zlib
149,7 147,7
 
make get-monolite-latest
make get-monolite-latest
 
}}
}}
 

        

        
~
なお、このコマンドでから取得したバイナリでビルドできない場合は、以下の5つのバイナリを別の環境からコピーするなどして``../mcs/class/lib/monolite/``に配置すればビルドできるようになる。
なお、このコマンドでから取得したバイナリでビルドできない場合は、以下の5つのバイナリを別の環境からコピーするなどして../mcs/class/lib/monolite/に配置すればビルドできるようになる。
 
-mscorlib.dll
-mscorlib.dll
 
-System.dll
-System.dll
 
-System.Xml.dll
-System.Xml.dll
179,16 177,16
 
mono -Vでmonoが動作することを確認する。
mono -Vでmonoが動作することを確認する。
 
#prompt{{
#prompt{{
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 3.10 (master/bd8782b 2014年  9月  2日 火曜日 05:03:28 JST)
Mono JIT compiler version 3.0.12 (master/db06719 2013年  6月 21日 金曜日 22:09:51 JST)
~
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2012 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	SIGSEGV:       altstack
	SIGSEGV:       altstack
 
	Notifications: epoll
	Notifications: epoll
~
	Architecture:  amd64
	Architecture:  x86
 
	Disabled:      none
	Disabled:      none
 
	Misc:          softdebug 
	Misc:          softdebug 
~
	LLVM:          yes(3.4svn-mono-mono/e656cac)
	LLVM:          yes(3.2svn-mono)
~
	GC:            sgen
	GC:            Included Boehm (with typed GC and Parallel Mark)
 
}}
}}
 

        

        
 
***既に別のバージョンのMonoが存在する環境にインストールした場合
***既に別のバージョンのMonoが存在する環境にインストールした場合
209,16 207,16
 
$ which mono
$ which mono
 
/usr/bin/mono
/usr/bin/mono
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-4ubuntu1)
Mono JIT compiler version 2.10.8.1 (Debian 2.10.8.1-1ubuntu2)
~
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	SIGSEGV:       altstack
	SIGSEGV:       altstack
 
	Notifications: epoll
	Notifications: epoll
~
	Architecture:  amd64
	Architecture:  x86
 
	Disabled:      none
	Disabled:      none
 
	Misc:          softdebug 
	Misc:          softdebug 
 
	LLVM:          supported, not enabled.
	LLVM:          supported, not enabled.
~
	GC:            sgen
	GC:            Included Boehm (with typed GC and Parallel Mark)
 
}}
}}
 

        

        
 
続いて、先ほど用意したスクリプトを読み込んだあとでmono -Vを実行し、新しくインストールしたmonoが動作することを確認する。
続いて、先ほど用意したスクリプトを読み込んだあとでmono -Vを実行し、新しくインストールしたmonoが動作することを確認する。
227,16 225,16
 
$ which mono
$ which mono
 
/opt/mono/master/bin/mono
/opt/mono/master/bin/mono
 
$ mono -V
$ mono -V
~
Mono JIT compiler version 3.10 (master/bd8782b 2014年  9月  2日 火曜日 05:03:28 JST)
Mono JIT compiler version 3.0.12 (master/db06719 2013年  6月 21日 金曜日 22:09:51 JST)
~
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
Copyright (C) 2002-2012 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
 
	TLS:           __thread
	TLS:           __thread
 
	SIGSEGV:       altstack
	SIGSEGV:       altstack
 
	Notifications: epoll
	Notifications: epoll
~
	Architecture:  amd64
	Architecture:  x86
 
	Disabled:      none
	Disabled:      none
 
	Misc:          softdebug 
	Misc:          softdebug 
~
	LLVM:          yes(3.4svn-mono-mono/e656cac)
	LLVM:          yes(3.2svn-mono)
~
	GC:            sgen
	GC:            Included Boehm (with typed GC and Parallel Mark)
 
}}
}}
 

        

        
 
***GAC
***GAC
307,7 305,7
 
$ csharp -e 'Environment.Version;'
$ csharp -e 'Environment.Version;'
 
4.0.30319.17020
4.0.30319.17020
 
$ csharp -e 'Environment.OSVersion;'
$ csharp -e 'Environment.OSVersion;'
~
Unix 3.13.0.24
Unix 3.2.0.33
 
$ csharp
$ csharp
 
Mono C# Shell, type "help;" for help
Mono C# Shell, type "help;" for help
 

        

        
320,52 318,6
 
----
----
 

        

        
 
*その他のアセンブリ・ライブラリ
*その他のアセンブリ・ライブラリ
+
**mono-basic
+
VB.NETコンパイラやMicrosoft.VisualBasic.dllを使用する場合は、mono-basicをインストールする。
+

          
+
ソースのチェックアウトとautogen、configure。
+

          
+
#code(sh){{
+
git clone git://github.com/mono/mono-basic.git
+
cd mono-basic/
+
./configure --prefix=/opt/mono/master/
+
}}
+

          
+
configureの結果例。
+
#prompt{{
+
mono-basic 3.0 module configured to use prefix=/opt/mono/master/
+
}}
+

          
+
問題が無ければ、make、make installする。
+
#code(sh){{
+
make
+
sudo make install
+
}}
+

          
+
vbnc2(VB.NETコンパイラ)の動作を確認する。
+

          
+
#code(cs,test.vb){{
+
Imports System
+

          
+
Module Test
+
  Sub Main()
+
    Console.WriteLine("Hello, world!")
+
  End Sub
+
End Module
+
}}
+

          
+
#prompt{{
+
$ vbnc2 test.vb && mono test.exe
+
Visual Basic.Net Compiler version 0.0.0.5943 (Mono 3.0 - master/4dcc70f)
+
Copyright (C) 2004-2010 Rolf Bjarne Kvinge. All rights reserved.
+

          
+
Assembly 'test, Version=0.0, Culture=neutral, PublicKeyToken=null' saved successfully to '/home/smdn/test.exe'.
+
Compilation successful
+
Compilation took 00:00:00.7852010
+
Hello, world!
+
}}
+

          
+

          
 
**Mono.Addins
**Mono.Addins
 
gtk-sharp-2.0が必要になるので、別途ビルドするかパッケージをインストールする。
gtk-sharp-2.0が必要になるので、別途ビルドするかパッケージをインストールする。
 
#code(sh){{
#code(sh){{

programming/mono/build_install/monodevelop-5.0/index.wiki.txt

current previous
1,25 1,24
 
${smdncms:title,MonoDevelop 5.0 のビルド・インストール}
${smdncms:title,MonoDevelop 5.0 のビルド・インストール}
 
${smdncms:keywords,MonoDevelop 5.0,Ubuntu 12.04}
${smdncms:keywords,MonoDevelop 5.0,Ubuntu 12.04}
~
[[MonoDevelop 5.0:http://monodevelop.com/]]をソースからビルドしてインストールする手順。 検証に使った環境はUbuntu 14.04 LTS 64bit。
[[MonoDevelop 5.0:http://monodevelop.com/]]をソースからビルドしてインストールする手順。 検証に使った環境はUbuntu 12.04 (Precise Pangolin)。
 

        

        
 
//-リンク
//-リンク
 
//-[[Release Notes for MonoDevelop 3.0.5 - MonoDevelop:http://monodevelop.com/Download/Release_Notes/Release_Notes_for_MonoDevelop_3.0.5]]
//-[[Release Notes for MonoDevelop 3.0.5 - MonoDevelop:http://monodevelop.com/Download/Release_Notes/Release_Notes_for_MonoDevelop_3.0.5]]
 
-関連するページ
-関連するページ
 
--[[programming/mono/build_install]]
--[[programming/mono/build_install]]
 

        

        
-
*MonoDevelop本体
-
**MonoDevelopが必要とするアセンブリのインストール
-
MonoDevelopが必要とするアセンブリをあらかじめインストールしておく。 必要になるものは以下のアセンブリ。 各アセンブリのインストール方法については[[programming/mono/build_install/mono-3.4]]、[[programming/mono/build_install/mono-3.6]]を参照のこと。
-
-MonoDevelopが必要とするアセンブリ・パッケージ
-
--Mono
-
--gtk-sharp
-
--gecko-sharp
-

          
 
以下の手順では``/opt/mono/3.6/``にMonoがインストールされているものとし、またMonoDevelopのインストール先も``/opt/mono/3.6/``としている。
以下の手順では``/opt/mono/3.6/``にMonoがインストールされているものとし、またMonoDevelopのインストール先も``/opt/mono/3.6/``としている。
 

        

        
~
*MonoDevelopが必要とするアセンブリのインストール
**ソースのダウンロードとconfigure
~
MonoDevelopが必要とするアセンブリをあらかじめインストールしておく。 必要になるものは以下のアセンブリ。
***tarballの場合
+

          
+
-Mono
+
-gtk-sharp
+
-gecko-sharp
+

          
+
各アセンブリのインストール方法については[[programming/mono/build_install/mono-3.6]]を参照のこと。
+

          
+
*ソースのダウンロードとconfigure
+
**tarballの場合
 
#code(sh){{
#code(sh){{
 
wget http://download.mono-project.com/sources/monodevelop/monodevelop-5.0.1-0.tar.bz2
wget http://download.mono-project.com/sources/monodevelop/monodevelop-5.0.1-0.tar.bz2
 
tar -xvf ./monodevelop-5.0.1-0.tar.bz2 
tar -xvf ./monodevelop-5.0.1-0.tar.bz2 
47,7 46,7
 
}}
}}
 

        

        
 

        

        
~
**gitからソースを取得する場合
***gitからソースを取得する場合
 
#code(sh){{
#code(sh){{
 
git clone git://github.com/mono/monodevelop.git
git clone git://github.com/mono/monodevelop.git
 
cd monodevelop/
cd monodevelop/
106,13 105,13
 
    main
    main
 
}}
}}
 

        

        
~
*ビルド、起動
**ビルド、起動
 
問題が無ければ、makeする。
問題が無ければ、makeする。
 
#code(sh){{
#code(sh){{
 
make
make
 
}}
}}
 

        

        
~
試用したい場合など、ビルドしたものをインストールせずに実行したい場合は、``make run``するとMonoDevelopが起動する。
ビルドしたものをインストールせず、すぐに実行したければmake runする。
 
#code(sh){{
#code(sh){{
 
make run
make run
 
}}
}}
128,15 127,4
 
sudo make install
sudo make install
 
}}
}}
 

        

        
+
*NUnitアセンブリの参照の修正
+
MonoDevelopで単体テストをビルド・実行できない場合がある。 これはMonoDevelopがMonoに同梱されている"mono-nunit"を参照してしまうことが原因。 "nunit 2.4 (Provided by MonoDevelop)"を参照している場合でも、ビルド時には"mono-nunit"が参照されてしまう。 "mono-nunit"はバージョンが2.4.8と古いため、新しいバージョンのNUnit用に書かれたテストコードはビルドに失敗する。
+

          
+
この問題が発生する場合は、pkgconfigを書き換え、MonoDevelopに同梱されているNUnitアセンブリを参照するようにすることで回避できる。
+

          
+
#code(sh){{
+
cd /opt/mono/3.6/lib/pkgconfig/
+
cp mono-nunit.pc mono-nunit.pc.bak
+
sed "s/mono\/2.0/monodevelop\/AddIns\/NUnit/g" mono-nunit.pc.bak > mono-nunit.pc
+
}}
+

          
 

        

        

softwares/highlight/index.wiki.txt

current previous
4,18 4,18
 

        

        
 
*ソースからのビルド・インストール
*ソースからのビルド・インストール
 
LuaおよびBoostに依存するため、あらかじめインストールしておく。
LuaおよびBoostに依存するため、あらかじめインストールしておく。
~
-liblua5.2
-liblua5.1-0
~
-liblua5.2-dev
-liblua5.1-0-dev
~
-libboost-dev
-libboost1.46-dev
 

        

        
 
ソースのダウンロード、展開。
ソースのダウンロード、展開。
 
#code(sh){{
#code(sh){{
~
wget http://www.andre-simon.de/zip/highlight-3.18.tar.bz2
wget http://www.andre-simon.de/zip/highlight-3.6.tar.bz2
~
tar -xvf highlight-3.18.tar.bz2
tar -xvf highlight-3.6.tar.bz2
~
cd highlight-3.18/
cd highlight-3.6/
 
}}
}}
 

        

        
~
パッケージにはconfigureは含まれておらず、標準では``/usr``にインストールされる。 ``/usr``以外にインストールする場合は、以下のようにmakefileを直接編集する。
パッケージにはconfigureは含まれておらず、標準では/usrにインストールされる。 /usr以外にインストールする場合は、以下のようにmakefileを直接編集する。
 
#code(diff,プレフィックスの変更){{
#code(diff,プレフィックスの変更){{
 
11c11
11c11
 
< PREFIX = /usr
< PREFIX = /usr
23,18 23,13
 
> PREFIX = /usr/local
> PREFIX = /usr/local
 
}}
}}
 

        

        
~
また、Ubuntu 14.04ではmakeしようとした際にLuaライブラリのパス取得で失敗したため、``src/makefile``の次の箇所を編集した。
また、Ubuntu 11.04ではmakeしようとした際にLuaのリンクで失敗したため、src/makefileの次の箇所を編集した。
 

        

        
 
#code(diff,src/makefileの変更){{
#code(diff,src/makefileの変更){{
 
36c36
36c36
~
41c41
< LUA_LIBS=-llua
+
< LUA_CFLAGS=$(shell pkg-config --cflags lua) -DUSE_LUA52
 
---
---
~
> LUA_CFLAGS=$(shell pkg-config --cflags lua5.2) -DUSE_LUA52
> LUA_LIBS=-llua5.1
+
44c44
+
< LUA_LIBS=$(shell pkg-config --libs lua)
+
---
+
> LUA_LIBS=$(shell pkg-config --libs lua5.2)
 
}}
}}
 

        

        
 
make, make installする。
make, make installする。
67,29 62,25
 
}}
}}
 

        

        
 
*SWIGでC#用バインディングを作成する
*SWIGでC#用バインディングを作成する
~
examples/swig/highlight.iにSWIGのインターフェイス定義ファイルが用意されているので、これを使ってC#用バインディングを作成する。 なお、ここで使用したSWIGのバージョンは2.0.11である。
examples/swig/highlight.iにSWIGのインターフェイス定義ファイルが用意されているので、これを使ってC#用バインディングを作成する。 なお、ここで使用したSWIGのバージョンは1.3.40である。
 

        

        
 
用意されているmakefileはPython, Perl用のバインディングを作成するようにしか書かれていないので、これに追記してC#用バインディングを作成するmakefileを書く。 追記する内容は以下の通り。
用意されているmakefileはPython, Perl用のバインディングを作成するようにしか書かれていないので、これに追記してC#用バインディングを作成するmakefileを書く。 追記する内容は以下の通り。
~
#code(diff,makefileに追記・修正する内容){{
#code(diff,makefileに追記する内容){{
 
2a3
2a3
~
> CSC=mcs
> CSC=gmcs
~
8,9c9,10
24a26,31
+
< LUA_CFLAGS=$(shell pkg-config --cflags lua)
+
< LUA_LIBS=$(shell pkg-config --libs lua)
+
---
+
> LUA_CFLAGS=$(shell pkg-config --cflags lua5.2)
+
> LUA_LIBS=$(shell pkg-config --libs lua5.2)
+
18a20,25
 
> csharp: lib-stamp
> csharp: lib-stamp
 
> 	swig -c++ -csharp -o highlight_wrap.cpp -dllimport libhighlight -namespace highlight highlight.i
> 	swig -c++ -csharp -o highlight_wrap.cpp -dllimport libhighlight -namespace highlight highlight.i
~
> 	${CXX} ${CFLAGS} -c highlight_wrap.cpp ${LUA_CFLAGS} -I${HL_INC}
> 	${CXX} ${CFLAGS} -c highlight_wrap.cpp ${LUA_CFLAGS} -I${HL_INC} 
 
> 	${CXX} -shared -s highlight_wrap.o  -L${HL_SRC} -lhighlight ${LUA_LIBS} -o libhighlight.so
> 	${CXX} -shared -s highlight_wrap.o  -L${HL_SRC} -lhighlight ${LUA_LIBS} -o libhighlight.so
 
> 	${CSC} /t:library /out:highlight.dll *.cs
> 	${CSC} /t:library /out:highlight.dll *.cs
 
> 
> 
~
48c55
30d36
~
< .PHONY: python python-clean perl perl-clean php php-clean clean
< 
-
39c45
-
< .PHONY: python python-clean perl perl-clean clean
 
---
---
~
> .PHONY: python python-clean perl perl-clean php php-clean csharp csharp-clean clean
> .PHONY: python python-clean perl perl-clean clean csharp csharp-clean
 
}}
}}
 

        

        
 
ここでswigに渡しているオプションの詳細は次の通り。
ここでswigに渡しているオプションの詳細は次の通り。
99,13 90,11
 
makefileへの追記が済んだらmake csharpでmakeする。
makefileへの追記が済んだらmake csharpでmakeする。
 
#prompt{{
#prompt{{
 
$ make csharp
$ make csharp
+
    :
+
    :
 
swig -c++ -csharp -o highlight_wrap.cpp -dllimport libhighlight -namespace highlight highlight.i
swig -c++ -csharp -o highlight_wrap.cpp -dllimport libhighlight -namespace highlight highlight.i
~
../../src/include/codegenerator.h:85: Warning 503: Can't wrap 'operator =' unless renamed to a valid identifier.
../../src/include/codegenerator.h:86: Warning(503): Can't wrap 'operator =' unless renamed to a valid identifier.
~
g++ -g -O2 -fPIC -c highlight_wrap.cpp -I/usr/include/lua5.2   -I../../src/include/
g++ -g -O2 -fPIC -c highlight_wrap.cpp -I/usr/include/lua5.1   -I../../src/include/ 
~
g++ -shared -s highlight_wrap.o  -L../../src/ -lhighlight  -o libhighlight.so
g++ -shared -s highlight_wrap.o  -L../../src/ -lhighlight -llua5.1   -o libhighlight.so
~
mcs /t:library /out:highlight.dll *.cs
gmcs /t:library /out:highlight.dll *.cs
 
}}
}}
 

        

        
 
これでライブラリhighlight.soおよびラッパhighlight.dllが作成される。 作成したラッパが動作するかテストコードを作ってテストしてみる。
これでライブラリhighlight.soおよびラッパhighlight.dllが作成される。 作成したラッパが動作するかテストコードを作ってテストしてみる。
141,15 130,16
 
上記のコードをコンパイル・実行すると、HTMLでマークアップされたハイライト済みのテキストが出力される。
上記のコードをコンパイル・実行すると、HTMLでマークアップされたハイライト済みのテキストが出力される。
 

        

        
 
#prompt(出力例){{
#prompt(出力例){{
~
$ mcs -r:./highlight.dll testmod.cs && mono testmod.exe
$ gmcs -r:./highlight.dll testmod.cs && mono testmod.exe
~
<!DOCTYPE html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 
<html>
<html>
 
<head>
<head>
~
<meta charset="UTF-8">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
 
<title>Source file</title>
<title>Source file</title>
 
<style type="text/css">
<style type="text/css">
-
<!--
 
body.hl	{ background-color:#ffffff; }
body.hl	{ background-color:#ffffff; }
~
pre.hl	{ color:#000000; background-color:#ffffff; font-size:10pt; font-family:'Courier New',monospace;}
pre.hl	{ color:#000000; background-color:#ffffff; font-size:10pt; font-family:'Courier New';}
 
.hl.num { color:#000000; }
.hl.num { color:#000000; }
 
.hl.esc { color:#a31515; }
.hl.esc { color:#a31515; }
 
.hl.str { color:#a31515; }
.hl.str { color:#a31515; }
158,12 148,12
 
.hl.com { color:#008000; }
.hl.com { color:#008000; }
 
.hl.ppc { color:#0000ff; }
.hl.ppc { color:#0000ff; }
 
.hl.opt { color:#000000; }
.hl.opt { color:#000000; }
+
.hl.ipl { color:#a31515; }
 
.hl.lin { color:#2b91af; }
.hl.lin { color:#2b91af; }
 
.hl.kwa { color:#0000ff; }
.hl.kwa { color:#0000ff; }
 
.hl.kwb { color:#0000ff; }
.hl.kwb { color:#0000ff; }
 
.hl.kwc { color:#2b91af; }
.hl.kwc { color:#2b91af; }
 
.hl.kwd { color:#000000; }
.hl.kwd { color:#000000; }
-
//-->
 
</style>
</style>
 
</head>
</head>
 
<body class="hl">
<body class="hl">
176,7 166,7
 
</pre>
</pre>
 
</body>
</body>
 
</html>
</html>
~
<!--HTML generated by highlight 3.18, http://www.andre-simon.de/-->
<!--HTML generated by highlight 3.6, http://www.andre-simon.de/-->
 
}}
}}
 

        

        
 
-参考
-参考

softwares/ubuntu/initialconfig_trusty_server/index.wiki.txt

current previous
1,384 0,0
+
${smdncms:title,Ubuntu 14.04 Server 初期設定メモ}
+
${smdncms:keywords,Ubuntu,14.04,Trusty,Tahr,Server,初期設定}
+
${smdncms:meta,toc-amazonlivelink-keyword,books-jp,Linux}
+
Ubuntu 14.04 Server (Trusty Tahr)の初期設定メモ。
+

          
+
-このメモの目的と内容
+
--kvm仮想マシンを各種サーバとして使うための自分用メモ
+
--インストールには[[ubuntu-14.04.1-server-i386.iso:http://releases.ubuntu.com/releases/14.04.1/]]を使用
+
--インストールするマシンとして、256MBのメモリと10GBのストレージ(virtio)2台が接続されている仮想マシンを使用
+
-関連するページ
+
--[[softwares/ubuntu]]
+

          
+
#googleadunit(rect)
+

          
+
*仮想マシンの作成
+
仮想マシンマネージャーで仮想マシンを作成する。 作成後、すぐにはインストールを開始せず、VNCサーバーのキーマップをjaにしておく。
+

          
+
*インストール手順
+
**ブート画面
+
+F2 Language: [English]を選択
+
+F3 Keymap: [Japan]を選択
+
+F4 Modes: [Install a minimal virtual machine]を選択
+
+[Install Ubuntu Server]を選択
+

          
+
**Select a language
+
+Language: [English - English]を選択
+

          
+
**Select your location
+
+Country, territory or area: [other] → [Asia] → [Japan]の順に選択
+

          
+
**Configure locales
+
+Country to base default locale settings on: [United States - en_US.UTF-8]を選択
+

          
+
**Loading additional components
+
+(インストールが終わるまで待つ)
+

          
+
**Configure the network
+
(DHCPを無効にしている場合)
+
+Network configuration method: [Configure network manually]を選択
+
+(以下ダイアログに従ってIPアドレス等を入力)
+

          
+
**Set up users and passwords
+
+(ダイアログに従ってユーザ名・パスワード等を入力)
+
+Encrypt your home directory?: <No>を選択
+

          
+
**Configure the clock
+
+Is this time zone correct?: 適切なタイムゾーンが選択されていることを確認して<Yes>を選択
+

          
+
**Partition disks
+
+Partitioning method: [Manual]を選択
+
+以下のように設定
+
|>|>|>|>|>|Virtual disk1 (vda) 10GB|
+
|#1|primary|512M|ext4|/boot|Mount option: defaults|
+
|#5|logical|(max)|ext4|/usr|Mount option: defaults|
+
|>|>|>|>|>|Virtual disk2 (vdb) 10GB|
+
|#1|primary|(max)|ext4|/|Mount option: defaults|
+
|#5|logical|512M|swap|>|-|
+
+[Finish partitioning and write changes to disk]を選択
+
+Write the changes to disks?: パーティションのフォーマットを確認して<Yes>を選択
+

          
+
**Installing the base system
+
+(インストールが終わるまで待つ)
+

          
+
**Configure the package manager
+
+HTTP proxy information: 空欄のままもしくは必要に応じて適切なURLを入力
+

          
+
**Configuring tasksel
+
+How do you want to manage upgrades on this system? [No automatic updates]を選択
+

          
+
**Software selection
+
+(サーバの構成に従って適当なものを選択)
+
+[Mail server]の設定例
+
++Postfix Configuration
+
+++General type of mail configuration: [Satellite system]を選択
+
+++System mail name: 適当な名前を入力
+
+++SMTP relay host: メール配送に用いるSMTPサーバのホスト名を入力
+

          
+
**Install the GRUB boot loader on a hard disk
+
+Install the GRUB boot loader to the master boot record?: <Yes>を選択
+

          
+
**Finish the installation
+
+Installation complete: ディスクを取り出して<Continue>を選択
+
+再起動
+

          
+

          
+

          
+
*インストール後の設定
+
**デフォルトのエディタ変更
+
好みのエディタに変更する。
+
#prompt{{
+
$ sudo update-alternatives --config editor
+
There are 4 choices for the alternative editor (providing /usr/bin/editor).
+

          
+
  Selection    Path                Priority   Status
+
------------------------------------------------------------
+
* 0            /bin/nano            40        auto mode
+
  1            /bin/ed             -100       manual mode
+
  2            /bin/nano            40        manual mode
+
  3            /usr/bin/vim.basic   30        manual mode
+
  4            /usr/bin/vim.tiny    10        manual mode
+

          
+
Press enter to keep the current choice[*], or type selection number: 3
+
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode.
+
}}
+

          
+
**~/.vimrc
+
以下の内容で作成。
+
#code(,~/.vimrc){{
+
set encoding=utf-8
+
set fileencoding=utf-8
+
set fileencodings=utf-8,utf-16,japan
+

          
+
set backspace=2
+
set tabstop=2
+
set shiftwidth=4
+
set expandtab
+

          
+
highlight tabs ctermbg=green guibg=green
+

          
+
set list
+
set number
+
set ruler
+
set smartindent
+
}}
+

          
+
**~/.bashrc
+
以下の内容を追記。
+
#code(,~/.bashrc){{
+
alias rm='rm -i'
+
alias cp='cp -i'
+
alias mv='mv -i'
+

          
+
PS1='\!> \[\033[0;33m\]\u\[\033[m\]@\[\033[0;36m\]\h\[\033[m\] [\[\033[0;32m\]\t\[\033[m\] \w]\$ '
+
case $TERM in
+
  kterm|xterm|cygwin)
+
    TITLEBAR="\u@\h:\w"
+
    PS1="\[\033]0;${TITLEBAR}\007\]${PS1}"
+
    ;;
+
esac
+
}}
+

          
+
**/etc/aliases
+
root宛のメール送信先を変更する。 ``/etc/aliases``を作成して以下の内容を記入。
+
#code(,/etc/aliases){{
+
root: root@example.com
+
}}
+

          
+
変更を反映する。
+
#code(sh){{
+
sudo newaliases
+
}}
+

          
+
**/etc/hosts
+
必要に応じてホストを追記。
+

          
+
**グループ・ユーザー
+
必要に応じて追加。
+

          
+
#code(sh){{
+
groupadd -g 999 xxxxxx
+
adduser --uid 999 --gid 999 --disabled-login --disabled-password --no-create-home xxxxxx
+
}}
+

          
+
**IPv6の無効化
+
以下の内容を追記。
+
#code(,/etc/sysctl.conf){{
+
net.ipv6.conf.all.disable_ipv6 = 1
+
net.ipv6.conf.default.disable_ipv6 = 1
+
}}
+

          
+
``sudo sysctl -p``で変更を反映する。
+

          
+
**シリアルコンソール
+
``virsh console``で接続できるようにするための設定。 ``/etc/init/ttyS0.conf``を作成して以下の内容を書き込む。
+

          
+
#code(,/etc/init/ttyS0.conf){{
+
start on stopped rc RUNLEVEL=[2345]
+
stop on runlevel [!2345]
+

          
+
respawn
+
exec /sbin/getty -L 115200 ttyS0 xterm
+
}}
+

          
+
この設定は再起動後に有効になる。
+

          
+
仮想マシンの設定にデバイスの種類が``pty``のシリアルデバイスが存在していることを確認し、``virsh console &var{仮想マシン名};``で接続する。
+

          
+
#prompt{{
+
$ virsh console server1
+
ドメイン server1 に接続しました
+
エスケープ文字は ^] です
+

          
+
Ubuntu 14.04.1 LTS server1 ttyS0
+

          
+
server1 login: 
+
}}
+

          
+
**GRUB 2
+
設定を書き換え、起動時にGRUB 2のメニュー画面が表示されるようにする。 ``GRUB_HIDDEN_TIMEOUT``をコメントアウトし、``GRUB_TIMEOUT``にタイムアウト秒数を指定する。
+
#code(,/etc/default/grub){{
+
#GRUB_HIDDEN_TIMEOUT=0
+
GRUB_TIMEOUT=5
+
}}
+

          
+
``virsh console``でシリアルコンソールに接続できるようにしたい場合は、以下の内容も追記する。
+

          
+
#code(,/etc/default/grub){{
+
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"
+
GRUB_TERMINAL=serial
+
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
+
}}
+

          
+
変更内容を反映する。
+
#prompt{{
+
$ sudo update-grub2 
+
Generating grub.cfg ...
+
Found linux image: /boot/vmlinuz-2.6.32-21-generic-pae
+
Found initrd image: /boot/initrd.img-2.6.32-21-generic-pae
+
Found memtest86+ image: /memtest86+.bin
+
done
+
}}
+

          
+
-参考
+
--[[Grub2 - Community Ubuntu Documentation:https://help.ubuntu.com/community/Grub2]]
+

          
+
*パッケージのインストールと設定
+
**パッケージを最新の状態に更新
+
#code(sh,){{
+
sudo apt-get update
+
sudo apt-get dist-upgrade
+
}}
+

          
+
**不要なパッケージの削除
+
#code(sh,){{
+
sudo apt-get purge \
+
  acpid \
+
  apport \
+
  at \
+
  bc \
+
  byobu \
+
  landscape-common \
+
  nano \
+
  ntfs-3g libntfs-3g.* libntfs.* \
+
  ppp pppconfig pppoeconf \
+
  screen \
+
  tmux \
+
  wpasupplicant \
+
  wireless-tools wireless-regdb \
+
  whoopsie
+
}}
+

          
+
**NFS
+
#code(sh){{
+
sudo apt-get install nfs-common
+
}}
+

          
+
マウントポイントを作成。
+
#code(sh){{
+
sudo mkdir -p /srv/nfs
+
}}
+

          
+
/etc/fstabを編集後、マウントする。
+
#code(sh){{
+
sudo vi /etc/fstab
+
sudo mount -a
+
}}
+

          
+
マウントされたかどうか確認する。
+
#code(sh){{
+
cat /etc/mtab
+
ls -l /srv/nfs
+
}}
+

          
+
**NTP
+
#code(sh){{
+
sudo apt-get install ntp
+
}}
+

          
+
適当なNTPサーバを設定し、再起動。
+
#code(sh){{
+
sudo vi /etc/ntp.conf
+
sudo service ntp restart
+
}}
+

          
+
**Logwatch
+
#code(sh){{
+
sudo apt-get install logwatch
+
}}
+

          
+
テストした結果をroot宛にメールで送信する。
+

          
+
#code(sh){{
+
sudo logwatch --mailto root
+
}}
+

          
+
**Munin
+
#code(sh){{
+
sudo apt-get install munin-node
+
}}
+

          
+
/etc/munin/pluginsから必要なプラグインだけを残す。
+
#code(sh){{
+
sudo unlink xxx
+
sudo ln -s /usr/share/munin/plugins/xxx
+
}}
+

          
+
データを収集するマシンのみからのアクセスを許可するように変更する。
+
#code(,/etc/munin/munin-node.conf){{
+
allow ^192\.168\.0\.10$
+
}}
+

          
+
munin-nodeを再起動。
+
#code(sh){{
+
sudo service munin-node restart
+
}}
+

          
+
データを収集するマシンからtelnetで接続できるか試す。
+
#prompt{{
+
$ telnet server1 4949
+
Trying 192.168.0.20...
+
Connected to server1.
+
Escape character is '^]'.
+
# munin node at server1.example.com
+
nodes
+
server1.example.com
+
.
+
quit
+
Connection closed by foreign host.
+
}}
+

          
+
**AWStats
+
#code(sh){{
+
sudo apt-get install awstats
+
}}
+

          
+
``/etc/awstats``以下の設定ファイルを編集後、ログが読み込まれデータが正しく収集されるかテストする。
+
#code(sh){{
+
sudo -u www-data /usr/share/doc/awstats/examples/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl -confdir="/etc/awstats/"
+
ls /var/lib/awstats
+
}}
+

          
+
必要に応じてcron(``/etc/cron.d/awstats``)の設定およびHTTPサーバの設定を更新したのち、``http&#x3A;//&var{サーバ名};/awstats/awstats.pl?config=&var{設定ファイル名};``を開いて収集されたデータが表示されるか確かめる。
+

          
+
**Postfix+Dovecot(IMAP)+maildrop
+
#code(sh){{
+
sudo apt-get install postfix dovecot-core dovecot-imapd maildrop
+
}}
+

          
+
***メールの格納先をMaildirにする
+
#code(,/etc/postfix/main.cf){{
+
home_mailbox = Maildir/
+
}}
+

          
+
#code(,/etc/dovecot/conf.d/10-mail.conf){{
+
mail_location = maildir:~/Maildir
+
}}
+

          
+
***maildropでフィルタ・振り分ける
+
まずホームディレクトリに``.forward``を作成し、ユーザー宛のすべてのメールをmaildropコマンドに転送させる。
+

          
+
#code(,~/.forward){{
+
"|/usr/bin/maildrop"
+
}}
+

          
+
次に``.mailfilter``を作成し、フィルタ・振り分けの設定を記述する。
+

          
+
#code(,~/.mailfilter){{
+
# maildrop.logに動作ログを出力する
+
logfile "$HOME/maildrop.log"
+

          
+
# Subjectヘッダに'Cron'という文字列が含まれている場合は
+
# メールボックス'INBOX/Cron'に振り分ける
+
if (/^Subject:.*Cron/:h)
+
{
+
  to "$HOME/Maildir/.INBOX.Cron/"
+
}
+

          
+
# それ以外のメールは'INBOX'に振り分ける
+
}}
+

          
+
-参考
+
--[[Postfix + Maildrop Howto:http://www.postfix.org/MAILDROP_README.html]]
+
--[[maildropfilter:http://www.courier-mta.org/maildropfilter.html]]
+