Установите git на сервер без sudo

9261
Explosion Pills

Я пытаюсь установить gitна сервере пользователя, у которого нет прав root. Я видел много уроков, которые предлагают использовать ./configure, но когда я скачал последнюю версию git zip с github, такого файла не было. Видимо, это должно работать только с makeи make install, но когда я запускаю make, я получаю ошибки:

In file included from credential-store.c:1: cache.h:21: error: expected specifier-qualifier-list before 'z_stream' make: *** [credential-store.o] Error 1 

По-видимому, это связано с zlibне быть установленным. Я могу скачать zlib, но я не знаю, как gitузнать, где я его установил. Могут быть и другие зависимости, но я, вероятно, могу справиться с ними аналогичным образом.

Я также хотел бы иметь gitодин исполняемый файл /home/user/binбез других папок или дерьма там. Есть ли способ, которым я могу просто загрузить скомпилированный исполняемый файл? Потому что это тоже было бы хорошо.

1
Какая ОС и / или дистрибутив? jjlin 11 лет назад 0
@jjlin Debian squeeze Explosion Pills 11 лет назад 0
Смотрите также https://github.com/VonC/compileEverything VonC 11 лет назад 0

2 ответа на вопрос

1
jjlin

Хотя в настоящее время у меня нет времени, чтобы дать очень подробный ответ, я могу наметить возможную стратегию запуска исполняемых файлов из предварительно созданного gitпакета в вашем домашнем каталоге. Этот ответ нацелен на Debian, поскольку, как вы сказали, вы используете, но основная концепция применима и к другим ОС и дистрибутивам.

Сначала перейдите на http://packages.debian.org/squeeze/git и просмотрите зависимости gitпакета. К счастью, вы найдете, что gitне так много. Большинство важных из них, вероятно, уже установлены, возможно, за исключением libcurl3-gnutlsи libexpat1.

Затем загрузите двоичный пакет .deb и извлеките его содержимое (поищите в Интернете, чтобы узнать, как извлечь пакет .deb вручную). Вы найдете data.tar.gzфайл. Извлеките это, и вы получите usr/bin/git*и usr/lib/git-core/*файлы. Вы можете поместить эти файлы где-нибудь в вашем домашнем каталоге. Теперь важная часть: /usr/bin/gitвызов многочисленных программ-помощников /usr/lib/git-core, и этот последний путь жестко закодирован /usr/bin/git. К счастью, вы можете переопределить жестко заданное значение, установив GIT_EXEC_PATHпеременную среды, поэтому обновите ваши точечные файлы, чтобы они указывали, где вы решили хранить различные /usr/lib/git-coreфайлы.

Наконец, возможно, что не все из зависимостей библиотеки (и их зависимостей, и т.д., и т.д.) были установлены в вашей системе (например, libcurl3-gnutls, libexpat1). Вы также можете скачать двоичные пакеты для них, распаковать их в свой домашний каталог, а затем помочь gitнайти их, настроив LD_LIBRARY_PATHсоответствующую переменную среды.

PS Возможно, у меня было больше, чем моя справедливая доля в вашем положении, поэтому то, что я изложил выше, является более чем теоретическим. Но работать над этим видом проблемы - это немного чёрного искусства, так что, как правило, вокруг него будут некоторые дополнительные проблемы. Удачи.

Я скачал ядро ​​с http://ftp.us.debian.org/debian/pool/main/g/git/git-core_1.7.10.4-1_all.deb и посмотрел, как извлечь деб, но когда я сделал все что есть `usr / share / doc / git-core`, который является символической ссылкой на несуществующий файл` git` в том же каталоге. Есть ли другое место для загрузки .deb? Explosion Pills 11 лет назад 0
Вам нужно скачать пакет `git`, а не` git-core`. jjlin 11 лет назад 0
0
thisfeller

У вас впереди много работы. Вам нужно убедиться, что их wget или curl доступны вам, так как вам понадобится один или другой из них, чтобы получить нужные вам tar-архивы, если соответствующие пакеты не установлены.

Создать

/home/youruser/srcкаталог ( mkdir -p /home/youruser/src).

Перейдите в каталог src и получите исходный код для git

wget http://git-core.googlecode.com/files/git-1.7.11.2.tar.gz

Распакуйте его и сделайте

./configure --help

Это покажет вам все необходимые пакеты, которые вам понадобятся, такие как expat, openssl и т. Д. Вам нужно будет загрузить все из них, собрать и установить их в /home/youruserПо завершении, у вас будет /home/youruser/binвместе с несколькими необходимыми каталогами.

Пожалуйста, прочитайте файл INSTALL в директории unararred и опубликуйте ваш прогресс.

Git, с которым вы связаны, немного отличается (у меня есть источник `github`, который вообще не имеет` configure`). Я запустил `./configure --with-zlib = / home / myname / zlib /` (этот каталог существует). Казалось, не жаловаться. Тем не менее, когда я запускаю `make`, я получаю ту же ошибку, что и выше, которая кажется отсутствием` zlib`. Я застрял там. Explosion Pills 11 лет назад 0
Теперь вам нужно загрузить исходный код в zlib, распаковать архив, сделать `./configure --prefix = / home / youruser && make && make install` и повторить git. Как я уже сказал, если вы выполните `./configure --help` с помощью git, вы получите список пакетов, которые он захочет получить, они помечены как` [default = yes] `или что-то в этом роде. thisfeller 11 лет назад 0
Примечание: вся эта работа выполняется для вас с помощью https://github.com/VonC/compileEverything. VonC 11 лет назад 0

Похожие вопросы