Installing Git with non-root user account

LinuxGitUbuntu

Linux Problem Overview


I've already set up a Git repository on GitHub and committed a few changes from my Windows machine.

But tomorrow I'll have to work in this repository from a machine running Ubuntu with limited privilege (i.e. no sudo).

Is there a portable version of Git for Linux? Or some source that allows me to compile and install Git only for the current user?

Linux Solutions


Solution 1 - Linux

You can download the git source and do ./configure --prefix=/home/user/myroot && make && make install to install git to your home directory provided you have the build tools. If you don't have the build-essential package installed (dpkg --list|grep build-essential), you will need to install those to your home directory as well.

Solution 2 - Linux

I don't like link-only answers, but this link I followed step-by-step on a Fedora machine and it worked without modification. Very, very easy. The binaries end up in your ~/bin directory. You download a tarball, extract the sources, run make and run make install and that is it.

As the author states, the 2 prerequisites are gcc and ssh and if you meet these git should work for you as a non-root user.

Solution 3 - Linux

This is what I ended up doing, the main trick being the make flags:

wget -O git.tar.gz https://github.com/git/git/archive/v2.17.0.tar.gz
tar zxf git.tar.gz
mv git-2.17.0 git
cd git
make configure
./configure --prefix=`pwd` --with-curl --with-expat
# ./configure --prefix=`pwd`
# Make flags from https://public-inbox.org/git/CAP8UFD2gKTourXUdB_9_FZ3AEECTDc1Fx1NFKzeaTZDWHC3jxA@mail.gmail.com/
make NO_GETTEXT=Nope NO_TCLTK=Nope
make install NO_GETTEXT=Nope NO_TCLTK=Nope

Credits:

  1. 79E09796's answer above was a good tip, but didn't work for my case on Cloudways and did not require compiling curl and expat.

  2. A random email record I found on the internet: https://public-inbox.org/git/CAP8UFD2gKTourXUdB_9_FZ3AEECTDc1Fx1NFKzeaTZDWHC3jxA@mail.gmail.com/

Solution 4 - Linux

A related answer is https://askubuntu.com/a/350.

I could get it work with the third method proposed:

apt-get source git
cd git_vXXX
./configure --prefix=$HOME
make
make install

I don't know why, but when I had tried to install from the source download from github instead, I had a lot of problems with missing dependencies

Solution 5 - Linux

To install git and dependencies from source the following maybe useful.

Replace with the location you are installing your non-root apps and consider checking for latest versions of source code.

wget https://curl.haxx.se/download/curl-7.47.1.tar.gz
tar -xf curl-7.47.1.tar.gz
mkdir <local_curl_dir>
cd curl-7.47.1
./configure --prefix=<local_curl_dir>
make
make install

wget http://downloads.sourceforge.net/expat/expat-2.1.0.tar.gz
tar -xf expat-2.1.0.tar.gz
mkdir <local_expat_dir>
cd expat-2.1.0
./configure --prefix=<local_expat_dir>
make
make install

wget https://github.com/git/git/archive/v2.6.4.tar.gz
tar -xf v2.6.4
mkdir <local_git_dir>
cd git-2.6.4
make configure
./configure --prefix=<local_git_dir>/git --with-curl=<local_curl_dir>/curl --with-expat=<local_expat_dir>/expat
make
make install

Solution 6 - Linux

Overkill workaround

Install Anaconda as a user and install git with conda.

Advantages

Anaconda can be installed as user, and a conda environment can be created which can help you to install other packages. This way you don't need to compile git from source, nor you need to install libcurl and perl, so you won't get the error

git: 'remote-https' is not a git command. See 'git --help'

after successfully compiling git.

Steps to install Anaconda, then git

  1. read the Anaconda installation manual which points to the download page's shell script file.
  2. Download the script file:
    • copy to your local machine and then copy with scp (e.g. winscp) to the Linux machine or
    • use a terminal on the Linux machine and issue wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh.
  3. add executable rights to yourself on the file by issuing chmod +x Anaconda3-2020.11-Linux-x86_64.sh
  4. follow the installation instructions where you can also specify into which folder you want to install anaconda
  5. after installation, chose one of the possibilities below to successfully invoke git later:
    1. you either activate a conda environment, which is useful e.g. if you need to create different conda environments (it is common if you work with python). To activate an environment, you need to ask the installer (at the end of the installation) to add the conda initialization code into your ~/.bashrc file [see below]. Using this method, your path won't be polluted, and you will see if conda-related binaries are also in your current path. Or you can
    2. add the installed bin's folder to your path, e.g. if you installed anaconda into /home/myusername/anaconda3, it will be in /home/myusername/anaconda3/bin. Your new executable file conda will be also there which will help you to install packages like git, python or pandoc, or
    3. cd into the binary folder of anaconda, e.g. cd /home/myusername/anaconda3/bin, and execute the commands below.
  6. don't forget to take into effect the new settings by, e.g., closing and opening the terminal again if you selected method 1. or 2. in point 5. If you selected 1, you will see something like (base) myusername@servername indicating you are using the base conda environment.
  7. Now you can install git using conda by issuing conda install -c anaconda git.

Your .bashrc will contain likes like this if you told the Anaconda installer to initialize conda for you:

# content of your .bashrc in your home dir
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/myusername/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/myusername/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/myusername/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/myusername/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

Solution 7 - Linux

for the latest version(which i mean git-2.25.0-rc1 or upper), you need to

wget https://github.com/git/git/releases/tag/v2.25.0-rc1 -O git.zip 
unzip git.zip 
cd git-2.25.0-rc1 
export PATH=`pwd`:$PATH

and of course, you can add the last line into your .bashrc or .zshrc or something else for more convenience.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBoppreHView Question on Stackoverflow
Solution 1 - LinuxScottView Answer on Stackoverflow
Solution 2 - LinuxdemongolemView Answer on Stackoverflow
Solution 3 - LinuxbdombroView Answer on Stackoverflow
Solution 4 - LinuxlibView Answer on Stackoverflow
Solution 5 - Linux79E09796View Answer on Stackoverflow
Solution 6 - LinuxDanielTuzesView Answer on Stackoverflow
Solution 7 - LinuxReagenView Answer on Stackoverflow