每次重装Ubuntu系统后,手动安装各种软件和配置环境总是让人头疼。作为一名长期使用Ubuntu的开发者,我总结了一套完整的自动化安装脚本,能够一键完成从基础工具到开发环境的全部配置。这个脚本经过多次迭代优化,现在已经成为我系统重装后的必备工具。
Ubuntu系统重装后,我们需要安装大量软件包、配置开发环境、设置个性化选项等。手动操作不仅耗时耗力,而且容易遗漏重要步骤。通过编写自动化脚本,我们可以:
我的安装脚本主要包含以下几个功能模块:
bash复制#!/bin/bash
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装基础工具
sudo apt install -y \
git \
curl \
wget \
vim \
tmux \
htop \
tree \
unzip \
build-essential \
software-properties-common
这个部分主要安装了开发者常用的命令行工具。其中:
build-essential 包含GCC编译器等开发工具software-properties-common 允许添加PPA软件源提示:使用
-y参数可以自动确认安装,避免脚本执行中断
bash复制# 安装Python和相关工具
sudo apt install -y python3 python3-pip python3-venv
# 配置pip镜像源
mkdir -p ~/.pip
cat > ~/.pip/pip.conf << EOF
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
EOF
bash复制# 安装Node.js
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
# 配置npm镜像源
npm config set registry https://registry.npm.taobao.org
bash复制# 配置SSH
sudo apt install -y openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
# 配置防火墙
sudo ufw allow 22
sudo ufw enable
# 禁用不必要的服务
sudo systemctl disable bluetooth.service
bash复制# 安装zsh和oh-my-zsh
sudo apt install -y zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
# 安装powerlevel10k主题
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
sed -i 's/ZSH_THEME=.*/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc
# 安装zsh插件
git clone https://gitee.com/phpxxo/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://gitee.com/wangl-cc/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
sed -i 's/plugins=(.*)/plugins=(git zsh-autosuggestions zsh-syntax-highlighting)/' ~/.zshrc
bash复制# 安装nerd字体
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts && curl -fLo "Droid Sans Mono for Powerline Nerd Font Complete.otf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DroidSansMono/complete/Droid%20Sans%20Mono%20Nerd%20Font%20Complete.otf
fc-cache -fv
bash复制# 安装Docker
sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
# 配置Docker镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
bash复制# 安装kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# 安装minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
setup.shchmod +x setup.sh./setup.sh注意:执行脚本前建议先备份重要数据
如果遇到软件源无法访问的情况,可以尝试以下方法:
bash复制# 备份原有源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 替换为国内镜像源
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo apt update
某些操作可能需要sudo权限,如果脚本执行时提示权限不足:
sudo ./setup.sh如果下载速度慢或失败,可以尝试:
将脚本拆分为多个功能模块,便于维护和选择性执行:
code复制setup.sh
├── base.sh # 基础工具
├── dev.sh # 开发环境
├── docker.sh # Docker相关
└── ui.sh # 界面美化
添加命令行参数支持,实现更灵活的配置:
bash复制#!/bin/bash
while getopts ":bdu" opt; do
case $opt in
b) ./base.sh ;;
d) ./dev.sh ;;
u) ./ui.sh ;;
\?) echo "无效选项: -$OPTARG" >&2 ;;
esac
done
添加日志功能,记录脚本执行情况:
bash复制LOG_FILE="setup_$(date +%Y%m%d_%H%M%S).log"
exec > >(tee -a "$LOG_FILE") 2>&1
echo "脚本开始执行: $(date)"
# 脚本内容
echo "脚本执行完成: $(date)"
经过多次实际使用和迭代,这个脚本已经相当稳定。我通常在以下场景使用它:
脚本执行时间根据网络状况和安装内容不同,通常在15-30分钟之间。执行完成后,一个完整的开发环境就准备好了,大大提高了工作效率。