学习笔记之Linux程序包管理rpm、yum、编译

无论是Windows系统还是Linux系统,我们用户想要在操作系统上获得更多的乐趣还是更多的功能的话,就需要在一个干净的系统上安装各式各样的软件程序,Linux上的是ELF格式的,目前比较常见的程序包管理器如:

Redhat软件包管理器---rpm

Debian软件包管理器---dpkg

一、1、RPM

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

-v: verbose,详细信息

-vv: 更详细的输出

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

注意:在使用rpm进行程序包安装时一定要指明包的绝对路径,如:rpm –ivh /mnt/cdrom/Packageszsh-5.0.2-7.el7.x86_64.rpm; 也可以先进入到程序包所在的路径下再执行安装,如上操作;

[install-options]

--test:测试安装,但并不执行安装,只是帮助检测依赖关系及冲突;

--nodeps: 忽略程序包的依赖关系,直接进行安装;

--replacepkgs: 对程序包不卸载的情况下进行重新安装;

在这里要说明一下,rpm在安装时可以自带脚本,分为安装前、安装后、卸载前、卸载后四个类别; preinstall: 安装过程开始之前运行的脚本,%pre,

不运行preinstall脚本:--nopre

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

不运行postinstall脚本:--nopost

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

不运行preuninstall脚本:--nopreun

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

不运行postuninstall脚本:--nopostun

注:如果都不安装脚本可使用参数:--noscripts

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

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

2、升级

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

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

-U –upgrade: 表示有安装老版本程序时则升级,没有安装老版本程序时则进行安装;

-F –freshen: 表示有安装老版本程序时刚升级,没有安装老版本程序时不执行安装;

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

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

3、卸载

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

rpm –e zsh(注意卸载时不需要像安装时给出文件路径,卸载可以不用)

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

--nodeps: 忽略依赖关系;

-test: 测试卸载;(同程序包安装)

4、查询

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

[select-options]

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

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

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

[query-options]

--changelog: 查询rpm包的changelog;显示在什么时候做过更改;

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

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

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

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

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

注意:由于程序未被安装,所以在查询时必须要指定全路径,否则会报错;我的是挂载在/mnt目录下,所以指定的为上面的路径;

-p选项还可以查询指定程序包的信息、版本、配置文件、安装文档… 具体实现方法同

上面类似,如:rpm –qpl /mnt/cdrom/Packages/zsh-5.0.2-7.el7.x86_64.rpm

rpm –qpi /mnt/cdrom/Packages/zsh-5.0.2-7.el7.x86_64.rpm

rpm –qpf /mnt/cdrom/Packages/zsh-5.0.2-7.el7.x86_64.rpm

5、校验

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

-V: 如果程序包中的某个文件发生改变,该文件被改变的属性将被输出至屏幕;

S.5....T.:对应文件的属性值,共有9个字符串;

S 文件大小是否改变

M 文件权限是否改变

5  md5码是否改变

D  主次版本号是否不匹配

L  readLink路径是否不匹配

U 属主是否改变

G 属组是否改变

T 时间戳是否改变

P 功能差异

6、包的验证

每个程序包都是由某个机构或个人制作而出的,他们在程序包制作完成后都会在包的背后加盖上自己的印签,加盖的印签就叫做数字签名;数字签名是使用非对称加密方式实现的。在包制作完成后制作者会用自己的私钥对包进行加密,我们如果要验证包的合法性就要使用与制作者私钥相对应的公钥进行解密,如成功则包合法,不成功则包被修改过;

如果带有私钥的包被作者以外的人修改,但没有拿包制作者的私钥重新加密的,使用者用公钥就不能把私钥解密;

如果是包制作者使用把包制作好后使用自己的私钥进行加密的,使用者就可以用公钥进行解密,从而可以放心使用;

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

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

验证:

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

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

7、数据库重建

rpm {--initdb|--rebuilddb}

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

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

二、YUM命令

yum是由yellow dog团队开发,它的全称为:YellowdogUpdate Modefier;yum是rpm包前端管理器,yum的架构基于C/S(C/S就是访问yum所依赖的文件服务器是C/S的,而yum本身不是),服务器端称为yum repository(简称 yum repo)而客户则是通过更改配置文件中的url来确定访问哪一台yum服务器的;yum repo存储了许多的rpm包,客户端安装包时会从yum repo里面下载并分析并解决依赖关系,方便程序包的安装;

要使用yum首先要做的就是对yum配置文件进行创建或修改成自己需要对应的仓库;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(gpg的密钥文件)

enablegroups={1|0}(是否允许组)

failovermaethod={roundrobin|priority}(默认为:roundrobin,意为随机)

cost(开销)=默认为1000

yum命令的使用方法

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

