Установка Git на OS X

Я пытаюсь установить Git на Mac OS X Leopard. Я пытаюсь избежать маршрута MacPorts/Fink. Я также стараюсь избегать installer в Google, потому что я очень далеко от себя, но если мне нужно, Идем дальше и загружаем установщик.

Во всяком случае, у меня установлен Git. /usr/local/bin/git. Проблема в том, что ни одна из документации не установлена, и Makefile никогда не беспокоился об этом. Итак, теперь у меня есть Git, сидящий в ожидании, чтобы его использовали, когда я пытаюсь установить для него manpages.

По какой-то ужасной причине manpages хранятся в виде текстовых файлов, которые должны быть обработаны программой AsciiDoc, которую я быстро установил. Но AsciiDoc преобразует эти текстовые файлы в XML.

Затем Git использует другую программу с именем xmlto для преобразования XML, который AsciiDoc выплевывает в manpages (я думаю - я еще не получил этого еще). Проблема в том, что я получаю эту ошибку всякий раз, когда начинается этот шаг (первая строка выводится из make, rest - ошибка):

    XMLTO git-apply.1
I/O error : Attempt to load network entity http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd
/Users/chrislutz/prog/sources/git-1.6.3.1/Documentation/git-apply.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"

Таким образом, в основном это просто проходит через каждый файл и дает мне эту ошибку для всех.

В какой-то момент я попытался загрузить файл http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd, поместить его в каталог и затем изменить все ссылки в файлах XML на файл в каталоге, но это дало мне больше и более странных ошибок. Если бы я получил регулярное решение для работы, он все равно мог бы дать мне эти незнакомые ошибки, а это значит, что все это завинчивается и что я просто использую установщик Google.

Тем не менее, я так и остался (споткнулся), и мне кажется, что это последний шаг до вздоха облегчения и возможность использовать Git. Поэтому я хочу сделать последнее попытку понять, что случилось. И "последнее действие" означает "Спросить переполнение стека".

Итак, если кто-нибудь может дать мне представление о том, что означает эта ошибка и почему она происходит (и что я могу сделать, чтобы ее исправить), это было бы потрясающе. Если нет, я попробую установщик Google.

Ответы

Ответ 1

Возможно, не ответ, который вы хотите, но вы можете просто загрузить git-manpages-*.tar.gz и git-html-*.tar.gz, которые будут опубликованы вместе с источником. Они опубликованы, потому что средство связывания asciidoc, как известно, немного хрупко и прилагает значительные усилия, чтобы все было установлено и организовано.

Похоже, вам понадобится целый пакет файлов поддержки docbook. Возможно, некоторые таблицы стилей... хотя, если у вас установлен xmlto, у вас должно получиться все это.

Ответ 2

Недавно я установил git -1.6.4.2 на CentOS 5.3. Построение git было без проблем, но попытка установить сопровождающие документы вызвала боль на каждом шагу. Версии xmlto и asciidoc из репозиториев yum были старыми, поэтому я построил их из источника. Тогда xmlto (через xmllint) жаловался на отсутствие DocBook 4.5, и мне наконец удалось получить их вручную.

Доступая до этого, сборка документов счастливо продолжается, пока

    DB2TEXI user-manual.texi
/bin/sh: line 1: docbook2x-texi: command not found
make[1]: *** [user-manual.texi] Error 127

Но установлен docbook2x! Ах, команда другая:

$ rpm -q --filesbypkg docbook2x | grep bin.\*texi
docbook2x                 /usr/bin/db2x_docbook2texi
docbook2x                 /usr/bin/db2x_texixml

Даже пытаясь запустить его вручную, я все равно не нахожу радости:

$ db2x_docbook2texi user-manual.xml --encoding=UTF-8 --to-stdout >user-manual.texi++
docbook2texi:/book: no description for directory entry
/usr/bin/db2x_texixml:-::node: fatal error: node belongs to a different file
Died at /usr/bin/db2x_texixml line 959.

В нижней части INSTALL упоминается несколько удобных make целей: quick-install-man и quick-install-html. Например, получается, что

$ make prefix=/usr/local quick-install-man

эквивалентно

$ ./Documentation/install-doc-quick.sh origin/man /usr/local/share/man

У нас есть несколько проблем: нам нужно использовать git repo для использования этих целей, а главы ветвей man и html могут не соответствовать установленной вами версии.

Итак, быстрый и грязный бутстрап:

tar xfz git-1.6.4.2.tar.gz
cd git-1.6.4.2
make prefix=/usr/local all
sudo make prefix=/usr/local install  # (1)

cd ..
git clone git://git.kernel.org/pub/scm/git/git.git
cd git
git checkout v1.6.4.2  # (2)

# (3)
./Documentation/install-doc-quick.sh \
  c8b9e605d51dd2f0c7ce6a363df31171af16534c \
  /usr/local/share/man

# (4)
./Documentation/install-doc-quick.sh \
  35b47ca5285a4059792ba937f8e09b2ab4a7adf4 \
  /usr/local/share/doc/git-doc

git init --help  # (5)

Примечания:

  • В этот момент git будет жить в /usr/local/bin.
  • Теперь у вас будет то же дерево, что и предыдущий шаг на

Ответ 3

Wincent Colaiuta поддерживает очень полезную в wincent.com/wiki, который является отличным источником информации о git в Mac OS X.

В частности, см. эти две статьи:

Ответ 4

Меня отвели на этот вопрос, когда я googled для "docbook2x-texi: command not found", потому что у меня была эта проблема при построении git 1.8.2.1, полученном из репозитория git, с помощью:

make prefix=/my_prefix/git all doc info

Итак, после http://git-scm.com/book/en/Getting-Started-Installing-Git Я запустил:

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

но для завершения make мне пришлось установить следующие пакеты:

yum install asciidoc xmlto docbook2X

Как указано в наиболее читаемом ответе, последний предоставляет команду db2x_docbook2texi, но не необходимый docbook2x-texi. Тем не менее, простая символическая ссылка решила проблему:

ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi

Теперь make прошел успешно, и я установил git с помощью:

make prefix=/my_prefix/git install install-doc install-html install-info 

Этот обходной путь был протестирован в Scientific Linux 6.1 (Carbon).

Ответ 5

Я нашел это приятное решение для проблемы с цепочкой Git в OS X. Для удобства здесь (замените: git-manpages-1.6.6.tar.bz2 на вашу версию git и /usr/local/ на место, где установлен ваш Git):

$ curl -O http://kernel.org/pub/software/scm/git/git-manpages-1.6.6.tar.bz2
$ sudo tar xvf git-manpages-1.6.6.tar.bz2 -C /usr/local/man

Затем (как указывает Бобле), проверьте manpath Git:

echo $MANPATH

и при необходимости отрегулируйте:

Ответ 6

Случайная мысль; где установлены ваши Git manpages? Я предполагаю в /usr/local/git/man. Если это так, проверьте, что это в вашем $MANPATH:

echo $MANPATH

Если у вас нет manpath Git, добавьте этот текст через TextMate или vi или что-нибудь там, где у вас есть $PATH (например, в ~/.bash_profile);

export MANPATH=/usr/local/git/man:$MANPATH

Или просто используйте эту команду из оболочки:

echo 'export MANPATH=/usr/local/git/man:$MANPATH' >> ~/.bash_profile

Только эта проблема возникла после установки Hivelogic Snow Leopard, поэтому HTH

Ответ 7

Если вы работаете с клоном исходного хранилища git, вы можете сделать что-то вроде этого:

git archive origin/man | sudo tar -x -C /usr/local/share/man

Найдено в http://johnreilly.tumblr.com/post/41241198/installing-git-man-pages - Я использовал его в течение некоторого времени, и он просто работает очень хорошо.

Ответ 8

У меня была аналогичная проблема сборки на Cygwin ранее на этой неделе (неудача при попытке загрузить сетевой объект), и через небольшую охоту я смог найти, что проблема заключалась в отсутствии xml-каталога. На Cygwin существует script с именем build-docbook-catalog. Инструмент, вероятно, пытался запустить автоматически, но когда я запускал его вручную, он терпел неудачу из-за не существующего каталога /etc/xml.

Источник build-docbook-catalog, вероятно, здесь, но я не могу подтвердить это прямо сейчас, так как у меня нет Windows или Доступен Cygwin.

Я понимаю, что этот вопрос уже давно ответил, но я наткнулся на эту страницу, ища ответ на мою проблему, поэтому, надеюсь, это сэкономит время для кого-то другого.