目录

Ubuntu 系统初始化与开发环境配置指南

这份配置清单包含了 Ubuntu 系统基础更新、终端美化、开发工具链安装以及常用网络服务(SSH、Samba)的搭建,文末附带自动化配置脚本。

1. 基础系统配置

1.1 替换国内软件源

为了提高软件下载速度,首先将系统的 APT 软件源替换为以下任意国内镜像源。

清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/

中科大镜像:https://mirrors.ustc.edu.cn/ubuntu/

腾讯云镜像:https://mirrors.cloud.tencent.com/ubuntu/

阿里云镜像:https://mirrors.aliyun.com/ubuntu/

华为镜像:https://mirrors.huaweicloud.com/ubuntu/

1.2 更新系统

1.2.1 关闭 Daemons using outdated libraries 弹窗

在一个全新安装的 Ubuntu 22.04 LTS 上,每次使用 apt 安装或更新软件包时,会出现一个 Daemons using outdated libraries 弹窗:

https://cdn.jsdelivr.net/gh/aaronshqliu/blog-images@main/20260307184716680.png
Daemons using outdated libraries 弹窗

这是 Ubuntu 22.04 中的新功能,它是由系统工具 needrestart 带来的新特性,needrestart 现在是 Ubuntu 中 apt-get 升级过程的一部分。默认情况下,此设置为 “interactive” (交互式)模式,会导致脚本中断。

修改这个模式配置,我们编辑/etc/needrestart/needrestart.conf文件,

1
sudo vi /etc/needrestart/needrestart.conf

找到下面的这行:

https://cdn.jsdelivr.net/gh/aaronshqliu/blog-images@main/20260307190810685.png
needrestart.conf 修改前

这里有三个可选配置:

1
2
3
(l)ist only: 只列出需要重启的服务,不重启
(i)nteractive: 交互式询问需要重启的服务(默认值)
(a)utomatically: 自动重启服务

直接修改成:

https://cdn.jsdelivr.net/gh/aaronshqliu/blog-images@main/20260307191258708.png
needrestart.conf 修改后

之后系统更新就不会再弹出提示。

1.2.2 更新系统

1
sudo apt clean && sudo apt update && sudo apt upgrade -y

2. 终端环境定制 (Shell)

为了让终端更加美观并方便快速配置代理,我们需要修改当前用户的~/.bashrc文件。使用 vim 打开~/.bashrc文件,追加以下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# ====================== Git Prompt ======================
parse_git_info() {
    local gitdir
    gitdir=$(git rev-parse --absolute-git-dir 2>/dev/null) || return 0

    local safe_name="${gitdir//[^a-zA-Z0-9]/_}"
    local var_time="_GIT_CACHE_TIME_${safe_name}"
    local var_data="_GIT_CACHE_DATA_${safe_name}"

    local cached_time="${!var_time}"
    if [[ -n "$cached_time" ]] && (( SECONDS - cached_time < 2 )); then
        printf "%s" "${!var_data}"
        return 0
    fi

    local status_output
    status_output=$(GIT_OPTIONAL_LOCKS=0 git status --porcelain=v1 --branch 2>/dev/null) || return 0

    local first_line="${status_output%%$'\n'*}"
    local files="${status_output#*$'\n'}"
    [[ "$files" == "$first_line" ]] && files=""

    local branch="" ahead="" behind="" dirty=""
    local branch_info="${first_line### }"
    branch="${branch_info%%...*}"

    if [[ "$branch" == "No commits yet on "* ]]; then
        branch="${branch#No commits yet on }"
    elif [[ "$branch" == "HEAD (no branch)" ]]; then
        branch=":$(git rev-parse --short HEAD 2>/dev/null)"
    fi

    if [[ "$first_line" =~ ahead\ ([0-9]+) ]]; then
        ahead="+${BASH_REMATCH[1]}"
    fi
    if [[ "$first_line" =~ behind\ ([0-9]+) ]]; then
        behind="-${BASH_REMATCH[1]}"
    fi

    if [[ -n "$files" ]]; then
        local re_staged=$'(^|\n)[^ ?]. '
        local re_unstaged=$'(^|\n).[^ ?] '
        local re_untracked=$'(^|\n)\\?\\? '

        [[ "$files" =~ $re_staged ]] && dirty+="+"
        [[ "$files" =~ $re_unstaged ]] && dirty+="*"
        [[ "$files" =~ $re_untracked ]] && dirty+="?"
    fi

    local c_cyan=$'\001\e[36m\002'
    local c_reset=$'\001\e[0m\002'
    local output=" ${c_cyan}(${branch}${dirty}${ahead}${behind})${c_reset}"

    printf -v "$var_time" "%s" "$SECONDS"
    printf -v "$var_data" "%s" "$output"
    printf "%s" "$output"
}

