进阶学习——Linux系统安装软件及管理程序

目录

一、RPM包管理工具

1.定义

2.RPM软件包

3.程序包管理器相关文件

3.获取途径

4.rpm命令功能

4.1挂载命令mount

4.2接触挂载命令umount

4.3查看挂载情况df  ——  disk  free 

4.4挂载规则

5.rpm命令格式

5.1 rpm -a 软件名    ——查看软件是否安装

5.2 rpm -qi 软件名    ——显示该软件详细信息

5.3 rpm -ql 软件名    ——显示软件安装目录/查看某个软件的所有安装目录

6.维护RPM数据库

6.1重建RPM数据库

6.2导入验证公钥

二、yum安装

1.定义

2.yum安装过程 

3.实验——本地yum安装

3.1客户端配置文件的格式

4.实验过程

三、源码编译安装

1.概述

2.编译安装过程

2.1 第一步 .configure  --help    ——可以看到安装的模块

2.2 第二步  make

2.3 第三步  makeinstall

3.实验过程


Linux系统与Windows系统不兼容,在Windows平台开发出来的软件在Linux上无法运行,在Linux上开发的软件在Windows上又无法运行,这就导致了软件移植困难。

 对比应用程序与系统命令的关系

应用程序 系统命令
文件位置 通常在/usr/bin和/usr/sbin目录中 一般在/bin和/sbin目录中,或为Shell内部指令
主要用途 完成相对独立的其他辅助任务,例如网页浏览器  完成对系统的基本管理工作,例如IP配置工具
适用环境 根据实际需要,有些程序可在图形界面中运行 一般只在字符操作界面运行
运行格式 无固定格式 一般包括命令字、命令选项和和命令参数

典型应用程序的目录结构

文件类型 保存目录
普通执行程序文件 /usr/bin
服务器执行程序文件和管理程序文件 /usr/sbin
应用程序配置文件 /etc
日志文件 /var/log
应用程序参考文档文件 /usr/share/doc
应用程序手册页文件 /usr/local/share/man

常见的软件包封装类型

文件类型 保存目录
RPM软件包 扩展名为“.rpm”
DEB软件包 扩展名为“.deb”
源代码软件包 一般为“.tar.gz”、“tar.ba2”等格式的压缩包包含程序的原始代码
绿色免安装的软件

软件包的扩展名不一,以TarBall格式的居多

在压缩包内提供已编译好的执行程序文件

解开压缩包后的文件即可直接使用

一、RPM包管理工具

1.定义

RPM(Red-Hat Package Manager )

由Red Hat公司提出,被众多Linux发行版所采用

建立统一的数据库文件(一张对应表将信息写入)

详细记录软件包安装、卸载等变化信息

自动分析软件包依赖关系

2.RPM软件包

软件素材参考:http://www.rpm.org

一般命名格式:bash-4.1.2-15.el6_4.x86_64.rpm

(bash:软件名;4.1.2:当前版本号;15:发布次数;x86_64:硬件平台;rpm扩展名)

3.程序包管理器相关文件

1.包文件组成 (每个包独有)

  • 包内的文件
  • 元数据,如:包的名称,版本,依赖性,描述等
  • 可能会有包安装或卸载时运行的脚本

2.数据库(公共):/var/lib/rpm (安装好后会将一些公共的数据放入数据库中)

  • 程序包名称及版本
  • 依赖关系
  • 功能说明
  • 包安装后生成的各文件路径及校验码信息

3.获取途径

红帽官方

第三方组织提供

软件项目官方站点

自己制作

rpm命令能够实现几乎所有对RPM软件包的管理功能

执行“man rpm”命令可以获得关于rpm命令的详细帮助信息

4.rpm命令功能

  • 查询、验证RPM软件包的相关信息
  • 安装、升级、卸载RPM软件包
  • 维护RPM数据库信息等综合管理操作

安装软件首先必须要有安装包,安装包的来源是从官方下载,还可以从光盘里复制(需要挂载光盘)

挂载光盘:mount/dev/sr0 /mnt      (将光盘挂载在mnt文件夹下)

4.1挂载命令mount

[root@localhost ~]#mount /dev/sr0  /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载

进阶学习——Linux系统安装软件及管理程序_第1张图片

4.2解除挂载命令umount

4.3查看挂载情况df  ——  disk  free 

[root@localhost ~]#df
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 52403200 4759728 47643472   10% /
devtmpfs                  917604       0   917604    0% /dev
tmpfs                     933524       0   933524    0% /dev/shm
tmpfs                     933524    9264   924260    1% /run
tmpfs                     933524       0   933524    0% /sys/fs/cgroup
/dev/sda1                5232640  182368  5050272    4% /boot
tmpfs                     186708       4   186704    1% /run/user/42
tmpfs                     186708      24   186684    1% /run/user/0
/dev/sr0                 4414592 4414592        0  100% /mnt
[root@localhost ~]#

