软件安装源码和二进制包

一、linux中软件安装包分类

1、软件包分类

 源码包

 二进制包

2、源码包

2.1 源码包的概述

什么是源码包?其实就开发完是什么样子就是什么样子,大多数源码包都是c或汇编语言写的。

举例:

 **我们也可以自己写一个c语言的helloworld程序,然后自己编译,自己执行一下,玩玩儿,注意:c语言的程序后缀是.c**
#include

int main (void)

{

      printf ("hello world\n"; 

}

c语言需要c的编译器,就像java语言的jdk,所以要在linux上运行c语言的程序,先要安装工具gcc(这个工具是多语言的集成编译器,里边包含了c语言的编译器),c++语言编写的程序的编译器gcc-c++

yum insall -y gcc gcc-c++
gcc -c hello.c   #-c 生成“.o”头文件。这里会生成 hello.o 头文件,但是不会生成执行文件
gcc -o hello hello.o  #-o 生成执行文件,并制定执行文件名。这里生成的 hello 就是可执行文件
./hello  #执行 hello 文件

在这里插入图片描述

2.2 源码包特点

源码包的优点:

​  开源,如果有足够的能力,可以修改源代码

​  软件是本机编译,安装,所以更加适合自己的系统,更加稳定也效率更高,普遍认为源码包安装比二进制包安装效率高5%左右

 卸载方便,删除安装目录,伦理上认为没的什么残留

源码包有缺点:

 安装过程步骤较多,尤其安装较大的软件集合时,容易出现拼写错误

 编译过程时间较长,安装比二进制安装时间长

 因为是编译安装,安装过程中一旦报错新手很难解决,因为我们安装这些软件绝大多数都不是我们自己开发的

3、二进制包

  3.1 二进制包分类

 在 Debian 和 ubuntu 中,二进制软件包叫 DPKG 包。

 在Red Hat系列的系统中,讲RPM包。

​  我们学习的是 CentOS 7.6,所以我们这里学习的是 RPM 包管理系统

  RPM 包的优点:

 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

 安装速度比源码包安装快的多

  RPM 包的缺点:

 软件包已经经过编译,看不到源代码

 依赖性。

  RPM简单易用,但是它的依赖关系是最头疼的!常见的依赖关系:

   1)树形依赖 a---->b---->c

   2)环形依赖 a---->b---->c---->a

   3)函数库依赖

  安装某个软件,需要某个具体的文件,这个文件没有单独成包,是包含在某一个别的软件包中的。

二 、rpm二进制包的安装

1、rpm 包命名规则

/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm

zsh -5. 0. 2- 28. el7. x86_64.rpm

软件名 主版本号 次版本号  修订 release(第几次发布版本) 操作系统版本/软件发行商 软件包是64位包

修订指是的第几次修改bug。

发布指的是:第几次发布。 发布时,可能只是对软件安装的默认参数做了修改,而没有其它改动。

2、rpm 包手工安装命令
  2.1,RPM 包具体的安装命令

​    1)安装命令

    rpm –ivh 包全名(带绝对路径)
    选项:

​       -i install 安装(install)

​        -v 显示更详细的信息(verbose)

​        -h 显示安装进度(hash)

​         --nodeps 不检测依赖性安装,在实际的工作中不准用。不管依赖性,想强行安装。注意:这样不检测依赖性安装的软件基本是不能使用的,所以不建议这样做,实验中可以玩玩儿,卸载软件的时候可以用一下。

​         --replacefiles替换文件安装。

​         --replacepkgs 替换软件包安装

​         --force 强制安装。不管是否已经安装,都重新安装。就是–replacefiles 和–replacepkgs 的综合

​          作用:找回丢失的重要系统文件,一会儿例子中演示。

       --test 测试安装。**不会实际安装,只是检测一下依赖性。

       --prefix 指定安装路径,这个选项基本不用。如果指定了安装路径, 软件没有安装到系统默认路径中的话, 系统会找不到这些**

      安装的软件,rpm包的安装的卸载命令就不能卸载掉软件,卸载就需要你一个文件一个文件的删除。所以 rpm 包我们一般都采用默认路径安装。

    2)依赖的解决办法

      A、针对a---->b---->c 这种依赖,先安装c,再安装b,最后安装a

      B、针对a---->b---->c---->a 这种依赖

         1、强制安装 ----暴力型

          ​ 使用rpm -i –force --nodeps 强制安装。忽略依赖关系。这种方法你可以先装A包,再装B包,再装C包。这样还是有点隐患的, 感觉不是很踏实(虽然其实目前没发现什么不好)**,**安装后使用成功的前提是:你要搞清楚依赖关系,并且把这些包都装好。好处是:不用管它们的具体依赖关系先后顺序。

        2、还可以一次性全装上— 一网打尽型

