视频与文档都来自尚硅谷,点此链接(http://www.atguigu.com/linux_video.shtml#linux_yw)
1.rpm包安装的软件可以在 /usr/share/applications里看到,可以在这个目录里启动软件,也可以把他们复制到桌面,到桌面上启动
2.源码包安装的位置,在指定的文件夹里,有专门的安装和启动脚本。
2.1源码包是什么样的
源码包就是开放的源程序,把代码直接给我们。 作者写完之后是什么样,给我们的就是什么样,一般都是些高级语言文件和程序。
2.2源码包优缺点
源码包的优点是:
源码包也有缺点
3.1二进制包分类
DPKG 包:是由 Debian Linux 所开发出来的包管理机制,通过 DPKG 包,Debian Linux 就可以进行软件包管理。主要应用在 Debian 和 unbuntu 中。 RPM 包:是由 Red Hat 公司所开发的包管理系统。功能强大,安装、升级、查询和卸载都非常简单和方便。目前很多 Linux 都在使用这种包管理方式,包括 Fedora、CentOS、SuSE 等。我们将要学习 RPM 包管理系统
也就是ubuntu下的二进制包是dpkg包,centos是rpm包,且两者不能通用
3.2特点
RPM 包的优点:
RPM 包的缺点:
3.3RPM包依赖
linux下依赖性很多
在windows下只有极个别的有依赖性,最常见的就是游戏
函数库依赖又称为模块依赖 什么是模块依赖?我们举一个例子,尝试安装以下文件
.so结尾的是函数库文件 发现报错,需要安装“libodbc.so.2”函数库文件,这时会发现在光盘中根本找不到这个文件。那是因为函数库没有单独成包,是包含在某一个软件包中的。而如果要知道在哪个软件包中,需要查询网站www.rpmfind.net,如图:
到底安装源码包还是二进制包呢
①源码包(访问量大):如果服务给大量客户端访问的话使用源码包,效率高。 比如搭建网站等。
②二进制包(访问量小):少量用户、本地使用的话则用二进制包下载,管理起来简单方便。
1.手工安装(有依赖性)
2.yum命令安装(在线安装)
yum是一种方式,而不是一种软件包。它会自动连接到官方,无论什么依赖,都会下载到本地。
它的缺点是:收费
1.手工安装(有依赖性)
2.apt-get命令安装
文章一 文章二
重点是文章一!!!
1.httpd 软件包名,也是进程名 2.2.2.15 软件版本 3.15 软件发布的次数 4.el6 软件发行商。el6 是 RedHat 公司发布,适合 RHEL6.x(Red Hat Enterprise Linux)和 CentOS6.x下使用 5.i686 适合的硬件平台。RPM 包可以在不同的硬件平台安装,选择适合不同 CPU 的软件版本,可以最大化的发挥 CPU 性能,所以出现了所谓的 i386(386 以上计算机都可以安装)、i586(586以上的计算机都可以安装)、i686(奔腾 II 以上计算机都可以安装,目前所有的 CPU 都是奔腾 II 以上,所以这个软件版本居多)、x86_64(64 位 CPU 可以安装)和 noarch(没有硬 件限制)等文件名了。 6.rpm rpm 包的扩展名。我们说过 Linux 下文件不是靠扩展名区分文件类型,也就是 Linux 中扩展名没有任何含义。可是这里怎么又出现了扩展名呢?原因很简单,如果我不把 RPM 的扩展名叫做“.rpm”,管理员很难知道这是一个 RPM 包,当然也就无法正确安装了。也就是说如果RPM 包不用“.rpm”作为扩展名,系统可以正确识别没有问题,可是管理员很难识别这是个什么样的软件。
2.1 rpm包安装
(1)安装命令
一般先从主包开始安装,然后会出现一堆依赖性,根据它提示的来(依赖的包在前面),最后成功安装,主包安装完后,基本功能就有了
(2)服务启动,service或systemctl
什么时候要重启服务?只有修改了配置文件的时候才需要重启服务
只有rpm包可以service方式启动
2.2 rpm包默认安装位置(作者觉得合理的位置)
不要给rpm包指定安装位置!!默认位置够好了!
源码包一定要指定安装位置
下面只是一部分路径 ↓
2.3 rpm包安装不常用命令选项,也就用用–force和–test,其他坚决不准使用
这些命令加在 rpm -ivh 后面,比如 rpm -ivh --force 包全名
2.4 rpm包升级,一般用Uvh。不需要进入Packages目录。
注意升级得用包全名!!!因为升级对没安装的软件也有效
这种方式不能一次性升级系统中全部的软件包
2.5 卸载,注意卸载也有依赖性,不过与安装顺序相反
想安装b,得先安装c 想卸载b,得先卸载a
注意看下面的提示,这个包是被另外一个包需要,不是这个包依赖于另一个包
2.6 查询,这里查的是系统里的信息,也就是个人端的信息。不需要进入Packages目录
yum查的是服务器端的信息,显示的内容和个人端的不一样。当然如果是本地yum源的话除外。
(1)查询软件包是否安装
(2)查询系统中的所有安装软件包
可以查询 Linux 系统中所有已经安装的软件包,命令格式如下:
当然,可以用管道符来查看所需的内容,比如:
你会发现,使用“rpm -q 包名”只能查看这个包是否安装,但是使用“rpm -qa | grep 包名”会把包含包名称的所有包都列出来。
(3) 查询软件包的详细信息,用得少
可以查询已经安装的某个软件包的详细信息,命令格式如下:
也可以查询还没有安装的软件包的详细信息,命令格式如下
(4)查询软件包的文件列表,也就是查询已经安装的软件包安装位置在哪(根据包名找文件)。非常常用
可以查询已经安装的软件包中的文件列表和安装的完整目录,命令格式如下:
那么,可以查询还没有安装的软件包中的文件列表和打算安装的位置吗?答案是可以,命令格式 如下:
(5)查询系统文件属于哪个 RPM 包,根据文件找包名,(4)的逆向查找
既然可以知道每个 RPM 包中的文件的安装位置,那么可以查询系统文件属于哪个 RPM 包吗?当然可以,不过需要注意的是,手工建立的文件是不能查询的,因为这些文件不是通过 RPM 包安装的,当然不能反向查询它属于哪个 RPM 包。命令格式如下:
(6) 查询软件包所依赖的软件包,用得少,意义不大
查询系统中和已经安装的软件包有依赖关系的软件包,命令格式如下:
可以查询没有安装的软件包的依赖性吗?加“-p”选项即可。例如,查看一下还没有安装的 bind软件包的依赖包,可以执行如下命令:
(7) 总结
2.7 验证,与原始值对比
(1)基本命令
(2)验证举例
出现了提示信息(也就是与原始文件对比看新文件有没有不同),我们来解释下最前面共有 8 个信息内容,是表示验证内容的。文件名前面的 c是表示这是个配置文件(configuration)。最后是文件名。那么验证内容中的 8 个信息的具体内容 如下:
- S 文件大小是否改变
- M 文件的类型或文件的权限(rwx)是否被改变
- 5 文件 MD5 校验和是否改变(可以看成文件内容是否改变) (而且文件内容也包括文件大小) MD5:一种加密方式,用于文件完整性检验。 它会给文件生成一个MD5码,这个MD5码在每台电脑上都是一样的,如果文件稍微有点改动,这个MD5码都会改变,因此可以用来检验文件完整性。
- D 设备的主从代码是否改变
- L 文件路径是否改变
- U 文件的属主(所有者)是否改变
- G 文件的属组是否改变
- T 文件的修改时间是否改变
apache 配置文件的文件类型是 c,那么还有哪些文件类型呢? c 配置文件(config file) d 普通文档(documentation) g “鬼”文件(ghost file),很少见,就是该文件不应该被这个 RPM 包包 含 ,如果出现了鬼文件那就说明rpm包出问题了,正常情况下不会出现鬼文件 l 授权文件(license file) r 描述文件(read me)
2.8数字证书,很重要
刚刚的校验方法只能对已经安装的 RPM 包中的文件进行校验,但是如果 RPM 包本身就被动过手脚,那么校验就不能解决问题了。我们就必须使用数字证书验证了(原始值被改了,可能我下的rpm包不是从官网上的)。
数字证书有如下特点:
- 首先必须找到原厂的公钥文件,然后进行安装
- 再安装 RPM 包是,会去提取 RPM 包中的证书信息,然后和本机安装的原厂证书进行验证
- 如果验证通过,则允许安装;如果验证不通过,则不允许安装并警告(也就是说只有和数字证书保证的原始值一样才能安装这个rpm包)
安装完系统一定要安装并导入数字证书!!!这个证书用来保证原始值是没问题的
(1) 数字证书位置
那么数字证书在哪里呢?其实在 CentOS 7的第一张光盘中就有,当然它默认也会放在系统中
(2) 不要忘了导入数字证书!!!跟配置ip一样重要!
我们如何查询系统中安装好的数字证书呢?命令如下:
2.9 RPM包中文件的提取,可用可不用
①:rpm包内容提取主要用于修改源文件,但忘了改了什么,或者忘了里面的内容,无法改回来的情况。且用强制覆盖安装不好解决问题。(不是说强制覆盖安装不能解决问题,我们可以先把文件删了,再强制覆盖安装。)
②:强制覆盖安装最好用于修改了文件位置但文件内容没有被修改的情况下
③:因为重新强制覆盖安装仍会保存安装之前文件里的内容
④:所以修改重要系统文件前一定要先备份
(1)cpio命令,原本是用来备份还原的,但是及其不方便,所以不用它来做备份还原。cpio了解一下就行了。有更好的方式备份还原,现在cpio主要的作用是rpm包中的指定文件提取出来
讲CPIO的原因是想要提取rpm包中的内容只能用cpio,也就是提取内容不等于备份还原。备份还原可以用其他方式,但提取rpm包的内容只能用cpio
cpio 命令主要有三种基本模式:“-o”模式指的是 copy-out 模式,就是把数据备份到文件库中;“-i”模式指的是 copy-in 模式,就是把数据从文件库中恢复;“-p”模式指的是复制模式,就是不把数据备份到 cpio 库中,而是直接复制为其他文件。命令如下
举几个例子吧,先来看看使用 cpio 备份数据的方法,命令如下:
再来看看如何恢复 cpio 的备份数据,命令如下:
CentOS5.x 的版本中,是可以利用上面的命令备份与恢复指定的文件。但是到 CentOS6.x 当中,需要更加严谨。如果备份时使用绝对路径,则恢复的数据会直接到绝对路径指定的路径中,如果需要把数据恢复到当前目录中,则需要使用相对路径,例如:
最后来演示一下 cpio 命令的“-p”复制模式,命令如下:
(2) 真正到提取RPM包中文件了,这是要掌握的。因为现在cpio主要的作用是rpm包中的指定文件提取出来
举个例子,现在我假设把系统中的/bin/ls 命令不小心误删除了,那么我可以修复回来吗?这时有两种方法修复,要不就是使用—force 选项覆盖安装一遍 coreutils-8.4-19.el6.i686 包,要不就可以使用 cpio 命令提取出/bin/ls 命令文件,再把它拷贝到对应位置就可以了。不过我是怎么知道/bin/ls命令是属于 coreutils-8.4-19.el6.i686 这个软件包的呢?还记得-qf 选项吗?命令如下:
那么我们在讲 RPM 包中文件提取,所以我们使用第二章方法,cpio 命令提取出 ls 命令文件,然后拷贝到对应位置,命令如下:
注意–force的用法 注意:这样可能会造成一个问题,就是我们误删了新版rpm包的文件,我们用提取文件内容这种方法解决。但我们Packages目录里只有旧版本的rpm包,所以我们只是把旧版本rpm包的文件替换上去了。
3.1yum源文件解析
yum 源配置文件保存在/etc/yum.repos.d/目录(这个目录要背下来)中,文件的扩展名一定是“.repo”。也就是说,yum 源配置文件只要扩展名是“.repo”就会生效。(无论是base还是Media的repo文件都可以生效)
记住,只有.repo结尾的文件才能生效!!
这个目录中有 5 个 yum 源配置文件,默认情况下 CentOS-base.repo 文件生效。我们打开这个文件看看(注意这里是CentOS6),命令如下
在 CentOS-base.repo 文件中有 5 个 yum 源容器,这里只列出了 base 容器,其他容器和 base 容器类似。我们解释一下 base 这个容器。 [base]:容器名称,一定要放在[]中。
- name:容器说明,可以自己随便写。没什么用
- mirrorlist:镜像站点,这个可以注释掉。
- baseurl:我们的 yum 源服务器的基本地址。默认是 CentOS 官方的 yum 源服务器,是可以使用的。如果你觉得慢,则可以改成你喜欢的 yum 源地址。 镜像地址和基本地址只能有一个生效!!其中一个要注释掉或者不写
- enabled:此容器是否生效,如果不写或写成 enabled=1 则表示此容器生效,写成 enabled=0则表示此容器不生效。默认为1。而且我们默认用的是base.repo,这里面的容器当然要生效。
- gpgcheck:如果为 1 则表示 RPM 的数字证书生效;如果为 0 则表示 RPM 的数字证书不生效。gpgcheck一定要为1,让它生效!!
- gpgkey:数字证书的公钥文件保存位置。不用修改。
我这里已经切换成了阿里云的yum源。 切换阿里云yum源点我
3.2搭建本地光盘yum源
第一步:放入 CentOS 安装光盘,并挂载光盘到指定位置。命令如下:
第二步:修改其他几个 yum 源配置文件的扩展名,让它们失效,因为只有扩展名是“*.repo”的文件才能作为 yum 源配置文件。当然也可以删除其他几个 yum 源配置文件,但是如果删除了,当你又想用网络作为 yum 源时,就没有了参考文件,所以最好还是修改扩展名。命令如下:
第三步:修改光盘 yum 源配置文件 CentOS-Media.repo,参照以下方法修改:
我这里拿CentOS7举例 配置完成,现在可以感受一下yum的便捷了 执行 yum list
3.3yum命令,用到的都是包名。yum命令不再区分包名包全名了
(1)查询,注意查询的是yum源服务器上的信息!不能查本机!
1.查询 yum 源服务器上所有可安装的软件包列表。
2.查询 yum 源服务器中是否包含某个软件包。(必须明确知道包名)
ifconfig包含在net-tools.x86_64内,我们可能不知道这个包名,所以要想找到得用yum search
3.搜索 yum 源服务器上所有和关键字相关的软件包。(搜的是关键字)
yum search 搜索还可以用于确定某个软件在哪个相关包当中。此例子可以确定“ifconfig”命令需要安装“net-tools”包
4.查询指定软件包的信息。跟rpm -qi 一样
(2)安装,首先你得知道包名
注意:包名和包全名的概念只对rpm包手工命令安装生效,yum方式安装的话,无论这个rpm包是否安装,都用的是包名
(3)升级
注意:在进行升级操作时,yum 源服务器中软件包的版本要比本机安装的软件包的版本高。
这条命令会升级系统中所有的软件包。不过我们的生产服务器是稳定优先的,所以这种全系统升级的情况并不多见。
(4)卸载
再次强调一下,除非你确定卸载的软件的依赖包不会对系统产生影响,否则不要执行 yum 的卸载,因为很有可能在卸载软件包的同时卸载的依赖包也是重要的系统文件,这就有可能导致系统崩溃。 卸载命令如下:
3.4 yum组管理命令,用于不知道包名的情况下,而且很简单、方便
1.查询可以安装的软件组
2.查询软件组内包含的软件
3.安装软件组
4.卸载软件组
3.5 总结
1.1 应该选择哪种软件包?
- 如果软件包是给大量客户提供访问,建议使用源码包安装,如LAMP环境搭建,因为源码包效率更
- 如果软件包是给Linux底层使用,或只给少量客户访问,建议使用rpm包安装,因为rpm包简单
上面只是建议而已,能用rpm就用rpm包
1.2 源码包是从哪里来的?
rpm包来源:1.光盘中直接包含的,不需要用户单独下载。 2.官网下载rpm包 3.yum在线安装 源码包:通过官方网站下载的,如果需要使用,是需要单独下载的
1.3 是否可以在系统中即安装rpm包的Apache,又安装源码包的Apache?
答案是可以,因为两种安装方法安装的Apache,安装位置是不一样的,例如
1.4 生产服务器上,是否会同时安装两种Apache?
可以装两个,但实际上决不允许装两个
当然不会啊,因为系统中只有一个80端口(80端口是Apache端口),所以你只能启动一个Apache,装多个只能浪费资源。我们建议安装源码包的Apache。
服务器什么时候可以修改端口:
①:如果服务是给大量客户端访问的,不建议更换端口,因为用户就找不到这个服务了
②:如果服务是给内部人员使用的,建议更换端口,因为更加安全(比如SSH端口)
我们来解释一下源码包安装的具体步骤。 (1)下载软件包。 (2)解压缩。 (3)进入解压目录。 (4)找到https://blog.csdn.net/weixin_53213086/article/details/configure 做好编译前准备 这一步主要有三个作用: ① 在安装之前需要检测系统环境是否符合安装要求。 ② 定义需要的功能选项。“https://blog.csdn.net/weixin_53213086/article/details/configure”支持的功能选项较多,可以执行“https://blog.csdn.net/weixin_53213086/article/details/configure --help”命令查询其支持的功能。一般都会通过“https://blog.csdn.net/weixin_53213086/article/details/configure --prefix=安装路径”来指定安装路径。 ③ 把系统环境的检测结果和定义好的功能选项写入 Makefile 文件,后续的编译和安装需要依赖这个文件的内容。 可能会出现错误,没装C语言解释器 什么样的情况是报错呢? 安装GCC,然后make clean重新https://blog.csdn.net/weixin_53213086/article/details/configure
需要注意的是 ①:.configure 不是系统命令,而是源码包软件自带的一个脚本程序,所以必须采用“https://blog.csdn.net/weixin_53213086/article/details/configure”方式执行(“https://blog.csdn.net/weixin_53213086/article/details/”代表在当前目录下)。
②:任何源码包都有安装脚本程序,只是可能不叫https://blog.csdn.net/weixin_53213086/article/details/configuere而已,这种情况还是少见的,官方也肯定会给我们一个安装文档,他会告诉我们安装的脚本程序是什么,比如pycharm。后序操作跟https://blog.csdn.net/weixin_53213086/article/details/configure差不多甚至比他还要简单,因为在图形界面下它的安装就跟windows一样,下一步下一步就行;而且pycharm软件的安装位置就是这个解压目录,我们都不需要指定目录了。其实Pycharm更像是后面要讲得脚本程序的安装
有这个pycharm.sh的话我们都不需要执行下面make、make install等步骤了
(5)make 编译,编译:高级语言→机器语言的过程,产生.o文件 make 会调用 gcc 编译器,并读取 Makefile 文件中的信息进行系统软件编译。编译的目的就是把源码程序转变为能被 Linux 识别的可执行文件,这些可执行文件保存在当前目录下。编译过程较为耗时,需要有足够的耐心
(6)make clean:清空编译内容(非必需步骤,只有报错后要重新执行命令前才需要)。 如果在“https://blog.csdn.net/weixin_53213086/article/details/configure”或“make”编译中报错,那么我们在重新执行命令前一定要记得执行 make clean 命令,它会清空 Makefile 文件或编译产生的“.o”头文件。也就是如果报错且产生了.o文件那么就要make clean,只是报错没产生.0文件就不需要make clean (7)make install: 编译安装 这才是真正的安装过程,一般会写清楚程序的安装位置。如果忘记指定安装目录,则可以把这个命令的执行过程保存下来,记下它安装到哪里去了,以备将来删除使用。 ①:因为之前https://blog.csdn.net/weixin_53213086/article/details/configure --prefix=安装路径,已经指定了安装路径,所以这一步不需要指定了;如果之前没指定的话,在这一步要指定安装路径 ②:注意:https://blog.csdn.net/weixin_53213086/article/details/configure和make编译都不会向硬盘里写数据,只有这一步才会向硬盘里写数据,make install这一步很重要!! ③:如果这一步报错了,需要①:make clean ②:删目录
源码包没有删除命令,如果需要删除,直接删除安装目录即可 源码包(除了这个软件可能会有一些工程,比如pycharm会有一些解决方案)中大部分数据都在目录里,直接删目录就相当于删这个软件。
现在有些软件都不需要https://blog.csdn.net/weixin_53213086/article/details/configure了,解压后,进入解压目录里就可直接打开软件,也就是那个解压目录其实就是源码包的安装目录。
提示:安装源码包前一定要看看官方给的安装文档,这能解决90%的问题,当然前提是要看得懂英文
1.rpm包和源码包启动方式最好不要一样
启动rpm包apache
启动源码包apache如下 ↓ 注意:rpm包的启动可以用service,因为他们的启动文件在service搜索范围内,service后面会讲。源码包不能用service(除非把启动文件拷贝到service搜索范围里,但不推荐这么做),启动方式和安装位置不同是两者一个非常重要(也是最主要)的区分手段
2.netstat分不清到底启动的是源码包的apache还是rpm包启动的apache
3.这时候要用到ps命令
ps命令:类似windows任务管理器,查看所有进程(可以区分开启的是rpm包服务还是源码包服务) 命令如下:
1. 补丁的生成
2.举例
3. 比较下两个文件的不同,并生成补丁文件“txt.patch”,命令如下:
#后一个文件比前一个文件多两行(+表示) #如果后一个文件比前一个文件少两行的话则用-表示
4.打入补丁
“-pn”不好理解,我们说明下。补丁文件是要打入旧文件的,但是你当前所在的目录和补丁文件中的记录的目录是不一定匹配的,所以就需要“-pn”来同步两个目录。 比如我当前是在“/root/test”目录中(我要打补丁的旧文件就在当前目录下),补丁文件中记录的文件目录为“/root/test/old.txt”,这时如果写入“-p1”(在补丁文件目录中取消一级目录)那么补丁文件就会打入“/root/test/root/test/old.txt”文件中,这显然是不对的。那如果写入的是“-p2”(在补丁文件目录中取消二级目录)那么补丁文件打入的就是“/root/test/test/old.txt”,这显然也不对。如果写入的是“-p3”(在补丁文件目录中取消三级目录)那么补丁文件就是打入的“/root/test/old.txt”,我们的 old.txt 文件就在这个目录下,所以就应该是“-p3”。那么我们更新下“old.txt”文件,命令如下:
如果补丁中的文件路径是:/root/test/old.txt,当前所在位置为/root/test -p1:删掉/,留下root/test/old.txt,与当前路径拼成/root/test/root/test/old.txt -p2:删掉/root/,留下test/old.txt,与当前路径拼成/root/test/test/old.txt -p3:删掉/root/test/,留下old.txt,与当前路径拼成/root/test/old.txt
解决方法可以是把补丁txt.pat、文件old.txt.orig、文件old.txt.rej删掉,重新生成补丁txt.pat后再打入补丁。
脚本程序包并不多见,所以在软件包分类中并没有把它列为一类。它更加类似于 Windows 下的程序安装,有一个可执行的安装程序,只要运行安装程序,然后进行简单的功能定制选择(比如指定安 装目录等),就可以安装成功,只不过是在字符界面下完成的。 目前常见的脚本程序以各类硬件的驱动居多,我们需要学习一下这类软件的安装方式,以备将来 不时之需。
2.1 简介
我们来看看脚本程序如何安装和使用。安装一个叫作 Webmin 的工具软件,Webmin 是一个基于 Web 的系统管理界面。借助任何支持表格和表单的浏览器(和 File Manager 模块所需要的 Java),你 就可以设置用户账号、apache、DNS、文件共享等。Webmin 包括一个简单的 Web 服务器和许多 CGI 程序,这些程序可以直接修改系统文件,比如/etc/inetd.conf 和 /etc/passwd。Web 服务器和所有的 CGI程序都是用 Perl 5 编写的,没有使用任何非标准 Perl 模块。也就是说,Webmin 是一个用 Perl 语言写的、可以通过浏览器管理 Linux 的软件。
2.2 安装步骤
1.首先下载 Webmin 软件,地址为 http://sourceforge.net/projects/webadmin/files/webmin/,这里下载的 是 webmin-1.996.tar.gz。
2.接下来解压缩软件,命令如下:
3.进入解压目录,命令如下:
不要忘了查看安装帮助文档,找到installation
4.执行安装程序 setup.sh(以webmin1.610为例,webmin1.996和他是一样的),并指定功能选项,命令如下: