码迷,mamicode.com
首页 > 系统相关 > 详细

Linux软件包管理

时间:2017-12-05 10:29:09      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:yum   rpm   

软件运行和编译

ABI:应用程序的二进制接口,与操作系统相关,如果一个二进制程序创建完成要在操作系统上面运行,就要符合操作系统的二进制标准,标注就为API

    Windows与Linux不兼容

    LSB为Linux的二进制标准

    PE32为Windows二进制标准

虚拟化支持:

    Linux:WINE(可以在上面跑Windows程序)

    Windows:Cywin(可以在上面跑Linux程序)

API:应用程序开发接口,调用编译好的二进制文件要通过API接口调用

静态库:.a

动态库:.so


ldd "二进制文件" :用来查看这个二进制文件调用了哪些库

有很多库会被多个文件同时调用


包管理器

二进制应用程序的组成部分

      二进制文件、库文件、配置文件(小工具不具备配置文件)、帮助文件

软件包管理器:

      debian:deb文件,dpkg包管理器

      redhat:rpm文件,rpm包管理器


包命名和工具

包:分类和拆包

   Application-VERSION-ARCH.rpm 主包

   Application-devel-VERSION-ARCH.rpm 开发子包

   Application-utils-VERSION-ARHC.rpm 其他子包

   Application-libs-VERSION-ARHC.rpm 其他子包

包之间:可能存在依赖关系,甚至循环依赖

解决依赖包的管理工具:

   yum:rpm包管理器的前段工具

   apt-get:deb包管理器前段工具

   zypper:suse上的rpm前段管理工具

   ndf:Fedora 18+ rpm包管理器前端管理工具

管理和查看本机装载的库文件

   ldconfig 加载库文件

         -v:查看目前所有正在加载的库文件

配置文件:/etc/ld.so.conf.d/


软件包管理器:

      功能:可用来安装、卸载、管理rpm后缀的文件


/var/lib/rpm数据库中存储了系统上安装好的一系列rpm包信息,很重要,此目录下的文件不能丢失


管理程序包的方式

      使用包管理器:rpm

      使用前段工具:yum

获取程序包途径:

    (1)系统发版的光盘或官方服务器;

       Centos镜像:

       http://www.centos.org/download/

       http://mirrors.aliyun.com

       http://mirrors.sohu.com

       http://mirrors.163.com

       第三方组织

       Fedora-EPEL:光盘中没有的软件包会放在epel源中;


rpm包管理

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

安装:

    rpm {-i|--install}[install-options]包文件

    -v:显示安装的详细过程

    -vv:更详细的安装过程

    -h:安装的时候显示进度条

    rpm -ivh 包名

[install-options]

    --test:测试安装,不真实安装

    --nodeps:忽略依赖关系

    --replacepkgs 替换包(如果有一个包已经安装,使用这个选项则是重新安装,但同时也会覆盖修改过的配置文件,如果不想覆盖,则使用rpm2cpio "包名" | cpio -id 不想被覆盖的文件路径位置;则可以实现单独恢复某一个文件,但是复制过去属性不一定一致,所以使用这种方法要注意)

    --replacefiles 两个rpm包中有个别文件冲突的时候,要覆盖的话则使用此选项


rpm包升级

    rpm [-U|--upgrade] [install-options] 包名(如果有就版本升级,不存在旧版本则安装,可以当升级也可以当安装)

    rpm [-F|--freshen] [install-options] 包名(只能当升级,如果没有旧版本就不安装了)

    --oldpackage:降级使用,就是如果安装的一个包比已经安装的包的版本低,还需要它们同时存在的话,就需要使用这个选项,即使这样安装了,原先老的那个包还是存在

    --force:强制安装

如果安装了软件并且修改了软件内的一些文件,再卸载之后,配置文件会自动保存备份下来


rpm包查询

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

    rpm2cpio 包名 | cpio -tv (查看包里面包括哪些文件)

    rpm -qlp rpm文件(表示一个包还没装)

[select-options]:

    -q:查询某个包是否安装(一般要执行的操作全都要附上这个选项)

    -a:查询所有安装的包

    -f:用来查询文件是来自于哪一个包

    -p:针对未安装的程序包文件做查询操作

    --whatprovides 包提供的功能:查询哪一个包拥有某一个功能

    --whatrequires 哪个包依赖的功能:查询哪一个包依赖这个功能

    -e:卸载某个包

[query-options]:

    --changelog:查询rpm包的更改日志

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

    -d:查询程序的文档

    -i:查询包的信息

    -l:查询某个包安装完成后生成的配置文件列表

    --scripts:查询某个包中是否带有特定脚本

    -R:查询指定包依赖于什么功能

    --provides:与--whatprovides一样的功能