​          可以把依赖的几个包拷出来放在同一个文件夹里 然后 rpm -ivh *.rpm 这样也可以 前提也是一个都不能少。

      C、遇到函数库依赖,需要知道所缺文件在哪个软件包中,这需要在网站www.rpmfind.net上查询一下在安装。搞定!

在这里插入图片描述

在这里插入图片描述         上面A解决办法都是说的轻松但做起来,要命!太繁琐!B必须事先知道安装的软件所需要的所有依赖,但是不同的系统,不同的安装模式下的系统,这个依赖都是不同的,是一个不确定的东西,实践起来,也不好使!

         D、 使用yum技术安装 --使用服务器方式

            ​ yum是一个服务器资源技术。通过在线下载服务器资源的方式,也可以用光盘做为本地的软件包的来源。 缺点:太繁琐。要设置一堆的东西。优点:设置以后,很方便,需要的大多数资源都可以从服务器/本地yum源上找到。这点感觉很像maven!

例: 用apache为例子,安装一下,演示一下上面的讲的知识点!,实际开发中是用yum的

#挂载光盘到/cdrom,临时的
mkdir /cdrom
mount /dev/sr0 /cdrom
mount: /dev/sr0 写保护,将以只读方式挂载
cd /cdrom
cd Packages/
ls | grep "^httpd"    #查一下httpd服务需的软件包,这里有4个,第一个为主包,一般来说安装了主包,都可运行
  
  httpd-2.4.6-88.el7.centos.x86_64.rpm
  httpd-devel-2.4.6-88.el7.centos.x86_64.rpm
  httpd-manual-2.4.6-88.el7.centos.noarch.rpm
  httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
  
rpm -ivh httpd-2.4.6-88.el7.centos.x86_64.rpm  #安装主包

         安装主包时:提醒要三个依赖库和一个依赖包,一个依包在我们的光盘里有,ls |grep “xxx”查之,而库函数依赖要到一个网站www.rpmfind.net中查,noarch表示64位或32位系统都可用,一般来说在光盘里也有相应的包,安装之,没有下载上传安装之

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

   函数库依赖包解决后,再回到刚开始再次安装主包,这会儿,会显示只剩三个依赖包安装,安装呀!重复上面的操作,哎,要亲命哦,我用这种 方式就没安装成功过软件,当然了,如果你有足够定力的话,是可以成功的。

apache安装完后,启动安装的软件(服务),以Apache 服务为例:

systemctl start httpd 启动

systemctl stop httpd 关闭

systemctl restart httpd 重启

systemctl status httpd 查看状态

systemctl enable httpd.service #开机启动

systemctl disable httpd.service #开机不启动

apache的网页存放位置:/var/www/html

cd /var/www/html
vi index.html

   <html>
   <head>
     <title>xiong</title>
   </head>
      <body>
        hello httpd!
      </body>
   </html>
   

apache的配置文件位置:/etc/httpd/conf/httpd.conf

上是rpm安装方式的这些文件的位置,源码安装的位置讲到的时候在说

在这里插入图片描述rpm包安装都是安装到默认安装位置,这些位置大多数在这些地方:

  • /etc/ 配置文件安装目录
  • /usr/bin/ 可执行的命令安装目录
  • /usr/lib/ 程序所使用的函数库保存位置
  • /usr/share/doc/ 基本的软件使用手册保存位置
  • /usr/share/man/ 帮助文件保存位置

–force 强制安装来解决重要配置文件丢失的问题:
为了测试,我到/etc/httpd/conf下,删除httpd.conf文件(事先备份一个),再重启 httpd会发现问题的

cd /etc/httpd/conf
mv httpd.conf httpd.conf.bak
systemctl restart httpd
    job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
rpm -ivh --force /cdrom/Packages/httpd-2.4xxxxxxxx.rpm    

在这里插入图片描述

在这里插入图片描述

   本人通过测试,这是要在本地yum源安装的时候才有效果,但如果是,通过阿里云或其它网络yum源安装的httpd的话,则要移除yum remove httpd,再得新安装之yum install httpd

2.3RPM包升级命令

   # rpm –Uvh 包全名

​       选项:

​       -U(大写) 升级安装,如果没有安装过,系统直接安装。如果安装过的版本较旧,则升级到新版本(upgrade)

   # rpm –Fvh 包全名

     ​ 选项:

​       -F(大写)升级安装, 如果没有安装过, 则不会安装。 必须安装有较旧版本, 才能升级 (freshen)

2.4卸载命令(卸载软件,不推荐使用yum命令的卸载)

   # rpm -e 包名(只需要跟上软件的名称就ok)

     ​ 选项:

     ​ --nodeps 不检查依赖性

     ​ -e 卸载