显示仓库列表:

repolist [all|disabled|enabled]

显示程序包List:

yumlist[all|glob_exp1] [glob_exp2]...

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

安装程序包:

install package1 [package2] [...]

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

升级程序包:

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

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

例:yum update zsh

检查可用升级

check-update

例:yum check-update

卸载程序包:

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

例:yum remove gcc

查看程序包information:

info [...]

例:yum info gcc

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

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

例:yum provides /bin/ls

清理本地缓存:

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

例:yum clean all

构建缓存:

Makecache

例:yum makecache

搜索:模糊匹配

search string1 [string2] [...]

例:yum search bash

查看指定包所依赖的capabilities;

deplist package1 [package2] [...]

例:yum deplist gcc

查看yum事务历史:

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

例:yum history summary

yum history

yum history list

安装及升级本地程序包:(不是仓库中的包)

* localinstall rpmfile1[rpmfile2] [...]

(maintained for legacy reasonsonly - use install)

* localupdate rpmfile1 [rpmfile2][...]

(maintained for legacy reasons only - use update)

yum的命令行选项:

--nogpgcheck: 禁止进行gpg check;

例:yum --nogpgcheck installzsh

-y: 自动回答为“yes”

-q, --quiet: 启用静默模式;

例:yum –y -q install gcc

--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] <directory>

例:yum install createrepo

createrepo./

    有时候可能找不到合适的rpm包,或我们想需要更多的功能的时候就需要对程序包进行编译安装了。

    源码包里面有众多文件,在这些文件会存在依赖关系,我们不可能通过gcc的方式来手动进行编译,这时就需要用到makefile用于指导make命令调用相应处理器来处理这些事情,而make文件对用户而言并非是写死特定的,可以根据用户的需要自由生成,所以make文件并不是事先存在的,从头看一下,进入源码包后,在文件中有一个configure的文件,conofigure可以生成makefile.in模版,最后生成makefile文件;如图:

    编译安装主要分为三个步骤:

    第一步:

    ./configure

    选项:指定安装路径–prefix=/PATH/TO/SOMEWHERE

    配置文件路径–sysconfigdir=/PATH/TO/SOMEWHERE

    开启某些选项–enable-FEATURE

    关闭某些选项–disable-FEATURE

    第二步:make

    第三步:make install

    每三步过后,编译安装就结束了,剩下的就是去配置使用安装好的文件了!

    时间: 2024-10-10 08:55:41

    学习笔记之Linux程序包管理rpm、yum、编译的相关文章

    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

    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 程序包管理 rpm yum dnf

    Linux程序包管理: 包管理器功能:打包,包管理(安装,升级,卸载,查询,校验) 目前Linux中最常见有两种常用工具 deb:debian Linux使用 包括ubuntu rpm:Redhat Package Manager ,Centos等在使用 程序包的组成: 二进制程序:/bin,  /sbin,  /usr/bin, /usr/sbin 库文件: /lib64, /usr/64 配置文件:/etc 帮助文件:manual, info 包管理器: 打包:将源文件,一个一个单一的归档文

    Linux程序包管理rpm与yum

    Linux程序包管理 Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装. 程序的组成部分: 二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序. 库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了.在window下库文件为.dll格式,linux下为/lib/*so格式的文件. 配置文件:通过设置配置文件来改变程序启动时的运行特征. 帮助手册:使用的帮助文档.  

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

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

    2018-3-14Linux系统管理(12) Linux程序包管理(2)yum前端管理工具

    我们在之前的章节中讲到了Linux的程序包管理的基础与实现,后面也讲述了RPM包的管理命令实现了管理包的功能,主要用的是rpm命令,那么rpm实现程序管理总结如下:    rpm命令实现程序管理:       安装:-ivh, --nodeps, --replacepkgs       卸载:-e, --nodeps, --replacepkgs       升级:-Uvh, -Fvh, --nodeps, --oldpackage       查询:-q, -qa, -qf, -qi, -qd

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

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

    程序包管理rpm,yum用法解析及自动化部署apache server实战,让您轻松拥有apache网站!

    程序包管理器rpm,yum用法及apache httpd服务的自动化部署 程序包管理? 通常来说在windows中将需要安装的程序,程序名.exe下载下来然后点击setup的安装程序或直接点击程序包,下一步下一步即可.而Linux中程序包不是exe,不同的主流发行版有着不同的程序包管理机制.比较主流的主要是rpm程序包管理器和deb程序包管理. 这里要区别: 包名(PACKAGEFILE): rpm包程序文件的全名程序名(PACKAGENAME): rpm包不带版本号的程序名,比如QQ而不是QQ

    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是客户端,也认为是自我独立管理的组件,需要联系远程的仓库,从仓库中下载