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)
上一篇 2018-01-02 19:25
下一篇 2018-01-02 19:49

相关推荐

  • 22期第四周课程练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost tuser1]# cp   -r    /etc/skel/   /ho…

    Linux干货 2016-09-08
  • shell-语句总结

    shell脚本语法总结 过程式编程语言: 顺序执行 选择执行 循环执行 shell默认是顺序执行,如果有判断或循环语句则执行判断或循环。 条件判断 if     单分支         if 判断条件:then  &nb…

    Linux干货 2016-08-21
  • 双主模型的lvs-dr高可用负载均衡集群

    实验目的:使用keepalived实现lvs-dr模型双主高可用集群 实验环境:两台virtual server(实现lvs的双主)、两台real server(安装web service,用于负载均衡)、一台clietn用于验证结果 注意:为了不影响实验结果,在实验开始前先关闭iptables和selinux 操作步骤: 一、配置IP 1.配置A主机的IP…

    2017-05-13
  • 人志建,则无敌—网络基本知识加简单脚本练习

    马哥21期网络班-8周博客作业 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:网桥就是把2个不同的网段桥接起来;可隔离冲突域。 集线器:集线器就是把多根以太网线或光纤集合连接在同一段物理介质下的装置;工作在物理层;不能隔离冲突域。 二层交换机:工作于OSI模型的第2层(数据链路层),故而称为二层交换机。二层交换技术的发…

    Linux干货 2016-08-29
  • Linux-进程管理

    本小节介绍  1、进程的描述  2、用户怎么样管理进程  3、进程管理的命令 进程的概念        内核的功能:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等。        Pro…

    2017-07-02
  • Linux基本知识之echo命令详解

    该博文以CentOS6.8_x86_64系统为基础,Xshell使用pts/X终端登录CentOS6.8系统,以root身份登录系统。 为什么学习echo命令?     echo是一种最常用的与广泛使用的内置于Linux的bash和C shell的命令,通常用在脚本语言和批处理文件中来在标准输出或者文件中显示一行文本或者字符串。…

    Linux干货 2016-07-29