千家信息网

linux程序包管理 rpm yum 编译

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,rpm命令:rpm [OPTIONS] [PACKAGE_FILE]安装:-i, --install升级:-U, --update, -F, --freshen卸载:-e, --erase查询:-q,
千家信息网最后更新 2025年01月22日linux程序包管理 rpm yum 编译

rpm命令:rpm [OPTIONS] [PACKAGE_FILE]

安装:-i, --install

升级:-U, --update, -F, --freshen

卸载:-e, --erase

查询:-q, --query

校验:-V, --verify

数据库维护:--builddb, --initdb

安装:rpm {-i|--install} [install-options] PACKAGE_FILE ...

rpm -ivh PACKAGE_FILE ...

GENERAL OPTIONS:

-v:verbose,详细信息

-vv:更详细的输出

[install-options]:

-h:hash marks输出进度条;每个#表示2%的进度;

--test:测试安装,检查并报告依赖关系及冲突消息等;

--nodeps:忽略依赖关系;不建议;

--replacepkgs:重新安装

注意:rpm可以自带脚本;

四类:--noscripts

preinstall:安装过程开始之前运行的脚本,%pre , --nopre

postinstall:安装过程完成之后运行的脚本,%post , --nopost

preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, --nopreun

postuninstall:卸载过程完成之后运行的脚本,%postun , --nopostun

--nosignature:不检查包签名信息,不检查来源合法性;

--nodigest:不检查包完整性信息;

升级:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

-U:升级或安装;

-F:升级

rpm -Uvh PACKAGE_FILE ...

rpm -Fvh PACKAGE_FILE ...

--oldpackage:降级;

--force:强制升级;

注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;

(2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

卸载:rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...

--allmatches:卸载所有匹配指定名称的程序包的各版本;

--nodeps:忽略依赖关系

--test:测试卸载,dry run模式

查询:rpm {-q|--query} [select-options] [query-options]

[select-options]

PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;

-a, --all:查询所有已经安装过的包;

-f FILE:查询指定的文件由哪个程序包安装生成;

-p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;

--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;

--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;

[query-options]

-changelog:查询rpm包的changlog;

-l, --list:程序安装生成的所有文件列表;

-i, --info:程序包相关的信息,版本号、大小、所属的包组,等;

-c, --configfiles:查询指定的程序包提供的配置文件;

-d, --docfiles:查询指定的程序包提供的文档;

--provides:列出指定的程序包提供的所有的CAPABILITY;

-R, --requires:查询指定的程序包的依赖关系;

--scripts:查看程序包自带的脚本片断;

用法:

-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE

-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ...

校验:

rpm {-V|--verify} [select-options] [verify-options]

S file Size differs

M Mode differs (includes permissions and file type)

5 digest (formerly MD5 sum) differs

D Device major/minor number mismatch

L readLink(2) path mismatch

U User ownership differs

G Group ownership differs

T mTime differs

P caPabilities differ

包来源合法性验正和完整性验正:

来源合法性验正:

完整性验正:

获取并导入信任的包制作者的密钥:

对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

验正:

(1) 安装此组织签名的程序时,会自动执行验正;

(2) 手动验正:rpm -K PACKAGE_FILE

数据库重建:rpm管理器数据库路径:/var/lib/rpm/

查询操作:通过此处的数据库进行;

获取帮助:

CentOS 6:man rpm

CentOS 7:man rpmdb

rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]

--initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;

--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;





CentOS: yum, dnf

YUM: yellow dog, Yellowdog Update Modifier

yum repository: yum repo

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

文件服务器:

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.magedu.com/centos/$releasever/$basearch/os

创建yum仓库:

createrepo [options]

代码编译安装三步骤:

./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


0