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,一经查实,立即删除!

相关文章

图像处理-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)…

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…

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 确定数…

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

一.题目描述 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…

计算机网络——期末复习(4)协议或技术汇总、思维导图

思维导图 协议与技术 物理层通信协议&#xff1a;曼彻斯特编码链路层通信协议&#xff1a;CSMA/CD &#xff08;1&#xff09;停止-等待协议&#xff08;属于自动请求重传ARQ协议&#xff09;&#xff1a;确认、否认、重传、超时重传、 &#xff08;2&#xff09;回退N帧协…

【MySQL学习笔记】关于索引

文章目录 【MySQL学习笔记】关于索引1.索引数据结构2.索引存储3.联合索引3.1 联合索引的b树结构3.2 索引覆盖&#xff1f;回表&#xff1f;3.3 联合索引最左匹配原则3.5 索引下推 4.索引失效 【MySQL学习笔记】关于索引 1.索引数据结构 索引是一种能提高查询速度的数据结构。…

D104【python 接口自动化学习】- pytest进阶参数化用法

day104 pytest参数化parametrize单参数 学习日期&#xff1a;20241223 学习目标&#xff1a;pytest基础用法 -- pytest参数化parametrize单参数 学习笔记&#xff1a; 参数化 parametrize 参数化可以组装测试数据&#xff0c;在测试前定义好测试数据&#xff0c;并在测试用…

第T4周:TensorFlow实现猴痘识别(Tensorboard的使用)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标&#xff1a; 1、学习tensorboard的使用 具体实现&#xff1a; &#xff08;一&#xff09;环境&#xff1a; 语言环境&#xff1a;Python 3.10 编 译 器…

Docker-构建自己的Web-Linux系统-镜像webtop:ubuntu-kde

介绍 安装自己的linux-server,可以作为学习使用&#xff0c;web方式访问&#xff0c;基于ubuntu构建开源项目 https://github.com/linuxserver/docker-webtop安装 docker run -d -p 1336:3000 -e PASSWORD123456 --name webtop lscr.io/linuxserver/webtop:ubuntu-kde登录 …

小米路由器开启SSH,配置阿里云ddns,开启外网访问SSH和WEB管理界面

文章目录 前言一、开启SSH二、配置阿里云ddns1.准备工作2.创建ddns脚本3.添加定时任务 三、开启外网访问SSH和WEB管理界面1、解除WEB管理页面访问限制2.手动添加防火墙端口转发规则&#xff0c;开启外网访问WEB管理和SSH 前言 例如&#xff1a;随着人工智能的不断发展&#xf…

什么是ESC ---- 防止车辆打滑并提高驾驶时稳定性的技术

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所谓鸡汤&#xff0c;要么蛊惑你认命&#xff0c;要么怂恿你拼命&#xff0c;但都是回避问题的根源&…

LinkedList类 (链表)

目录 一. LinkedList 基本介绍 二. LinkedList 中的法及其应用 1. 添加元素 (1) add() (2) addAll() (3) addFirst() (4) addLast() 2. 删除元素 (1) remove() (2) removeAll() (3) removeFirst() (4) removeLast() 3. 遍历元素 (1) for 循环遍历 (2) for - each …

复习打卡大数据篇——Hadoop MapReduce

目录 1. MapReduce基本介绍 2. MapReduce原理 1. MapReduce基本介绍 什么是MapReduce MapReduce是一个分布式运算程序的编程框架&#xff0c;核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在Hadoop集群上。 MapRed…