linux程序包安装、管理工具rpm、yum和源码安装

rpm包管理器:

应用程序要想成为机器可识别的二进制机器码,必须经过一下步骤:

rpm包管理器的功能就是将这一切过程自动管理,成为易于普通人使用,可简化应用程序安装的工具。

人们将源码经过编译执行后将程序打包成rpm格式的包,所有使用rpm包安装时必须与提供rpm包的作者使用相同的操作系统平台环境。因此出现了不同的包管理器,rpm知识其中一个。

rpm包的命名格式:

rpm包命名方式:name-version-arch.rpm

version :主版本号、次版本号、平台号

arch :表示平台,格式有release。os。arch

此外,rpm包的制作这根据应用程序的相应的功能将一个大的程序分割成不同包发布,这就是rpm包的拆包机制:一般分为主包和次包。

主包:提供该软件的主要功能。

次包:类似于插件机制来为主包补充相应的功能。

rpm包在安装的时候会检查软件的依赖关系,因此在安装的时候出现软件依赖关系导致的安装错误,需要自行解决。此外,为了rpm包的安全性,rpm包安装时会检查包的完整性和来源合法性。采用非对称加密技术进行加密(非对称加密机制另外学习)。

rpm在安装软件的时候会在本地创建数据库,用来存放相关的信息。如程序包名称及版本、依赖关系、功能说明、安装生成的各文件的文件路径及校验码信息。以便后续的查询。(rpm最使用的功能就是查询功能)。

rpm命令常用使用方法:

安装:

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

--test  仅测试安装但不真正安装

--nodeps 忽略依赖关系

--replacepgks 即使将要安装的包以安装过也重新安装

--nodigest 不检验包完整性

--nosignature  不检验包的来源合法性

--prefix  指定安装路径

--noscipts:不执行程序包脚本片段

%pre :安装前脚本 --nopre

%post:安装后叫脚本 --nopost

%preun:卸载前脚本  --nopreun

%postun:卸载后脚本 --nopostun

升级:

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

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

upgrade:安装有旧版程序包,则升级,没有就安装

freshen:安装有旧版本程序包,则升级,没有则不升级

--oldpackage:降级

--force:强制

注意:1、不要多内核做升级操作:linux支持多内核版本并存,因此可以直接安装新版本内核。

2、如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一配置文件并不会覆盖此前的配置文件,而是重命名(filename.newrpm)后保存。如果旧版的配置文件不曾改过,那么新版的配置文件不会安装,而是利用旧版的配置文件。

查询:

rpm {-q|--query} [select-options] [query-options]

[select-options]

-a :所有包

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

-p /path/to/pachage_file :针对尚未安装的程序包文件做查询操作

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

--whatrequires capability :查询指定的capability依赖于哪个程序包

[query-optios]

--changelog :查询rpm包的修改信息

-c :查询程序的配置文件

-d :查询程序的文档

-i :information

-l :查看指定的程序包安装后所生成的所有文件

--scripts :程序包自带的脚本片段

--provides :列出指定程序包所提供的capability功能

卸载:

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

[--notriggers] [--test] PACKAGE_NAME ...

校验:

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

verify-options包括以下可选选项

[--nodeps] :不做依赖性校验

[--noscripts] :不做程序包脚本片段校验

[--nodigest] :不做包完整性校验

[--nosignature] :不做包来源合法性校验

[--nouser] :不检查属主

[--nogroup] :不检查属组

[--nomtime] :不检查修改时间

[--nomode] :不检查权限

rpm包的校验功能是根据非对称加密技术来进行的。所以rpm校验的选项包括:

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 包提供的能力的不同

校验后的输出格式中信息有:

c %config configuration file.

d %doc documentation file.

g %ghost file (i.e. the file contents are not included in the package payload).

l %license license file.

r %readme readme file.

rpm校验的时候需要先导入公钥,rpm的提供者都会同时提供公钥。使用命令

rpm --import /path/from/gpg-pubkey

数据库重建:

rpm --initdb|--rebuilddb

initdb :初始化数据库,如果实现不存在数据库,则新建之

rebuilddb :无论当前是否存在数据库,都始终重建数据库

yum工具:

yum是作为rpm包的前段工具使用的,yum安装使用的机制如图:

 yum可选命令如下:

* install package1 [package2] [...]  安装制定的包

* update [package1] [package2] [...] 更新指定的包(默认直接更新到可升级的最新版本,如果指定的更新包原本没有安装,则不会安装)

* update-to [package1] [package2] [...] 更新包到指定版本

* check-update 检查哪些程序可升级

* upgrade [package1] [package2] [...] 升级程序包相当于update

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

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

