rpm&yum

软件包管理

软件运行环境

软件包基础

Rpm包管理

Yum管理

定制yum仓库

编译安装

ABI

应用程序的二进制接口,和操作系统相关,一个程序二进制编好了,想要在你的系统上跑,要符合你的操作系统的接口标准Windows:PE  linux:ELF

WINDOWS和LINUX二进制程序是不兼容的

库级别的虚拟化

Linux:WINE 可以让Windows程序在linux跑

Windows:cywin

API:应用程序的开发接口

我们做软件,不是从头到尾所有的软件自己构建,有些现成的功能我们可以放好,写成模块,,下次想用这个功能调用这个模块就可以了,调用这个模块,就涉及到一个接口,这个接口就是API

C语言是文本方式写的程序,文本不能再操作系统上跑,需要最终解析成二进制,才能执行

程序源代码——预处理——编译—-汇编—-链接

 

静态库,.a最终生成的文件,既包括目标文件,也包括依赖库文件,这个文件存放的内容全,放到任何主机上都能运行,

动态库,.so,动态库不会打包的一起,还是放在磁盘上,不会放到二进制文件中,只是一个指针

 

C语言编好的二进制程序,只能通过符合操作系统

标准的接口api来运行,和操作系统打交道,

 

Java的虚拟机,Java的程序是依赖虚拟机,

而Java的虚拟机有多种版本,

虚拟机帮助和操作系统打交道,

不需要程序直接和操作系统打交道

 

 

 

 

 

二进制应用程序的组成部分:二进制文件,库文件,配置文件,帮助文件  ,,还有数据文件,日志

程序不仅需要程序本身而且严重依赖于库文件,

复杂的程序都有配置文件,稍微小点的工具ls,就没有配置文件,要想配置加个选项就好啦 ls -a

一些大型的软件,都有配置文件,用来设置程序不同的工作,配置文件的功能相当于选项的功能

加上选项就有不同的效果,对于大软件来说由于太复杂了,加单一选项没法加,只能加到配置文件当中,而且加到配置文件能够存的住,(ls -a)的选项存不住,下次还需要重新加,

Bash

程序包管理器

对于linux来讲,安装一个软件,使用一个软件,最早以前,源码编译,C语言的源代码(hello.c)直接运行是不可以的,需要用jcc工具把它编译成二进制才能运行,

编译成二进制进行运行,对普通用户,太难

为了降低难度,提供软件包的管理器,软件包的管理器,就相当于,你不需要记二进制的编译器,只需要记最基本的工具,

在linux中,都是以统一的文件后缀,组织这些文件的,  不同的版本使用的工具是不一样的,

Debian:deb文件,dpkg包管理器

Redhat:rpm文件,rpm包管理器

对于红帽来讲,所有的安装包都是统一后缀的,

rpm中集成了很多软件,安装管理,rpm -i 安装的时候,自动就把rpm解开,按事先预定好的路径放好,设置好

 

 

 

 

 

 

Rpm包的命名格式,包名,包的版本号,作者自己加的版本信息,CPU架构,rpm

Name-VERSION-release.arch.rpm

包的分类和拆包

Application-VERSION-ARCH.rpm:主包

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

Application-utils-VERSION-ARCH.rpm:工具子包

Application-libs-VERSION-ARCH.rpm:库子包

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

解决依赖包管理工具:

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

Apt-get:deb包管理器前端工具

Zypper:suse上的rpm前端管理工具

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

库文件

查看二进制程序所依赖的库文件

Ldd /PATH/TO/BINARY_FILE

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

Ldconfig 加载库文件

/sbin/ldconfig -p:显示本机已经存在的所有可用库文件名及文件路径映射关系

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

缓存文件:/etc/ld.sl.cache

程序包管理器

Rpm

不仅是个后缀也是个命令

功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验 等管理操作

包文件组成(每个包独有)

Rpm包内的文件

Rpm的元数据,如名称,版本,依赖性,描述等

安装或卸载时运行的脚本

所谓的安装其实就是把里面包含的文件给解开,按事先规定好的路径一个一个给复制过去,(按规定好的目录,设好相应的属性,所有者,所属组)

 

系统安装好的rpm包,在linux系统中有个数据库,存你安装了那些rpm包,详细的rpm信息,什么时候安的,生成了那些文件,都放在那些目录中

数据库(公共)目录:/var/lib/rpm

程序包名称及版本

依赖关系

功能说明

包安装后生成的各文件路径及校验码信息

这里面信息很重要,含有你装了那些包,

 

管理程序包的方式:

使用包管理器:rpm

使用前端工具:yum,dnf

