day19学习笔记
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 [参数] 软件名称 -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会自动帮助我们解决这些问题的!
二进制包(已编译好)
-
什么是二进制包?有什么特点?
- 二进制包,指的是已经编译好了的软件包,只需要==直接安装==就可以使用。
- 二进制包,==不需要编译==,直接下载安装即可
- 二进制包,需要根据自己的计算机CPU以及操作系统去==选择合适==的
- 二进制包,命名方式一般为:python3-libs-3.6.8-18.el7.x86_64.rpm
- 二进制包,还有一种:mysql-5.5.32-linux2.6-x86_64.tar.gz(tar -zxvf 后可以直接解压使用,无须安装)
2、源码包(程序源文件)编译安装(重点)
什么是源码包?有什么特点?
- 源码包,指的是程序员写的原始的==程序代码文件==,==不能==够==直接==在计算机上==运行==。
- 源码包,需要进行==编译==,变成==二进制的软件包后==,才可安装使用
- 源码包,一般可以在任何的计算机上安装使用
- 源码包,命名方式一般为:
软件包名.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]#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?