rcmdnk's blog
Last update

Gitポケットリファレンス

前回、 Cygwinにgitの新しいバージョンをインストールしようとしてapt-cyg を導入しましたが、結局現状のcygwinに含まれるgitがまだ古かったのでapt-cygでは 新しいものはインストール出来ませんでした。

仕方が無いので直接インストールします。

Sponsored Links

インストール

ソースからインストールしてみます。

$ cd /tmp
$ git clone https://github.com/git/git.git
$ cd git
$ make configure
$ ./configure --prefix=/home/$USER/usr/local
$ make all doc
...
    SUBDIR git_remote_helpers
    SUBDIR templates
    MSGFMT po/build/locale/is/LC_MESSAGES/git.mo
/bin/sh: msgfmt: command not found
Makefile:2135: recipe for target `po/build/locale/is/LC_MESSAGES/git.mo' failed
make: *** [po/build/locale/is/LC_MESSAGES/git.mo] Error 127

というわけで、まずmsgfmtが無い、とでました。 このコマンドはgettextと言うパッケージに入っているみたいですが 1 cygwinには既にgettext-0.18.1がインストールされていました。 (この時点で/bin/msgfmt.pyというものはインストールされてましたがmsgfmt というコマンドは無し。)

追記: 2013/11/10

msgfmtはcygwinのgettextを入れただけでは入らず、gettext-devel の方に入っているようです。 以下では0.18.2が必要、と書いてますが、 別途gettextを入れなくても apt-cyggettext-develで入れれば allは通る様になります。

追記ここまで

どうももう一つ新しいバージョン0.18.2が必要らしいので、 直接インストールする必要があります。

$ cd /tmp
$ wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.18.2.tar.gz
$ tar xzf gettext-0.18.2.tar.gz
$ cd gettext-0.18.2
$ ./configure --prefix=/home/$USER/usr/local
$ make
# ...やたら時間がかかる
$ make install

makeに10分くらい?かかりましたが無事インストール。

無事~/usr/local/bin/msgfmtがあることを確認して、もう一度gitの方をmake。 そうすると次はasciidocが無い、と言われました。

これはapt-cygで確認すると。

$ apt-cyg find asciidoc
...
Searching for installed packages matching asciidoc:

Searching for installable packages matching asciidoc:
asciidoc

となり、インストールされていないがミラーサイトにはあるようなので、

$ apt-cyg install asciidoc
...
Running postinstall scripts
/etc/postinstall/pango1.0.sh: line 1: /etc/pango/pango.modules: No such file or directory
Package asciidoc installed
...

でインストール。 途中No such file or directoryと言う表示がありましたが、取り敢えず無視。

これで再びgitをmakeすると新たにxmltoが無い、と。これapt-cygインストール。

$ apt-cyg install xmlto

再度gitをmakeすると

$ make all doc
...
xmlto: /home/USER/tmp/git/Documentation/git-update-ref.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.5/docbookx.dtd
/home/USER/tmp/git/Documentation/git-update-ref.xml:2: warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
D DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
                                                                               ^
I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
warning: failed to load external entity "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
Could not load the external subset "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
Document /home/USER/tmp/git/Documentation/git-update-ref.xml does not validate
Makefile:314: recipe for target `git-update-ref.1' failed
make[1]: *** [git-update-ref.1] Error 13
make[1]: Leaving directory `/home/USER/tmp/git/Documentation'
Makefile:2083: recipe for target `doc' failed
make: *** [doc] Error 2

と言った感じのエラー。xmltoのバージョンが悪いのかどこかで壊れたのかそれとも他が悪いのか、 この時点で面倒になってきて、 このmakeはdocの所でこけているだけなので、docを外してmake。

$ make all

とするとOKだったので

$ make install

でインストール出来ました。

途中docは飛ばしてしまいましたが、ソフトの本幹の方は正しくインストールされたと思うので 取り敢えずOKと言うことで。

こまた、docに関してはxmltoをインストールした後、INSALLに書いてある通り、

追記: 2013/11/10

gitのパッケージの中にあるINSTALLを見ると

$xmlcatalog --noout \
    --add rewriteURI \
       http://docbook.sourceforge.net/release/xsl/current \
       /usr/share/sgml/docbook/xsl-stylesheets \
    /etc/xml/catalog
 
$xmlcatalog --noout \
    --add rewriteURI \
        http://www.oasis-open.org/docbook/xml/4.5/xsl/current \
        /usr/share/sgml/docbook/xml-dtd-4.5 \
    /etc/xml/catalog

として/etc/xml/catalogを書き換えてやるよう書いてありますが、 これをしても駄目で、この辺

Can’t build doc anymore (v1.7.3.2)

を一部追ってみましたがやはり上手く行かず。 やはり面倒になったのではっぱりdoc入りは断念。

追記ここまで

取り敢えずこれでcygwinもgit-1.8.3.1を手に入れました。

追記: 2113/07/05

上の様にただインストールしただけでは error: cannot fork()みたいなエラーが出たりして上手くいかない時があります。 その場合の対処法をこちらに 書いておきました。

追記ここまで

Sponsored Links
Sponsored Links

« apt-cygの使い方: Cygwinでコマンドラインからパッケージをインストールしたり管理をする Cygwin内外でリンクを共有する »