在没有sudo权限的Linux服务器下安装oh-my-zsh

  • 系里给的服务器虽然配置很好,但是因为没有root权限导致很多工具都要手动安装。像Java、Python之类的常用编译环境我可以理直气壮地发邮件让管理员帮忙装,但是zsh这种纯属自己瞎折腾的环境就不得不靠自己了... 这里记录一下安装zsh过程中的各种坑。

1. 安装ZSH

  • 安装思路

    1. 没有sudo权限意味着无法在/usr/下各个文件夹中创建文件,所以只能安装到自己的home目录下。
    2. 由于没有apt-get、yum等各种管理工具,碰到依赖问题我们都必须一个个手动解决。环境变量也得自己添加。
    3. 同时因为权限不足,无法修改/etc/passwd文件,也就无法修改自己登录的默认shell了。我们采取登录后自动跳转zsh的方法来解决这个问题。
  • 注意事项

    1. zsh与scp不兼容。因此需要想办法绕开这个问题(后文有解决办法)
    2. zsh会强行解释命令中的通配符(如*等字符),且解释失败会报错并拒绝执行命令。这在一些场合非常令人恼火,比如执行命令hdfs dfs -cat output/*时,字符*应该交给hdfs系统来处理,用来匹配hdfs文件系统中的文件,而不是由zsh进行解析。解决方法为在命令的两端加上双引号,即变为"hdfs dfs -cat output/*"; 或者一劳永逸,往~/.zshrc中加入setopt no_nomatch,这会使得zsh在解释失败后不报告错误,继续执行命令。

开始安装

# 创建zsh的安装位置。这个位置是自定义的,只要是在自己的home目录下即可。版本号最好跟下载下来的zsh版本对应,不然会产生混淆。
cd ~
mkdir Applications
mkdir Applications/zsh-5.7.1    

# 下载源码并把压缩包命名为zsh.tar.xz
wget -O zsh.tar.xz https://sourceforge.net/projects/zsh/files/latest/download

# 解压,这里下载下来的是xz格式,要先用xz解压一遍,再用tar解压。
xz -d zsh.tar.xz
tar -xf zsh.tar 
cd zsh-5.7.1        # 注意这个版本号要根据自己的实际情况来

# 配置与编译。--prefix选项指定安装目录
./configure --prefix=$HOME/Applications/zsh-5.7.1   
make
make install

配置zsh环境

vim ~/.bashrc

# 在.bashrc文件中加入以下命令
export PATH=$HOME/Applications/zsh-5.7.1/bin:$PATH

# 保存并退出vim后,导入.bashrc配置
source ~/.bashrc
  • 配置好zsh的环境变量后,就可以使用exec zsh命令来切换到zsh了。接下来安装oh-my-zsh, 只需要以下命令即可:
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

将zsh设置为默认shell

  • 前面提到,没有sudo权限便无法更改/etc/passwd文件,也就无法更改默认的登录shell了。同样chsh命令也无法使用。这里我们通过修改.bash_profile来自动切换到 zsh. 将以下命令加到~/.bash_profile中:
[ -f $HOME/Applications/zsh-5.7.1/bin/zsh ] && exec $HOME/Applications/zsh-5.7.1/bin/zsh -l
  • 注意zsh与scp不兼容,所以不要把该命令写到.bashrc中。因为当我们使用scp命令从本地连接该Linux服务器时,系统会自动执行.bashrc(而不会执行.bash_profile),如果.bashrc中有切换到zsh的命令,则系统的shell会被切换到zsh, 从而与scp产生兼容的问题。

.bash_profile只有当交互式登录shell时(如系统启动、远程登录)才会被读取并执行,而.bashrc在交互式登录与非交互登录(如使用scp从本地连接到该Linux服务器)时都会被读取且执行。

遇到的问题

  • 运行./configure命令时可能会遇到无法找到ncurses-devel的问题。如下:
    ncurses-devel
  • 这时我们需要手动安装ncurses-devel.
  • 下载地址为http://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz
  • 需要注意的是在编译ncurses-devel之前需要设置一些编译选项
# 打开.bashrc
vim ~/.bashrc
# 在.bashrc中加入以下内容
export CXXFLAGS=" -fPIC"
export CFLAGS=" -fPIC"
# 保存退出后,用source命令使刚才的改动生效
source ~/.bashrc
  • 安装ncurses-devel
# 下载
cd ~
wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz
tar -xf ncurses-6.1.tar.gz
cd ncurses-6.1
mkdir Applications/ncurses-6.1
./configure --prefix=$HOME/Applications/ncurses-6.1 --with-shared
make 
make install
  • 安装好了之后,还需要配置一些环境变量
vim ~/.bashrc

# 在.bashrc中加入以下命令.
# 其中环境变量$NCURSES_HOME的设置不是必需的,这里只是为了引用方便而加入
export NCURSES_HOME=$HOME/Applications/ncurses-6.1
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"

# 保存并退出vim,然后加载.bashrc
source ~/.bashrc
  • 这时,再继续运行以下命令来安装zsh
cd ~/zsh-5.7.1
./configure --prefix=$HOME/Applications/zsh-5.7.1   
make
make install
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容