下载工作台
Linux 与 Shell 入门

软件包管理与环境变量

试读上半部分 · 解锁后可读全文

第 6 章 · 软件包管理与环境变量

本章目标:在 Ubuntu 上用 apt 正确安装、卸载、查询软件;理解 PATH 为何决定「命令找不找得到」;为 shop-demo 配置 .env 环境变量,且绝不把密钥提交 Git;分清 updateupgrade

学时建议:3.5~4 小时(含 2 小时跟练)

前置:完成 linux-shell ch05;能使用 sudo(ch03)。


6.1 场景说明:新人第一天装环境

你刚加入商城后端组,Leader 发你一份 checklist:

  1. gitcurljq(查 JSON 日志)
  2. shop-demo 跑起来,需要读 configs/.env.local 里的 DB_HOSTAPI_PORT
  3. 服务器上不能把数据库密码写进代码仓库

同事说:「Windows 上双击安装包就行;Linux 用 apt,配置用 环境变量。」

本章就在你的 WSL / Ubuntu 上,把这三件事一次性练会——和 ch13 装 Docker/Go、gin-web 读 DSN、git-collab ch02.gitignore 全串起来。


6.2 学完你能(对照验收)

能力你怎么证明会了
apt 工作流能说出先 updateinstall 的原因
装/卸/查包独立安装 htop,用 dpkg -l 确认
PATH解释 command not found 时先查什么
持久环境变量~/dev-workspace/bin 加进 PATH 并新开终端仍有效
.env 规范.env.example + .env.local,且 local 在 gitignore 里
安全.env.local 权限 600,不会 git add

6.3 apt 是什么:Linux 的「应用商店后台」

Ubuntu 用 apt(Advanced Package Tool)从软件源下载安装 .deb 包。软件源列表在 /etc/apt/sources.list/etc/apt/sources.list.d/,不用手改,知道存在即可。

两个最容易混的命令

命令干什么类比
sudo apt update刷新「商店商品目录」刷新 App Store 列表,不自动升级已装 App
sudo apt upgrade已安装的包升到目录里最新版一键更新已装 App

为什么 必须先 update 再 install:否则 apt 用的是旧目录,可能报 Unable to locate package 或装到旧版本。


6.4 跟练:第一次完整 apt 流程

步骤 1 — 更新目录

sudo apt update

你应该看到:末尾 Reading package lists... Done,以及若干 Hit: / Get: 行;不应大面积 Err:(若 Err 持续,见本章常见错误:网络/源)。

步骤 2 — 搜索包(不确定全名时)

apt search ^htop$
apt search jq | head -5

读懂输出:左边包名,右边简短描述。^htop$ 是精确匹配技巧(选修)。

步骤 3 — 查看包详情(装之前看一眼)

apt show curl | head -20

你应该看到VersionInstalled-SizeDepends 等。生产装软件前看 Depends 可避免缺依赖。

步骤 4 — 安装(本章固定装三个工具)

sudo apt install -y htop tree jq

-y 表示全默认「是」,脚本里常用;交互练习时可去掉 -y 体验确认提示。

步骤 5 — 验证真的装上了

which htop tree jq
htop --version 2>/dev/null || htop -V 2>/dev/null || echo "htop 已安装,按 q 退出"
jq --version
dpkg -l | grep -E 'htop|tree|jq'

验收表

检查命令期望
命令在 PATH 里which jq/usr/bin/jq
包状态 iidpkg -l jq 行首ii = 已安装正常
jq 能跑`echo '{"a":1}' \jq .a`输出 1

步骤 6 — 卸载(可选,练完 remove)

sudo apt remove -y tree
dpkg -l | grep tree   # 应无 ii,或显示 rc(残留配置)
sudo apt install -y tree   # 装回来,后面还要用
卸载方式命令配置文文件
removeapt remove pkg通常保留
purgeapt purge pkg一并删除

6.5 跟练:upgrade 与系统安全

sudo apt upgrade -y

你应该看到:要么「0 upgraded」,要么列出将升级的包。为什么 定期 upgrade:安全补丁;教学机每月做一次即可。

不要 在生产业务高峰随意 upgrade 后不测服务——ops-deploy 有变更窗口;本章个人 WSL 随意。


6.6 PATH:系统去哪找命令

输入 git 时,Shell 按 PATH 里列出的目录顺序找可执行文件。

步骤 1 — 看当前 PATH

echo $PATH

你应该看到:一串用 : 分隔的路径,通常含 /usr/bin/bin/usr/local/bin

步骤 2 — 命令找不到时怎么查

type ls
type git
type nonexistent-cmd-xyz 2>&1
which git

读懂type 告诉你是内置、别名还是外部命令;which 只查 PATH 里的外部命令。

为什么 ch05 的 unit 里 ExecStart 必须写绝对路径或保证 PATH 正确:systemd 的 PATH 往往比交互 Shell ,所以生产 unit 常写 /usr/bin/xxx


6.7 跟练:自建 bin 目录并加入 PATH

团队有时把内部脚本放在 ~/dev-workspace/bin

步骤 1 — 写一个小脚本

mkdir -p ~/dev-workspace/bin
cat > ~/dev-workspace/bin/shop-hello << 'EOF'
#!/usr/bin/env bash
echo "shop-demo env OK; API_PORT=${API_PORT:-not set}"
EOF
chmod +x ~/dev-workspace/bin/shop-hello

步骤 2 — 此时直接运行(应失败)

shop-hello

你应该看到command not found — 因为 ~/dev-workspace/bin 还不在 PATH。

步骤 3 — 临时加入 PATH(仅当前终端)

export PATH="$HOME/dev-workspace/bin:$PATH"
shop-hello

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。