# ====================== PS1 ======================
export PS1="\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;31m\]\h\[\e[0m\] \[\e[33m\]\w\$(parse_git_info)\[\e[0m\]\n$ "

# Proxy
alias proxy='export {http,https,all,HTTP,HTTPS,ALL}_proxy="http://127.0.0.1:7897"; echo "Proxy enabled -> 127.0.0.1:7897"'
alias unproxy='unset {http,https,all,HTTP,HTTPS,ALL}_proxy; echo "Proxy disabled"'

保存并退出后,执行source ~/.bashrc命令使配置生效。


3. 安装开发环境与工具库

安装常用的开发工具、系统工具和依赖库:

1
2
3
4
sudo apt install -y \
git curl wget zip unzip tree build-essential ninja-build \
python3-pip pipx libssl-dev valgrind samba samba-common \
openssh-server gnome-tweaks

4. 安装 CMake

4.1 通过源码编译安装

注意
上一步安装的build-essentiallibssl-dev是编译 CMake 的必要前提。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
cd /tmp
# 下载 CMake 源码包 (以 v4.1.5 为例)
wget https://github.com/Kitware/CMake/releases/download/v4.1.5/cmake-4.1.5.tar.gz
# 解压并进入目录
tar -zxvf cmake-4.1.5.tar.gz
cd cmake-4.1.5
# 配置、编译与安装 (使用多线程加速编译)
./bootstrap
make -j$(nproc)
sudo make install

4.2 安装官方二进制版本

