软件包管理(RPM和yum)

    软件包在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础;只有我们学会软件包的管理才能谈得上其它的应用;本文以目录式的文档格式,列出新手弟兄所面对的软件包的安装、更新、查询相对的文档,以及几个常用的软件包管理工具。

软件包管理:

    一,RPM包管理;

    二,yum包管理;

一,RPM包管理:

centos系统上RPM命令管理程序包:

    安装,升级,卸载,查询,校验,数据库维护

    RPM命令:rpm [OPTIONS] [PACKAGE_FILE]

        安装:-i ,–install

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

        卸载: -e,–erase

        查询: -q,–query

        校验: -v,–verify

        数据库维护:–builddb,–initdb

(1)安转:

rpm{-i | –install}[install-options] PACKAGE_FILE …

GENERAL OPTIONS:

    -v:  verbose,详细信息

    -vv:更详细的输出

    [install-options]

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

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

        –nodeps:忽略依赖关系,不建议使用;

        –replacepkgs:重新安装

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

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

        –noscripts:

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

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

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

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

注意:rpm可以自带脚本;

(2)升级:

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) 后保留;

(3)卸载:

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

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

    –nodeps:忽略依赖关系

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

(4)查询:

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

    [select-options]

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

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

        -f, –file FILE:查询所有指定的文件有那个程序包安装生成;

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

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

        –whatrequires CAPABILITY:查询指定的 CAPABILITY 由那个包依赖;

    [query-options]

        –changelog:查询rpm包的changelog;

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

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

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

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

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

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

        –scripts:查看程序包自带的脚本片段;

用法:

    -qi PACKAG, -qf FILE, -qc PACKAG, -ql PACKAG, -qd PACKAG,-qpl PACKAG_FILE

(5)校验:

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

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

    来源合法性验证:RSA

    完整性验证:SHA256

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

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

验证:

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

    (2)手动验证:rpm -k PACKAGE_FILE (来源合法性和完整性)

(6)数据库重建:

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

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

获取帮助:

    centos 6:man rpm

    centos 7:man rpmdb

rpm {–initdb|–rebuilddb} [–dbpath DIRECTORY] [–root DIREC‐TORY]

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

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

二,yum包管理:

(1)yum 配置文件

1,yum 客户端配置文件:

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

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

仓库指向的定义:

    [repositoryID](仓库ID)

    name=Some name for this repository  (仓库名)

    baseurl=url://path/to/repository/   (地址)

    enabled={1|0}  (是否启用)

    gpgcheck={1|0}  (是否检查)

    gpgkey=URL

文件服务器(URL):

    ftp://

    http://

    file:///

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

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

    # mount /dev/cdrom /media/cdrom

创建配置文件,vim /etc/yum.repos.d/centos-local.repo

    [CentOS7]

    name=

    baseurl=

    gpgcheck=

    enabled=

yum 本地源.PNG

3,如何使用网络源做yum仓库:

创建配置文件,vim /etc/yum.repos.d/bash.repo

    [CentOS7]

    name=

    baseurl=

    gpgcheck=

    enabled=

yum 网上源.PNG

(2)yum的命令管理:

yum 的命令行选项:

    -y:  自动回答为“yes”

    -q :静默模式

    –nogpgcheck :禁止进行gpg check

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

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

    –noplugins :禁用所有插件

显示仓库列表:

    yum repolist [ all | enabled | disabled ]  [全部 | 启用 | 禁止]

显示程序包:

    yum list

    yum list [all ]

    yum list [available | installed | updates]  [可用的 | 安装过的 | 升级的]

安装程序包:

    yum install package1

    yum reinstall package1  ( 重新安装)

升级程序包:

    yum update package1

    yum downgrade package1 ( 降级)

检查可用升级:

    yum check-update

卸载程序包:

    yum [remove | erase] package1   [卸载 | 抹除]

查看包的详细信息

    yum info package

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

    yum provides  feature1

清理本地缓存:

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

    [程序包 | 元数据 | 过期的缓存 | rpmdb | 插件 | 全部的]

构建缓存:

    yum makecache

搜索:以指定的关键字搜索程序包名及summary(简要) 信息

    yum search string1

