rpm软件包
linux软件管理
linux
1 软件包顾名思义就是将应用程序,配置文件和数据打包的产物,所有的linux发行版都采用了某种形式的软件包系统,这使得linux软件管理和windwows下一样方便,suse、red hat、fedora等发行版都是用rpm包,Debian和Ubuntu则使用.deb格式的软件包。
mysql-5-3-4.rpm
redis-3-4-3.rpm
nginx2-3-2.rpm
编程语言
-
系统级开发
- C/C++:httpd、nginx
- golang:docker
-
应用及开发
- java:hadoop,hbase
- python:openstack
- perl
- ruby
- php
程序格式
C/C++程序源代码
文本格式的程度代码
编译开发环境
编译器、头文件,开发库
二进制格式组成
程序(软件)组成部分
二进制程序 可执行命令
库 .so文件
配置文件 .conf
帮助文件 .readme /usr/share/man
java/python程序
源代码
编译成能够在python虚拟机 pvm运行的格式
项目构建工具
c/c++ : make工具
程序包管理工具
在rpm(红帽软件管理包管理器)公布之前,要想在linux系统中安装软件只能采用源码包的方式安装。早期在linux系统中安装程序是一件非常困难、耗费耐心的事情,而且大多数的服务程序仅仅是提供源代码,需要运维人员自行编译代码并解决许多的软件依赖关系,因此要安装好一个服务程序,运维人员需要具备丰富知识、高超的技能、甚至良好的耐心。而且在安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系,所以在进行校验、安装、卸载、查询、升级等管理软件操作是难度都非常大。
rpm机制则为解决这些问题而设计的。rpm有点像windows系统中的控制面板,会建立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系。
linux程序包管理器,几个发行版
- debian(Ubuntu):dpt,dpkg
- 。deb
- redhat:redhat package manager,简称rpm
- suse:rpm
源代码格式
格式:name-version.tar.gz
名字 版本 压缩格式
nginx-1.12.0.tar.gz
node-v10.15.3-linux-x64.tar
rpm包格式
格式:name-version-release.arch,rpm
wget-1.14-18.el7.x86_64.rpm
名字 版本号 架构型号 压缩格式
获取程序包的途径
互联网上提供的软件,可能存在后门,存在安全隐患,插件
最为正确的途径-
- 操作系统发行版本光盘
- 文件服务器
- 镜像站点
开源镜像站
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrosr.sohu.com/centos/7.6.1804/os/x86_64/Packages/
http://mirrosr.163.com
- epel,提供centos众多额外的第三方包,可信任的第三方软件包组织
http://mirrosr.sohu.com/fedora-epel/7/x86_64/packages/
https://mirrosr.aliyun.com/epel/7/x86_64/packages/m/
- 搜索引擎
http://www.rpmfind.net/linux/mageia/distrib/7/x86_64/media/core/release/lrzsz-0.12.21-22.mga7.x86
rpm命令
rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
# i表示安装 v表示详细过程 h以进度条显示,每个#表示2%进度
安装软件的命令格式 rpm -ivh filename.rpm
升级软件命令格式 rpm -Uvh filename.rpm
卸载软件的命令格式 rpm -e filename.rpm
查询软件描述信息的命令格式 rpm -qpi filename.rpm
列出软件文件信息的命令格式 rpm -qpl filename.rpm
查询文件属于哪个rpm的命令格式 rpm -qf filename
软件包依赖关系
在早期系统运维中,安装软件是一件非常费时费力的事情。系统管理员不得不下载软件源代码编译软件,并且为了系统做各种调整。
尽管源代码编译形式的软件增强了用户定制的自由度,但是在小软件上耗费精力是缺乏效率的,于是软件包应运而生。
软件包管理可以将管理员从无休止的兼容问题中释放。yum工具就可以自动搜索依赖关系,并执行安装。
rpm软件包在安装的时候,由作者定义依赖关系
必须解决依赖关系,软件才能正常工作