查询

1)查询软件包是否安装(只能查询出rpm包安装的软件,源码安装的软件是查不了的)

rpm –q 包名

选项:

q: 查询(query)

2)查询系统中的所有安装软件包

 rpm -qa

选项:

​ -a:所有(all)

​ 当然,可以用管道符来查看所需的内容,比如:

   rpm -qa | grep httpd

3)查询软件包的详细信息

   rpm –qi 包名

选项:

-i: 查询软件信息(information)

也可以查询还没有安装的软件包的详细信息

 rpm –qip 包全名

选项:

​ -p: 查询没有安装的软件包(package)

4)查询软件包中的文件列表

可以查询已经安装的软件包中的文件列表和安装的完整目录

  rpm –ql 包名

选项:

-l: 列出软件包中所有的文件列表和软件所安装的目录(list)

可以查询还没有安装

数字证书

​ 刚刚的校验方法只能对已经安装的 RPM 包中的文件进行校验, 但是如果 RPM 包本身就被动过手脚,

那么校验就不能解决问题了。我们就必须使用数字证书验证了。 数字证书说白了就是一个电子签名,有签名

表示它是centos官方开发的rpm软件包,是安全的,不是别人动过手脚的软件包,没的,就有可能是别人动

过手脚的软件包,至少不是官方发布的。

数字证书的使用,重要在新的服务器器上一定做这几步操作:

 首先必须找到原厂的公钥文件,然后进行安装

 再安装 RPM 包时, 会去提取 RPM 包中的证书信息, 然后和本机安装的原厂证书进行验证

 如果验证通过,则允许安装;如果验证不通过,则不允许安装并警告.

在这里插入图片描述

1)数字证书(原厂的公钥文件)位置

数字证书在安装光盘中就有,安装系统后,我们应该导入这个证书:RPM-GPG-KEY-CentOS-7

另外在linux系统中也有,位置在:/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

2)数字证书导入 ,上面两个位置的,导入那个都是一样的

# rpm –import /mnt/RPM-GPG-KEY-CentOS-7

选项:

–import 导入数字证书

rpm在线安装

  rpm 包在线安装( yum 安装)

3.1yum 源的配置文件解析

  yum 源配置文件保存在/etc/yum.repos.d/目录中,文件的扩展名一定是“.repo”。也就是说,yum 源配置文件只要扩展名是“.repo”就会生效。

#ls  /etc/yum.repos.d/

CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo

CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo

这个目录中有 7 个 yum 源配置文件,默认情况下 CentOS-Base.repo 文件生效,这个文件中又有多个具体的yum源。

在这里插入图片描述

​    在 CentOS-Base.repo 文件中有 4 个 yum 源,这里只列出了 base,其他和 base类似。我们解释一下 base 这个源。

 [base]:源的名称,一定要放在[]中,在一个配置文件中,这个名字不能重复。

 name:源说明,可以自己随便写。

 mirrorlist: yum 源服务器的镜像站点地址。

 baseurl: yum 源服务器的地址。

   mirrorlist和baseurl两个配置,只能使用一个,用那个都可以,默认的地址都在国外,这里可以使用国内的镜像163,aliyun都行

 enabled:此容器是否生效,如果不写或写成 enabled=1 则表示此容器生效,写成 enabled=0则表示此容器不生效。

 gpgcheck:如果为 1 则表示 RPM 的数字证书生效;如果为 0 则表示 RPM 的数字证书不生效。

 gpgkey:数字证书的公钥文件保存位置。不用修改。gpgcheck为1才有用,gpgcheck为0就可以不需要。

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

3.2搭建本地光盘 yum 源,前面已经讲过了,这里不重复
3.3 yum 命令

  • 1)查询
     查询 yum 源服务器上/本地yum源上所有可安装的软件包列表。
#yum list  

  查询所有可用软件包列表

 查询 yum 源服务器中是否包含某个软件包。
#yum list 包名(这个的包名必须写完整)
#查询单个软件包

   搜索 yum 源服务器上所有和关键字相关的软件包。
yum search 关键字(不是完整的包名,是关键字)
#搜索服务器上所有和关键字相关的软件包
yum search 搜索可以用于确定某个命令在哪个相关包当中。比如可以确定“ifconfig”命令需要安装“net-tools”包。

查询指定软件包的信息。
yum info samba
查询 samba 软件包的信息
Available Packages 还没有安装
Name : samba 包名
Arch : i686 适合的硬件平台
Version : 3.5.10 版本
Release : 125.el6 发布版本
Size : 4.9 M 大小
Repo : c6-media 在光盘上

  • 2)安装

