目录
1.软件包的介绍
2.rpm包管理
3.rpm包管理前端工具
1.软件包的介绍
1.软件包的介绍
2.rpm包管理
3.rpm包管理前端工具
在我们在对软件包管理前,先对软件包有个很好的了解,这样更方便我们来对其进行管理。
软件包:是具有特定功能,用来完成某一任务的特定程序或一组程序,其由基本配置和若干可选部件构成,其形式可以是源文件码形式也可以是目标码形式的。
包文件:包文件中包含RPM包内文件、RPM包的元数据、安装或卸载时运行的脚本。
包的公共数据库:包含有程序包的名称及版本、依赖关系、功能说明、包安装后生成的各文件路径以及校验码信息,其位于/var/lib/rpm
目录下。
包管理器:是将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等操作。常用到的管理器有rpm包管理器,rpm包管理器的前端工具yum。
2.rpm包管理
CentOS系统上使用rpm命令管理程序包,进行安装、卸载、升级、查询、校验和数据库维护。
rpm – RPM Package Manager
Usage: rpm [OPTION…]
common options:
-D, --define='MACRO EXPR'
:定义宏表达式--undefine=MACRO
:不定义宏-E, --eval='EXPR'
:打印宏表达式--rcfile=<FILE:...>,--macros=<FILE:...>
:读取文件来代替默认文件--noplugins
:不激活任何插件--nodigest
:不检查包完整性--nosignature
:不检查来源合法性,忽略签名-r, --root=ROOT
:使用ROOT作为最高级的目录,默认‘/’--dbpath=DIRECTORY
:在目录中使用数据库--querytags
:显示所知的标签--showrc
:显示最终的rpmrc和macro配置--quiet
:提供简约的过程打印-v, --verbose
:打印详细过程
1)rpm包安装、升级和卸载
rpm {-i|–install} [install-options] PACKAGE_FILE …
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
rpm {-e|–erase} [–allmatches] [–justdb] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …
--allfiles
:安装所有文件
--test
:测试安装,但不真正 执行安装,即dry run 模式
--allmatches
:移除所有匹配的包
--badreloc
:在不可定位的包上重定位文件
-e,--erase
:卸载包
--excludedocs
:不安装文件
--excludepatth=<path>
:跳过带有领导的path内容的文件
--force
:代表--replacepakgs --replacefiles
,为强制安装
-F,--freshen=<packagefile>
:升级已经安装的包
-h,--hash
:与-v
一起,在安装包时打印安装过程
--ignorearch
:不检查包的结构
--ignoreps
:不检查包的操作系统
--ignoresize
:在安装前不检查磁盘空间
-i,--install
:安装包
--justdb
:更新数据库但不修改文件系统
--nodeps
:忽略依赖关系
--nofiledigest
:不检查文件的完整性
--nocontexts
:不安装文件的安全环境
--noorder
:do not reorder package installation to satisfy dependencies
--noscripts
:不执行程序包脚本
--notriggers
:不执行任何被这个包触发的脚本
--nocollections
:不执行任何收集行为
--oldpackage
:降级安装(慎用)
--percent
:打印包安装的百分比
--replacepkgs | replacefiles
:替代安装,覆盖安装
-U,--upgrade=<packagefile>
:升级包
注意:
(1)不要对内核做升级操作;Linux支持多内核版本并存,因此,可以直接安装新版本内核
(2)如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew) 后保留
(3)upgrade :安装有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”;freshen :安装有旧版程序包,则“升级”,如果不存在旧版程序包,则不执行升级操作。
rpm {-i|–install} [install-options] PACKAGE_FILE …
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
rpm {-e|–erase} [–allmatches] [–justdb] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …--allfiles
:安装所有文件--test
:测试安装,但不真正 执行安装,即dry run 模式--allmatches
:移除所有匹配的包--badreloc
:在不可定位的包上重定位文件-e,--erase
:卸载包--excludedocs
:不安装文件--excludepatth=<path>
:跳过带有领导的path内容的文件--force
:代表--replacepakgs --replacefiles
,为强制安装-F,--freshen=<packagefile>
:升级已经安装的包-h,--hash
:与-v
一起,在安装包时打印安装过程--ignorearch
:不检查包的结构--ignoreps
:不检查包的操作系统--ignoresize
:在安装前不检查磁盘空间-i,--install
:安装包--justdb
:更新数据库但不修改文件系统--nodeps
:忽略依赖关系--nofiledigest
:不检查文件的完整性--nocontexts
:不安装文件的安全环境--noorder
:do not reorder package installation to satisfy dependencies--noscripts
:不执行程序包脚本--notriggers
:不执行任何被这个包触发的脚本--nocollections
:不执行任何收集行为--oldpackage
:降级安装(慎用)--percent
:打印包安装的百分比--replacepkgs | replacefiles
:替代安装,覆盖安装-U,--upgrade=<packagefile>
:升级包
注意:
(1)不要对内核做升级操作;Linux支持多内核版本并存,因此,可以直接安装新版本内核
(2)如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew) 后保留
(3)upgrade :安装有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”;freshen :安装有旧版程序包,则“升级”,如果不存在旧版程序包,则不执行升级操作。
从上面可以看出,选项真不是一般多,实际上我们只是用些一般的操作
安装用:rpm -ivh Package_file
升级用:rpm -Uvh Package_file
和rpm -Fvh Package_file
卸载用:rpm -evh Package_file
实际上只有在刚安装的系统上我们才会用到rpm命令来安装、卸载、升级,系统基础配置好后,就一般不用rpm,因为很多软件包都是带有依赖关系的,rpm安装的时候会很麻烦,后期我们会用到yum包管理工具,下面会说到。
2)rpm包查询和校验
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
[select-options]:
-a, --all
:所有文件-f, --file
:查看指定的文件由哪个程序包安装生成-g, --group
:包所在组-p, --package
:针对尚未安装的程序包文件做查询操作--pkgid
:包id--hdrid
:包头识别--triggeredby
:查询触发包--whatrequires
:查询指定的 CAPABILITY 被哪个包所依赖--whatprovides
:查询指定的 CAPABILITY(能力)由哪个包所提供--nomanifest
:do not process non-package files as manifests
[query-options]:
--changelog
:查询rpm 包的changelog-c
:查询程序的配置文件-d
:查询程序的文档-i
:information-l
:查看指定的程序包安装后生成的所有文件--scripts
:程序包自带的脚本--provides
:列出指定程序包所提供的CAPABILITY-R
:查询指定的程序包所依赖的CAPABILITY
[verify-options]:
--nofiledigest
:不校验文件完整性--nofiles
:不校验包内文件--nodeps
:不校验包的依赖性--noscript
:不执行校验脚本
查询结果所代表的意义:
S:file Size differs
M:Mode differs (includes permissions and file type)
5:digest (formerly MD5 sum) differs
D:Device major/minor number mismatch
L:readLink(2) path mismatch
U:User ownership differs
G:Group ownership differs
T:mTime differs
P:capabilities differ
总的来说查询用的还挺多的,-qa,-qf,-qp,-q –whatprovides 等挺使用的,而校验的话,我没怎么用过。
rpm除了上面提到的还有其他选项功能,大家可以用帮助查看。实际上,上面也提到了,一般我们也就用rpm来做查询用,其他的功能有更好的工具来做,例如使用yum来管理安装包。
3.rpm包管理的前端工具:yum
YUM: Yellowdog Update Modifier ,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具。
要想使用yum工具,需要进行相关的配置。
1)yum repository配置
yum repository:yum repo,存储了众多的rpm包,以及包相关的元数据文件,放置于特定目录repodata下。
yum 相关的文件:
为所有repository提供公共的配置信息:
/etc/yum.conf
为repository 的指向提供配置信息:/etc/yum.repos.d/*.repo
安装日志:/var/log/yum.log
缓存目录:/var/cache/yum/$basearch/$releasever
yum的repository配置文件中可用的变量:
$releasever
:当前OS 的发行版的主版本号$arch
:平台,i386,i486,i586,x86_64等 等$basearch
:基础平台;i386, x86_64$YUM0-$YUM9
:自定义变量
yum的repository配置文件中可选用的源:
http(s):// ;ftp:// ;file://
从/etc/yum.repos.d/*.repo
中我们可以看到.repo
文件中所需的一些配置的信息,这里简单说明下:
[repository id]
:这个是repo idname=
:这个是repo 名字baseurl=
:这个就是源,你可以选择使用http://、https://、ftp://、file://中的任何几个。enabled=
:这个表示是否要启用这个repo,1代表启用,0代表禁用。gpgcheck=
:这个表示是否要检查公钥,1表示需要公钥,0表示不需要。gpgkey=
:这个就是公钥所在的地址(上面填1就不用)enablegroups=
是否使用组,1要,0不要(一般不用)failovermethod=
:这个有俩个选项,roundrobin表示随机挑衅也是默认配置,priority是按照顺序访问。(一般不用)cost=
默认为1000(一般不用)
上面的就是yum repository的配置了,配置好后,yum就可以使用了,当然前提是先把yum安装包安装好,可以使用yum命令。
2)yum命令
yum [options] [command] [package …]
yum [options] [command] [package …]
[options]
--nogpgcheck
:禁止进行gpg check(公钥)-y
:自动回答为“yes”-q
:静默模式--disablerepo=repoidglob
:临时禁用此处指定的repo--enablerepo=repoidglob
:临时启用此处指定的repo--noplugins
:禁用所有插件
常用命令:
显示仓库列表:
yum repolist [all|enabled|disabled]
显示程序包:yum list [all | glob_exp1 ...] {available|installed|updates} [glob_exp1][...]
安装程序包:yum install/reinstall package1 [package2] [...]
升级程序包:yum update/downdate [package1] [package2] [...]
检查可用升级:yum check-update
卸载程序包:yum remove/erase package1 [package2] [...]
查看程序包information:yum info [...]
查看指定的特性( 可以是某文件) 是由哪个程序包所提供:yum provides/whatprovides feature1 [feature2][...]
清理本地缓存:yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]
构建缓存:yum makecache
搜索:yum search string1 [string2] [...]
查看指定包所依赖的capabilities:yum deplist package1 [package2] [...]
查看yum 事务历史:yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安装装及升级本地程序包:yum localinstall/localupdate rpmfile1 [rpmfile2] [...]
(install/update可以代替之)
组管理的相关命令:yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
一些yum的命令我们也知道了,下面来创建所需repository吧。
3.创建系统光盘的yum repository
系统安装光盘作为本地yum 仓库:
(1) 挂载光盘至某目录,例如/media/cdrom
# mount /dev/cdrom /media/cdrom
(2) 在 /etc/yum.repos.d/下创建配置文件,以".repo"结尾
[base]
name=local repository
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
4.创建多系统网络的yum repository
1)准备:
1.关闭防火墙sys
查看防火墙是否打开:iptables -vnL
centos7上关闭
systemctl disable firewalld.service (本次关闭)
systemctl stop firewalld.service(永久关闭)
centos6上关闭
(本次关闭)
service iptables stop(永久关闭)
2.关闭SElinux
查看是否关闭:getenforce
配置文档来关闭
vim /etc/selinux/config
SELINUX=permissive
setenforce 0
2)创建:
1.安装ftp服务包
rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm
rpm -ql vsftpd(两个重要的文件)
/usr/lib/systemd/system/vsftpd.service
/var/ftp
启动ftp服务(21端口)
查看端口:ss -tnl 或 netstat -ntl
启动ftp服务:systemctl start vsftpd
设为开机自动启动ftp服务:systemctl enable vsftpd
2.准备yum系统安装包
mkdir -p /var/ftp/pub/centos/{6,7}
cp -r /run/media/root/CentOS\ 7\ x86_64/* /var/ftp/pub/centos/7
cp -r /run/media/root/CentOS\ 6\ x86_64/* /var/ftp/pub/centos/6
3.客户端配置
vim /etc/yum.repos.d/*.repo
[base]
[ftpbase]
name=ftp repository
baseurl=ftp://172.18.253.34/pub/centos/7($releasever)
enabled=1
gpgcheck=1
gpgkey=ftp://172.18.253.34/pub/centos/7/RPM-GPG-KEY-CentOS-7
5.创建第三方的yum repository
1.安装http服务包
yum -y install httpd
rpm -ql httpd(两个重要的文件)
/usr/lib/systemd/system/httpd.service
/var/www/html
启动http服务(80端口)
查看端口:ss -tnl 或 netstat -ntl
启动httpd服务:systemctl start httpd
设为开机自动启动 httpd服务:systemctl enable httpd
http页面编辑
vim /var/www/html/index.html
<h1>welcome to Magedu.com </h1>
2.准备第三方rpm相关包
mkdir /var/www/html/app
cp *.rpm /var/www/html/app
createrepo /var/www/html/app
3.创建客户端
vim /etc/yum.repos.d/*.repo
[http]
name=http repository
baseurl=http://172.18.253.34/app
enabled=1
gpgcheck=0
系统安装光盘作为本地yum 仓库:
(1) 挂载光盘至某目录,例如/media/cdrom
# mount /dev/cdrom /media/cdrom
(2) 在 /etc/yum.repos.d/下创建配置文件,以".repo"结尾
[base]
name=local repository
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
1)准备:
1.关闭防火墙sys
查看防火墙是否打开:iptables -vnL
centos7上关闭
systemctl disable firewalld.service (本次关闭)
systemctl stop firewalld.service(永久关闭)
centos6上关闭
(本次关闭)
service iptables stop(永久关闭)
2.关闭SElinux
查看是否关闭:getenforce
配置文档来关闭
vim /etc/selinux/config
SELINUX=permissive
setenforce 0
2)创建:
1.安装ftp服务包
rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/vsftpd-3.0.2-21.el7.x86_64.rpm
rpm -ql vsftpd(两个重要的文件)
/usr/lib/systemd/system/vsftpd.service
/var/ftp
启动ftp服务(21端口)
查看端口:ss -tnl 或 netstat -ntl
启动ftp服务:systemctl start vsftpd
设为开机自动启动ftp服务:systemctl enable vsftpd
2.准备yum系统安装包
mkdir -p /var/ftp/pub/centos/{6,7}
cp -r /run/media/root/CentOS\ 7\ x86_64/* /var/ftp/pub/centos/7
cp -r /run/media/root/CentOS\ 6\ x86_64/* /var/ftp/pub/centos/6
3.客户端配置
vim /etc/yum.repos.d/*.repo
[base]
[ftpbase]
name=ftp repository
baseurl=ftp://172.18.253.34/pub/centos/7($releasever)
enabled=1
gpgcheck=1
gpgkey=ftp://172.18.253.34/pub/centos/7/RPM-GPG-KEY-CentOS-7
5.创建第三方的yum repository
1.安装http服务包
yum -y install httpd
rpm -ql httpd(两个重要的文件)
/usr/lib/systemd/system/httpd.service
/var/www/html
启动http服务(80端口)
查看端口:ss -tnl 或 netstat -ntl
启动httpd服务:systemctl start httpd
设为开机自动启动 httpd服务:systemctl enable httpd
http页面编辑
vim /var/www/html/index.html
<h1>welcome to Magedu.com </h1>
2.准备第三方rpm相关包
mkdir /var/www/html/app
cp *.rpm /var/www/html/app
createrepo /var/www/html/app
3.创建客户端
vim /etc/yum.repos.d/*.repo
[http]
name=http repository
baseurl=http://172.18.253.34/app
enabled=1
gpgcheck=0
1.安装http服务包
yum -y install httpd
rpm -ql httpd(两个重要的文件)
/usr/lib/systemd/system/httpd.service
/var/www/html
启动http服务(80端口)
查看端口:ss -tnl 或 netstat -ntl
启动httpd服务:systemctl start httpd
设为开机自动启动 httpd服务:systemctl enable httpd
http页面编辑
vim /var/www/html/index.html
<h1>welcome to Magedu.com </h1>
2.准备第三方rpm相关包
mkdir /var/www/html/app
cp *.rpm /var/www/html/app
createrepo /var/www/html/app
3.创建客户端
vim /etc/yum.repos.d/*.repo
[http]
name=http repository
baseurl=http://172.18.253.34/app
enabled=1
gpgcheck=0
上面配置yum repository的步骤,可能会不全面,这就需要根据自己系统的条件配置了。安装是会出现些问题,一般情况有两个方面:一个是看挂载路径是否正确,看地址是否对;另一个就是看下是否是缓存的原因,清下缓存。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147268.htm