1
2
3
4
5
6
7
cd /tmp
wget https://github.com/Kitware/CMake/releases/download/v4.1.5/cmake-4.1.5-linux-x86_64.tar.gz
tar -zxvf cmake-4.1.5-linux-x86_64.tar.gz
sudo rm -rf /opt/cmake-4.1.5-linux-x86_64
sudo mv cmake-4.1.5-linux-x86_64 /opt/
sudo ln -sf /opt/cmake-4.1.5-linux-x86_64/bin/* /usr/local/bin/
rm cmake-4.1.5-linux-x86_64.tar.gz
技巧
使用cmake --version检查安装版本。

5. 配置网络与共享服务

5.1 SSH 远程登录配置

确保 SSH 服务处于运行状态,并配置免密登录:

1
2
3
4
# 启动 SSH 服务
sudo systemctl enable --now ssh
# 查看 SSH 状态
sudo systemctl status ssh
配置免密登录

在客户端机器(你用来连接这台服务器的电脑)上执行以下命令,将公钥发送到本机:

1
ssh-copy-id username@ip

5.2 Samba 局域网文件共享配置

配置 Samba 以便在局域网内与其他设备(如 Windows/Mac)共享目录。

  1. 编辑配置文件:
1
sudo vim /etc/samba/smb.conf

在文件最末尾追加以下配置(请将xxx替换为你的实际用户名):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
[Share]
   comment = Shared Folder
   path = /home/xxx
   valid users = xxx
   directory mask = 0775
   create mask = 0775
   public = yes
   writable = yes
   available = yes
   browseable = yes
  1. 设置 Samba 用户密码并重启服务: (注:Samba 的用户必须已经是系统中的合法用户)
1
2
3
4
# 为用户 xxx 设置 Samba 访问密码
sudo smbpasswd -a xxx
# 重启 Samba 服务使配置生效
sudo systemctl restart smbd

6. 配置 Git

6.1 初次配置

安装好 Git 后,需要首先设置你的全局用户名和邮箱地址,并开启凭证缓存功能,以免每次推送代码都要反复输入密码。

  1. 设置全局用户名和邮箱

    全局配置意味着当前 Ubuntu 用户下所有的 Git 仓库默认都会使用此身份进行提交:

1
2
3
4
# 设置你的 Git 用户名
git config --global user.name "Git 用户名"
# 设置你的 Git 邮箱
git config --global user.email "Git 邮箱@example.com"
  1. 记住密码(凭证管理)

    为了避免每次git pushgit pull都被要求输入账号和密码(或 Personal Access Token),可以开启长期存储功能:

1
2
# 配置 Git 在本地存储密码
git config --global credential.helper store
注意
运行此命令后,当你第一次执行远程操作并输入正确的账号密码后,Git 会将凭证以明文形式保存在当前用户主目录下的~/.git-credentials文件中。此后操作即可免密。
  1. 检查当前配置

    运行以下命令确认配置是否成功写入:

1
git config --global --list

6.2 更改 Git 用户

6.2.1 全局更换 Git 用户(彻底替换当前账号)

  1. 覆盖旧的用户名和邮箱
1
2
git config --global user.name "新的用户名"
git config --global user.email "新的邮箱@example.com"
  1. 清除旧的账号密码缓存(关键步骤)

    编辑~/.git-credentials文件,删除对应账号的那一行;或者直接删除该文件。

7.2.2 局部更改 Git 用户(仅针对某一个项目)

  1. 进入目标项目目录
  2. 在项目内设置独立的用户名和邮箱(不要加 –global)
1
2
git config user.name "工作用户名"
git config user.email "工作邮箱@company.com"
注意
  • 在 Git 中,局部配置的优先级高于全局配置。在这个特定目录内,Git 会优先使用刚设置的工作邮箱进行提交,而其他目录依然默认使用全局邮箱。
  • 可通过git config --local --list确认该项目是否已成功应用了独立配置。

7. 配置完成

至此,Ubuntu 基础开发环境已全部配置完毕!


8. Ubuntu 初始化与开发环境配置脚本

警告

执行此脚本会对系统进行以下配置,请确保符合你的需求。

  1. APT 极速源与官方链
    • 自动切换至清华大学镜像站 (TUNA)
    • Kitware 官方仓库直连:通过 APT 获取最新版本 CMake 并支持后续自动升级。
    • 自动屏蔽 needrestart 交互,实现全程无干预安装。
  2. 后端开发工具链
    • 核心构建build-essential, ninja-build, cmake, gdb, valgrind
    • 中间件与通信protobuf, zookeeper, openssl, docker.io(自动配置用户组)。
    • 网络运维利器:内置 ss, tcpdump, iperf3, jq 等高性能网络调试工具。
  3. 极致性能终端环境
    • 零开销 Git Prompt:重写了 parse_git_info 函数,采用单次系统调用、缓存机制与纯 Bash 正则解析,并支持空仓库、游离指针状态显示。
    • 工程化别名:内置一键开关代理命令 proxy/unproxy

方式一:在线一键安装(推荐)

1
bash <(curl -sL aarons.pages.dev/ubuntu-setup.sh)

方式二:下载到本地并执行

1
curl -sLO aarons.pages.dev/ubuntu-setup.sh && chmod +x ubuntu-setup.sh && ./ubuntu-setup.sh

注意: 安装完成后,请执行 source ~/.bashrc 使终端配置生效;如需 Docker 权限生效,请重新登录系统。