脚本分享This shell script installs the Ubuntu base tools前言本文分享一个用于快速搭建 Ubuntu 基础开发环境的 Shell 脚本可一次性完成 apt 源替换、常用工具安装、JDK 与 Python 环境配置以及 pip 源加速等工作。在动手执行之前请先了解以下信息。适用环境脚本面向 Ubuntu 16.04 / 18.04 等较早期的 LTS 版本编写其中python3.6、openjdk-8-jdk、gnome-tweak-tool等软件包在更新的发行版如 Ubuntu 22.04 及以上中可能已被移除或更名执行前请确认系统版本与软件源是否匹配。执行前置条件需要以root 权限执行或使用sudo因为脚本会修改/etc/apt/sources.list、/usr/bin/python3等系统级文件需要提前准备好/install/sources.list文件脚本会用它覆盖系统的 apt 源配置若该文件不存在脚本会在第一步就中断建议在可联网的环境下执行脚本会从官方源、PPA 以及 sdkman 下载依赖。执行方式chmodx install.shsudobashinstall.sh预期效果执行完成后系统将使用新的 apt 源与阿里云 pip 源并具备 gcc/g、cmake、git、vim、graphviz、doxygen 等基础工具链安装好 OpenJDK 8、Gradle、Python 3.6 及 pip 常用科学计算与深度学习依赖同时关闭 curl/wget/git 的证书校验以便在内网环境下使用。风险提示脚本会直接覆盖/etc/apt/sources.list并替换/usr/bin/python3的软链接执行前请务必备份重要配置脚本本身已对sources.list做带时间戳的备份但其他文件不会建议先在虚拟机或容器中验证确认无误后再用于生产环境或主力开发机。脚本执行流程脚本按「先换源、再装工具、后配环境」的顺序串行执行整体流程如下apt 源替换备份并覆盖 sources.list基础工具安装build-essential / git / cmake 等sdkman 安装加载 sdkman-init.shGradle 安装snap install gradleOpenJDK 安装openjdk-8-jdkC 依赖库安装gtest / ssl / curl 等Python 3.6 安装与切换PPA 软链接指向 3.6pip 源替换阿里云镜像pip 版本锁定pip19.3.1pip 依赖安装numpy / torchvision 等系统级开发库补充glog / opencv / protobuf关闭证书校验curl / wget / git整个流程严格串行第一步先备份并替换 apt 源保证后续所有apt-get install都走新源随后安装基础工具链再依次完成 sdkman、Gradle、OpenJDK 与 C 依赖库的安装接着通过 deadsnakes PPA 安装 Python 3.6并把/usr/bin/python3指向它之后替换 pip 源、锁定 pip 版本并批量安装 Python 依赖最后补充系统级开发库并关闭证书校验。任一环节失败都会中断后续步骤建议逐段执行并观察输出。脚本分享This shell script installs the Ubuntu base tools#!/bin/bash # content: this shell script install the unbuntu base tools # 【apt 源替换】将系统原有 sources.list 按时间戳备份后用 /install/sources.list 覆盖 # 注意/install/sources.list 必须提前准备好否则脚本在此处中断且新源需与当前 Ubuntu 版本匹配 # modify apt src mv /etc/apt/sources.list /etc/apt/sources.list-$(date %Y%m%d-%H%M%S) \ cp /install/sources.list /etc/apt/sources.list # 【基础工具安装】先更新索引再批量安装编译工具链与常用命令行工具 # 注意--no-install-recommends 可减少冗余依赖但个别工具可能缺少可选组件需按需补装 # install basic software tool apt-get update apt install -y --no-install-recommends build-essential \ vim \ curl \ ssh \ ctags \ subversion \ cmake \ wget \ unzip \ zip \ git \ make \ g \ graphviz \ graphviz-doc \ fcitx \ doxygen \ doxygen-gui \ apt-utils \ tzdata \ net-tools \ inetutils-ping # 【sdkman 安装】通过官方脚本安装 sdkman 并立即加载其初始化脚本用于后续管理 JVM 相关 SDK # 注意需要联网访问 get.sdkman.io内网环境可能失败且 source 仅在当前 shell 会话生效 #install sdkman https://sdkman.io/ curl -s https://get.sdkman.io | bash source $HOME/.sdkman/bin/sdkman-init.sh # 【Gradle 安装】使用 snap 安装 gradle作为 sdkman 之外的构建工具补充 # 注意需系统已启用 snapd 服务且 snap 源可用否则该行会报错 snap install gradle # 【桌面管理工具】安装 gnome-tweak-tool便于在图形界面下调整桌面与启动项 # 注意仅对带 GNOME 桌面的系统有意义纯服务器环境可跳过 # manage tool for boot software apt install -y --no-install-recommends gnome-tweak-tool # 【OpenJDK 安装】安装 OpenJDK 8供 Java 项目编译与运行使用 # 注意Ubuntu 高版本仓库可能已移除 openjdk-8-jdk需改用其他源或版本 # install openjdk apt-get install -y --no-install-recommends openjdk-8-jdk # 【C 依赖库】安装构建 C 核心所需的 gtest、终端、压缩、网络与 SSL 等开发库 # 注意这些是 -dev 开发包安装后需确认头文件路径与项目构建脚本一致 # install libraries for building c core on ubuntu apt-get install -y --no-install-recommends \ libgtest-dev libtinfo-dev libz-dev \ libcurl4-openssl-dev libssl-dev \ apt-transport-https pkg-config # 【Python 与 pip 基础环境】安装 python-dev 及 software-properties-common为添加 PPA 做准备 # 注意python-dev 对应 Python 2若只需 Python 3 可改为 python3-dev # install python and pip apt-get install -y python-dev # 【Python 3.6 安装与切换】通过 deadsnakes PPA 安装 Python 3.6 及 pip并把 /usr/bin/python3 指向 3.6 # 注意会强制替换系统默认 python3 软链接可能影响依赖系统 Python 的工具操作前请确认 # python 3.6 apt-get install -y software-properties-common add-apt-repository -y ppa:deadsnakes/ppa apt-get update apt-get install -y python-pip python-dev python3.6 python3-pip python3.6-dev rm -f /usr/bin/python3 ln -sf /usr/bin/python3.6 /usr/bin/python3 # 【pip 源替换】将 pip 默认源改为阿里云镜像加速国内下载 # 注意该配置写入用户级 pip 配置文件仅对当前用户生效 # modify pip src pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ # 【pip 版本锁定】将 pip 固定到 19.3.1避免新版本与旧依赖不兼容 # 注意该版本较老若后续安装的包要求更高 pip 版本需手动升级 # Pin pip version pip3 install pip19.3.1 # 【pip 依赖安装】批量安装科学计算、深度学习与代码分析相关 Python 包并清理 apt 缓存 # 注意部分包如 Pillow、python-dateutil、decorator已锁定版本torchvision 体积较大且需匹配 torch 版本 # ffi-navigator is for tvm source code in vscode pip3 install setuptools \ virtualenv \ Cython \ numpy \ scipy \ scikit-image \ matplotlib \ ipython \ h5py \ leveldb \ networkx \ nose \ pandas \ python-dateutil2.7.3 \ protobuf \ python-gflags \ pyyaml \ Pillow6.2.0 \ six \ scikit-image \ decorator4.3 \ ffi-navigator \ pylint \ attrs \ tornado \ psutil \ xgboost \ cloudpickle \ torchvision \ rm -rf /var/lib/apt/lists/* # 【系统级开发库补充】安装 glog、hdf5、leveldb、lmdb、opencv、protobuf 等系统库及对应 Python 绑定 # 注意python-* 系列为 Python 2 包若已切换到 Python 3 需改用 python3-* 或 pip 安装 # install apt-get install -y --no-install-recommends \ libgoogle-glog-dev \ libhdf5-serial-dev \ libleveldb-dev \ liblmdb-dev \ libopencv-dev \ libprotobuf-dev \ libsnappy-dev \ protobuf-compiler \ python-dev \ python-numpy \ python-pip \ python-setuptools \ python-scipy # 【关闭证书校验】为 curl、wget、git 关闭 SSL 证书校验适配内网自签名证书环境 # 注意这会降低传输安全性公网或生产环境请勿开启网络无证书问题时整段可删除 # config no certificate, this can be remove if the company network 1 # do not have the certificate issue echo insecure ~/.curlrc echo check_certificate off ~/.wgetrc git config --global http.sslVerify false export CURL_CA_BUNDLE总结执行顺序脚本严格串行执行先备份并替换 apt 源再安装基础工具链随后依次完成 sdkman、Gradle、OpenJDK 8 与 C 依赖库安装接着通过 deadsnakes PPA 安装 Python 3.6 并切换/usr/bin/python3最后替换 pip 源、锁定 pip 版本、批量安装 Python 依赖并关闭证书校验。适用场景面向 Ubuntu 16.04 / 18.04 等较早期 LTS 版本适合需要一次性搭建 C / Java / Python 混合开发环境、且处于内网或国内网络环境的机器更新的发行版需先确认软件包是否仍可用。主要风险点脚本会直接覆盖/etc/apt/sources.list、强制替换/usr/bin/python3软链接并关闭 curl/wget/git 的证书校验可能影响系统原有工具与传输安全务必先备份并在虚拟机或容器中验证。前置依赖需 root 权限执行且/install/sources.list必须提前准备好否则脚本在第一步即中断。失败处理任一环节失败都会中断后续步骤建议逐段执行并观察输出定位问题后再继续。按需裁剪脚本脚本按功能段落划分每段上方都有中文注释可按需整段删除或注释掉去掉证书校验删除末尾「关闭证书校验」整段echo insecure ~/.curlrc、echo check_certificate off ~/.wgetrc、git config --global http.sslVerify false、export CURL_CA_BUNDLE公网或生产环境建议直接去掉。跳过桌面工具纯服务器环境可删除「桌面管理工具」一段gnome-tweak-tool以及基础工具安装中的fcitx、graphviz-doc、doxygen-gui等图形相关包。不需要 Java 环境可删除 sdkman、Gradle、OpenJDK 三段同时移除 C 依赖库中与 JVM 无关的部分。不需要 Python 环境可删除 Python 3.6 安装与切换、pip 源替换、pip 版本锁定、pip 依赖安装四段避免改动系统默认python3。只装基础工具仅保留「apt 源替换」与「基础工具安装」两段即可得到一个干净的编译环境。裁剪后建议先在测试机上完整跑一遍确认剩余段落之间的依赖关系如 pip 相关段落依赖 Python 3.6 已安装仍然成立。