无需 sudo 在服务器上安装 git

无需 sudo 在服务器上安装 git

我正在尝试使用git没有 root 访问权限的用户在服务器上进行安装。我看过很多建议使用 的教程./configure,但是当我从 github 下载最新的 git zip 时,却没有这样的文件。显然它应该只与 和 一起使用makemake 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-gnutlslibexpat1

接下来,下载二进制 .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 文件,并发布您的进度。

相关内容