Linux非root用户编译安装zsh和oh-my-zsh

闲话

在服务器上想用oh-my-zsh,但没有root权限,用惯了oh-my-zsh没有很难受。只能把zsh安装在本地。之前在公司实习的时候也遇到弄过一次,但这次安装还是得google一下,网上相关博客还是很多年以前的,问题不少。所以今天打算自己记录一下。

编译安装zsh

  • 下载解压源码。因为直接apt or pacman都需要sudo,所以得下源码编译安装。安装路径为$home/apps

    1
    2
    3
    4
    5
    # 下载源码
    wget -O zsh.tar.xz https://sourceforge.net/projects/zsh/files/latest/download
    # 解压
    xz -d zsh.tar.xz # 解压xz文件,提示xz命令不存在的话安装一下xz
    tar -xvf zsh.tar # 解压tar文件
  • 配置和安装,如果出现error说ncurses没安装,则编译安装下ncurses

    1
    2
    ./configure --prefix=$HOME/apps/zsh 
    make && make install
  • 检查是否安装成功。运行下面命令看是否进入zsh shell。(输入exit退出zsh

    1
    ~/usr/bin/zsh

编译安装ncurses

  • 下载源码,地址: http://ftp.gnu.org/gnu/ncurses/

  • 配置和安装

    1
    2
    ./configure --prefix=$HOME/apps/ncurses --with-shared
    make && make install
  • 然后在shell中添加一些环境变量

    1
    2
    3
    4
    export NCURSES_HOME=$HOME/apps/ncurses
    export PATH=$NCURSES_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$NCURSES_HOME/lib:$LD_LIBRARY_PATH
    export CPPFLAGS="-I$NCURSES_HOME/include" LDFLAGS="-L$NCURSES_HOME/lib"

安装oh-my-zsh

  • 运行安装脚本。如果你在此前尝试过安装Oh My Zsh,务必先删除之:rm -rf ~/.oh-my-zsh

    1
    2
    3
    4
    sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
    # 如果安装过程中提示你没有安装zsh(但在上面你实际上已经安装过了),则需要先导入环境变量
    # 在~/.bashrc中加入下面代码
    export PATH="$HOME/usr/bin":$PATH
  • 运行exec $HOME/usr/bin/zsh检查是否正常

  • 更改默认shell。因为没有root权限所以chsh用不了,只能修改.bashrc文件来实现功能,末尾追加一行。

    然后source ~/.bashrc

    source前记得运行exec $HOME/usr/bin/zsh真的没问题!!!

    不然会导致直接断开ssh连接,而且重新ssh也会导致断开连接。

    1
    2
    # use zsh
    exec $HOME/usr/bin/zsh

编译安装Proxychains4

  • 下载

    1
    2
    wget http://ftp.barfooze.de/pub/sabotage/tarballs/proxychains-ng-4.14.tar.xz 
    # 可以自行换成最新版源码
  • 编译安装

    1
    2
    ./configure --prefix=$HOME/apps/proxychains --sysconfdir=$HOME/confs# $HOME/confs用来放置配置文件
    make && make install
  • 快件

others

如果真出现ssh上不去的情况,可以运行下面代码试试:

1
2
3
ssh -t username@hostname /bin/bash
# 或者
ssh username@hostname "bash --noprofile --norc"

之后恢复原来的.bashrc文件即可

参考博客:

  1. https://harttle.land/2016/10/25/install-oh-my-zsh-locally.html

  2. https://blog.csdn.net/u012675539/article/details/50361896

  3. https://www.jianshu.com/p/08b7231d63ee