サイト移転のお知らせ

しばらくブログお休みしていましたが、こちらに移転しました。よろしければこちらへどうぞ。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

さくらインターネットにgitをインストールする

 さくらインターネットのサーバ(レンタルサーバスタンダードプラン)でgitをビルドしようとすると、コマンドだけであれば簡単にできるのですがmanまで含めるとかなり面倒なことになります。
 これまではコマンドだけビルドして使っていましたが、やはりマニュアル見れないと困る事もあるので改めてgitのインストールにチャレンジしました。
 いろいろ試行錯誤しましたが
gitをインストール→asciidocが無いためエラー
→asciidocをインストール→xmltoが無いためのエラー
→xmltoをインストール→getoptが無いためエラー
→getoptをインストール→成功
→xmltoを改めてインストール→成功
→asciidocをインストール→成功
→gitをインストール→docbook2Xが無いためエラー
となるので、上記の逆の順番で必要なコマンド、ライブラリ類を入れて行きます。

 なお、以降の説明では、アカウント名がuserで、/home/user/local以下にインストールする前提としていますので、/home/user/local/binにパスを通すようにしておく必要があります。
■getoptのインストール
 ダウンロードして展開、makeとするだけで難しくはないですが、libintlのパスを指定してやる必要があります(以下のCFLAGSとLDFLAGSです)。
$ curl -L -O http://software.frodo.looijaard.name/getopt/files/getopt-1.1.4.tar.gz
$ tar xvzf getopt-1.1.4.tar.gz
$ cd getopt-1.1.4
$ gmake prefix=/home/user/local CFLAGS='-I/usr/local/include/' LDFLAGS='-lintl -L/usr/local/lib'
$ gmake prefix=/home/user/local install



■docbool2Xのインストール
 インストールは特に難しくなく以下のような手順で。
$ curl -L -O http://downloads.sourceforge.net/docbook2x/docbook2X-0.8.8.tar.gz
$ tar xvzf docbook2X-0.8.8.tar.gz
$ cd docbook2X-0.8.8
$ ./configure --prefix=/home/user/local
$ gmakeg
$ make install


 上記でインストールされるのがdocbook2texiとdocbook2manというコマンドですが、gitのインストール時に使うコマンドの名前がdocbook2x-texiになっています。名前が変わったんでしょうか。それともディストリビューションによって名前が違ったりするんでしょうか。
 理由はさておき(さて置いていいのか?)、これを回避するためにシンボリックリンクを作っておきます。
$ cd ~/local/bin/
$ ln -s docbook2man docbook2x-man
$ ln -s docbook2texi docbook2x-texi



■xmltoのインストール
 こいつがよくわからない奴で、一度目は簡単に成功するのですが、一旦gmake cleanしたあとで再度gmakeとするとエラーになります。なので、このエラーを回避するために、xmlto.inというファイルに若干修正を入れます。
$ curl -L -O https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.25.tar.gz
$ tar xvzf xmlto-0.0.25.tar.gz
$ cd xmlto-0.0.25


 xmlto.inを修正します。以下が変更個所。
***************
*** 209,215 ****
export VERBOSE

# Disable network entities
! XSLTOPTS="$XSLTOPTS --nonet"

# The names parameter for the XSLT stylesheet
XSLTPARAMS=""
--- 209,216 ----
export VERBOSE

# Disable network entities
! #XSLTOPTS="$XSLTOPTS --nonet"
! XSLTOPTS="$XSLTOPTS"

# The names parameter for the XSLT stylesheet
XSLTPARAMS=""
***************
*** 217,223 ****
# Enable XInclude
XSLTOPTS="$XSLTOPTS --xinclude"

! SKIP_VALIDATION=0
BACKEND_EXTENSIONS=1
NO_AUTOSIZE=0

--- 218,225 ----
# Enable XInclude
XSLTOPTS="$XSLTOPTS --xinclude"

! #SKIP_VALIDATION=0
! SKIP_VALIDATION=1
BACKEND_EXTENSIONS=1
NO_AUTOSIZE=0


 XSLTOPTSはxsltprocコマンドのオプションとして渡すことになるのですが、上記の修正をしないと以下のようなエラーになります。
gcc -g -O2 -o xmlif/xmlif xmlif/xmlif.o
FORMAT_DIR=./format /usr/local/bin/bash ./xmlto -o man/man1 man doc/xmlto.xml
xmlto: /home/user/local/src/xmlto-0.0.25/doc/xmlto.xml does not validate (status 3)
xmlto: Fix document syntax or use --skip-validation option
I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd
/home/user/local/src/xmlto-0.0.25/doc/xmlto.xml:3: warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
^
I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd
warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
validity error : Could not load the external subset "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
Document /home/user/local/src/xmlto-0.0.25/doc/xmlto.xml does not validate


 どうやら、外部ネットワークからのファイル取得に失敗しています。で、xsltprocの--nonetの意味を見ると、外部ネットワークからのファイル取得を拒否する、というようなことが書かれています。なんかやってることおかしくないかい?
 ということで、--nonetオプションを外して、validationもスキップするようにしている次第です。
 ファイル修正後は、以下のコマンドで。gmakeで何の出力もなく数分掛かりますが気長に待ちましょう。ネットワーク切れたかな、と不安になるようであれば、先のxmlto.inでVERBOSE=1と変更しておけばちゃんと動いていることが分かります。
