千家信息网

学习笔记之yum及程序包编译

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Yum用法背景:由于RPM包在实现程序包管理是会存在一些问题比如程序包会出现一些依赖关系等,这些都必须手动解决,虽然可以忽略一些关系,并且能使用--nodeps来安装,但是这会导致安装之后程序功能的不
千家信息网最后更新 2026年10月31日学习笔记之yum及程序包编译

Yum用法

背景:由于RPM包在实现程序包管理是会存在一些问题比如程序包会出现一些依赖关系等,这些都必须手动解决,虽然可以忽略一些关系,并且能使用--nodeps来安装,但是这会导致安装之后程序功能的不正常,因此为了能更好的解决这种关系,但手动解决这种关系又是一种很麻烦的事,所以就有高于rpm管理的工具yum来实现,下面我们就来仔细看看yum的用法。

学前须知:

yum 和dnf是centos系列的好工具

Yum是什么?在安装程序时能实现在前端自动解决依赖关系。Yum其实是一个cs架构的工具,y um是一个客户端

YUM: yellow dog, Yellowdog Update Modifier

yum repository: yum repo组件,被称作yum仓库

Yum仓库:存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata);

Repodata目录所在的位置就应该是仓库所指向的路径

yum支持的文件服务器:可通过以下服务器提供服务

ftp://

http://

nfs://

file:///(本地)

yum客户端:

配置文件:

/etc/yum.conf:为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:为仓库的指向提供配置

仓库指向的定义:

[repositoryID]

name=Some name for this repository

baseurl=url://path/to/repository/

enabled={1|0}

gpgcheck={1|0}

gpgkey=URL

enablegroups={1|0}

failovermethod={roundrobin|priority}

默认为:roundrobin,意为随机挑选;

cost=

默认为1000

yum命令的用法:

yum [options] [command] [package ...]

command is one of:

* install package1 [package2] [...]

* update [package1] [package2] [...]

* update-to [package1] [package2] [...]

* check-update

* upgrade [package1] [package2] [...]

* upgrade-to [package1] [package2] [...]

* distribution-synchronization [package1] [package2] [...]

* remove | erase package1 [package2] [...]

* list [...]

* info [...]

* provides | whatprovides feature1 [feature2] [...]

* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

* makecache

* groupinstall group1 [group2] [...]

* groupupdate group1 [group2] [...]

* grouplist [hidden] [groupwildcard] [...]

* groupremove group1 [group2] [...]

* groupinfo group1 [...]

* search string1 [string2] [...]

* shell [filename]

* resolvedep dep1 [dep2] [...]

* localinstall rpmfile1 [rpmfile2] [...]

(maintained for legacy reasons only - use install)

* localupdate rpmfile1 [rpmfile2] [...]

(maintained for legacy reasons only - use update)

* reinstall package1 [package2] [...]

* downgrade package1 [package2] [...]

* deplist package1 [package2] [...]

* repolist [all|enabled|disabled]

* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ] * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

* check

* help [command]

显示仓库列表:

repolist [all|enabled|disabled]

显示程序包:

list

# yum list [all | glob_exp1] [glob_exp2] [...]

# yum list {available|installed|updates} [glob_exp1] [...]

安装程序包:

install package1 [package2] [...]

reinstall package1 [package2] [...] (重新安装)

升级程序包:

update [package1] [package2] [...]

downgrade package1 [package2] [...] (降级)

检查可用升级:

check-update

卸载程序包:

remove | erase package1 [package2] [...]

查看程序包information:

info [...]

查看指定的特性(可以是某文件)是由哪个程序包所提供:

provides | whatprovides feature1 [feature2] [...]

清理本地缓存:

clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

构建缓存:

makecache

搜索:

search string1 [string2] [...]

以指定的关键字搜索程序包名及summary信息;

查看指定包所依赖的capabilities:

deplist package1 [package2] [...]

查看yum事务历史:

history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

安装及升级本地程序包:

* localinstall rpmfile1 [rpmfile2] [...]

(maintained for legacy reasons only - use install)

* localupdate rpmfile1 [rpmfile2] [...]

(maintained for legacy reasons only - use update)

包组管理的相关命令:

* groupinstall group1 [group2] [...]