包卸载:

    rpm -e [--allmatches][--nodeps][--noscripts][--notriggers][--test] 包名


包校验:

检查包来源的合法性以及完整性

    完整性严重:SHA256

    来源合法性认证:RSA


公钥加密:

 对称加密:加密、解密使用同一密钥 

 非对称加密:密钥是成对儿的 

 public key: 公钥,公开所有人 

 secret key: 私钥, 不能公开 


导入所需要公钥

    rpm -K rpmfile 检查包的完整性和(签名:包的一系列信息)

    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    CentOS 7发行版光盘提供的公钥:RPM-GPG-KEY-CentOS-7

    rpm -qa "gpg-pubkey*"(查询公钥的位置)


Yum工具

注意:baseurl写的yum仓库的位置一定是repodata的上级目录

     本机配置yum,baseurl就要写file://开头的后面跟文件位置

     yum第一次执行会将yum仓库中的包元数据以及包组信息缓存到本地

     当要使用新的yum仓库的时候要清除缓存

yum:用于解决包之间的依赖性关系

yum的配置文件位置在/etc/yum.conf里

$basearch:基础平台;i386, x86_64

$releasever:当前OS的发行版的主版本号

rpm包的元数据存放在repodata中

yum仓库的设置

要在/etc/yum.repos.d下面创建一个后缀为.repo文件,当中写入配置文件信息

小技巧:当开机添加物理硬件系统不识别的时候,则可以使用"echo '- - -' > /sys/class/scsi_host/host2/scan"命令

本地源的配置格式如下:

[base](名字)

name="随机的名字"

baseurl=file:///misc/cd(写yum仓库的存放位置)

gpgcheck=0(不检查包的完整性以及可用性,不写的话默认是开启的)

enabled={0|1}(1是启用这个yum仓库,0则是暂时不启用)

如果要开启检查包完整性可用性,则要在.repo文件中写gpgkey=file:///"RPM-GPG-KEY-CentOS-7存在的位置"

一个文件中也可以配置多个yum仓库位置,当光盘中存在的包不够充足的时候则需要配置epel源,yum也会自动去epel源的位置寻找

网络yum源: 

 阿里云:

 https://mirrors.aliyun.com/centos/$releasever/os/x86_64/

EPEL的yum源:

 阿里云: 

   https://mirrors.aliyun.com/epel/$releasever/x86_64

当只有rpm包时将其制作成yum源的步骤

createrepo "位置" 就可以制作出一个yum源


yum命令的用法: 

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

显示仓库列表: 

 yum repolist [all|enabled|disabled]

显示程序包: 

 yum list 

 yum list [all | glob_exp1(通配符)] [glob_exp2] [...] 

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

安装程序包: 

 yum install package1 [package2] [...] 

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

[options]

  -q:静默安装

  -y:不做交互式处理自动安装


yum-config-manager   --add-repo="yum仓库位置"(直接创建一个.repo的文件,但是gpgcheck=0需要手动添加)

yum-config-manager --disable "仓库名"  禁用仓库

yum-config-manager --enable  "仓库名" 启用仓库


yum命令:

检查可用升级: 

 yum check-update

升级程序包: 

 yum update 包名

 yum downgrade 包名 (降级) 

卸载程序包: 

 yum remove 包名

查看程序包信息: 

 yum info 包名


清理本地缓存: 

 清除/var/cache/yum/$basearch/$releasever缓存 

 yum clean [ packages | metadata | expire-cache | 

rpmdb | plugins | all ]


构建缓存: 

 yum makecache

搜索:

yum search "关键字"

查看指定包所依赖的能力: 

 yum deplist 包名

查看yum操作历史: 

 yum history [info|list|packages-list|packages-info|

 summary|addon-info|redo(重新做一遍某一步)|undo(取消某一步的操作)|rollback|new|sync|stats] 

 yum history 

 例子:yum history info 6:查看第6部的历史操作 

 例子:yum history undo 6:取消第6部的历史操作

安装及升级本地程序包: 

 yum install 包名(使用yum安装rpm包,可以自动解决依赖性问题)

 yum update 包名

包组管理的相关命令:

 yum groupinstall 包组名(安装某个包组) 

 yum groupupdate 包组名(升级某个包组) 

 yum grouplist 包组名(查看包组信息) 

 yum groupremove 包组名(卸载某个包组) 

 yum groupinfo 包组(查看包租中包括的包) 


yum常见选项:

   yum install remove list -y repolist (clean all清除缓存) history


Linux软件包管理

标签:yum   rpm   

原文地址:http://blog.51cto.com/kaikai0720/2047426

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!