Linux软件包

1、软件包概述

软件包,指的就是,程序安装所需要的一个文件,Linux下也有很多可以安装的软件,而这些软件的安装包可细分为两种,分别是源码包和二进制包。

1)源码包

  • 源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。
  • 计算机只能识别机器语言,也就是二进制语言,所以源码包安装之前需要编译。
  • 编译过程耗时较长
  • 大多数用户不懂开发,编译过程中可能会有各种错误,用户无力解决。
  • 了解决使用源码包安装的问题,Linux 软件包的安装出现了使用二进制包的安装方式。

2)二进制包

  • 二进制包,也就是源码包经过成功编译之后产生的包。
  • 二进制包是 Linux 下默认的软件安装包,目前主要有以下 2 大主流的二进制包管理系统:
  • ==RPM 包==管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、==CentOS==、SuSE 等。
  • DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。

 

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是centos系统中,默认的管理应用程序的一个工具

使用流程

1.获取rpm格式的软件包,如mysql-5.7rpm
2.通过rpm命令,也就是linux内置的一个工具,来安装这个mysql-5.7.rpm

注意,如果你的mysql不是通过rpm包安装的,也就无法通过rpm工具管理。

 

2、如何获取rpm包

有很多软件的官网,以及第三方软件仓库,会提供rpm包的下载功能:

http://rpm.pbone.net/
www.rpmfind.net
还有更好用的,最精准,应该去该软件的官网,去下载它的rpm包
    如寻找nginx软件包http://nginx.org/packages/
    根据你的机器cpu架构,以及系统版本,找到如下连接
        http://nginx.org/packages/centos/7/x86_64/RPMS/
        http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm

本地光盘镜像rpm包获取

centos7.iso镜像文件,内置了绝大多数软件的rpm包
步骤如下:
1.光盘,插入服务器光驱
2.在系统中找到光盘信息
3.挂载操作,读取到光盘的内容
4.查看光盘中的rpm包列表
5,。拷贝出所需的软件包
6,卸载原有的软件,然后安装拷贝出的软件
7,安装过程中需要依次解决所需的依赖关系

以VIM为例子代码演示如何进行相关操作