* groupupdate group1 [group2] [...]

* grouplist [hidden] [groupwildcard] [...]

* groupremove group1 [group2] [...]

* groupinfo group1 [...]

如何使用光盘当作本地yum仓库:

(1) 挂载光盘至某目录,例如/media/cdrom

# mount -r -t iso9660 /dev/cdrom /media/cdrom

(2) 创建配置文件

[CentOS7]

name=

baseurl=

gpgcheck=

enabled=

yum的命令行选项:

--nogpgcheck:禁止进行gpg check;

-y: 自动回答为"yes";

-q:静默模式;

--disablerepo=repoidglob:临时禁用此处指定的repo;

--enablerepo=repoidglob:临时启用此处指定的repo;

--noplugins:禁用所有插件;

yum的repo配置文件中可用的变量:

$releasever: 当前OS的发行版的主版本号;

$arch: 平台;

$basearch:基础平台;

$YUM0-$YUM9

http://mirrors.aliyun.com/centos/$releasever/$basearch/os

创建yum仓库:

createrepo [options]

程序包编译安装:

testapp-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装;

源代码 --> 预处理 --> 编译(gcc) --> 汇编 --> 链接 --> 执行

源代码组织格式:

多文件:文件中的代码之间,很可能存在跨文件依赖关系;

C、C++: make (configure --> Makefile.in --> makefile)

java: maven

C代码编译安装三步骤:

./configure:

(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;

(2) 检查依赖到的外部环境;

make:

根据makefile文件,构建应用程序;

make install

开发工具:

autoconf: 生成configure脚本

automake:生成Makefile.in

建议:安装前查看INSTALL,README

开源程序源代码的获取:

官方自建站点:

apache.org (ASF)

mariadb.org

...

代码托管:

SourceForge

Github.com

code.google.com

c/c++: gcc (GNU C Complier)

编译C源代码:

前提:提供开发工具及开发环境

开发工具:make, gcc等

开发环境:开发库,头文件

glibc:标准库

通过"包组"提供开发组件

CentOS 6: "Development Tools", "Server Platform Development",

第一步:configure脚本

选项:指定安装位置、指定启用的特性

--help: 获取其支持使用的选项

选项分类:

安装路径设定:

--prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/

--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

System types:

Optional Features: 可选特性

--disable-FEATURE

--enable-FEATURE[=ARG]

Optional Packages: 可选包

--with-PACKAGE[=ARG]

--without-PACKAGE

第二步:make

第三步:make install

编译完成安装之后生成的文件:

安装后的配置:

(1) 导出二进制程序目录至PATH环境变量中;

编辑文件/etc/profile.d/NAME.sh

export PATH=/PATH/TO/BIN:$PATH


(2) 导出库文件路径

编辑/etc/ld.so.conf.d/NAME.conf

添加新的库文件所在目录至此文件中;

让系统重新生成缓存:

ldconfig [-v]

(3) 导出头文件

基于链接的方式实现:

ln -sv

(4) 导出帮助手册

编辑/etc/man.config文件

添加一个MANPATH

可以多多尝试,多练习


文件 程序 仓库 开发 配置 工具 编译 目录 生成 位置 命令 源代码 特性 环境 路径 代码 开发工具 指向 缓存 升级 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网巨头科技公司 互联网医疗科技 成都互联网科技公司 广州互联网络科技有限公司 智慧科技互联网 昭通云南众福互联网科技有限公司 互联网时代科技改变生活 南山科技园互联网公司有哪些 互联网科技创新服务 上海宁丞科技互联网 辽宁互联网新科技 电子科技大学互联网创业大赛 沐思想互联网科技有限公司 每天都有哪些好的互联网科技 神州科技互联网有限公司 银川新华互联网科技学校是国营吗 美国五大互联网科技公司市值多少 互联网的黑科技实验室 六子台科技互联网展会 利用互联网等科技手段 互联网科技有限公司经营范围 中资互联网科技 互联网 卓越科技 礼当家互联网科技 华中科技有哪些互联网大佬 须眉科技是互联网公司吗 互联网科技公司实习生 互联网公司黑科技创始人 互联网科技股为什么大涨 信承诺互联网科技有限公司
0