day19-Linux软件包

科普,什么是代码文件。

电脑程序Program,就是某一个编程语言编写的一个代码文件,里面包含了该语言特有的指令,以及各种字符、符号。

linux自带的network管理脚本,shell脚本 

什么是软件程序。

软件程序,就是程序员通过编程语言写好一堆代码,通过一些方式运行,比如编译后,生成一个应用程序,称之为软件。

 以及手机APP,或者我们平时访问的网站,都是程序员通过写代码,开发出来的

1、软件包概述 

问题来了,我们既然知道,如各种应用程序,app,各种软件

应该如何去下载,安装这些软件呢?

正常我们安装软件是如下

windows程序 

 macos程序

因此软件包,指的就是,程序安装所需要的一个文件,在可视化的系统下,一般是双击安装即可,用于安装某个程序,某个软件。

软件包顾名思义就是将应用程序、配置文件和数据打包的产物
所有的linux发行版都采用了某种形式的软件包系统,这使得linux软件管理和在windows下一样方便,suse、red hat、fedora等发行版都是用rpm包,Debian和Ubuntu则使用.deb格式的软件包。mysql-5-3-4.rpm
redis-3-4-3.rpm
nginx2-3-2.rpm

Linux下也有很多可以安装的软件,而这些软件的安装包可细分为两种,分别是源码包二进制包

1)源码包

  • 源码包就是一大堆源代码程序,是由程序员按照特定的格式和语法编写出来的。

  • 计算机只能识别机器语言,也就是二进制语言,所以源码包安装之前需要编译。

  • 编译过程耗时较长

  • 大多数用户不懂开发,编译过程中可能会有各种错误,用户无力解决。
  • 了解决使用源码包安装的问题,Linux 软件包的安装出现了使用二进制包的安装方式。
  • 系统级开发:
    • C/C++:httpd、nginx
    • golang:docker
  • 应用及开发:
    • java:hadoop,hbase
    • python:openstack
    • perl
    • ruby
    • php

2)编译程序过程

当程序员通过如C语言写完代码后,并不能立即运行, 因为笔记本不认识这些代码(就是一堆英文字母)。

电脑只认识机器语言(二进制的0和1组成的语言)

例如:下图是某一电脑的机器语言程式,用来计算两数之和。虽然机器语言程式执行效率最快,但不易阅读,也不易撰写。

如果代码都要写机器语言的话,程序员就不会那么多了。。学习难度,五百颗星。

为了使设计程序更简单,于是发展出较方便使用的程序语言,C / C++ 就是其中一种。

写好的程序称为原始码(source code),它并不能直接执行,必须透过编译器(compiler)将程式转译成机器语言后,电脑才能执行。

比如c语言的gcc编译器
比如golang语言的golang编译器
这些东西,我们只需要知道它的存在即可,安装编译器,使用编译器。
后续我们会下载软件包源代码,通过gcc编译器,编译成可以使用的软件指令,即可使用。

当源代码,编译后成为可以使用,可以执行的软件,我们机器上,很多软件,都是编译后的产物。

源代码
↓
编译器
↓
二进制可执行命令
↓
一次编译,到处运行(于超老师可以生成一个二进制命令,发给大家,只要是linux 64位机器上可以直接运行,免安装)

windows里面编译的软件,你不需要关心它源代码,只需要用即可,知道该软件是怎么来的。

 

linux里面编译好的软件。

你用的ls命令,为什么能显示出当前目录下的资料,也是通过c语言代码,写好后,编译,出现ls这个指令。

如果你未来学习编程开发,就会体会这个过程。

3)二进制包

  • 二进制包,也就是源码包经过成功编译之后产生的包。

  • 二进制包是 Linux 下默认的软件安装包,目前主要有以下 2 大主流的二进制包管理系统:

  • ==RPM 包==管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行版都默认使用此机制作为软件安装的管理方式,例如 Fedora、==CentOS==、SuSE 等。

  • DPKG 包管理系统:由 Debian Linux 所开发的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理,主要应用在 Debian 和 Ubuntu 中。
RPM包