* remove | erase package1 [package2] [...] 卸载指定的包

* list [...] 列出相应的包

* info [...] 打印指定包的详细信息

* provides | whatprovides feature1 [feature2] [...] 查看指定的包提供那些能力(可用glob通配符模糊指定一个包)

* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 清楚相应的缓存

* makecache 制作yum缓存

* groupinstall group1 [group2] [...] 安装软件组

* groupupdate group1 [group2] [...]  软件组更新

* grouplist [hidden] [groupwildcard] [...] 列出使用的yum仓库中组列表

* groupremove group1 [group2] [...]  移除软件组

* groupinfo group1 [...] 列出软件组的信息

* search string1 [string2] [...]  根据关键字查找相应的包

* localinstall rpmfile1 [rpmfile2] [...] 安装下载到本地的rpm包(同时会根据其依赖关系自动安装其他软件包)

* localupdate rpmfile1 [rpmfile2] [...] 更新下载到本地rpm包

* reinstall package1 [package2] [...] 重新安装软件包

* downgrade package1 [package2] [...] 降级安装软件包

* repolist [all|enabled|disabled] 默认列出当前系统上的yum可用仓库列表

* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]

* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll-back|new|sync|stats]

* check 查询本地rpm数据库并提供找到的问题信息

* help [command] 帮助文档

yum的命令行选项:

--nogpgcheck :禁止进行gpgcheck

-y :自动回答为“yes”

-q :静默模式,不向屏幕输出信息

--disablerepo=repo_id  :临时禁用某个repo仓库

--enablerepo=repo_id :临时启用某个repo仓库

--noplugins : 禁用所有插件

yum提供了配置文件来定义相应的功能。路径为/etc/yum.conf 和/etc/yum.repos.d/

因此在定义本地仓库配置文件是只需要再/etc/yum.repos.d/下创建以.repo结尾的文件即可。

在这里指定的选项会自动覆盖主配置文件的相应选项。

例:创建自定义yum配置文件:

[repositoryID]

name=Some name for this repository #只是用来便于识别的,可指定任意字符串

baseurl=url://path/to/repository/   #指定yum仓库位置

enabled={1|0}   #默认是1

gpgcheck={1|0}  #默认是1,表示进行gpg检查

gpgkey=URL #只有在gpgchek=1时才有效

enablegroups={1|0}  #是否执行组安装

failovermethod={roundrobin|priority}

#表示当有多个仓库可使用时使用的仓库顺序与,默认为:roundrobin,意为随机挑选;cost=默认为1000

yum自定义仓库方法:

有时候会需要自定义一个yum仓库来供使用,使用createrepo软件可实现自动创建yum仓库需要的repodata文件,只需要提供包含有rpm包的packages目录,在使用createrepo时只需要指定packages目录的路径即可。

createrepo [options] <directory>

-u --baseurl <url>

-o --outputdir

--changelog-limit CHANGELOG_LIMIT

具体使用的选项可以自行查看man手册,根据需要指定相应的选项。

编译源码安装程序:

make被称为项目管理器,make(configuer --》makefile.in--》makefile)

make工具根据configure脚本来检查软件的依赖性关系,检查无误后会依据makefile.in文件为模板创建makefile文件,然后才能执行make&&make install

编译安装三步骤:

第一步:./configure <options>

作用:

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

2、检查依赖到的外部环境

第二步:make:   #根据makefile文件,构建应用程序

第三步: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

注释:configure和makefile.in文件都是用特定的开发工具帮助程序开发者来创建这些文件的。

开发工具:

autoconf:用来生成configure脚本

automake:用来生成makefile.in文件

建议:安装前查看INSTALL或者README文件

扩展:

DNF新一代的RPM软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,他取代了YUM,正式成为 Fedora 22 的包管理器。

DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。

DNF使用 RPM, libsolv 和 hawkey 库进行包管理操作。尽管它没有预装在 CentOS 和 RHEL 7 中,但你可以在使用 YUM 的同时使用 DNF 。

DNF 的最新稳定发行版版本号是 1.0,发行日期是2015年5月11日。 这一版本的额 DNF 包管理器(包括在他之前的所有版本) 都大部分采用 Python 编写,发行许可为GPL v2

时间: 2024-10-12 09:03:40

linux程序包安装、管理工具rpm、yum和源码安装的相关文章