进阶学习——Linux系统安装软件及管理程序_第2张图片

只要是外来的硬件设备,想要在Linux系统中使用都要挂载;挂载都是临时性的,如果想要永久挂载需要写到文件中去  /etc/fstab

4.4挂载规则

  • 最好使用空文件夹挂载,如果挂载的文件夹有文件存在,那么文件可能会消失
  • 一个文件夹如果挂载多个设备 只能看到最后一个挂载设备的数据,其它设备上的数据将被隐藏
  • 一个设备可以挂载在多个文件夹上 一个光驱可以挂载在多个文件夹上
  • 一个挂载点同一时间只能挂载一个设备

5.rpm命令格式

RPM——查询已安装的RPM软件信息

rpm  -q  [子选项]   [软件名]

选项 软件名/包 功能效果
rpm  -qa 显示当前系统中以 RPM 方式安装的所有软件列表
rpm -q 查询指定软件是否已安装
rpm -qi 查看指定软件包的名称、版本、许可协议、用途描述等详细信息
rpm -ql 显示指定的软件包在当前系统中安装的所有目录、文件列表
rpm -qc  列出已安装的指定软件的配置文件
rpm -ivh 安装
rpm -i 安装一个新的RPM软件包
rpm -v 显示安装过程的详细信息
rpm -h 在安装或升级过程中已#号显示读条
rpm -e 卸载指定的软件
rpm -U 升级某个软件包,若未安装过则进行安装
rpm -F 升级某个软件包,若未安装过则直接结束

5.1 rpm -q 软件名    ——查看软件是否安装

5.2 rpm -qi 软件名    ——显示该软件详细信息

进阶学习——Linux系统安装软件及管理程序_第3张图片

5.3 rpm -ql 软件名    ——显示软件安装目录/查看某个软件的所有安装目录

进阶学习——Linux系统安装软件及管理程序_第4张图片

rpm -qc 软件名    ——查看软件的配置文件(例.conf conf结尾的)

进阶学习——Linux系统安装软件及管理程序_第5张图片

安装路径 含义
/etc/ 配置文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man/ 帮助文件保存位置

6.维护RPM数据库

6.1重建RPM数据库

当RPM 数据库发生损坏,可通过重建RPM数据库修复

rpm  --rebuilddb  或者   rpm  --initdb

6.2导入验证公钥

rpm --import /mnt/RPM-GPG-KEY-CentOS-7

程序包编译安装的过程:

源代码-->预处理-->编译-->汇编-->链接-->执行

多文件:文件中的代码之间,很可能存在跨文件依赖关系

虽然有很多开源软件将软件打成包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软件,可能需要自已下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具可以大大减少编译过程的复杂度。

为了解决rpm命令繁琐的依赖关系,所以发明了yum命令

二、yum安装

1.定义

YUM(Yellow dog Updater,Modified )yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间

yum是c/s架构(c/s架构是分为客户端和服务端;服务端是存放软件安装包,客户端是进行安装软件包;配置文件指向服务端)

yum仓库的分类,本地和网络(本地:自己既是客户端也是服务端;网络:客户端和服务端分开)

2.yum安装过程 

进阶学习——Linux系统安装软件及管理程序_第6张图片

元信息的定义:元信息是一个文件,记录了安装包的路径、安装包的依赖关系

  1. 第一次客户端根据配置文件找到服务端;
  2. 客户端将元信息下载到本地(元信息是安装包的位置以及安装包的依赖关系)
  3. 根据元信息去下载对应的安装包到本地后,然后安装
  4. 安装完成后,删除安装包

3.实验——本地yum安装

本地yum(不需要依赖网络)

yum  install   安装

yum install 软件名 -y (-y表示同意) 

vim /etc/yum.conf        服务端的配置文件

cd /etc/yum.repos.d/    客户端的配置文件

