srpm
tarball 源码编译
通过下载源码编译软件到服务器,编译时会检测系统环境,设置编译参数,检测依赖关系,实际使用中因有些软件运行系统和使用中一样并且已经编译好了软件,就可以直接安装来使用,比如yum,rpm,这样也方便管理,升级,安装和卸载
RPM(RddHat Package Manager)特点:
软件已经编译过,可以直接安装,参数已经设置好,安装时会验证软件依赖,安装后软件信息写入到rpm数据库(/var/lib/rpm),方便查询安装,升级,卸载
缺点是软件已经编译好,要求是环境必须和编译时一致,无法指定编译参数
SRPM(Source RedHat Package Manager)包含原始码的rpm,需要注意的是srpm文件并未编译过,文件格式***.src.rpm一般包含了原始码,rpm以及配置文件(.configure,makefile),流程
编译srpm文件,生成rpm
安装rpm
rpm安装还是源码安装,都需要检测依赖性,yum安装会自动检测依赖文件并安装
安装流程:
客户端yum请求安装软件---》yum服务器去得依赖清单(patch/repodata)--->获取到本地/var/lib/yum和本地rpm数据库比较是否已经安装对应软件---》根据清单url获取安装文件通过rpm安装到本机,并且将软件信息写入到/var/lib/rpm
-i 安装
-u 更新已经安装的软件,若没有安装则安装
-f 更新已经安装的软件,若没有安装不安装
-h 查看安装进度
-v 查看安装过程
-e 卸载
--rebuilddb 重建rpm数据库
rpm- ivh 安装包名
一般安装时可能出现问题,如果需要强制安装需要指定参数
--nodeps 安装时出现依赖软件未安装,可指定强制安装,但是可能导致未知的问题
--relpacefile 如果系统已经有安装对应软件或者软件版本不一致时,指定此参数会覆盖已经安装的程序文件
--replacepkgs 重新安装某一个软件
--force 强制安装,作用和--replacefile+--replacepkgs
--test 测试安装包,实际不安装
--justdb 更新rpmdb不安装
--nosignature 略过数字签名
--prefix 自定安装文件安装路径
--noscript 安装时指定不运行脚本,比如数据库安装会初始化
以httpd为例
rpm -aq 列出所有安装软件
rpm -qc 列出指定安装软件配置文件
rpm -qi 列出软件信息
rpm -qf 列出某一个文件所属的软件
rpm -qd 列出软件说明文档
rpm -qR 列出软件依赖包
rpm -ql 列出软件所在目录
rpm -Va 验证软件最近有哪些文件被修改了
rpm -V 指定软件验证
rpm -Vp 指定rpm文件验证
rpm -Vf 指定文件验证
S.5....T. c /etc/issue 代表大小和MD5,文件时间已经变化,如果当一个文件的所有信息都被修改过,显示SM5DLUGTP c filename ,C代表
c :配置文件 (config file)
d :文件数据文件 (documentation)
g :鬼文件~通常是该文件不被某个软件所包含,较少发生!(ghost file)
l :授权文件 (license file)
r :读我文件 (read me)
S :(file Size differs) 文件的容量大小是否被改变
M :(Mode differs) 文件的类型或文件的属性 (rwx) 是否被改变?如是否可执行等
参数已被改变
5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
D :(Device major/minor number mis-match) 设备的主/次代码已经改变
L :(readLink(2) path mis-match) Link 路径已被改变
U :(User ownership differs) 文件的所属人已被改变
G :(Group ownership differs) 文件的所属群组已被改变
T :(mTime differs) 文件的创建时间已被改变
P :(caPabilities differ) 功能已经被改变
rpm验证只能验证软件和var/lib/rpm数据库中的信息,还可以指定软件的数字签名,软件开发商会自定一个数字签名,并且提供publickey,
centos的数据签名在/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
安装数字签名 rpm --import RPM-GPG-KEY-CentOS-7
yum [list|info|search|provides|whatprovides]
还是以httpd为例
yum list
yum info
yum search 搜索源中对应的安装包
yum provides 查看安装依赖
yum whatprovides
yum remove 卸载
yum配置文件/etc/yum.repos.d/CentOS-Base.repo
[base]:代表软件库的名字!中括号一定要存在,里面的名称则可以随意取。但是不能有
两个相同的软件库名称, 否则 yum 会不晓得该到哪里去找软件库相关软件清单文件。
name:只是说明一下这个软件库的意义而已,重要性不高!
mirrorlist=:列出这个软件库可以使用的映射站台,如果不想使用,可以注解到这行;
baseurl=:这个最重要,因为后面接的就是软件库的实际网址! mirrorlist 是由 yum 程序
自行去捉映射站台, baseurl 则是指定固定的一个软件库网址!我们刚刚找到的网址放到
这里来啦!
enable=1:就是让这个软件库被启动。如果不想启动可以使用 enable=0 喔!
gpgcheck=1:还记得 RPM 的数码签章吗?这就是指定是否需要查阅 RPM 文件内的数
码签章!
gpgkey=:就是数码签章的公钥档所在位置!使用默认值即可
mirrorlist 镜像列表,yum安装时会请求列表中最快的镜像源,http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
实际地址可以根据/var/cache/yum/ 查看$releasever是系统版本,$basearch 62位还是32位
实际地址是 http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os
yum不生效时可使用yum clean all清理
实际使用中可能有些软件镜像源中没有,可以考虑设置epel(extra packages for enterprise linux )
centos 7 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
centos 6 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
epel(RHEL 5)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repo
----官方源直接安装
CentOS/RHEL 5 :
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm
CentOS/RHEL 6 :
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
CentOS/RHEL 7 :
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
首先先创建/etc/yum.repos.d/epel.repo,本例是安装案例cenos 7epel源
yum 安装是制定epel yum --ecanlerepo=epel install
yum --enablerepo=epel search all
grouplist
groupinfo
groupinstall
groupremove
主机没有网络的情况下,可以挂载iso镜像,设置本地源来安装yum 是指定enablerepo到本地
srpm是包含source code的rpm安装包,
--rebulid | 此选项只是编译和打包,并不会将安装包安装到系统上,执行完毕后会生成rpm安装包 |
--recompile | 直接将srpm编译打包安装 |
srpm编译时使用的目录:
/username/rpmrebuild/
specs | 软件配置文件 |
sources | 原始文件tar.gz以及config配置文件等 |
build | 编译暂存的数据 |
rpms | rpm安装包 |
srpms | srpm软件,编译自己的软件未srpms时文件存放目录 |
如rpm -ivh mysql-community-8.0.11-1.el7.src.rpm 对应目录下会生成rpmbuild