/setup

Setup a new machine without sudo!

Primary LanguageShell

Setup a New Machine without sudo!

Download, compile and install commonly used software to a custom path.

Term of Usage

  • Star the repo before clone
  • File issue if it does not work
  • Unstar if you feel it is unmaintained

Usage

# configure setup path, you can put them into your `.bashrc` or `.zshrc`
export ZZROOT=$HOME/app
export PATH=$ZZROOT/bin:$PATH
export LD_LIBRARY_PATH=$ZZROOT/lib:$ZZROOT/lib64:$LD_LIBRARY_PATH

# e.g. install git
sh zzgit.sh

NOTE: If the download speed of the machine is too slow, you can put the git.tar.gz (using git as an example) into $ZZROOT/downloads before running the script. For the download link, check the DOWNLOADURL variable in its script; for the exact name of the software, check the NAME variable.

NOTE2: If you compile from source, please make sure that they are compiled using the same gcc version!

NOTE3: If you DO have root privilate on your machine/server, then basic tools such as libtool, ccache, git, etc. might be better installed by OS's package manager. Such as apt in Ubuntu. Only install software that are not available on the OS's packaging system.

Supported Softwares

Verified on Ubuntu 18.04

Updated: July 8, 2020

libs

tools

zz scripts & customized tools

zz configures

misc

faq

  • Q: My boost segfaluts :(
    A: Make sure they the boost are comipiled and linked using the same gcc/g++ version

  • Q: Cert verify failed: BADCERT_NOT_TRUSTED :(
    A: Try export SSL_CERT_DIR=/etc/ssl/certs

  • Q: warning: templates not found in /workspace/destdir/share/git-core/templates :(
    A: Add the following to $HOME/.gitconfig

[init]
        templatedir = $HOME/app/share/git-core/templates
  • Q: fatal: unable to find remote helper for 'https' :(
    A: Add the following to $HOME/.zshrc (or .bashrc of course)
export GIT_EXEC_PATH=$ZZROOT/libexec/git-core
export GIT_SSL_CAINFO=/etc/ssl/certs/ca-bundle.crt
  • Q: Using the 'memory' GSettings backend. Your settings will not be saved or shared with other applications. :(
    A: Add the following to $HOME/.zshrc (or .bashrc of course)
export GIO_EXTRA_MODULES=/usr/lib/x86_64-linux-gnu/gio/modules/
  • Q: import pyvips segfault :(
    A: Make sure gstreamer-orc <0.4.30, imagemagick <7.0.9.
conda install -c conda-forge imagemagick=7.0.8
conda install -c conda-forge gstreamer-orc=0.4.29
  • Q: GitError(Code:ECERTIFICATE, Class:SSL, the SSL certificate is invalid: 0x08 - The certificate is not correctly signed by the trusted CA) :(
    A: Run the following
julia> import LibGit2
julia> LibGit2.set_ssl_cert_locations("/etc/ssl/certs/ca-certificates.crt")
  • Q: dotnet error :(
    A: Add the following to $HOME/.zshrc (or .bashrc of course)
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true
export MSBuildSDKsPath=$DOTNET_ROOT/sdk/3.1.102/Sdks
  • Q: Install OpenCV: CUDA Version wrong:(
    A: Add the path of the correct version CUDA to zzopencv.sh when runing cmake
cmake   ......
        -DCUDA_TOOLKIT_ROOT_DIR=/mnt/lustre/share/cuda-9.0/ \
        ......
  • Q: Install Denseflow: OpenCV Version wrong, can't find customized path for opencv:(
    A: Add the path of the correct version opencv and corresponding cuda version to zzdenseflow.sh when runing cmake
cmake -DCMAKE_INSTALL_PREFIX=$ROOTDIR \
      -DOpenCV_DIR=$ROOT_DIR/lib64/cmake/opencv4 \
      -gencode=arch=compute_61,code=sm_61 \
      -DCUDA_TOOLKIT_ROOT_DIR=/mnt/lustre/share/cuda-9.0/ ..
  • Q: Unzip filenames looks messy when there are unicodes :(
    A: Specify the encoding of filenames.
$ unzip -h
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
  ...
  -O CHARSET  specify a character encoding for DOS, Windows and OS/2 archives
  -I CHARSET  specify a character encoding for UNIX and other archives
  ...

unzip -O GB18030 gb18030.zip -d target_dir
  • Q: Get locale warnings :(
    A: Run
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
sudo dpkg-reconfigure locales
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

jlinstall

jlinstall is another way to install softwares. It uses pre-built binaries so that no compilation is needed. The default install path of jlinstall is JLROOT=$ZZROOT/jl.

export ZZROOT=$HOME/app
export JLROOT=$ZZROOT/jl
export PATH=$ZZROOT/bin:$JLROOT/bin:$PATH
export LD_LIBRARY_PATH=$ZZROOT/lib:$ZZROOT/lib64:$JLROOT/lib:$JLROOT/lib64:$LD_LIBRARY_PATH