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

相关推荐

  • N25 – 第二周博客作业

      Linux上的文件管理类命令有哪些,其常用的使用方法及相关示例演示 more: more命令非常简单,只用more file即可,但是more命令有一个特点,就是翻屏至文件尾部后自动退出 less: less命令就是在使用man时是一样的,因为man手册就是调用less来查看的  head: head命令用来查看文件的前#行,#默认为…

    Linux干货 2016-12-07
  • 系统无法正常启动的解决之道

    先来看下配置文件的格式: [root@centos6 ~]# uname -r 2.6.32-642.el6.x86_64 [root@centos6 ~]# cat /boot/grub/grub.conf  # Note that you do&…

    Linux干货 2016-09-19
  • 1.计算机的组成原理与linux初识

    计算机的组成原理 抽象 具体 Linux初识 负责与硬件交互,并向外提供系统调用 Linux大家庭 suse系列: opensuse suse enterprise redhat系列: centos redhat Debian系列: ubuntu debian 命令总结 显示本机IP(需要root权限) [root@localhost dev]# ifcon…

    Linux干货 2017-07-02
  • Linux用户组管理

    马哥网络教育21期+第三周练习 用户及用户组 用户配置文件     用户:UID,/etc/passwd     组:GID,/etc/group 密码配置文件     用户:/etc/shadow    &n…

    Linux干货 2016-09-02
  • N25第一周作业

    1、描述计算机的组成及其功能。 硬件部分: 软件(系统)组成部分 功能模块划分: 进程管理:系统资源的分配单位(线程是CPU分配单位) 存储管理:内存分配,存储保护,虚拟存储 设备管理:管理外设接口 文件管理:保存程序和数据等软件信息 程序接口:提供指令或函数的调用方式,使程序能够调用系统的资源 用户界面:为用户提供操作环境    &nb…

    Linux干货 2016-12-12
  • N22-第一周博客作业

    1、计算机的组成和及其功能? 计算机由硬件,操作系统,软件三大部分组成。 硬件: 计算机系统中所使用的电子线路和物理设备,主要由中央处理器( CPU )、存储器、外部设备(输入输出设备、I/O设备)及总线等组成。 a、中央处理器(CPU)的主要功能是根据存储器内的程序 ,逐条地执行程序所指定的操作。中央处理器的主要组成部分是:数据寄存器、指令寄存器、指令译码…

    Linux干货 2016-08-15