【免费下载链接】linuxupskillchallenge
Learn the skills required to sysadmin a remote Linux server from the commandline.
在开源教程 Linux Upskill Challenge(Linux 系统管理员技能挑战)的 Day 17 课程中,你将掌握 Linux 源码编译安装 的完整流程:下载源码包、解压、configure、make、make install,并最终把 nmap 从源码安装到生产服务器上。本文用一条清晰的路线图带你从零跑通全过程。
为什么要学源码编译安装?
在前 16 天里,你一直通过包管理器 apt 安装软件——那是最省心的方式。但作为 Linux 系统管理员,你迟早会遇到:
- 软件源里的版本太旧,而官方上游(upstream)已发布了新版本;
- 某些工具根本不在标准仓库中;
- 需要深度定制编译参数(如裁剪 GUI 支持、优化内存占用)。
Day 17 的课程原话是:这是"字面意义上的走到源头(go to the source)"——平时尽量别这么干,包管理器就是为你省麻烦而生的,但有些场景下它是完全正当的技能,而且你必须对它感到从容。
💡 今天选用的练习对象是 nmap(Day 9 学过的端口扫描工具),它恰好不依赖任何外部库,是从源码安装的理想入门选择。
📄 本课原始讲义:docs/17.md
第一步:先装好编译工具链
源码是 C/C++ 等语言写的"原料",必须经过编译才能变成服务器可执行的程序。Ubuntu 上只需一条命令安装标准编译工具包:
sudo apt install build-essential
它会带上 gcc 编译器及一系列配套工具,是后续 make 步骤的地基。
第二步:确认旧版本,下载 nmap 源码包
动手之前,先看看系统里仓库装的那个 nmap 是什么版本、放在哪里:
nmap -V # 查看版本号
which nmap # 查看可执行文件路径(一般是 /usr/bin/nmap)
接着到 nmap 官方站点(nmap.org)的下载页,找到 "Source Code Distribution" 区域,复制 "Latest development nmap release tarball" 的地址(形如 nmap-7.70.tar.bz2 这样的压缩包)。然后回到主目录用 wget 下载:
cd
wget -v <nmap源码包下载地址>
ls -ltr
-v 参数(verbose)会打印下载进度。注意文件名结尾的 .bz2——这是"tar 归档 + bzip2 压缩"的标准组合,也就是常说的 tarball,正好衔接 Day 16 学过的归档压缩知识(课程:docs/16.md)。
第三步:用 tar 解压源码包
一行命令完成"解压 + 解包":
tar -jxvf nmap-7.70.tar.bz2
ls -ltr
参数逐个拆解:
| 参数 | 含义 |
|---|---|
-j | 先按 bzip2 算法解压缩 |
-x | extract,解包 |
-v | 显示处理过程 |
-f | 后面紧跟文件名 |
执行后你会看到新多出一个 nmap-7.70 目录(ls -ltr 中行首带 d 的就是目录)。cd 进去逛一逛,用 less 读一读源码注释;重点找根目录下的 README 和 INSTALL 文件——上游作者的说明通常很简练,标准套路就是:
./configure
make
make install
第四步:configure、make、make install 三件套
这三条命令几乎是 C 系开源软件安装的"行业约定",各自分工明确:
./configure—— 体检脚本。它探测你的 CPU 架构(ARM/Intel)、32 位还是 64 位、有哪些编译器,并生成适配本机的编译配置。也可以用参数定制,比如关掉 GUI 支持(对无界面的远程服务器很合理)或优化内存占用。遇到提问选默认值即可,出现 WARNING 也别慌,大概率没事。make—— 真正调用gcc编译源码。屏幕上会刷出大量输出,小工具一两分钟搞定,大软件可能耗时数小时。sudo make install—— 把编译产物和文档装入系统目录。前两步都只在你主目录里活动,而 install 是面向全体用户的系统级操作,所以必须加sudo以 root 权限执行。
验证新旧版本:PATH 与 locate 实战
安装完成后,新版本通常落在 /usr/local/bin/,而仓库版还在 /usr/bin/。Linux 的目录惯例:
/bin—— 操作系统关键组件/usr/bin—— 常规工具/usr/local/bin—— 你手动安装的软件
执行命令时,系统按 PATH 环境变量的顺序查找,第一个命中的就运行。想指定版本,直接用完整路径即可。先用 locate 快速定位两份文件(新装的文件不在索引里,需先刷新):
sudo updatedb
locate bin/nmap
/usr/bin/nmap -V # 仓库版
/usr/local/bin/nmap -V # 源码编译版
两个版本号不同的输出,就是本课最好的"结业证书" ✅
⚠️ 从实验室走向生产环境:别忘了安全维护
源码安装最大的代价:它脱离了 apt 的管理范围。
apt update永远不会替它打补丁;- 对 nmap 这种独立小工具问题不大,但若某个以源码安装的程序是对外暴露的服务,你就必须自己跟踪它(以及所有依赖库)的安全公告,并手动升级到修复版本——这是生产服务器上实实在在的负担与风险。
想进一步理解"从源码出发"的完整世界,课程还推荐了解 Linux From Scratch、Gentoo、Arch Build System 这类"天生吃源码"的发行版(延伸阅读见 docs/17.md 末尾的 RESOURCES 章节),它们能帮你真正看懂 Linux"引擎盖下"在发生什么。
课程回顾与相关资料
🧭 Day 17 学习成果清单:
- ✅ 用
wget下载源码 tarball - ✅ 用
tar -jxvf解压源码 - ✅ 完整跑通
configure→make→sudo make install - ✅ 用
locate区分新旧版本并理解PATH查找机制 - ✅ 认清源码安装的安全维护责任
| 资料 | 说明 |
|---|---|
| docs/17.md | Day 17 源码编译安装完整课程 |
| docs/16.md | Day 16 tar 归档与压缩(本课前置技能) |
| docs/09.md | Day 9 网络与 nmap 入门 |
| docs/index.md | 课程 21 天完整目录 |
| README.md | 项目总览与快速开始 |
| docs/how-this-works.md | 挑战机制与 FAQ |
恭喜你完成 Day 17!从"下载压缩包"到"亲手编译进系统",你已经具备了 Linux 系统管理员工具箱里最硬核的一块拼图——下一站 Day 18,我们聊聊日志、监控与排障。🚀
【免费下载链接】linuxupskillchallenge
Learn the skills required to sysadmin a remote Linux server from the commandline.
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



