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

相关推荐
一坨阿亮2 分钟前
Linux 使用中的问题
linux·运维
dsywws1 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零2 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
wclass-zhengge2 小时前
Docker篇(Docker Compose)
运维·docker·容器
李启柱2 小时前
项目开发流程规范文档
运维·软件构建·个人开发·设计规范
free3 小时前
netstat中sendq/recvq用于排查发送端发送数据的问题
服务器
小林熬夜学编程3 小时前
【Linux系统编程】第四十一弹---线程深度解析:从地址空间到多线程实践
linux·c语言·开发语言·c++·算法
力姆泰克3 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
力姆泰克3 小时前
力姆泰克电动缸助力农业机械装备,提高农机的自动化水平
大数据·服务器·数据库·人工智能·1024程序员节
BPM_宏天低代码3 小时前
低代码 BPA:简化业务流程自动化的新趋势
运维·低代码·自动化