为开发服务器安装实用软件

Photo by Clément Hélardot / Unsplash

上一篇文章中我们安装了 Oh My Zsh 这个好看且实用的终端,极大的提高了我们终端的颜值。但是对于一个开发人员来讲,只有颜值是远远不够的,我们还需要什么?那就是效率。

今天推荐一些实用的软件包,能够帮助你极大的提高开发效率。

一键运行脚本见文章末尾。

1 NVM, Node Version Manager

对于一个 Node.js 开发者来说,方便的安装/更新 node 是一件很重要的事,毕竟 ES 社区是个激进派社区,什么都喜欢最新🤣。NVM 可以很方便的下载并切换 Node.js 的版本,并且可以为各个工作区设置独立的 Node.js 及 NPM 作用域。

首先,我们需要从 NVM Github 仓库下载并安装 NVM:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
echo "node" > .nvmrc
cat >> $HOME/.zshrc <<'EOF'
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

EOF
source $HOME/.zshrc

随后安装并切换至最新版本的 Node.js:

nvm install node
nvm use node

如果想安装指定版本的 Node.js,只需要将关键字 node 替换为你所需要的版本号即可,如:

nvm install v14.17.3
nvm use v14.17.3

2 Pyenv

Pyenv 是一个用来创建 Python 虚拟环境的工具,同样它也可以很方便的安装不同的 Python 版本,为各个工作区创建自己的虚拟环境与作用域等。

首先,我们需要通过 apt 安装所需要的依赖包:

apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

并从 Pyenv Github 仓库下载并安装最新的 Pyenv:

curl https://pyenv.run | bash
cat >> $HOME/.zshrc <<'EOF'
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

EOF
source $HOME/.zshrc

最后安装指定版本的 Python:

pyenv install 3.9.6

3 Golang

安装 go 主要是为了安装后面的一些实用工具。

所以,能跑起来就行。(go:合着我是工具人呗?)

wget https://golang.org/dl/go1.16.6.linux-amd64.tar.gz
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.16.6.linux-amd64.tar.gz
cat >> $HOME/.zshrc <<'EOF'
export GOPATH="/usr/local/go"
export PATH="$PATH:$GOPATH/bin"

EOF
source $HOME/.zshrc

4 必不可少的 Docker

不多说,不可能不装 docker,不然玩什么呀是不是。

wget -qO- https://get.docker.com/ | sh
systemctl enable --now docker

5 好用的第三方工具

俗话说的好,青出于蓝而胜于蓝,前浪躺在沙滩上。虽然有些软件(比如 bat、curl)已经很好用了,但是架不住新世纪青年写了个更好用的软件。

这里整理了一些好用的新命令,每个命令的安装及用途见下:

apt install -y screen neofetch httpie htop
wget https://github.com/sharkdp/bat/releases/download/v0.18.2/bat_0.18.2_amd64.deb && dpkg -i bat_0.18.2_amd64.deb
go get -u -v github.com/kashav/fsql/...
wget https://github.com/bcicen/ctop/releases/download/0.7.6/ctop-0.7.6-linux-amd64 && mv ctop-0.7.6-linux-amd64 /usr/bin/ctop && chmod +x /usr/bin/ctop
go get github.com/jesseduffield/lazydocker
go get github.com/nakabonne/ali
go get github.com/jesseduffield/lazygit

cat >> $HOME/.zshrc <<'EOF'
share(){ if [ $# -eq 0 ];then echo "No arguments specified.\nUsage:\n transfer <file|directory>\n ... | transfer <file_name>">&2;return 1;fi;if tty -s;then file="$1";file_name=$(basename "$file");if [ ! -e "$file" ];then echo "$file: No such file or directory">&2;return 1;fi;if [ -d "$file" ];then file_name="$file_name.zip" ,;(cd "$file"&&zip -r -q - .)|curl --progress-bar --upload-file "-" "https://share.don.red/$file_name"|tee /dev/null,;else cat "$file"|curl --progress-bar --upload-file "-" "https://share.don.red/$file_name"|tee /dev/null;fi;else file_name=$1;curl --progress-bar --upload-file "-" "https://share.don.red/$file_name"|tee /dev/null;fi;echo '\n';}

EOF

cat > $HOME/.help <<'EOF'
实用命令 / Useful Commands
ali       : 可视化压力测试界面
bat       : 类似于 cat 命令,带语法高亮展示文件内容
ctop      : 查看 docker 容器的运行状态
fsql      : 使用 SQL 语法查找文件
http      : 类似于 curl 的命令行 http 工具
lazydocker: 可视化管理 docker 容器的命令行界面
lazygit   : 可视化管理 git 项目的命令行界面
neofetch  : 类似于 uname 命令,展示系统信息
share     : 共享文件到 share.don.red 并获取下载地址
screen    : 多重视窗管理程序
EOF

cat >> $HOME/.zshrc <<'EOF'
alias help="cat $HOME/.help"

EOF
source $HOME/.zshrc

如果你忘了这些命令是做什么的了,就在命令行输入 help,它会告诉你的。

在命令行输入 help 获取帮助

下一篇文章中我们会展示一个新技能,如何在浏览器里随时随地运行 VSCode。


附录:一键运行脚本

可以通过该 GitHub Gist 获取脚本并执行:

wget -O - https://775.ink/2hx3hdq13wg0 | zsh
从 GitHub Gist 获取并运行脚本
IInfinity

IInfinity

大道虽简,知易行难。
CN