获取程序包的途径

1系统发布的光盘或官方的服务器

Centos镜像

https://www.centos.org/download/

http://mirrors.aliyun.com

http:mirrors.sohu.com

http:mirrors.163.com

  • 目官方站点

3第三方组织 Fedora-epel

企业版额外附加的程序包,光盘放不下,经红帽官方测试,可以使用

Centos系统上使用rpm命令管理程序包:

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

安装:rpm{-i|–install} [install-aptions ]PACKAGES_FILE…

-v verbose  冗长

-vv         详细信息

-h:以#显示程序包管理执行进度

Rpm -ivh PACKAGE_FILE…安装包

Rpm -e 卸载包

 

[install-options]

–test:测试安装,但不真正执行安装,

–nodeps:忽略依赖关系

–replacepkgs   覆盖安装  –replacefiles 替换文件

–nosignature:不检查来源合法性

–nodigest:不检查包的完整性

–noscripts:不执行程序脚本

%pre

%post

%preun

%postun

Rpm    -ivh  

Rpm    -ql  

Rpm    -qa

Rpm升级

Rpm{-U|–upgrade}[jinstall-options] PACKAGE_FILE…

Rpm{-F|–upgrade}[jinstall-options] PACKAGE_FILE…

Upgrade:安装有旧版本程序包,则升级

如果不存在就版本程序包,则安装

Freshen:安装有旧版本程序包,则升级

如果不存在旧版程序包,则不执行升级操作

Rpm   -Uvh   PACKAGE_FILE…

Rpm   -Fvh   PACKAGE_FILE…

–oldpackage:降级

–force :强制安装

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

  • 如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名后保留

 

包查询

Rpm  -qa 查询所有安装的包

Rpm -q  tree 查找该包有没有安装

Rpm -qa | grep tre

Rpm -qa “tre”

Rpm -qf /usr/bin/tree  该文件来自哪个包

Rpm

-a 所有包

-f 查看指定的文件由哪个程序包安装生成

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

–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供

–whatrequires CAPABILITY:查询指点的CAPABILITY被哪个包所依赖

Rpm2cpio 包文件|cpio -itv 预览保内文件

Rpm2cpio 包文件|cpio-id  “*.conf”释放包内文件

 

【query-options】

–changelog:查询rpm包的changelog  更改其日志

-c 查询程序的配置文件

-d 查询程序的配置文档

-i information

-l 查看指定的程序包安装后生成的所有文件

–scripts 程序包自带的脚本

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

-R 查询指定的程序包所依赖的CAPABILITY

常用查询用法:

-qi

-qf

-qc 只是配置文件

-ql 所有文件

-qpi

-qpl

-qa

 

 

包卸载

Rpm{-e|–erase}[-allmatchses][–nodeps]    [–nosctipts][–notriggers][test]

全部匹配     忽略依赖性

包校验

Rpm {-V|–verify}[select-options][verify-options]

包来源合法性及完整性验证

完整性验证:SHA256

来源合法性验证:RSA

公钥加密:加密解密使用同以秘钥

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

导入所需要公钥

Rpm -K|checksig rpmfile 检查包的完整性和签名

Rpm –import/etc/pki/rpm-gpg/RPM-GPG-KEY-CectOS-7

CentOS 7 发行版光盘提供:RPM-GPG-KEY-CectOS-7

 

Rpm -qa “gpg-pubkey”

 

 

 

Centos:yum dnf

 

Yum是依赖于yum数据库的,一般叫yumrepo仓库

客户端要想利用yum安装,需要做一下配置,在自己的电脑上配置仓库在哪,仓库可能不在同一台电脑上,可能在网络上另外一个主机,所以需要在客户端配置一个yum仓库的路径,baseurl=ftp http/s

可以通过网络路径寻找yum的路径,

 

配置好软件,客户安装软件,yum install http(包名)

当敲命令,它就可以查它的配置,通过路径找仓库的服务器,在仓库的服务器上存了仓库的服务信息

除了必须的rpm包文件,仓库还记录的这些包之间的依赖关系,这些包是怎么分组的(同类型的包在一组),记录包元数据,包组信息,

可以理解为一个数据库,表现为目录repodata 信息存在这个目录中

Rhel5 /server/repodata