查看yum 事务历史:

    yum history

    yum history list #     (可以显示某个处理过程)

    yum history info #  (可以显示某个历史安装包的详细信息)

    yum history redo #  (可以重新安装某个历史的所有安装包)

    yum history undo #  (可以撤销某个历史的所有安装包,类同卸载  (不适用包组))

安装及升级本地程序包:

    yum install rpmfile  (安装本地程序包)

    yum update rpmfile  (升级本地程序包)

包组管理的相关命令:

    yum grouplist   (查看包组)

    yum groupinfo group   (查看包组的详细信息)

    yum groupinstall group   (安装包组)

    yum groupupdate group  (升级包组)

    yum groupremove group  (卸载包组)

(3)编译安装:

c/c++ 编译器: gcc (GNU C Complier)

编译C源代码:

    准备: 提供开发工具及开发环境

        开发工具:make, gcc等

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

        glibc :标准库

    实现:通过 “包组”提供开发组件

        CentOS 6:

            Development Tools

            Server Platform Development

        CentOS 7:

            Development Tools

            Development and Creative Workstation

( get命令 是把目录或文件放到桌面 )

第一步:./configure 脚本

    选项:指定安装位置、指定启用的特性–help:  获取其支持使用的选项

选项分类:

    安装路径设定:

        –prefix=/PATH:  指定默认安装位置, 默认为/usr/local/

        –sysconfdir=/PATH :配置文件安装位置

        System types: 支持交叉编译

        Optional Features:  可选特性

        –disable-FEATURE

        –enable-FEATURE[=ARG]

        Optional Packages:  可选包,

        –with-PACKAGE[=ARG], 依赖包

        –without-PACKAGE, 禁用依赖关系

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

第三步:make install : 复制文件到相应路径

安装后的配置:

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

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

        PATH=/PATH/TO/BIN:$PATH

centos 6 本身带有http 因此 路径要写自带的前面,要不然先执行自带的.PNG

(2)  导入库文件路径

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

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

    让系统重新生成缓存:

        ldconfig [-v]

(3)  导入头文件

    基于链接的方式实现:

        ln -sv

(4)  导入帮助手册

    编辑/etc/man.config|man_db.conf 文件

        添加一个MANPATH

centos 7 上Apache的man的配置.PNG

原创文章,作者:AN0519,如若转载,请注明出处:http://www.178linux.com/43821

(0)
AN0519AN0519
上一篇 2016-09-06 08:50
下一篇 2016-09-06 08:50

相关推荐

  • Shell脚本编程(上)

        Shell脚本编程基础 Shell 脚本基础:包含一些命令或声明并符合一定格式的文本文件Shell 脚本用途:        1. 自动化常用命令        2. 执行系统管理和故障排除        3. …

    2017-04-16
  • 使用yum源码编译安装程序

    需要的安装包:httpd-2.2.29.tar.bz2 1、安装develpment tools     yum groupinstall "Development Tools" 2、下载服务器中的http源安装包到本地,然后解压到指定文件夹中 lftp 10.1.0.1:/pub/Sources/…

    Linux干货 2016-08-24
  • 软链接和硬链接的区别

    Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。 硬链接 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种…

    Linux干货 2016-10-29
  • Shell编程if语句

    Shell编程if语句 条件选择if语句(#if输入keywork) 选择执行: 注意:if语句可嵌套 单分支 if 判断条件(#如果为真执行下一条);then 条件为真的分支代码 fi(结尾) 双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi if 语句 多分支 if 判断条件1; then 条件为真的分支代码 e…

    2018-01-01
  • 个人思想的转变及对学习的态度

    了解linux已经一年多了,但实际上学习的次数并不多。我是在部队的时候通过网络了解到linux,刚开始接触的是乌班图系统,感觉这个系统美化比较漂亮,就安装在虚拟机里进行各种操作,但是对命令是一窍不通的,都是通过百度粘贴复制各种命令,在复制的是同时我也感觉到头大,这个系统的输入、输出怎么都是字母出现在屏幕上,顿时就感到兴趣失去了一大半,再加上自己英语也不好,就…

    Linux干货 2018-03-26
  • N25 第三周作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [jizo@jizo ~]$ who | cut -d" " -f1 | uniq jizo  2、取出最后登录到当前系统的用户的相关信息。 [root@jizo ~]# who | tail -l jizo     …

    Linux干货 2016-12-18