十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux软件安装全链路:源码编译、yum换源与依赖部署实战

Linux软件安装全链路:源码编译、yum换源与依赖部署实战 简介这份资源是西南科技大学Linux课程的实验报告文档面向高校计算机相关专业学生及需要补装Linux环境的自学者聚焦字符界面下的软件安装与配置这一入门必备技能。压缩包内仅含1个docx文件约7.06MB图文排版完整覆盖实验目的、实验设计、实验记录与思考体会四个部分。报告以三个任务展开一是二进制包与.tar.gz、.rpm等源代码包的安装卸载包含查看INSTALL说明、用./configure --prefix指定安装路径、make install编译安装fping等完整记录二是为yum添加互联网源并通过yum install emacs验证网络安装三是借pip3安装jupyter及bash kernel插件、编译安装wput与Linuxer客户端附带依赖处理过程。文末还整理了.tar.gz包如何卸载、rpm与yum的依赖关系区别、远程安装wput等思考题解答可直接借鉴格式与排错思路。已有1294人学习下载适合作为实验预习、报告撰写参考或环境搭建遇阻时的对照材料。1. 从源码包到 yum 源一次把 Linux 软件安装链路走通很多人第一次碰 Linux 装软件都是被yum install惯坏的——敲一条命令依赖自动补齐装完就能用。可一旦遇到只有.tar.gz的软件或者虚拟机里 yum 源指向内网、装什么都提示找不到包就会卡在原地。这份西南科技大学 Linux 实验报告恰好把三条路径都串了起来源码包编译安装、yum 换源后在线安装、以及带依赖的客户端本地部署。它适合正在做 Linux 环境安装配置实验的学生也适合已经工作但只会apt/yum一条命令、没拆过configure、make、make install这条链的运维新人。下面按报告里的三个任务把每一步为什么这么敲、参数怎么改、报错看哪里讲清楚。2. 源码包安装从 INSTALL 到 make install 的完整链路2.1 先看清楚手里是哪种包Linux 上的软件包格式决定了安装方式这一步判断错了后面全白搭。常见几类以.deb结尾的 Debian 系二进制包用dpkg装以.rpm结尾的 RedHat 系二进制包用rpm或yum装以.tar.gz、.tar.bz2结尾的源码包或预编译包需要解压后走编译流程。实验里的fping-4.0.tar.gz就属于源码包它不带依赖解析也不在系统软件库里登记装完rpm -qa是查不到的。判断方法很直接file命令看类型tar -tzf看包内结构# 查看包的压缩格式与类型 tar -tzf fping-4.0.tar.gz | head -20 # 解压到当前目录 tar -xvzf fping-4.0.tar.gz # 进入解压后的目录 cd fping-4.0 # 先读安装说明这一步实验报告里明确要求 cat INSTALL-t是只列出内容不解压用来预判目录结构-x解压-v显示过程-z表示 gzip 解压-f指定文件名。这四个参数拼在一起就是「解压一个 gz 压缩的 tar 包」。很多新手在这栽跟头是因为解压出来是一堆文件而不是一个文件夹那就得先mkdir再tar -xvzf xxx.tar.gz -C 目标目录-C指定解压位置。提示cat INSTALL不是走过场源码包的依赖要求、编译选项、安装路径都在里面。跳过这一步直接./configure大概率中途报缺库。2.2 configure 指定路径与 make 三件套读完说明文档进入正式的编译安装流程。源码包的标准动作是configure生成 Makefile、make编译、make install安装到目标目录。实验要求把 fping 装到/opt下靠的就是--prefix参数# 检查编译环境并生成 Makefile指定安装到 /opt ./configure --prefix/opt # 编译源码-j 参数按 CPU 核心数并行加速 make -j4 # 安装到 configure 指定的 /opt 目录 make install # 验证二进制文件是否落到 /opt/sbin ls -l /opt/sbin/fping--prefix/opt是关键参数。不写它默认装到/usr/local二进制在/usr/local/bin、库在/usr/local/lib和系统自带软件混在一起卸载时只能靠make uninstall或手动翻文件。指定到/opt后所有东西都在一个目录里不想要了直接rm -rf /opt/fping就干净。make -j4里的 4 是并行任务数一般取 CPU 核心数nproc命令能查到编译大软件时这个参数能省一半时间。为什么装完要在/opt/sbin找因为--prefix/opt之后可执行文件按惯例进sbin或bin配置文件进etc库文件进lib。ls -l看到文件带x权限位说明是可执行文件这一步对了就证明安装成功。2.3 卸载逻辑与 rpm 查询的边界装完得会卸。.tar.gz装的包分两种情况源码目录里带了 uninstall 目标的在原目录执行make uninstall即可它会按安装记录反向删除没带这个目标的老版本 fping 就不一定有只能手动删。实验思考里提到「可以用rm直接删」指的就是删/opt/fping这个专属目录。这里有个容易混淆的点实验报告问得很到位能不能用rpm -qa查.tar.gz装的包答案是查不到。rpm -qa读的是 RPM 数据库/var/lib/rpm只有通过 rpm 或 yum 安装的包才会被登记进去。源码编译安装绕过了数据库所以查询结果里没有它。同样rpm -e也卸载不了源码包。安装方式安装命令查询命令卸载命令rpm 二进制包rpm -ivh xxx.rpmrpm -qa | grep 名称rpm -e 包名yum 在线安装yum install 包名yum list installedyum remove 包名tar.gz 源码包./configure make install无数据库记录make uninstall或rm -rf这张表建议记住日常排查「这软件到底怎么装的」时先看它在不在 rpm 库里不在就是源码装的。3. yum 换源与网络安装把内网源换成互联网源3.1 yum 和 rpm 的真实关系实验思考里的第二个问题问得实在也是面试高频题rpm 和 yum 什么关系一句话rpm 是底层的包管理工具yum 是架在它上面的管理器。具体讲rpm 只能装已经下到本地的.rpm文件装 A 需要 B、B 需要 C它不管你得自己一层层下。yum 补齐了这个短板它读仓库配置、自动分析依赖树、把一串包按顺序下下来再交给 rpm 安装顺带还能更新系统、清理旧内核。理解这层关系就能明白为什么换源是 yum 的核心操作。yum 装软件时去哪个地址下载全看配置文件里写的baseurl。实验环境默认指向内网源内网源里没有emacs就报No package emacs available。3.2 备份、替换、生效三步换源换源的标准流程是「备份原配置 → 写入新源文件 → 清理缓存重建」。实验里提示配置文件保存在/root/experiment需要先复制过去# 进到系统 yum 源目录 cd /etc/yum.repos.d/ # 备份原有源文件避免出错后无法恢复 mkdir -p /root/experiment/bak mv *.repo /root/experiment/bak/ # 写入互联网源配置 cat /etc/yum.repos.d/centos.repo EOF [base] nameCentOS-Base baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/ enabled1 gpgcheck0 EOF # 清理旧缓存并重建 yum clean all yum makecache$releasever和$basearch是 yum 的变量运行时自动替换成系统版本号和架构这样一份配置能适配多台机器。gpgcheck0是关掉签名校验实验环境图方便可以关生产上开成 1 更安全但需要导入对应 GPG 公钥。yum clean all清掉旧的元数据缓存yum makecache拉新源的包索引这两步不做换源后仍然可能报找不到包。换源后验证是否生效看两条命令# 列出当前启用的仓库 yum repolist enabled # 搜索目标软件确认源里有 yum search emacsyum repolist显示的仓库数量和地址就是 yum 真正会去查的范围。如果这里还是内网地址说明改动没生效回头检查文件扩展名是不是.repo、有没有遗漏备份后留下的旧文件。3.3 安装、查询与常见报错定位源配好之后安装就是一条命令# -y 表示自动确认安装 emacs yum -y install emacs # 安装后确认是否装上 rpm -qa | grep emacs # 查文件是由哪个包提供的排查冲突时有用 rpm -qf /usr/bin/emacs-y的用途是在依赖安装确认时免去交互脚本化部署必备。查询用rpm -qa加grep因为 yum 底层还是 rpm装完的包都进 rpm 库。常见报错有三种Cannot find a valid baseurl一般是源地址写错或网络不通用curl手动访问下 baseurl 验证Error: Package xxx requires yyy是依赖装不上通常是某个源里缺包需要额外加源Existing lock /var/run/yum.pid代表另一个 yum 进程在跑ps aux | grep yum找到进程确认后用kill结束或删掉 pid 文件。这几种在虚拟机装完系统、没配好网络的环境里出现频率最高。4. 依赖链实战Linuxer 客户端与 wput 的本地部署4.1 用 pip3 搭 jupyter 与 bash kernel 环境实验第三个任务要求启动 Linuxer 客户端它依赖 jupyter notebook 和 bash kernel这两个得先用 pip 装。pip 是 Python 的包管理工具装它本身也得先用 yum# 通过 yum 装 pip3 yum install -y python3-pip # 用清华源装 jupyter-i 指定索引地址加速下载 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple jupyter # 装 bash kernel 插件 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple bash_kernel # 注册 kernel 到 jupyter这一步漏了菜单里看不到 python3 -m bash_kernel.install-i参数指定 pip 的包索引地址。默认走 pypi.org国内网络下经常超时或奇慢换成清华 TUNA 镜像能快很多。python3 -m bash_kernel.install是单独的注册动作只装bash_kernel这个包不够必须执行它才会把 kernel 写进 jupyter 的 kernel 列表装完没执行这条jupyter 里就没有 bash 选项客户端也起不来。验证 kernel 是否注册成功# 列出已注册的 kernel jupyter kernelspec list输出里能看到bash一行说明注册到位。这一步是排查客户端启动失败的第一个检查点。4.2 tar 解压客户端并 make 安装到 /optLinuxer 客户端本身也是 tar.gz 包走源码编译那条路# 进入存放目录 cd /root/experiment # 查看包文件确认存在 ls -l linuxer.tar.gz # 解压 tar -xvzf linuxer.tar.gz # 进入解压目录 cd linuxer # 编译并安装按报告输出应落到 /opt/linuxer make install实验报告里写ls -l找不到文件时大概率是当前目录不对用pwd确认一眼。解压后make install会自动把程序装到/opt/linuxer这是软件在 Makefile 里写死的路径不需要再传--prefix。装完进目录起服务cd /opt/linuxer # 启动客户端 ./linuxer.bash能弹出运行界面、能打开实验指导书就代表依赖链完整。如果起不来先回查第 4.1 节的 kernel 注册再检查pip3 list里 jupyter 和 bash_kernel 是否都在。4.3 wput 的编译安装与远程获取思路实验里还带了 wput 的安装套路和 fping 一致解压、进目录、make install。它的定位是一个命令行的文件上传工具在没有图形界面的服务器上往 FTP 传文件时用得上。安装过程tar -xvzf wput-0.6.2.tgz cd wput-0.6.2 ./configure make make install实验思考里问「如何远程安装 wput」报告给的答案是用 yum 从远端装或借助 xftp 这类工具按 IP 建连后传文件。这里补充讲清边界yum 能远程装的前提是仓库里确实有这个包而 wput 在很多基础源里并没有这时候就得先wget把 tar.gz 拉到本地再编译或者用scp从另一台机器把包传过来。scp的写法是scp 本地文件 user目标IP:/目标路径走的是 SSH 通道比图形工具更适合写进脚本批量执行。安装对象依赖来源安装命令验证方式emacsyum 互联网源yum -y install emacsrpm -qa | grep emacsjupyter bash kernelpypi 镜像pip3 install -i 镜像地址jupyter kernelspec listlinuxer本地 tar.gzmake install进/opt/linuxer启动wput源码编译./configure make installwhich wput5. 环境验证与排错清单让实验不再卡在最后一步做完三个任务怎么确认环境是真的配好了而不是偶然能跑一次建议按固定顺序过一遍检查链。第一查 rpm 库rpm -qa | grep -E emacs|python3-pip确认 yum 装的包都在第二查 python 侧pip3 list | grep -E jupyter|bash_kernel确认 pip 装的两个包版本正常第三查 kerneljupyter kernelspec list确认 bash 已注册第四查源码装的程序ls -l /opt/sbin/fping /opt/linuxer确认路径和权限最后实际启动一次客户端能出界面才算闭环。这条顺序的价值在于出错时能快速定位是哪一层断的而不是从头猜。几个复现率最高的坑值得单独点出来。第一是configure报编译器缺失提示C compiler cannot create executables原因通常是没装gccyum install -y gcc make补上即可。第二是make install报权限拒绝因为/opt属于 root普通用户写不进去切su -或命令前加sudo。第三是 pip 装完 import 报错多半是 python3 和 pip3 版本不匹配用python3 -m pip --version确认两者绑的是同一套解释器必要时统一走python3 -m pip install调。第四是 yum 换源后仍报旧地址检查/etc/yum.repos.d/里是不是残留了没移走的旧.repo文件grep -r baseurl /etc/yum.repos.d/一眼就能看出还有哪些文件在生效。最后一个顺手技巧把常用的查询动作做成一行别名能省不少打字。在~/.bashrc末尾加# 一条命令列出 rpm 装的关键包和 kernel 注册情况 alias envcheckrpm -qa | grep -E emacs|pip; jupyter kernelspec list执行source ~/.bashrc后敲envcheck就能一次性看到两个关键状态。排查环境问题时先跑这条别名比一条条翻命令快得多。本文还有配套的精品资源点击获取
返回列表