我们可以在各个软件的官网上,找到它的rpm安装包,这就和微信,qq安装包一个概念,人家给你打包好了,你下载直接安装就好。

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

使用流程
1.获取rpm格式的软件包,如mysql-5.7.rpm
2.通过rpm命令,也就是linux内置的一个工具,来安装这个mysql-5.7.rpm注意,如果你的mysql不是通过rpm包安装的,也就无法通过rpm工具管理。

 rpm包管理工具,参考windows的控制面板工具理解

同理,windows下的这些软件,如果不是通过安装包,而是直接解压缩到某个文件夹下使用的,也无法通过控制面板去卸载。

2、如何获取rpm包

要想装软件,和windows 下一样,先得找到安装包:xxx.rpm

软件包的获得方式:

a. 去官网去下载(http://rpm.pbone.net);

b. 不介意老版本的话,可以从光盘(或者镜像文件)中读取;(工作里,大多数离线服务器安装,也都会使用光盘镜像中提供的rpm包)

3、从光盘获取

3.1 虚拟机中加载光盘

 

3.2 使用 # lsblk(list block devices)或者df 查看块状设备的信息 
[root@yuchao-linux01 ~]# 
# 查看磁盘设备
[root@yuchao-linux01 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part ├─centos-root 253:0    0   44G  0 lvm  /└─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sr0              11:0    1  4.2G  0 rom  这个rom类型就是光盘设备,名字叫做sr0,4.2G镜像文件大小,目前还未挂载到linux目录中
3.3 mount挂载
 3.4 查看镜像内文件

挂载后,访问/mnt目录即可访问光盘内文件,找打rpm包

4、查询某个软件安装情况(rpm命令)

语法:# rpm -qa | grep 软件名称

选项:

-q:查询,query

-a:全部,all

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

-v :显示安装详细过程

-h:显示安装进度

--force :强制操作

--nodeps:忽略依赖关系(不好用,容易出错)

windows的管理

 

linux的软件管理

# 查询lrzsz这个工具包,有结果就是装了,否则就是没有,或者你的软件包名字错了
# lrzsz用于帮你快速拖拽,文件到linux-windows之间
# rz  sz两个命令
[root@yuchao-linux01 ~]# rpm -qa lrzsz
lrzsz-0.12.20-36.el7.x86_64# 查询火狐浏览器装没
[root@yuchao-linux01 ~]# rpm -qa firefox
firefox-52.7.0-1.el7.centos.x86_64

 

查看火狐浏览器软件(图形化)

比如查询qq是否安装,rpm -qi qq

查询所有已安装的rpm软件,rpm -qa

过滤某个软件包

[root@yuchao-linux01 ~]# rpm -qa|grep bash
bash-4.2.46-30.el7.x86_64
bash-completion-2.1-6.el7.noarch

5、卸载某个软件

卸载某个软件

语法:# rpm -e 软件的名称(建议写完整的名称,通过-qa 查询)

案例:卸载火狐浏览器

rpm -qa |grep firefox 首先查询firefox软件的完整名称

[root@yuchao-linux01 ~]# rpm -qa firefox
firefox-52.7.0-1.el7.centos.x86_64

卸载

获取完整的软件包名字
[root@yuchao-linux01 ~]# rpm -e firefox-52.7.0-1.el7.centos.x86_64

 

6、安装某个软件

命令:rpm

作用:管理rpm软件包

语法:# rpm -ivh 软件包完整路径名称

选项:

-i:install,安装

-v:显示进度条

-h:表示以"#"形式显示进度条

示例代码:将刚刚卸载的firefox火狐浏览器重新安装(在DVD光盘1中)

# 1.找到rpm包,可以从光盘镜像里找
[root@yuchao-linux01 ~]# ls /mnt/Packages/|grep firefox
firefox-52.7.0-1.el7.centos.x86_64.rpm# 2.安装该rpm包
[root@yuchao-linux01 ~]# rpm -ivh /mnt/Packages/firefox-52.7.0-1.el7.centos.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...1:firefox-52.7.0-1.el7.centos      ################################# [100%]# 3.检查
[root@yuchao-linux01 ~]# rpm -qa firefox
firefox-52.7.0-1.el7.centos.x86_64# 4.运行firefox

 

发现又可以用了

7、更新某个软件

语法:# rpm -Uvh 完整的安装包路径

选项:

-U:upgrade,升级

-v:表示显示进度条

-h:表示以#形式显示进度条

1.超哥会提供更新的firefox包

2.更新firefox,手动通过rpm升级,建议版本选小点。

3.注意,rpm包管理,会牵扯到软件依赖的处理,读新手不太友好。

# 1.获取rpm http://rpm.pbone.net/
# 2.搜索 firefox

 

# 3.查看默认版本
[root@yuchao-linux01 ~]# rpm -qa firefox
firefox-52.7.0-1.el7.centos.x86_64# 4.获取一个新版本,是52.7.3版本,只有一点点的升级,不会牵扯太多依赖关系
下载链接
http://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/7.2/x86_64/updates/security/firefox-52.7.3-1.el7_5.x86_64.rpm# 5.在linux中下载
wget http://ftp.pbone.net/mirror/ftp.scientificlinux.org/linux/scientific/7.2/x86_64/updates/security/firefox-52.7.3-1.el7_5.x86_64.rpm# 6.如果linux下载太慢,可以windows下载好,上传到linux# 7.升级firefox软件
[root@yuchao-linux01 opt]# rpm -Uvh firefox-52.7.3-1.el7_5.x86_64.rpm 
warning: firefox-52.7.3-1.el7_5.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...1:firefox-52.7.3-1.el7_5           ################################# [ 50%]
Cleaning up / removing...2:firefox-52.7.0-1.el7.centos      ################################# [100%]
[root@yuchao-linux01 opt]# 
[root@yuchao-linux01 opt]# rpm -qa firefox
firefox-52.7.3-1.el7_5.x86_64

 

至此,就从52.7.0版本,升级到了57.7.3

这里有坑,一旦你的rpm包版本选大了,比如选了个68.5.1版本,就标识火狐浏览器又重大,很多很多的更新内容,这就牵扯到很多其他的软件,都需要升级。

rpm就无法直接升级了,需要处理完依赖关系。

 

8、关于依赖处理

8.1 什么是依赖

依赖指的是,软件A的运行,必须结合软件B,软件C的存在,才能够正确运行。

可以理解,一个自行车的运行,必须依赖车轮,车把,坐垫,少一个都骑不了。。。

上图是windows的依赖报错,安装依赖的软件即可。

8.2 Linux的rpm依赖图解

1.后面会讲yum工具,自动化管理rpm包
2.关于rpm包的依赖处理
yum search firefox  # 搜索rpm包
yum deplist firefox # 查看依赖关系

由于依赖关系较为复杂,需要搜索各个版本的rpm包,一般我们不会手动处理,都会通过yum这个神器,来批量,自动化的管理软件,管理rpm包。

8.3 查看文件所属的包名(实用)

语法:# rpm -qf 需要查询的文件路径

选项:

-f 校验所属的软件包

示例代码:查询/etc/ntp.conf 属于哪个软件包?

[root@yuchao-linux01 opt]# rpm -qf /etc/ntp.conf 
ntp-4.2.6p5-28.el7.centos.x86_64

查看crontab的包信息

[root@yuchao-linux01 opt]# rpm -qf /etc/crontab 
crontabs-1.11-6.20121102git.el7.noarch

查看yum,sudo工具配置文件

[root@yuchao-linux01 opt]# rpm -qf /etc/yum.conf 
yum-3.4.3-158.el7.centos.noarch
[root@yuchao-linux01 opt]# 
[root@yuchao-linux01 opt]# rpm -qf /etc/sudo.conf 
sudo-1.8.19p2-13.el7.x86_64

8.4查询软件安装完成后,生成了哪些文件

用于查找软件安装后,默认的配置文件在哪

语法:# rpm -ql 需要查询的软件包名称

-l 显示软件包中的文件列表

rpm -ql firefox

[root@yuchao-linux01 opt]# rpm -ql firefox

搜索lrzsz软件的文件

[root@yuchao-linux01 opt]# rpm -ql lrzsz
/usr/bin/rb
/usr/bin/rx
/usr/bin/rz
/usr/bin/sb
/usr/bin/sx
/usr/bin/sz
/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
/usr/share/man/man1/rz.1.gz
/usr/share/man/man1/sz.1.gz

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

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

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

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

9、取消挂载

当你在使用完毕,镜像光盘后,可以取消挂载。

语法
umount 挂载点

先在系统上取消挂载

再取消掉vmware光盘的连接,这好比你从台式机中的光驱,取出了光盘。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈下Spring MVC的执行流程

什么是Spring MVC Spring MVC是一个基于Java的Web框架,用于构建Web应用程序。 它是Spring Framework的一部分,它提供了模型-视图-控制器(MVC)架构。 支持RESTful风格的URL请求,易于与其他视图技术集成,如…

图像处理-Ch4-频率域处理

Ch4 频率域处理(Image Enhancement in Frequency Domain) FT :将信号表示成各种频率的正弦信号的线性组合。 频谱: ∣ F ( u , v ) ∣ [ R 2 ( u , v ) I 2 ( u , v ) ] 1 2 |F(u, v)| \left[ R^2(u, v) I^2(u, v) \right]^{\frac{1}{2}} ∣F(u,v)…

从代码中学习:评估模型的性能

从代码中学习:评估模型的性能 在这篇博客中,我们将逐步解析一段Python代码,并解释每一行的作用。这段代码主要用于加载数据集、加载预训练模型、进行推理并评估模型的性能。我们将以简单易懂的方式解释每一部分,确保即使是小学生…

C++ 内存管理:原理、技巧与实战

目录 第一章:C++ 内存管理基础 1.1 C++ 内存布局剖析 1.2 内存分配与释放:核心机制详解 1.2.1 new/delete 操作符 1.2.2 malloc/free 函数 第二章:智能指针 —— 内存管理利器 2.1 智能指针概览 2.2 常用智能指针类型 2.2.1 unique_ptr 2.2.2 shared_ptr 2.2.3 we…

Vue BPMN Modeler流程图

1、参考地址 git clone https://github.com/evanyangg/vue-bpmn-modeler.git 2、安装bpmn.js npm install bpmn-js --save 3、使用bpmn.js <template><div class"containers"><div class"canvas" ref"canvas"></div&g…

将现有Web 网页封装为macOS应用

文章目录 方式一&#xff1a;Unite for macOS方式二&#xff1a;Web2Desk方式三&#xff1a;Nativefier方式四&#xff1a;Flutter Flutter WebView Plugin总结 方式一&#xff1a;Unite for macOS Unite 是一款专为 macOS 设计的工具&#xff0c;可以将任意 Web 页面快速封装…

element下拉多选项回显

需求&#xff1a;在新增页面下拉选项多选之后&#xff0c;在编辑页面要回显出来&#xff08;新增页跟编辑页共用一个页面&#xff09; <el-form-item label"锁类型" prop"selectListvalue"><el-selectv-model"selectListvalue"multipl…

2024年前端工程师总结

前言 大家好&#xff0c;我是小荣&#xff0c;一名正在走向全栈接单的前端开发工程师。 到年底了&#xff0c;如往年一样给自己做个年终总结。总结是一件好事&#xff0c;希望大家也做起来。 我将会从以下几个点展开讲讲&#xff1a; 2024年的程序员经历2024年的个人发展与行…

TipTap编辑器:现代化的富文本编辑解决方案

简介 TipTap是一个基于 ProseMirror 的现代化富文本编辑器框架。它具有模块化、可扩展和响应式的特点&#xff0c;特别适合用于Vue、React等现代前端框架中。 主要特点 1. 模块化设计 import { Editor } from tiptap/core import StarterKit from tiptap/starter-kitconst …

STM32完全学习——FATFS0.15移植SD卡

一、下载FATFS源码 大家都知道使用CubMAX可以很快的将&#xff0c;FATFS文件管理系统移植到单片机上&#xff0c;但是别的芯片没有这么好用的工具&#xff0c;就需要自己从官网下载源码进行移植。我们首先解决SD卡的驱动问题&#xff0c;然后再移植FATFS文件管理系统。 二、SD…

5、栈应用-表达式求值

本章内容使用上述栈结构函数&#xff0c;来完成表达式求值操作。 表达式例如&#xff1a;3*(7-2) 或者 (0-12)*((5-3)*32)/(22) 。 1、实现思路 a、建立OPTR&#xff08;运算符&#xff09;和OPND&#xff08;数字&#xff09;两个栈&#xff0c;后输入字符串以结束 b、自左向…

【递归与回溯深度解析:经典题解精讲(下篇)】—— Leetcode

文章目录 有效的数独解数独单词搜索黄金矿工不同的路径||| 有效的数独 递归解法思路 将每个数独的格子视为一个任务&#xff0c;依次检查每个格子是否合法。 如果当前格子中的数字违反了数独规则&#xff08;在行、列或 33 小方块中重复&#xff09;&#xff0c;直接返回 Fals…

Llama 3 预训练(二)

目录 3. 预训练 3.1 预训练数据 3.1.1 网络数据筛选 PII 和安全过滤 文本提取与清理 去重&#xff08;De-duplication&#xff09; 启发式过滤&#xff08;Heuristic Filtering&#xff09; 基于模型的质量过滤 代码和数学推理数据处理 多语言数据处理 3.1.2 确定数…

Mono里运行C#脚本8—mono_image_storage_open打开EXE文件

Mono里运行C#脚本8—mono_image_storage_open打开EXE文件 前面分析哈希表的实现,以及文件打开的底层函数,还有保存到HASH表里的数据结构。 static MonoImageStorage * mono_image_storage_open (const char *fname) { char *key = NULL; key = mono_path_resolve_symlinks…

前端项目 node_modules依赖报错解决记录

1.首先尝试解决思路 npm报错就切换yarn &#xff0c; yarn报错就先切换npm删除 node_modules 跟 package-lock.json文件重新下载依 2. 报错信息&#xff1a; Module build failed: Error: Missing binding D:\vue-element-admin\node_modules\node-sass\vendor\win32-x64-8…

双指针——查找总价格为目标值的两个商品

一.题目描述 LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09; 二.题目解析 这个题目非常简单&#xff0c;其实就是判断有没有两个数加起来等于target。 三.算法解析 1.暴力解法 暴力解法的话我们可以枚举出所有的情况&#xff0c;然后判…

sqlserver镜像设置

本案例是双机热备&#xff0c;只设置主体服务器&#xff08;主&#xff09;和镜像服务器&#xff08;从&#xff09;&#xff0c;不设置见证服务器 设置镜像前先检查是否启用了 主从服务器数据库的 TCP/IP协议 和 RemoteDAC &#xff08;1&#xff09;打开SQL Server配置管理器…

Elasticsearch:analyzer(分析器)

一、概述 可用于将字符串字段转换为单独的术语&#xff1a; 添加到倒排索引中&#xff0c;以便文档可搜索。级查询&#xff08;如 生成搜索词的 match查询&#xff09;使用。 分析器分为内置分析器和自定义的分析器&#xff0c;它们都是由若干个字符过滤器&#xff08;chara…

ElementPlus 自定义封装 el-date-picker 的快捷功能

文章目录 需求分析 需求 分析 我们看到官网上给出的案例如下&#xff0c;但是不太满足我们用户想要的快捷功能&#xff0c;因为不太多&#xff0c;因此需要我们自己封装一些&#xff0c;方法如下 外部自定义该组件的快捷内容 export const getPickerOptions () > {cons…

低代码开发平台排名2024

低代码开发平台在过去几年中迅速崛起&#xff0c;成为企业数字化转型的重要工具。这些平台通过可视化界面和拖放组件&#xff0c;使业务人员和技术人员都能快速构建应用程序&#xff0c;大大缩短了开发周期。以下是一些在2024年值得关注和使用的低代码开发平台。 一、Zoho Cre…