程序包管理--9月10日作业


程序包管理RPM

1.回顾:

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

应用程序:具体功能

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

deb: debian

rpm: redhat package manager

3.程序包的组成部分

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

    库文件:/lib64, /usr/lib64

    配置文件:/etc

    帮助文件:manual, info

4.rpm包

4.1分包机制

源码包的命名格式:testapp-VERSION.tar.gz

核心包:testapp-VERSION   通常包含程序的主要功能

支包:testapp-devel-VERSION为主程序包提供特别功能;

例如:
zsh-5.0.2-7.el7.x86_64.rpm          核心包
zsh-html-5.0.2-7.el7.x86_64.rpm       支包,提供html功能

VERSION:major(主版本号).minor(次版本号,小功能改进).release(发行号,修改了bug)

4.2 rpm包命名

格式: name-VERSION-RELEASE.ARCH.rpm

示例:

bash-4.2.46-12.el7.x86_64.rpm
bash:软件名称;
4.2.46:软件版本(version) 2为主版本;后面的2为次版本号 ; 46为源码包的release 12为这个rpm包的release ;
el6. x86_64:适用enterprise linux6 64位x86系统平台;
rpm:包格式


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

示例:

[root@localhost Packages]# rpm -ivh php-mysql-5.4.16-23.el7_0.3.x86_64.rpm
error: Failed dependencies:                                                                                                                                                               提示错误
php-pdo(x86-64) = 5.4.16-23.el7_0.3 is needed by php-mysql-5.4.16-23.el7_0.3.x86_64       需要先安装php-pdo

具体解决方法见6.2


5.rpm包的获取

  • 发行版提供的光盘

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

    获取光盘内容需要挂载光盘

    示例:

  • [root@localhost ~]# mount -r /dev/cdrom /media/cdrom/
    [root@localhost ~]# cd /media/cdrom/
    [root@localhost cdrom]# ls
    CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
    EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
    EULA             isolinux  repodata  TRANS.TBL
    [root@localhost cdrom]# cd Packages/                                                    里面放着程序包
    [root@localhost Packages]# ls | wc l统计程序包个数
    8653
  • Fedora-EPEL

  • 项目的官方站点

  • 搜索引擎

    • http://rpmfind.net

    • http://rpm.pbone.net

    • http://pkgs.org


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

6.1安装   -i:(install)安装

-v:显示详细过程,还有更详细显示-vv, -vvv

-h:显示安装进度

示例:

Centos6.7下

Centos7.1中还有更多的详细过程

6.2忽略依赖关系安装

因为每个rpm包都提供一个或多个capabilities,若安装时依赖的包未安装则无法进行安装

--nodeps:忽略依赖关系安装

--replacepkgs:重装程序包

--test:仅做测试

示例:

[root@localhost Packages]# rpm -ivh php-mysql-5.4.16-23.el7_0.3.x86_64.rpm
error: Failed dependencies:
php-pdo(x86-64) = 5.4.16-23.el7_0.3 is needed by php-mysql-5.4.16-23.el7_0.3.x86_64
[root@localhost Packages]# rpm -ivh php-mysql-5.4.16-23.el7_0.3.x86_64.rpm --nodeps
Preparing...                          ################################# [100%]
Updating / installing...
1:php-mysql-5.4.16-23.el7_0.3      ################################# [100%]

6.3升级

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

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

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

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

--nodeps        :忽略依赖关系

--oldpackage:降级;

--force            :强制升级,旧的版本被其他程序依赖,普通升级会导致出粗


6.4卸载

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


6.5查询

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

查询选项:

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

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

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

示例:

[root@localhost Packages]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc

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

示例:

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

示例:

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

        preinstall:安装前脚本

        postinstall:安装后脚本

        preuninstall:卸载前脚本

        postuninstall:卸载后脚本

 -p: 查询针对是未安装的程序包文件,组合-q使用;

 

6.6校验

作用:检查安装包的文件是否被修改过

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

示例:
安装zsh软件后,列出生成的所有文件的列表
[root@localhost Packages]# rpm -ql zsh
选择其中一个文件,修改该文件,加入‘#’号
vim /usr/share/zsh/4.3.11/scripts/newuser
校验zsh:

wKioL1X2u2ejUf-jAAB3mCr_5F8893.jpg

显示的消息意义如下:

