我正在尝试将 git 功能添加到没有开发工具的生产 CentOS 5.5 系统(因为它是一个生产系统)。所以我无权访问 make/gcc/etc。我基本上想安装 Git 以便能够轻松快速地将网站目录与我的 Git 存储库同步,这样我就不需要编译任何源文件了。
我没有 root 访问权限,并且由于显而易见的原因,root 不想在生产系统上安装 Git,但如果我可以在本地设置它以供自己使用,那就没问题。
我尝试下载并解压 git-core.rpm 到我的主目录中,尽管我能够运行 git 的某些功能,但是 git 的依赖项都不在它期望的位置,因此失败。
我的结构如下所示:
~/git
~/git/usr
~/git/usr/bin
~/git/usr/share
~/git/usr/share/doc
~/git/usr/share/git-core
~/git/usr/share/locale
~/git/usr/share/man
当我运行类似 的命令时git help clone
,我收到错误消息No manual entry for git-clone
。 (/usr/share/man) 确认了这一点git --man-path
。其他命令也同样失败。
如何在不重新编译的情况下告诉 git 用作~/git
根目录而不是/
用作所有 git 依赖项的根目录?我似乎找不到可以设置的任何环境变量或 git 变量。
有一个类似的问题发布在所以在这里,但不幸的是提供的两种解决方案都不可行 - 即:重新编译 git(我没有任何 make 工具)或解压 rpm(已经尝试过但如所示,git 会查找预定义的路径)。
根据建议这里我曾尝试设置 GIT_EXEC_PATH,但收效甚微:
[eric ~]$ export GIT_EXEC_PATH=~/git/usr/bin/git
[eric ~]$ git --man-path
/usr/share/man
[eric ~]$ git help clone
No manual entry for git-clone
[eric ~]$ git --exec-path
/home/eric/git/usr/bin/git
答案1
除非 RPM 已针对重定位进行设置(绝大多数 RPM 未进行设置),否则您无法通过这种方式进行重定位。最好的办法是正式安装内容,这样它将与系统的其余部分一起进行跟踪/更新。
如果无法做到这一点,你可以做类似的事情:
- 获取最新源代码
- 使用例如“configure prefix=$HOME ...”进行配置
- 构建并安装,例如“make install”
- 找出来自 git 的内容,至少是 ~/bin/、~/share/man/、~/libexec/ 中的内容,将其打包并传输到受害机器
- 在受害者上解压并尝试。将 ~/bin 放在结尾你的 PATH
但是,在没有首先得到当权者同意的情况下,请不要这么做。