程序包前端管理工具yum,及仓库配置

        简单分析yum的用法. 1:yum 是什么? 英文全称为 yellow dog update modify. 直译过来肯定是不对的.大体的意思为程序包管理. 2:yum有什么用? yum 的用处可就大了. 是一种能帮助我们管理程序包的工具.正是因为这个工具,让我们安装,卸载程序包时,只要执行一个命令,就能搞掂.背后的复杂操作,如安装时的依赖关系,查询时文件的路径在哪里,卸载时文件的路径又在哪里,等等这些复杂繁琐的操作都经我们隐藏了. 就像上帝说,让人间有阳光,于是就有了阳光一样.

程序包的管理:rpm及yum

rpm包: RPM 全名是『 RedHat Package Manager 』简称则为 RPM.RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的 Linux 主机的一套管理程序.他最大的特点就是将您要安装的套件先编译过( 如果需要的话 )并且打包好了,透过包装好的套件里头预设的数据库记录,记录这个套件要安装的时候必须要的相依属性模块( 就是你的 Linux 主机需要先存在的几个必须的套件 ),当安装在你的 Linux 主机时, RPM 会先依照套件里头的纪录数据查询 Linux 主机

Linux程序包管理

Linux程序包管理 RPM包基础 RPM YUM 编译安装 概述 Linux上的程序包管理,是我们的必备技能,本文将从三个视角:rpm.yum.源码编译来浅析Linux的程序包管理.首先,我们来看下本文的主要内容: - 程序包的命名- RPM: 程序包管理器    安装.卸载.升级.查询.校验.数据库维护      - YUM: RPM的前端程序    yum的配置文件     yum的常规操作:升级.检查.卸载.查看.包组管理     使用光盘当作本地yum仓库     yum的命令行选项及

linux程序包管理之rpm程序包管理器与yum前端工具

这里主要讲以CentOS为例,rpm程序包管理器的相关内容: CentOS的程序包管理器:   1) 程序包的命名规则:        源代码包:            software_name-VERSION.tar.gz            VERSION:major.minor.release                major:主版本号,通常代表重大功能改进的版本分支:                minor:次版本号,通常代表在某个版本的分支中的某个功能发生变化:     

linux程序包管理rpm,yum和编译安装以及冒泡排序练习

linux程序包管理: API:Application Programming Interface POSIX:Portable OS 程序源代码--> 预处理--> 编译--> 汇编--> 链接 静态编译: 共享编译:.so ABI:Application Binary Interface Windows与Linux不兼容 ELF(Executable and Linkable Format) PE(Portable Executable) 库级别的虚拟化: Linux: WIN

Linux程序包管理及yum安装管理

Linux程序包管理: API:ApplicationProgramming Interface   应用编程接口 POSIX:Portable OS    遵循本协议的程序均可在不同系统间移植 程序编写完成后,执行所要经过的处理步骤: 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接 静态编译: 共享编译:直接调用.so共享对象实现 ABI:ApplicationBinary Interface  应用二进制接口 Windows与Linux所支持的可执行二进制

Linux程序包管理之yum仓库、源码编译安装

CentOS:yum,dnf URL:ftp://172.16.0.1/pub yum是C/S架构,是rpm的前端工具,依赖于rpm存在的: 1.本地要有yun程序: 2.本地要有配置文件(配置远程服务器yum仓库或本地服务器yum仓库): 3.要有存在的文件服务器(程序包仓库即yum仓库).(也可以在本地配置服务器yum仓库): yum支持的服务器有两种:一种是ftp服务器,第二种是http服务器: yum工作简述: yum是客户端,也认为是自我独立管理的组件,需要联系远程的仓库,从仓库中下载

[Linux程序包管理之RPM及YUM]

Linux程序包管理之RPM及YUM 一.RPM和YUM简介 RPM,全称RPM Package Manager,是由Red Hat推出的软件包管理系统,现在在各个发行版普遍使用. RPM包管理器,将编译好的程序打包成一个文件或有限的几个文件,可用于实现便捷地安装.卸载.升级.查询.校验等程序管理:通常用与RHEL,红帽衍生系统,如CenOS等系统,用来实现对Linux程序包进行快捷管理. RPM包命名格式: Yum,全称Yellow dog Updater, Modified , 由Duke

Linux程序包管理--rpm和yum的原理和基本用法

Linux中的程序包主要分为两类: 二进制可执行安装包和源代码程序文件包. 本文主要讲解使用rpm程序包管理器和yum管理器前端工具来实现对二进制可执行安装包的安装, 查询, 升级和卸载等相关操作. Linux中在二进制可执行安装程序包安装上会涉及多个文件的操作, 操作过程就会比较复杂, 为简化该过程就使用程序安装包管理器来管理程序包的安装过程, 大大简化了程序包安装过程. Linux根据发行版本不同, 使用不同的程序包管理器实现对程序包的管理, 在这里主要介绍两大分支: debian: 使用d