有兴趣玩过 Oh My Zsh 的人,都无法舍弃对于 Oh My Zsh 的喜爱,它是一个 zsh 配置框架。而 zsh 又是有别于 bash 的 shell,zsh 的功能相当强大,可配置性非常高。通过 zsh + Oh My Zsh 的组合,可以让你的终端变得非常的好看,比如这是我电脑上的 Manjaro + zsh + Oh My Zsh 的截图:
既然 Oh My Zsh 这么好用又好看,那么肯定是希望在任何场景上都能用上它了。自己的环境还好,要是办公环境中,难免有一些无法联网的 linux 环境,我们该如何离线安装 Oh My Zsh 呢?
离线安装 Oh My Zsh 并不是像包管理器离线包安装那么简单,因为 Oh My Zsh 是一个配置库,它的安装过程涉及到 git clone 的网络连接,因此我们需要修改一下 Oh My Zsh 的安装脚本代码。
这里,通过我的探索,我成功的在 RedHat7.2 环境下离线安装了 Oh My Zsh。这中间探索的过程希望分享给同样热爱 Oh My Zsh 的读者们。我尽量细细讲述,力图让你也能跟着博客一起操作就能成功安装 Oh My Zsh:)
ps: 选择 RedHat7.2 作为离线安装 Oh My Zsh 的环境,是因为手上正好有这么一个空白的 linux 环境,事实上,你使用哪个 linux 环境都无所谓,使用 RedHat7.2 只是作为一个例子,后面修改 Oh My Zsh 的安装脚本的部分才是关键。
在引言里我们提到,Oh My Zsh 是一个附身于 zsh 的配置框架库,因此我们想要使用 Oh My Zsh,必须要先安装 zsh。
在离线环境下安装 zsh 有很多办法,根据不同的 linux 发行版有不同的包管理器,而不同的包管理器又有不同的离线安装软件的办法。这里,因为我使用的是 RedHat7.2 环境,因此就简单讲讲 RedHat7.2 环境中离线安装 zsh 的方法(下面获取 zsh离线包的过程可以不用照着做,我会直接给出 yum 包管理族的 zsh 离线安装包)。
如果你是一个纯心的 RedHat 系统,那么你的 yum 工具初始化是无法使用的,是需要注册的(毕竟 RedHat 是收费的)。但是你可以替换 CentOS 的 yum 工具,并设置 CentOS 的 yum 源。有关替换 yum 源的相关内容可以参考下面的博客:
redhat 7安装CentOS 7 yum源
这篇博客的作者已经贴上了一个百度云盘链接,可以直接拿到这个文件到 RedHat 环境中使用 rpm 命令解压安装:
# 解压安装 yum 工具
$ sudo rpm -ivh *.rpm
安装了 yum 工具之后,我们就可以通过 yum 的离线下载软件包的插件,将 zsh 的离线包下载下来,方便后面放到离线环境中离线安装。yum 工具离线下载软件的方法可以参考下面的博客:
利用yum离线下载rpm包
简单来说就是执行两行命令:
# 安装 yum 离线下载插件
$ sudo yum install -y yum-plugin-downloadonly
# 下载 zsh 包到 /home/wangying/third-party/zsh 目录下
$ sudo yum install -y --downloadonly --downloaddir=/home/wangying/third-party/zsh zsh
如下,就是下载下来的 zsh 离线包:
当然了,这么麻烦的事情没必要需要读者跟着做,我这里会直接给出 zsh 的 yum 包管理族的离线安装包:
链接:https://pan.baidu.com/s/1AwgEImRRAyhOb6CHNRMTWg 提取码:c7co
获取到 zsh 离线安装包之后,只需要运行下列命令即可离线安装 zsh:
$ sudo rpm -ivh zsh-5.0.2-31.el7.x86_64.rpm
至此,我们就成功在 RedHat7.2 中离线安装了 zsh,接下来,我们要开始探索 Oh My Zsh 的离线安装方法了。
离线安装 Oh My Zsh 不是一个简单的事情,因为官方给出的安装方法就是要你在安装过程中 git clone 它的 GitHub 仓库,然后执行安装脚本进行安装的。
但是这也难不倒我,我大胆猜测,只需要我下载到了 Oh My Zsh 的仓库代码,然后放到指定位置上,再修改下安装脚本中有关于 git clone 的相关代码,应该就可以成功离线安装 Oh My Zsh 了吧!
事实上,我也确实成功了,这里,我详细记录下我离线安装 Oh My Zsh 的过程。
Oh My Zsh 的仓库代码托管在 GitHub 上,地址为:
GitHub: oh-my-zsh
不过有些人可能从 GitHub 上下载代码很慢,没关系,我还有码云上的该项目的镜像仓库:
码云: oh-my-zsh
不过有些人可能嫌麻烦,没事,我放到了我的百度网盘上:
链接:https://pan.baidu.com/s/1Vrkzj-N-DeW0P4SmWISKHg 提取码:16yc
根据我在联网环境下的经验,oh-my-zsh 安装完之后,其存在于 $HOME 目录下,并且以 .oh-my-zsh 的文件夹名称为名(下面的截图是已经配置好了 Oh My Zsh 的环境截图,只是为了方便大家查看 .oh-my-zsh 的位置):
因此,我们需要将我们在第 1 步中的仓库代码解压后放到 $HOME 目录下,然后命名为 .oh-my-zsh:
$ cd
$ mv oh-my-zsh .oh-my-zsh
接下来就是重头戏,我们要对 Oh My Zsh 的安装脚本进行魔改,将其联网下载仓库的代码全部删掉。这里,我建议将 install.sh 备份下再进行修改:
$ cp install.sh install.sh.back
修改步骤如下:
a. 删除 setup_ohmyzsh 函数
b. 搜索 setup_ohmyzsh 字符串,将调用的地方删除
c. 搜索字符串 You already have Oh My Zsh installed.
,并将附近 if 语句全部删除
如果有迷惑的地方,这里我把我修改前的 install.sh.back 和修改后的 install.sh 文件上传到了百度网盘,供读者查看修改内容:
链接:https://pan.baidu.com/s/1KIDsK19xZREr3HkhDO1w_w 提取码:7v9j
接下来执行安装脚本 install.sh 文件:
$ sh install.sh
如果报错,接着打开 install.sh 修改代码问题,如果没有报错的话,就会进入 Oh My Zsh 的安装界面,再然后就会进入 Oh My Zsh 的默认主题:
至此,我们终于在 RedHat7.2 环境下离线安装上了 Oh My Zsh 啦!
这也就意味着,即使在离线环境里面,我们也能用上让自己享受的 Oh My Zsh 了 ^_^
Enjoy It:)
我相信每个喜欢 Oh My Zsh 的人都会像我这样,尝试着在所有的环境中去使用它。遇到了不能联网的环境,也想使用 Oh My Zsh 该怎么办?这就是本篇博客探索的问题,幸而我最后成功了。
希望本篇博客能够对跟我一样遇到同样的问题的网友一些帮助~~~
To be Stronger:)