软件安装包的管理

rpm安装包的管理

rpm的数据库( 公共) :/var/lib/rpm
程序包名称及版本
依赖关系
功能说明
包安装后生成的各文件路径及校验码信息

安装
rpm:{-i}
-v:显示详细信息
-h:以#显示程序包管理执行进度

rpm -ivh PACKAGE_FILE …
[install-options]
–test :测试安装,但不真正执行安装过程
–nodeps:忽略依赖关系
–replacepkgs: 覆盖并重新安装

–nosignature:不检查安装包的合法性
–nodigest 不检查包的完整性

–noscript:不执行程序包脚本片段:
%pre:安装前脚本
%post:安装后脚本
%preun:卸载前脚本
%postun:卸载后脚本

升级:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE ..
rpm {-F|–freshen} [install-options] PACKAGE_FILE ..

upgrade:安装时有旧版程序包,则升级,如果存在旧版程序包,则安装
freshen:安装时有旧版程序包,则升级,如果不存在旧版程序包,则不执行任何操作

所以经常用的方式有:

rpm -Uvh PACKAGE_FILE … 升级安装操作
rpm -Fvh PACKAGE_FILE … 升级操作

注意:

  1. 不要对内核进行升级,升级内核可能导致无法启动,Linux支持多内核版本并存,

    因此直接执行安装操作

  2. 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的的同一个配置文件
    并不会直接覆盖老版本的配置文件,这时需要对新版本的配置文件重命名,二进制文件直接覆盖   FILENAME.rpm

查询:
rpm -q|query [select-options] [query-options]
select-options :挑选选项
-a:所有的包,安装的 rpm -qa
-f:查询指定的文件由哪个程序包生成
-p:/PATH/TO/PACKAGE_FILE 针对尚未安装的程序包包文件做查询操作,常常和qpl三个选项一起用

query-options
–changlog:查询rpm包的changlog
-c : 查询程序的配置文件
-d:查询程序的文档
-i:information
-l: 查看指定程序包安装后生成的所有文件
–scripts:程序包自带的脚本程序
-R:查询指定的程序包所依赖的CAPABILITY
常用的用法:
-qi PACKAGE , -qf PACKAGE , -ql PACKAGE , -qd PACKAGE
-qpi PACKAGE_FILE , -qpl PACKAGE(表示某一包安装完成后可能会产生哪些文件)

卸载:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] PACKAGE
[–nodeps] 忽略依赖关系

校验:与/var/rpm 下的数据库内的数据进行比较
rpm {-V|–verify} [select-options] [verify-options]
安装包在安装后,如果某时刻对安装包的内容产生了修改,是可以查询到的
校验的主要内容包括文件的大小,文件的权限,文件的属主和属组是否发生改变
rpm -V 校验某程序包
S:文件的大小不同
M:文件的权限不同
5:(MD5)文件的校验码发生了改变
L:路径不匹配
T:最近修改上的时间戳改变
D:设备文件匹配
U:属主不匹配
G:群主不匹配

包的来源性验证及完整性验证

完整性验证:

合法检测的基本原理:合法性的检测主要是检测从发送者到接收者这个过程中文件是否发生
了改变,通常的做法是当RPM包制作完成后会用单向加密算法计算一次,然后得到校验码,
然后接收者得到RPM包时,再用同样的算法计算一次,比较两次得到的校验码是否一样,如
果一样则表示安装包合法,如果不一样表示安装包出现了错误,实际中作者还需要对安装包
的校验码进行加密,防止被其他人篡改

rpm -K 加包的文件名,检验包的来源是否合法
/etc/pki/rpm-gpg 安装系统完毕后的校验密钥在这个目录下面
公钥加密:
对称加密:加密,解密使用的同一的密钥
非对称加密:密钥是成对的
public key:公钥 一个私钥对应一个公钥
secret key:私钥 一个私钥对应一个私钥
其原理就是:制作者利用私钥加密,接受者用公钥解密,两者是成对的,传输过程中
有人篡改之后再用私钥加密后接收者用此前的公钥是不能打开的,这样可以起到加密作用

检验过程:
导入所需要的公钥:
rpm –import /PATH/FROM/GPG_PUBKEY-FILE(公钥文件)
rpm -K 加包的文件名 检验包的来源是否合法

rpm 常用命令实现程序安装包的管理:
安装:-ivh ,–nodeps ,–replacepkgs
卸载:-e,–nodeps
升级:-Uvh,-Fvh,–nodeps,–oldpakeage
查询:-q,-qa,-qf,-qi,-qd,-qc,-q –scripts, -q –changlog,-q –provides,-q –requires
校验:-V

