从源码到生产环境:Linux Upskill Challenge Day 17 Linux软件源码编译安装教程

【免费下载链接】linuxupskillchallenge

Learn the skills required to sysadmin a remote Linux server from the commandline.

项目地址: https://gitcode.com/gh_mirrors/lin/linuxupskillchallenge
点击查看 免费下载

在开源教程 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 算法解压缩
-xextract,解包
-v显示处理过程
-f后面紧跟文件名

执行后你会看到新多出一个 nmap-7.70 目录(ls -ltr 中行首带 d 的就是目录)。cd 进去逛一逛,用 less 读一读源码注释;重点找根目录下的 README 和 INSTALL 文件——上游作者的说明通常很简练,标准套路就是:

./configure
make
make install

第四步:configure、make、make install 三件套

这三条命令几乎是 C 系开源软件安装的"行业约定",各自分工明确:

  1. ./configure —— 体检脚本。它探测你的 CPU 架构(ARM/Intel)、32 位还是 64 位、有哪些编译器,并生成适配本机的编译配置。也可以用参数定制,比如关掉 GUI 支持(对无界面的远程服务器很合理)或优化内存占用。遇到提问选默认值即可,出现 WARNING 也别慌,大概率没事。
  2. make —— 真正调用 gcc 编译源码。屏幕上会刷出大量输出,小工具一两分钟搞定,大软件可能耗时数小时。
  3. 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.mdDay 17 源码编译安装完整课程
docs/16.mdDay 16 tar 归档与压缩(本课前置技能)
docs/09.mdDay 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.

项目地址: https://gitcode.com/gh_mirrors/lin/linuxupskillchallenge
点击查看 免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值