[root@ztdyyds /opt10:56:39]#lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sr0              11:0    1  4.2G  0 rom  
[root@ztdyyds /opt10:57:05]#mount /dev/sr0 /mnt/
mount: /dev/sr0 is write-protected, mounting read-only[root@ztdyyds /opt10:58:26]#ls /mnt/Packages | grep 'vim'
vim-common-7.4.160-4.el7.x86_64.rpm
vim-enhanced-7.4.160-4.el7.x86_64.rpm
vim-filesystem-7.4.160-4.el7.x86_64.rpm
vim-minimal-7.4.160-4.el7.x86_64.rpm
vim-X11-7.4.160-4.el7.x86_64.rpm
[root@ztdyyds /opt11:00:06]#
[root@ztdyyds /opt11:00:08]#yum remove vim -y[root@ztdyyds /opt11:00:24]#cp /mnt/Packages/vim* /opt
[root@ztdyyds /opt11:01:00]#ls
11  17  apps         {haha                                  vim-filesystem-7.4.160-4.el7.x86_64.rpm
12  18  cd           hello.txt                              vim-minimal-7.4.160-4.el7.x86_64.rpm
13  19  cd8          {hh..hhh2}                             vim-X11-7.4.160-4.el7.x86_64.rpm
14  20  cd8*         jumpserver_github
15  21  Dockerfile*  vim-common-7.4.160-4.el7.x86_64.rpm
16  22  hah          vim-enhanced-7.4.160-4.el7.x86_64.rpm[root@ztdyyds /opt11:41:38]#rpm -ivh vim-enhanced-7.4.160-4.el7.x86_64.rpm 
error: Failed dependencies:
	vim-common = 2:7.4.160-4.el7 is needed by vim-enhanced-2:7.4.160-4.el7.x86_64
[root@ztdyyds /opt11:41:43]#rpm -ivh vim-common-7.4.160-4.el7.x86_64.rpm 
Preparing...                          ################################# [100%][root@ztdyyds /opt11:41:57]#rpm -ivh vim-enhanced-7.4.160-4.el7.x86_64.rpm 
error: Failed dependencies:
	vim-common = 2:7.4.160-4.el7 is needed by vim-enhanced-2:7.4.160-4.el7.x86_64
[root@ztdyyds /opt11:42:15]#rpm -ivh vim-enhanced-7.4.160-4.el7.x86_64.rpm --nodeps  --fprce
rpm: --fprce: unknown option
[root@ztdyyds /opt11:43:01]#rpm -ivh vim-enhanced-7.4.160-4.el7.x86_64.rpm --nodeps  --force
Preparing...                          ################################# [100%]
Updating / installing...
   1:vim-enhanced-2:7.4.160-4.el7     ################################# [100%]
[root@ztdyyds /opt11:43:08]#vim
[root@ztdyyds /opt11:43:23]#vim

rpm管理软件的所有命令

rpm  [参数] 软件名称
-q:查询,query

-a:全部,all

-i :显示软件包的概要信息

-v :显示安装详细过程

-h:显示安装进度

--force :强制操作

--nodeps:忽略依赖关系
-u  升级软件
-e  卸载软件
-f校验所属的软件包
-qf 查询文件属于哪个安装包
-ql 查询生成了哪些文件

软件安装完成后,一般会生成这几类文件

配置文件,一般默认放入/etc

程序本身的可执行命令,二进制命令,放入/usr/bin

帮助文档,/usr/share/man,/usr/share/doc

取消挂载

语法
umount 挂载点

 

工作里怎么用rpm(重点)

RPM包管理:以上操作都比较简单,但是在实际应用过程中,可能会遇到问题,很多rpm软件包在安装时都会提示软件依赖。那这个问题如何解决呢?

方法一:根据提示一个一个软件包安装,先解决依赖在回来安装软件

方法二:使用yum install 安装rpm软件包

yum install 软件名称.rpm

以上安装方式的最大好处是,如果安装软件时,产生了依赖,不用担心,yum会自动帮助我们解决这些问题的!

 二进制包(已编译好)

 

  • 什么是二进制包?有什么特点?
  1. 二进制包,指的是已经编译好了的软件包,只需要==直接安装==就可以使用。
  2. 二进制包,==不需要编译==,直接下载安装即可
  3. 二进制包,需要根据自己的计算机CPU以及操作系统去==选择合适==的
  4. 二进制包,命名方式一般为:python3-libs-3.6.8-18.el7.x86_64.rpm
  5. 二进制包,还有一种:mysql-5.5.32-linux2.6-x86_64.tar.gz(tar -zxvf 后可以直接解压使用,无须安装)

 

2、源码包(程序源文件)编译安装(重点)

什么是源码包?有什么特点?

  1. 源码包,指的是程序员写的原始的==程序代码文件==,==不能==够==直接==在计算机上==运行==。
  2. 源码包,需要进行==编译==,变成==二进制的软件包后==,才可安装使用
  3. 源码包,一般可以在任何的计算机上安装使用
  4. 源码包,命名方式一般为:
  • 软件包名.tar.gz
  • 软件包名.tar.bz2
  • 软件包名.tar.xz
  • 软件包名.zip

根据需求配置

在编译时候,你可以加上这些参数,指定一些额外的功能

--prefix=... Directories to put files in /usr/local 软件家目录
--bindir=... $prefix/bin     命令的目录
--etcdir=... $prefix/etc     配置文件的目录
--mandir=... $prefix/share/man man    文档路径
--locale=... $prefix/share/locale     语言编码
...

接下来进行编译

编译成功并且安装

  • 编译,就是通过编译工具,把高级语言(码农写的C语言程序)变成计算机可以识别的2进制语言,计算机只认识1和0。
  • 编译程序,就是使用编译工具,把高级语言开发的程序变成计算机可以识别的二进制程序,把一堆C语言写的源码,变成你可以直接执行的一个命令。

 

常见的二进制软件包格式

 

系统平台

包类型

工具

在线安装

RedHat/Centos/Fedora/SUSE

rpm

rpm,rpmbuild

yum

Ubuntu/Debian

deb

dpkg

apt

 

免安装(二进制包)

  • rpm格式(需要rpm -ivh安装)
  • tar.gz格式(直接tar -zxvf解压即可)
  • 一般说的二进制包,指的更多是rpm包。
  • 我们可以用vim编辑器,打开/usr/bin/ls或者,windows下的exe文件、或者rpm安装包,都是010101二进制代码(计算机以16进制显示),都是给机器阅读的二进制数据。人类无法阅读了。
二进制软件包和 rpm 软件包区别在于
1. rpm包是打包好的安装程序,关于软件安装路径固定好了,以及配置文件一般默认放在/etc下了,二进制软件包,所有配置文件,可执行程序,都在压缩包里。

2.rpm包安装的程序,卸载时需要清理较多目录文件,而二进制安装包,只需要删除一个文件夹即可。

3. rpm包涉及关系,升级麻烦,二进制包只需要删除旧的软件,替换为新的即可。

二进制方式,安装java

1.下载该软件二进制压缩软件包
[root@localhost opt]# wget http://yuchaoit.cn/jdk-8u221-linux-x64.tar.gz
--2022-03-26 11:01:43--  http://yuchaoit.cn/jdk-8u221-linux-x64.tar.gz
Resolving yuchaoit.cn (yuchaoit.cn)... 123.206.16.61
Connecting to yuchaoit.cn (yuchaoit.cn)|123.206.16.61|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 195094741 (186M) [application/octet-stream]
Saving to: ‘jdk-8u221-linux-x64.tar.gz’

100%[===================================================================================================================================================>] 195,094,741  125KB/s   in 25m 31s

2022-03-26 11:27:14 (124 KB/s) - ‘jdk-8u221-linux-x64.tar.gz’ saved [195094741/195094741]
2.进行解压缩
[root@localhost opt]# tar -zxf jdk-8u221-linux-x64.tar.gz 
[root@localhost opt]# ls
jdk1.8.0_221  jdk-8u221-linux-x64.tar.gz  love.py  nginx-1.10.0-1.el7.ngx.x86_64.rpm  tengine-2.3.0  tengine-2.3.0.tar.gz  tngx230
[root@localhost opt]# 
3,配置环境
[root@localhost opt]# ln -s jdk1.8.0_221 jdk

[root@localhost opt]# cat >>/etc/profile<<EOF
> export PATH=$PATH:/opt/jdk/bin
> EOF
[root@localhost opt]# 
重新登录,尝试运行java代码
[root@localhost opt]# vim HelloWorld.java
[root@localhost opt]# cat HelloWorld.java 
public class HelloWorld {
    public static void main(String []args) {
       System.out.println("超哥带你学linux");
    }
}
[root@localhost opt]# 
[root@localhost opt]# javac HelloWorld.java
[root@localhost opt]# java HelloWorld
超哥带你学linux
[root@localhost opt]#