rpm安装的时候需要注意的问题:
1.生产中来源性和完整性的检测非常重要
2.包与包之间的依赖问题需要注意,不然会一直提示依赖关系,最好是出现一个依赖性马上将它写入命令行
3.如果对软件的某些功能需要定制,那么不能用rpm安装,需要自己手动编译


yum

yum是一个客户端

yum的工作方式:
yum的工作方式实际上是一种在线更新的机制,工作的原理是当每次使用yum命令的时候
yum都会根据配置文件去相应的资源库上下载一份元数据包,数据包里面含有包的名字,版本
还有包和包之间的依赖关系 ,yum将这份数据包下载好后会放在本地的一个缓存里面,然后进行分析需要的安装包里面哪些是已经安装了的,哪些是未安装的,分析完毕之后,开始充当文件传输服务客户端的作用,将需要的安装包下载下来,安装,然后删除安装包,但是元数据包它却是不会删除的可以方便下次的服务,同时,元数据包还会有一个校验文件,通过比对校验文件可以知道服务器上的元数据包是否发生改变
元数据书可以通过rpm包生成
yum 是基于rpm来进行各种安装,卸载,升级操作

YUM :Yellow Update Modifider

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

它的性质上应该是一个文件服务器

支持的协议有
ftp://
http://
file://

