Linux软件包管理

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三个步骤。

相关推荐
火车头-1107 小时前
【docker 部署nacos1.4.7】
运维·docker·容器
深藏bIue7 小时前
linux服务器mysql目录下的binlog文件删除
linux·服务器·mysql
虾..7 小时前
Linux 进程状态
linux·运维·服务器
测试者家园7 小时前
DevOps 到底改变了测试什么?
运维·自动化测试·软件测试·devops·持续测试·智能化测试·软件测试和开发
扛枪的书生8 小时前
Linux 通用软件包 AppImage 打包详解
linux
只想安静的写会代码8 小时前
网卡信息查询、配置、常见故障排查
linux·服务器·windows
jiayong238 小时前
多子系统架构下的Nginx部署策略与最佳实践
运维·nginx·系统架构
皮糖小王子8 小时前
Docker打开本地镜像
运维·docker·容器
wavemap9 小时前
阿里云38元一年200M轻量云服务器详细评测
服务器·阿里云·云计算·vps·评测·boboforum
偶像你挑的噻10 小时前
9-Linux驱动开发-设备树=>设备树插件实现 RGB 灯驱动
linux·驱动开发·stm32·嵌入式硬件