yum安装与管理

程序包管理

内核功能:进程管理、内存管理、网络协议栈、驱动程序、...

应用程序:特定功能


包管理器:打包,包管理(安装、升级、卸载、查询及校验)

  • deb: debian

  • rpm: redhat package manager 

  • RPM is Package Manager(包管理器)


程序包的组成部分:

二进制程序:/bin, /sbin,/ /usr/bin, /usr/sbin,

库文件:/lib64, /usr/lib64(程序共通的功能,代码运行时可以共通)

配置文件:/etc

帮助文件:manual, info, 


包管理器:

打包:诸多文件一个单一的归档文件中;

安装:打包文件展开,把文件放在应该放在的路径上

卸载:收集起来,删除

升级:替换

查询:

校验:


安装检查来源的合法性、完整性;


rpm包:rpmbuild: 提供specs文件,以specs打包;


10功能:5, 3, 2

分包机制:testapp-VERSION.tar.gz

  • 核心包:testapp-VERSION

  • 支包:testapp-devel-VERSION


VERSION:major.minor.release

  • base-4.2.4.tar.gz


rpm包的命名机制:

name-VERSION-RELEASE.ARCH.rpm

bash-4.2.4-1.el7.x86_64.rpm

bash-devel-4.2.4-1.el7.x86_64.rpm


RELEASE: rpm release


包和包之间:有可能存在依赖关系:

X --> Y


rpm数据库:/var/lib/rpm/(redhat,centos)


如何获取rpm包:

1、发行版提供的程序包;(iso)

2、Fedora-EPEL

3、项目的官方站点

4、搜索引擎

  • http://rpmfind.net

  • http://rpm.pbone.net

  • http://pkgs.org

wKioL1XzxrfBAAcPAAG2tv40Skc839.jpg

wKiom1XzxSawPjMiAAc_Mb-I6YM772.jpg


CentOS识别光盘用的设备文件:/dev/cdrom,

wKiom1XzxnCT8KiwAACSPHswPw0279.jpg

wKiom1Xzx5zC3-i9AADYtGgCD9k045.jpg

wKioL1XzyhDx0Sj0AABMm2z_NlU206.jpg



基于rpm命令实现程序包管理

安装:

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

  • -i:

  • -v:显示详细过程,-vv, -vvv

  • -h:

wKioL1Xzy7KivwSzAAGT_xvMnSQ272.jpg

wKioL1XzzBLy3UrcAAQ7j5aFuCU927.jpg

wKiom1Xzyn6CV7FVAABHDTeAOdY465.jpg

wKiom1Xzysmy9ZSvAAIK1lUdbRg946.jpg

wKioL1XzzUHwX21hAABKBDTaB0c562.jpg


每个rpm包都提供一个或多个能力,当那个能力没有安装的话就不能安装

--nodeps:忽略依赖关系安装(安装后可能不能使用

--replacepkgs:重装程序包

wKioL1XzztrSmNx9AAJUoYdBgK4313.jpg


升级:

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

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

  •  -Uvh: 如果有旧版程序包,则升级之;如果没有,则安装之;

  •  -Fvh: 如果有旧版程序包,则升级之;如果没有,则不安装;


  •        --nodeps

  •        --oldpackage:降级;

  •        --force:其他相关联的文件不允许升级,使用此选项


卸载:

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

--nodeps:常用选项


查询:

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

  • -qa: 查询本机已经安装的所有程序包;

  • -qf /PATH/TO/SOMEFILE: 查询此处的文件由哪个程序包安装生成;

  • -qc: 查询指定程序包安装生成的配置文件

  • -qd: 查询指定的程序包安装生成的文档

  • -qi: 查询指定的程序包的相关信息;

  • -ql: 查询程序包安装生成的所有文件的列表;

  • -q --scripts:查询程序包相关的脚本:

       preinstall: 安装前脚本

       postinstall:安装后脚本

       preuninstall: 卸载前脚本

       postuninstall: 卸载后脚本

  • -p: 查询针对是未安装的程序包文件;

    qpi:预计安装的信息

qpl:预计安装后的文件目录

wKiom1Xz0BnTli-JAAOvODwRByg472.jpg


校验:

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

wKiom1Xz03TxF7-cAAAvsOb0mlI005.jpg

wKioL1Xz1aTyTAu9AADfncOO7R0613.jpg

wKiom1Xz03SQLMfaAAD9dNNzT9A849.jpg

  • 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


包校验:

来源合法性验正:非对称加密

完整性验正:单向加密


导入密钥:rpm --import /PATH/TO/KEY_FILE

校验:rpm -K /PATH/TO/RPM_FILE

wKiom1Xz1yqz30W_AAGdQXy2dJg635.jpg

wKioL1Xz2b6S3CR-AAFyRlHg6Tw868.jpg



YUM: Yellowdog Updater Modified--前端管理工具

文件服务器:

ftp://hostname/PATH/TO/REPO

http://hostname/PATH/TO/REPO

file:///PATH/TO/REPO


yum程序的配置文件:

/etc/yum.conf

定义全局配置:对所有仓库都适用的配置

/etc/yum.repos.d/*.repo

一个文件通常用于一个或一组功能相近或相关的仓库


定义一个仓库指向:

[REPO_ID]

name=

baseurl=(3个路径之一)

# mirrorlist=SCHEME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE

enabled={1|0}

gpgcheck={1|0}

gpgkey=

cost=仓库的开销

以阿里云举例

wKioL1Xz5lSSmi4uAABiz19PGlY501.jpg

wKiom1Xz5AiQ5sS_AAC3xjPyBDM886.jpg

wKioL1Xz5wrQPTXHAAHEhZX_T7Q611.jpg

wKioL1Xz5ynylDZzAAEgvbgF2QA976.jpg


定义仓库指向可用变量:

$releasever: 引用当前系统的主版本号;

$basearch: 当前系统的基本架构;

i386, i486, i586, i686: i386


http://mirrors.magedu.com/CentOS/$releasever/os/$basearch



yum命令:

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

安装:install

卸载:remove

升级:update

查询:

  • info(首字段)

  • search KEYWORD(字段内)

  • list all|installed|availiable

  • provides /PATH/TO/SOMEFILE: 查询指定文件由哪个包安装生成

重新安装:reinstall

降级:downgrade

清理缓存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

生动生成缓存:makecache


注意:指向repodata的父目录


wKioL1Xz6R-i2-baAAQZmU_yFhA158.jpg

wKiom1Xz50SA726bAASY7TixH0Q993.jpg

wKioL1Xz6tOAi8CHAAFzsli5vs0308.jpg

wKiom1Xz6KOym6h3AABCHCeNOt0826.jpg


包组:

grouplist

groupinfo "GRP_NAME"

groupinstall "GRP_NAME"

groupremove "GRP_NAME"


仓库:

repolist [all|enabled|disabled]

repoinfo [all|enabled|disabled]


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

挂载光盘至某目录

定义仓库,使用file:///指明其访问路径;

wKiom1Xzx5zC3-i9AADYtGgCD9k045.jpg


创建本地仓库:

yum install createrepo

createrepo /PATH/TO/RPMFILES/

1.创建目录

2.目录rpm包

3.createrepo -v 目录名

4.yum clean all

5. yum makecache


另外:

当外网下载一个rpm包,当要使用仓库的依赖文件

yum install ...rpm -y


下一代的前端:dnf



你可能感兴趣的:(yum)