yum客户端
配置文件:
/etc/yum.conf :主配置文件提供指向各个仓库的公共配置
/etc/yum.repos.d/*.repo 两个文件是前一个指向后一个,次要的为每一仓库提供特有的配置

仓库的定义:
[repositoryID] 仓库ID,里面不要带任何的符号,包括空格
name= 仓库名 ,仓库的描述信息
baseurl= url:1 可以有多个地址
url:2
url:3 等号两边不能有空格
enabled=(1|0) 是否启用该仓库
gpgcheck=(1|0) 是否检查文件完整性及文件来源合法性
gpgkey=URL 密钥文件的URL ,有可能是对方仓库直接提供
failovermethod={roundrobin|priority} roundrobin 随机 priority 优先级,顺序 默认为ronudrobin
cost= 开销数字,默认为1000

yum常用命令
显示仓库列表:
repolist [all|enabled|disabled]
显示程序包:
list:@** 已经安装的
all:显示所有
available:可用的
installed:已经安装的
updates:所有更新的

安装程序包
install package 可以在package后面指定版本
升级程序包
update package
卸载程序包
remove package 卸载时注意的是,如果某个程序包依赖于另外一个程序包卸载底层的会将上层的一起卸载掉

查看程序包的information
info package
查看指定的特性(可以是文件)是由哪个程序包所提供的:
provides feature1 [feature2]
清理本地缓存:
clean
构建缓存:
makecache
搜索程序名及简要的信息
search string
重新安装:
reinstall package
降级安装
downgread package
依赖关系查看
deplist package
查看yum事物历史
history [info| list| package-list]
yum history info 2
yum history undo # 撤销历史中的的某个操作

包组相关的命令:
grouplist:显示包组
groupinstall:包组安装,要用引号将包组括起来
groupremove:卸载包组
groupupdate:包组升级

yum 清楚缓存,为什么要清楚缓存?
因为如果配置文件里面的yum源发生了变化,但是缓存还是以前的,那么安装时就会报错,此时需要清除缓存,重新创建缓存
如何使用光盘当做本地yum仓库
挂载光盘至某目录下,例如/media/cdrom
# mount -r -t isso9660 /dev/cdrom /media/cdrom

创建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=

yum的命令行选项:
–nogpgcheck:不进行来源和完整性检查
-y:自动回答为yes
-q:静默模式
–noplugins:禁用所有插件

如何创建yum仓库
yum install createrepo (创建这个文件后可以帮助我们更好的管理repodata目录)
然后去镜像上下载自己需要的rpm包,下载到任选的一目录上(一般创建为repo),在这个目录上创建
package目录,然后在这个目录上执行命令 createerepo ./ 即可

配置yum源
yum源的配置很简单

1.进入yum的配置文件/etc/yum.conf  或者  /etc/yum.repos.d/
这里需要注意的是前者为所有yum源的公共配置,里面指明了是否保存缓存,yum日志记录的位置是否进行合法性检查等等
后者是定义yum源的目录,要定义yum源只需要在里面创建一个具有yum格式的文件即可

2.编写yum文件
一个yum源有三个条目是必备的,下面的配置中前三项为必备
[CentOS7]
name=base
baseurl=http://172.16.0.1/pub/CentOS7/   (假定网址)(这里可以填写多个url地址,且这个地址一定是指向repodata这个目录的父目录,地址可以将国内叫快的镜像站的网址填入这儿)
gpgcheck=1
enabled=1(默认为1,开启状态)


源码编译安装

源码编译安装具有rpm安装不具有的一些优势,比如功能定制,可以根据自己的需要选择启用或者关闭某些功能,不过需要注意的是,如果编译完成了,是不能进行定制的,定制是在编译的第一步就应该确定

如何实现程序包的编译安装:
源码rpm包才能编译
testapp-VERSION-relwase.src.rpm 这种后面没有注明平台的.带src的包即源代码包
使用命令rpmbuild命令制作成二进制格式的rpm包,然后在安装

源代码组织格式:
多文件:文件中的代码之间,很可能存在依赖关系:
源代码 预处理 编译 汇编 链接
C C++ :make (configure–>Makefile.in–>makefile)
Java : maven

编译步骤
安装的前提:
安装“Development Tools”和“Development Libraries”
tar 解压

cd到解压的目录

1  ./configure
–prefix=/path/to/somewhere (指定程序的安装路径)
–sysconfdir=/PATH/TO/CONFFILE_PATH(配置文件的路径)
man文件路径:安装在–prefix指定的目录下的man目录:/usr/share/ma
………….
………….
–help:获取这个脚本的使用格式

2   make

3   make install

4   修改PATH环境变量,以能够识别此程序的二进制文件路径

5   默认情况下,系统搜索库文件路径/lib,/usr/lib; 要增添额外的搜寻路径,在/etc/ld.so.conf.d/中创建以 .conf为后缀名的文件,而后要把增添的路径直接写至此文件中, ldconfig 通知系统重新搜寻库文件

原创文章,作者:Double f,如若转载,请注明出处:http://www.178linux.com/73933

(0)
Double fDouble f
上一篇 2017-04-23
下一篇 2017-04-23

相关推荐

  • 7.22_Linux入门和帮助文件的使用

    Linux系统登录的两种方式 GUI:图形界面 Graphic User Interface 默认在Linux下面有三种可用的图形界面程序可选,分别为 1.gnome(c,图形库gtk) 2.kde(c++,图形库qt) 3.xface(轻量级桌面) 每一种图形界面下面开发的软件并不兼容,因为它们开发时候所用的开发语言也各不相同 启动方式:cli模…

    Linux干货 2016-08-04
  • 当Web访问性能出现问题,如何深探?

    对运维或开发工程师来说,遇到访问性能问题时,最先需要定位的是问题出现在哪个环节,是网络的问题,服务端的问题,还是客户端的问题? 往往技术人员喜欢把精力放在保障后端服务的可用性方面,而对前端界面是否能正常装载,是否能完整渲染不是太关心。但从业务的角度来说,界面承载的才是最终的业务,业务是通过人机交互来实现的。 日常我们遇到哪些场景需要定位访问性能瓶颈? ·不同…

    系统运维 2017-01-09
  • 第十周练习-脚本部分

    1、写一个脚本 (1) 能接受四个参数:start, stop, restart, status start: 输出“starting 脚本名 finished.” … (2) 其它任意参数,均报错退出; #!/bin/bash # case $1 in start)     echo&…

    Linux干货 2016-12-31
  • cat命令了解

    1 查看文件在LINUX下一切皆文件,光看见文件名和目录名对我们来说,还远远不够。今天,就来介绍一下可以打开文件的命令cat。当然,二进制的可执行文件,不能用cat。在CentOS7下,以/etc/profile文件为例,如下: 首先,怎么打开这个文件呢?直接执行:cat /etc/passwd. 这么多行,能不能看见行号呢?cat -n /etc/pass…

    Linux干货 2017-04-03
  • 初识varnish

      实验拓扑 varnish主机    地址192.168.150.137 后端web主机     web1静态服务192.168.150.138     web2动态服务192.168.150.140 varnish的安装及开启 varnish主机: ~]# yum info varni…

    Linux干货 2017-01-05
  • 第四周作业

    1.复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限; [root@centos7 ~]# cp -r /etc/skel/ /home/tuser1[root@centos7 ~]# ls -ld /home/tuser1drwxr-xr-x. 2 root root 72 1…

    Linux干货 2016-11-27

评论列表(1条)

  • renjin
    renjin 2017-04-28 09:53

    主要介绍了linux下安装包的管理,内容写的很详细,包括rpm包管理,yum源管理,和编译安装的步骤。排版可以再往好的排一下,那样就更好了