$ ./configure --prefix=/home/user/local
$ gmake
$ gmake install



■acsiidocのインストール
 こいつは素直で簡単な奴です。
curl -L -O https://fedorahosted.org/releases/x/m/xmlto/xmlto-0.0.25.tar.gz
tar xvzf acsiidoc-8.6.7.tar.gz
cd asciidoc-8.6.7/
./configure --prefix=/home/user/local
gmake
gmake install



■gitのインストール
 いよいよラスボスのgitです。とりあえずファイルの取得と展開。
$ curl -L -o git-v1.7.10.2.tar.gz https://github.com/git/git/tarball/v1.7.10.2
$ tar xvzf git-v1.7.10.2.tar.gz
$ cd git-git-b4965f8/


 このあと、コマンドやmanのインストールをしますが、さきほどのxmltoと同じようにxsltprocでI/Oエラーが発生してしまいます。これを回避するためにDocumentation/Makefileに修正を加えます。修正箇所は2カ所。1つはdocbook2x-texiへの"-N"のオプションの追加。-Nを付けておくと、docbook2x-texiからxsltprocを呼ぶときに"--nonet"のオプションを外すようになります。もうひとつはXMLTO_EXTRAへの"--skip-validation"の追加。なぜかvalidationで失敗するようで、これを付けておくことで回避します。
***************
*** 47,53 ****
ASCIIDOC=asciidoc
ASCIIDOC_EXTRA =
MANPAGE_XSL = manpage-normal.xsl
! XMLTO_EXTRA =
INSTALL?=install
RM ?= rm -f
MAN_REPO = ../../git-manpages
--- 47,53 ----
ASCIIDOC=asciidoc
ASCIIDOC_EXTRA =
MANPAGE_XSL = manpage-normal.xsl
! XMLTO_EXTRA = --skip-validation
INSTALL?=install
RM ?= rm -f
MAN_REPO = ../../git-manpages
***************
*** 56,62 ****
infodir?=$(prefix)/share/info
MAKEINFO=makeinfo
INSTALL_INFO=install-info
! DOCBOOK2X_TEXI=docbook2x-texi
DBLATEX=dblatex
ifndef PERL_PATH
PERL_PATH = /usr/bin/perl
--- 56,62 ----
infodir?=$(prefix)/share/info
MAKEINFO=makeinfo
INSTALL_INFO=install-info
! DOCBOOK2X_TEXI=docbook2x-texi -N
DBLATEX=dblatex
ifndef PERL_PATH
PERL_PATH = /usr/bin/perl


 修正が終わったらビルドです。all doc infoとまとめてやってしまいます。(gitのINSTALLドキュメントにもこのように書いてありますので)。ただ、allはすぐに終わるのですが、docとinfoで恐ろしく時間が掛かります。私は5時間ほどかかりました。
 また、ネットワーク経由でのデータの取得に失敗することがあるようで、データ取得に失敗するとgmakeは中断してしまいます。その場合でも下記のコマンドを再度実行すれば、済んでいるところはスキップしてビルドを継続できます。
$ gmake prefix=/home/user/local all doc info

 これさえ終わればあとはまとめてインストール。
$ gmake prefix=/home/user/local/ install install-doc install-html install-info

 で、終了です。苦労してgitのmanを見られるようにしたので、環境変数に以下を設定しておくのを忘れずに(bashの例です)。
export MANPATH=$MANPATH:$HOME/local/man:$HOME/local/share/man
関連記事
スポンサーサイト

テーマ : サーバ
ジャンル : コンピュータ

コメントの投稿

非公開コメント

サイト内検索
プロフィール

Author:imxs

Androidアプリ開発などを行っているimxsの開発者です。気になることを調べてメモって行きます。ほとんどの人にはどうでもいい内容でも、広い世の中一人くらいは同じ疑問を持った奇妙な人がいることを信じつつ。暖かい目で見守ってやってください。
imxsの開発者ブログは移転しました。よろしければこちらへどうぞ。

カテゴリ
最新記事
リンク
RSSリンクの表示
最新コメント
最新トラックバック
FC2カウンター
アクセスランキング
[ジャンルランキング]
携帯電話・PHS
131位
アクセスランキングを見る>>

[サブジャンルランキング]
Android(Google)
32位
アクセスランキングを見る>>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。