科普,什么是代码文件。
电脑程序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光盘的连接,这好比你从台式机中的光驱,取出了光盘。