三,源码包安装

1. 注意事项

  1.1 应该选择哪种软件包?

 如果软件包是给大量客户提供访问,建议使用源码包安装,如LAMP环境搭建,因为源码包效率更高。其实现在的集群环境下,大多数RPM包也不慢了,大部分软件包的安装也都是二级制RPM包安装了。

 如果软件包是给Linux底层使用,或只给少量客户访问,建议使用rpm包安装,因为rpm包简单。

1.2 源码包是从哪里来的?

​    rpm包是光盘中直接包含的,所以不需要用户单独下载。而源码包是通过官方网站下载的(tar .gz或tar.bz2格式)

1.3 源码包:大多数情况下须指定安装位置(源码包没有安装数据库,没有删除命令,最好指定安装到一个目录里,删除目录就是删除软件) ,极少数源码安装指定了位置会报错。

2.安装过程 (核心的过程就是三板斧,编译前的准备,编译,安装)

  我们来解释一下源码包安装的具体步骤。 一般情况下源码包里都会有大写INSTALL一样的名字说明文件,里边详细有安装的步骤。

  • (1)下载软件包。

  • (2)解压缩。

  • (3)进入解压目录。

  • (4)./configure 编译前准备

​       这一步主要有三个作用:

​       ① 在安装之前需要检测系统环境是否符合安装要求。

​       ② 定义需要的功能选项。“./configure”支持的功能选项较多,可以执行“./configure --help”命令查询其支持的功能。一般都会通过 “./configure --prefix=安装路径” 来指定安装路径。

​       ③ 把系统环境的检测结果和定义好的功能选项写入 Makefile 文件, 后续的编译和安装需要依赖这个文件的内容。

​    需要注意的是,configure 不是系统命令,而是源码包软件自带的一个脚本程序,所以必须采用“./configure”方式执行(“./”代表在当前目录下)。

  • (5)make 编译

​ make 会调用 gcc 编译器,并读取 Makefile 文件中的信息进行系统软件编译。编译的目的就是把源码程序转变为能被 Linux 识别的可执行文件,这些可执行文件保存在当前目录下。编译过程较为耗时,需要有足够的耐心。

  • (6)make clean:清空编译内容**(非必需步骤,出错后,从新编译前,一般要执行这步,清理一下)。**

​ 如果在“./configure”或“make”编译中报错,那么我们在重新执行命令前一定要记得执行 make clean 命令,它会清空 Makefile 文件或编译产生的“.o”头文件。

  • (7)make install: 编译安装

​     &emsp**;这才是真正的安装过程,一般会写清楚程序的安装位置。如果忘记指定安装目录,则可以把这个命令的执行过程保存下来,以备将来删除使用。**

3. 删除

源码包没有删除命令,如果需要删除,直接删除安装目录即可。所以编译时,最好用–prefix=安装路径,指定安装的地方,这样删除效果相当好,要不然的话,安装的到处都是文件。

4. 源码安装出先找不到库文件或软件包的错误后的一般解决办法总结:

# yum search 找不到的包或库文件

# yum search prce #全部名字查不到,可以查找部分关键字

http://www.rpmfind.net/ #还可以在网上取查,遇到库文件的时候

no

error

安装Apach来举例演示:

一,下载

https://downloads.apache.org/httpd/

在这里插入图片描述

二,上传

三,安装

​ 1.cd /usr/local

2.tar -zxvf xxxx.tar.gz

3.cd /user/local /xxxx //进入解压后的目录,该目录下有一个INSTALL,可以cat INSTALL看看安装步子

4…/configure --prefix=/usr/local/apache

 //出现如下错误,说是找不到APR包,我们可以YUM SEARCH APR,查询一些该包是什么样的

在这里插入图片描述

//安装该包时,又说安装了,无须处理,什么也没做,这是因为安装时索引包没安装,它在开发包中

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

//安装好了,再次执行预编译,如果再次出现没找到XXXX包,参考上面,再做呀。

//如果是库文件(LIB字样)找不到,再可以到http://www.rpmfind.net/ 中查,再回系统中

​ yum search 软件包名

   yum  install 软件包名

在这里插入图片描述

​ //上图是没有安装C语言编译器,要安装gcc gcc-c++

  yum install -y gcc gcc-c++

5.编译

​    make //比较耗时,一分钟左右,如果是一两兆的话,要花几十分钟编译,这也是源码安装的不好之处。

6.安装

         make install

   7.启动

​    cd /usr/local/apache2

   ./apachectl start

Apache源码安装后的配置文件的位置:

配置文件: /usr/local/apache2/conf/httpd.conf

网页文件: /usr/local/apache2/htdocs/

日志位置: /usr/local/apache2/logs/

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_33406021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值