客户端必须要有文件后缀面(必须要以.repo结尾)(必须要放在/etc/yum.repos.d文件夹中

3.1客户端配置文件的格式

[local]

name=local

baseurl=服务器地址

gpgcheck=0 (代表不验证)

enabled=1是开启/enable=0是关闭

baseurl

file:// 本机位置

file:// /mnt 本机挂载点(本机挂载在mnt文件夹)

http:// 网络地址

https:// 网络地址

作为服务端需要提供安装包、源数据;所以看到repodata、package就可以复制当前地址

进阶学习——Linux系统安装软件及管理程序_第7张图片

4.实验过程

[root@localhost ~]#mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
##将硬盘挂载到/mnt文件夹下
[root@localhost ~]#cd /etc/yum.repos.d/
##切换到yum仓库目录
[root@localhost yum.repos.d]#ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
##查看当前目录下的文件
[root@localhost yum.repos.d]#mkdir bak
##建立名为bak的文件夹
[root@localhost yum.repos.d]#ls
bak               CentOS-Debuginfo.repo  CentOS-Sources.repo
CentOS-Base.repo  CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo    CentOS-Media.repo
##查看文件夹下的文件
[root@localhost yum.repos.d]#mv *.repo bak/
##将该文件夹下所有以.repo结尾的文件移动到bak文件夹下
[root@localhost yum.repos.d]#ls
bak
##查看当前文件夹下只显示bak文件夹
[root@localhost yum.repos.d]#vim /etc/yum.repos.d/local.repo
##进入本地yum仓库vim编译器内进行安装




[shiqi]
##名称   可随机取
name=shiqi
##名称   可随机取
baseurl:file:///mnt
##基本地址(挂载地址)
gpgcheck=0
##是否开启服务(0代表不开启;1代表开启)



Esc
:wq
##退出vim编辑器



[root@localhost yum.repos.d]#yum clean all
##清理缓存

已加载插件:fastestmirror, langpacks
正在清理软件源: shiqi
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@localhost yum.repos.d]#yum makecache
##重新下载元数据

已加载插件:fastestmirror, langpacks
shiqi                                                       | 3.6 kB  00:00:00     
(1/4): shiqi/group_gz                                       | 156 kB  00:00:00     
(2/4): shiqi/filelists_db                                   | 3.1 MB  00:00:00     
(3/4): shiqi/primary_db                                     | 3.1 MB  00:00:00     
(4/4): shiqi/other_db                                       | 1.2 MB  00:00:00     
Determining fastest mirrors
元数据缓存已建立

注意:如果出现下面的情况   要kill  114533 或者  kill    -9   114533

进阶学习——Linux系统安装软件及管理程序_第8张图片

建议使用rm -rf /var/run/yum.pid

三、源码编译安装

1.概述

Tarball封包

.tar.gz和.tar.bz2格式居多

软件参考素材:http://sourceforge.net

完整性校验——md5sum校验工具

[root@localhost ~]#md5sum httpd-2.4.25.tar.gz
24fb8b9e36cf131d78caae864fea0f6a httpd-2.4.25.tar.gz
以上为MD5的校验和

2.编译安装过程

进阶学习——Linux系统安装软件及管理程序_第9张图片

2.1 第一步 .configure  --help    ——可以看到安装的模块

configure  文件是作者放在源码包中给我们使用的,是一个脚本文件

apache  只能支持一万左右流量的访问

nginx     可以支持三万到六万左右的流量访问

进阶学习——Linux系统安装软件及管理程序_第10张图片

prefzx=path 指明路径

without代表默认安装的

yum -y install gcc  gcc-c++  pcre-devel openssl-devel zlib-devel openssl  openssl-devel

安装编译环境需要的 包

装好编译器后会生成一个Makefile的文件

2.2 第二步  make

将所有的源代码翻译成二进制,会形成一个可以绿色的可执行文件

make -j 2       用两核cpu编译

2.3 第三步  makeinstall

将执行文件及相关的一些依赖文件拷贝到之前指定的目录中;如果想补全 要做一个软连接

进阶学习——Linux系统安装软件及管理程序_第11张图片

关闭防火墙和核心防护

3.实验过程

mkdir  /data/
##建立data文件夹
cd     /data
##切换到data文件夹
wget http://nginx.org/download/nginx-1.18.0.tar.gz
##下载安装包  wget是下载命令
tar xf  nginx-1.18.0.tar.gz
##解压源码包
cd /data/nginx-1.18.0/
切换目录
yum -y install gcc  gcc-c++  pcre-devel openssl-devel zlib-devel openssl  openssl-devel
##安装编译环境需要的 包


./configure --prefix=/apps/nginx
##检测安装环境
make  -j 2 && make  install
##启用两核进行安装


ln -s  /apps/nginx/sbin/*   /usr/bin/
##做一个软连接,为了可以补全nginx
systemctl stop firewalld
##关闭防火墙
setenforce 0
#关闭防护

nginx
#开启nginx服务
ss   -natp|grep  80
#检测服务开启/检测80端口是否开启
curl 192.168.91.100
#检测服务开启

        
nginx  -s   stop
#关闭nginx服务  

你可能感兴趣的:(学习,linux,运维)