Sfile Size differs                                         文件大小是否被改变
MMode differs (includes permissions and file type)       文件的类型或文件的属性(rwx)是否被改变
5digest (formerly MD5 sum) differs                     MD5de指纹码的内容已经不同
DDevice major/minor number mismatch          设备的主/次代码已经改变
LreadLink(2) path mismatch                                    Link路径已经被改变
UUser ownership differs                                 文件的所有者已被改变
GGroup ownership differs                             文件的所属用户组已经被改变
TmTime differs                                                    文件的创建时间已经被改变
PcaPabilities differ                                             文件的能力已经被改变
 
c :配置文件(config file)
d :文件数据文件(documentation)
g : ghost file,通常是该文件被某个软件所包含
l :许可证文件(license file)
r :自述文件(read me


7 包校验

包校验:来源合法性验正:非对称加密;完整性验正:单向加密

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

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

示例:

[root@localhost Packages]# ls/etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Debug-7  RPM-GPG-KEY-CentOS-Testing-7
[root@localhostPackages]# cd ..
[root@localhost cdrom]# rpm --importRPM-GPG-KEY-CentOS-7
[root@localhost cdrom]# cd Packages/
[root@localhost Packages]# rpm -Kzsh-5.0.2-7.el7.x86_64.rpm
zsh-5.0.2-7.el7.x86_64.rpm: rsa sha1 (md5)pgp md5 OK

YUM

 

1.YUM: Yellowdog Updater Modified,是一种在线升级机制,解决RPM属性依赖的方式

yum repositories (yum 仓库):

文件服务器提供方式:

                            ftp://hostname/PATH/TO/REPO

                            http://hostname/PATH/TO/REPO

                            file:///PATH/TO/REPO

2.yum程序的配置文件

2.1/etc/yum.conf    定义全局配置:对所有仓库都适用的配置

2.2/etc/yum.repos.d/*.repo    一个文件通常用于一个或一组功能相近或相关的仓库

2.3定义一个仓库指向:

[REPO_ID]   代表仓库的名字,不能与其他仓库重名

name=               说明仓库的意义

baseurl=            后接仓库的实际网址

# mirrorlist=     列出该仓库可以使用的镜像站点

enabled=            1表示启用。0表示不启用  默认为启用

gpgcheck={1|0}  检验包的合法性,0为不启用

gpgkey=                公钥文件所在位置

cost=这个仓库的开销

示例:

[root@localhost yum.repos.d]# mvCentOS-Base.repo CentOS-Base.repo .bak
mv: target `.bak' is not a directory
[root@localhost yum.repos.d]# mvCentOS-Base.repo CentOS-Base.repo.bak
[root@localhost yum.repos.d]# vimCentOS-Base-aliyun.repo
[root@localhost yum.repos.d]# yum repolist

结果如下:

wKiom1X2ueeSUKTIAAK0MCGWJzw686.jpg

2.4定义仓库指向可用变量:

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

$basearch: 当前系统的基本架构,例如:i386,i486, i586, i686: i386均为x86架构

例如:http://mirrors.163.com/CentOS/$releasever/os/$basearch

 

3. yum命令

1 .1 格式:yum [options][command] [package ...]

1.2安装:install  CentOS67中,该命令可以安装仓库中的软件,也可以安装本地某路径的软件包install /PATH/TO/package_file

1.3卸载:remove

1.4升级:update

1.5查询:

         info

         searchKEYWORD

         listall|installed|availiable

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

1.6重新安装:reinstall

1.7降级:downgrade

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

1.9生动生成缓存:makecache

1.10包组:一次管理一组程序包

grouplist

groupinfo "GRP_NAME"

groupinstall "GRP_NAME"

groupremove "GRP_NAME"

1.11仓库:

repolist [all|enabled|disabled] 列出所有可用仓库,默认是all

repoinfo [all|enabled|disabled] 查看仓库相关信息

 

4 .使用光盘当做本地仓库

1)挂载光盘至某目录

mount -r /dev/cdrom /media/cdrom/

2)在baseurll栏使用file://指明其访问路径;

示例:

wKiom1X2uhuRKPO2AAMhq7dbGpU842.jpg

5.创建本地仓库:

1)安装 yum installcreaterepo

[root@localhost yum.repos.d]# yum installcreaterepo

2)在本地创建一个存放rpm包的目录

[root@localhost ~]#mkdir /yumload

3)将DVD中的Packages中的rpm包全部拷贝到本地rpm包的目录

4)使用createrepo指令创建本地仓库

[root@localhost ~]#createrepo/yumload/

5)配置repo文件

[CentOS6.7onLocal]                   
name= a local repo   
baseurl=file:///yumload/    
enabled=1                 
gpgcheck=1
cost=101


你可能感兴趣的:(color)