我正在尝试使用git
没有 root 访问权限的用户在服务器上进行安装。我看过很多建议使用 的教程./configure
,但是当我从 github 下载最新的 git zip 时,却没有这样的文件。显然它应该只与 和 一起使用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
虽然我目前没有时间提供非常详细的答案,但我可以概述一种从git
主目录下的预构建包运行可执行文件的可能策略。此回复针对的是 Debian,因为您说您使用的是 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 我可能已经经历过很多次处于你的情况了,所以我上面概述的不仅仅是理论上的。但解决这类问题有点像暗黑艺术,所以通常会涉及一些额外的麻烦。祝你好运。
答案2
你有一个很多您需要完成的工作。您需要确保 wget 或 curl 可用,因为如果没有安装相应的软件包,您将需要使用其中一个来获取所需的 tarball。
创建一个
/home/youruser/src
目录 (mkdir -p /home/youruser/src
)。
cd 进入 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 文件,并发布您的进度。