Linux的软件包分为两种,源码包和二进制包,
源码包是类似于GitHub中的代码,只包含其代码内容和结构,很多依赖的环境和库需要我们自行安装,优点是体积小,方便继承和跨平台,但部署不方便;
二进制包是编译好的安装包,部署方便,便于进行产权保护,代码对外界不可知,但不便于继承和二次开发。
在centos系统中我们使用rpm或yum工具安装软件,rpm主要解决本地下载的安装包,而yum多用于在线安装,且会自动解决依赖,使用方法为yum install 软件包名
。
Ubuntu中则使用dpkg和apt工具管理软件,分别职责对应上方centos。
软件源介绍
我们日常使用电脑下载软件,可能到微软商店,也可能到浏览器去搜索下载,那我们在Linux中只用命令就下载了软件,系统是到什么地方给我们查找下载的呢?这就引出软件源的概念,即软件仓库,我们默认使用的是红帽官方的软件仓库,很多高校和大厂有其自行组建的软件仓库,命令中可以使用yum repolist
查看默认的源,源默认存在/etc/yum.repos.d/
路径下
要添加源,需先将原有源全部删除,然后将新的源写入文件并存到路径下,写入代码示例为:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
删除索引缓存和下载包的缓存
yum makecache
成索引缓存索引提高搜索安装速度
有时候我们要使用的工具不在源中无法找到时可以尝试使用yum -y install epel-release
增加epel
源,这是为红帽系操作系统提供的额外软件包。
yum常用命令
yum provides 工具名或配置文件
查找所属软件包
yum search pstree
使用search工具查找软件包
yum list installed
查看已安装的所有软件包
yum list
查看所有可以安装的软件包,可加具体软件包的名称
yum install 软件包名
安装软件包
软件包名也可用url代替
yum reinstall 软件包名
重新安装
yum update
将所有软件更新到仓库的最新版本,可加软件名更新指定软件
多个软件包可用空格分隔
-y
参数表示一律允许,免得下载时问这问那
软件包组是打包好的软件,可以整体安装卸载
yum grouplist
查看软件包组
yum groupinstall 软件包组
安装软件包组
yum groupremove 软件包组
卸载软件包组
PRM命令
本地包安装更新的方法,使用公式为rpm 选项 工具名
,选项具体有:
-i:install的意思,安装软件包
-v:显示附加信息,提供更多详细信息
-V:校验,对已安装的软件进行校验
-q:查询,一般跟下面的参数配合使用
-a:查询所有已安装的软件包
-f:系统文件名(查询系统文件属于哪个安装包)
-i:显示已安装的rpm软件包信息
-l:查询软件包文件的安装位置
-p:查询未安装软件包的相关信息
-R:查询软件包的依赖性
-e:erase
--nodeps:忽略依赖
-U:一般配合vh使用
使用该工具需要自行解决依赖关系,通过wget
可以通过url将安装包下载到本地。
自建软件源
可以在系统DVD中使用系统iso中的自带软件建立软件仓库。
另一种情景是公网服务器给内网的主机提供更新,
1,yum使用--downloadonly
仅下载不安装参数获取软件包
2,放置软件包,并创建软件数据
[root@localhost ~]# yum clean all # 清理缓存和下载的包
[root@localhost ~]# yum update --downloadonly # 仅下载更新包
[root@localhost ~]# ls /var/cache/yum/x86_64/7/base/packages/ # 查看下载的包
[root@localhost ~]# mkdir /var/ftp/update
[root@localhost ~]# find /var/cache/yum/x86_64/7/updates -iname "*.rpm" -exec cp -rf {} /var/ftp/update/ \;
[root@localhost ~]# yum -y install createrepo # createrepo用来创建软件包的索引
[root@localhost ~]# createrepo /var/ftp/update/ # 创建软件包的索引
3,部署ftp服务器,将软件包通过ftp协议传给内网主机
# 部署ftp服务并且启动
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# systemctl start vsftpd
# 关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
4,内网主机设置源为目的ftp
[root@localhost ~]# rm -rf /etc/yum.repos.d/*.repo #干掉所有的仓库
[root@localhost ~]# vi /etc/yum.repos.d/update.repo
[update]
name=centos update
baseurl=ftp://192.168.72.134/update
gpgcheck=0
enabled=1
[root@localhost ~]# yum clean all
[root@localhost ~]# yum update -y # 更新测试
源码包管理
如我们使用的GitHub,还有apache和nginx平台,都是源码包的管理手段,Linux系统中,多为C语言写成的gcc文件,编译执行过程有如下三步:
./configure
指定安装路径,设置启用或禁用功能,生成makefile文件,相当于设置安装选项
make
按makefile编译文件,可加-j 2
使用两个cpu编译
make install
安装
压缩解压
tar文件使用tar -cvf 压缩文件名 目标文件
打包,使用tar -xvf 压缩文件名
解压缩
gz文件则在上面命令的参数中添加z
即可。
总结
本章算是Linux中的一个小tip,如何安装管理软件,二进制包的管理主要是通过源,这么看软件用的新不新,可不可靠,其实很大程度上依赖于软件源,源码包需要进行压缩解压缩操作,和生成安装文件./configure
,编译make
,和安装make install
三个步骤。