/server/*.rpm

Centos6 /Packages/*rpm

dir /repodata/*

 

Baseurl,路径必须是repodata所在文件夹的上一级目录

 

在本机上baseurl=file:///dir  dir在目录的根下

 

 

 

当客户端敲yuminstall httpd的时候,连到服务器上查,有这个包吗,有依赖性吗,这些信息会自动下载下来,缓存在自己的机器上,下一次就不需要连到服务器上,直接查缓存,现在需要装包http,需要再次下载下来rpm文件,下载到本机的某一个目录里,安装完成,包就默认删除了,发现依赖别的包,就同时下载下来,安装,(安装完,只留缓存)

 

对于yum重要的两点

1配置文件,路径

2清缓存

 

本地yum的配置文件,/etc/yum.conf

Yum仓库配置文件的客户端 /etc/yum.repo.d

 

Cd /etc/yum.repos.d

Mkdir bak

Mv *.repo bak/

光盘做yum源,光盘本身所有的配置,元数据,rpm包都在里面

光盘的挂载路径,lsblk 默认为路径 /run/media/root/ecntos 7 x86_64

神奇的目录 ls /misc/cd/

Vim base.repo

最简单格式

[base]

baseurl=file:///misc/cd

gpgcheck=0

 

缓存文件

[root@centos7 yum.repos.d]# du -sh /var/cache/yum/

92M /var/cache/yum/

Yum clean all  清缓存

 

制作yum源服务器

共享服务,ftp    httpd

共享资源存放的目录ftp   /var/ftp/pub

httpd   var/www/html

 

放在,cd /var/ftp/pub

mkdir  centos/6/os/x86_64/

Mount /dev/sr0 centos/6/os/x86_64/  进到这个目录这就是光盘内容

Systemctl start vsftpd 启动ftp服务

ftp://地址   访问

关闭防火墙,

关闭安全策略

客户端配

[base]

Name =

Baseurl=ftp://地址/pub/centos/6/os/x86_64/

Gpgcheck=0

 

Ls /app/  tree-1.5.3-3.e16.x86_64.rpm

Createrepo /var/ftp/pub/app/  制作仓库

Yum install 包  安装

Yum remove 包 移除

Rpm -q http 判断

Package=http;rpm -q $package &> /dev/null || yum  -y install package   -y 自动装,没有提问yes

 

Yum reinstall tree  对于破话一部分的rpm安装

 

Yum的常见选项  install  remove  -y   list   repolist列出仓库列表,clean all  history

Yum gropeinstall

Rpm的常见选项  -qi显示相关的信息  -ql显示文件列表

  -qf查询拥有指定文件的包   -q   –scripts脚本    -qa查询所有的安装包

 

 

 

 

 

 

Yum rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,

Yum repository(仓库):yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)

文件服务器:http://   https://      ftp://    file://

Yum客户端配置文件

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

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

仓库指向的定义:

[repositoryID]

Name=Some name for this repository

Baseurl=url://path/to/repository/

Enable={1|0}

Gpgcheck={1|0}

Gpgkey=URL

Enablegroups={1|0}

Failovermethod={roundrobin|priority}

Roundrobin:意为随机挑选,默认值

Priority:按顺序访问

Cost=默认为1000

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90787

(0)
sunchunjiangsunchunjiang
上一篇 2018-01-02
下一篇 2018-01-02

相关推荐

  • 面向对象

    语言分类 面向机器:抽象成机器指令,机器容易理解。代表:汇编语言 面向过程:一件事情分步骤来完成,出现各种情况有解决办法一一对应,问题规模小可以步骤化、按部就班的处理。代表:C语言 面向对象oop(object Oriented Programming):随着计算机解决问题的规模扩大、情况更复杂,需要很多部分协作,面向过程编程就不合适了,演变出了面向对象编程…

    Linux干货 2017-11-13
  • 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述         在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算…

    Linux干货 2015-07-28
  • OpenSSL 的使用

    OpenSSL 是一个开源项目,其组成主要包括一下三个组件:     openssl:多用途的命令行工具     libcrypto:加密算法库     libssl:加密模块应用库,实现了ssl及tls openssl可以实现:秘钥证书管…

    Linux干货 2017-06-07
  • LVS-NAT+LVS-NAT基于NFS做wordpress负载均衡实验

    Lvs-nat实验 实验设备:三台centos虚拟机 Director:DIP:10.0.0.254  VIP:192.168.208.129 RS1:RIP:10.0.0.1 RS2:RIP:10.0.0.2   首先都安装ipvsadm、telnet、httpd   配置网卡:RS2:hostonly模式:10.0.0.2/24 配置…

    2017-11-21
  • N25第一周作业-Linux初步认识

    一.描述计算机的组成及其功能。     计算机组成有两部份,一为硬件,二为软件OS         硬件:CPU,负责运算操作。          &…

    Linux干货 2016-12-06
  • CentOS6.7上编译安装MariaDB

    CentOS6.7上编译安装MariaDB

    系统运维 2016-06-03