Linux——软件安装

1、软件包的分类

Linux下的软件包众多,而且几乎都是经GPL授权的,也就是说这些软件都免费,振奋人心吧?而且更棒的是,这些软件几乎都提供源代码(开源的),只要你愿意,就可以修改程序源代码,以符合个人的需求和习惯。当然,你要具备修改这些软件的能力才可以。

源码包到底是什么呢?其实就是软件工程师使用特定的格式和语法所书写的文本代码,是人写的计算机语言的指令,一般由英文单词组成。是不是有点晕?其实源代码程序就是程序员写的计算机指令,符合特定的格式和语法。那么,众所周知,计算机可以识别的是机器语言,也就是二进制语言,所以需要一名翻译官把abcd翻译成二进制机器语言。我们一般把这名翻译官称为编译器,它的作用就是把人能够识别的abcd翻译成二进制机器语言,让计算机可以识别并执行。

源码包不用担心收费问题,但是我并不会C语言怎么办?那一大堆的源代码程序到底如何使用呢?这个源码包容易安装吗?源码包的安装因为要把源代码编译为二进制语言,所以安装的时间较长。比如,在Windows下大家可能安装过QQ,现在的QQ功能较多,程序相对较大,大概有60MB,但由于QQ并不是以源代码形式发布的,而是经过编译之后发布的,所以只需要几分钟并经过简单的配置就可以安装成功,安装时间较短(当然功能也基本不能自定义)。在Linux中安装一个MySQL数据库,这个数据库的压缩包大概有23MB,需要多长时间呢?答案是30分钟左右(根据计算机硬件配置不同)。这样看来编译还是很浪费时间的,而且绝大多数用户并不熟悉写程序的语言,所以我们要祈祷程序不要报错,否则对初学者来讲很难解决。

为了解决源码包的这些问题,在Linux中就出现了二进制包,也就是源码包经过编译之后的包。这种包因为编译过程在发布之前已经完成,所以用户安装时速度较快(和Windows下安装软件速度相当),而且报错也大大减少。二进制包是Linux下的默认安装软件包,所以有时我们也把二进制包称作默认安装软件包。目前主要有两个系列的二进制包管理系统:一个是Red Hat上的RPM包管理系统;另一个是Debian和Ubuntu上的DPKG包管理系统。本帖讲的是Red Hat公司的CentOS Linux,所以我们主要讲解RPM包管理系统。不过这两个系列的二进制包管理的原理与形式大同小异,可以触类旁通。

说了这么多,到底源码包和二进制包哪个好呢?举个例子,我们想做一套家具,源码包就像所有的家具完全由自己动手手工打造(手工编译),想要什么样的板材、油漆、颜色和样式都由自己决定(功能自定义,甚至可以修改源代码)。想想就觉得爽,完全不用被黑心的厂商所左右,而且不用担心质量问题(软件更适合自己的系统,效率更高,更加稳定)。但是,所花费的时间大大超过了买一套家具的时间(编译浪费时间),而且我自己真的有做木工活这个能力吗(需要对源代码非常了解)?就算请别人定制好的家具,再由我自己组装,万一哪个部件不匹配(报错很难解决),怎么办?那么二进制包呢?也是我需要一套家具,可是我去商场买了一套(安装简单),家具都是现成的,不会有哪个部件不匹配,除非因为我没有量好尺寸而导致放不下(报错很少)。但是我完全不知道这套家具用的是什么材料、油漆是否合格,而且家具的样式也不能随意选择(软件基本不能自定义功能)。

好了,通过这个例子大家可以了解源码包和二进制包有什么区别了吧,后面会再解释一下每种包的特点。

1.2、初识源码包

1.2.1、源码包什么样

说了这么多的源码包,那源码包到底什么样?我们写一段简单的C语言源代码程序,如下:

    [root@localhost ~] vim  hello.c
    #include <stdio.h>
    int main (void)
    {
          printf ("hello world\n");
    }

这段代码是我们学习所有语言都要学习的第一个程序“hello world”,需要注意第一行的“#”不是注释,不能省略。在Linux中不靠扩展名区分文件类型,但我们一般会把C语言的源程序文件用“.c”作为扩展名,这样管理员马上就能知道这是C语言的源代码;而且用“.c”作为扩展名,Vim也会有相应的颜色提示。

1.2.2、源码包的编译器安装

前面说过,源码包需要经过编译之后才能执行。我们在Linux中编译C语言源代码需要使用gcc编译器,但是默认安装的时候是没有安装gcc的,所以我们需要先安装gcc编译器。

    [root@localhost ~] rpm -ivh /mnt/cdrom/Packages/gcc-4.4.6-4.el6.i686.rpm

我们在这里安装的是二进制包的gcc编译器,但是你的系统有可能没有gcc编译器的底层依赖包,这样一来,上面这条命令可能会报错。如果报错,则请参考1.3节。

注意:Linux中的大多数软件包是用C和C++语言开发的,所以,如果要安装源代码程序,则一定要安装编译器gcc和gcc-c++。但是请大家注意,我们的编译器只能使用二进制包方式安装,因为如果我们使用源码包安装gcc,那么它同样需要C语言编译器来解释,这样就会出现安装gcc但是需要gcc的无厘头错误。

1.2.3、源码包编译和执行

源代码有了,编译器也有了,我们就可以编译和执行了。

    [root@localhost ~] gcc -c hello.c
    #-c 生成“.o”头文件。这里会生成hello.o头文件,但是不会生成执行文件
    [root@localhost ~] gcc -o hello hello.o
    #-o 生成执行文件,并指定执行文件名。这里生成的hello就是执行文件
    [root@localhost ~] ./hello
    hello world
    #执行hello文件

我们利用gcc编译hello.c生成hello.o头文件,然后用hello.o生成hello执行文件,执行hello文件就可以看到程序的结果了。

通过上面简单的C语言的源代码程序,我们可以简单地了解源代码程序是什么样子的、源代码程序该如何执行。

1.3、源码包的特点

源码包既然是软件包,就不会是一个文件,而是多个文件的集合。出于发行的需要,我们一般会把源码包打包压缩之后发布,而Linux中最常用的打包压缩格式是“*.tar.gz”,所以我们也把源码包叫作Tarball。源码包需要大家自己去软件的官方网站进行下载。

源码包的压缩包中一般会包含如下内容:

  • 源代码文件。
  • 配置和检测程序(如configure或config等)。
  • 软件安装说明和软件说明(如INSTALL或README)。

源码包的优点如下:

  • 开源。如果你有足够的能力,则可以修改源代码。
  • 可以自由选择所需的功能。
  • 因为软件是编译安装的,所以更加适合自己的系统,更加稳定,效率也更高。
  • 卸载方便。

源码包的缺点如下:

  • 安装过程步骤较多,尤其是在安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误。
  • 编译过程时间较长,安装时间比二进制安装要长。
  • 因为软件是编译安装的,所以在安装过程中一旦报错,新手很难解决。

1.4、二进制包的特点

二进制包是在软件发布的时候已经进行过编译的软件包,所以安装速度比源码包快得多(和Windows下软件安装速度相当)。但是因为已经进行过编译,大家也就不能再看到软件的源代码了。目前两大主流的二进制包系统是DPKG包和RPM包。

  • DPKG包是由Debian Linux所开发的包管理机制,通过DPKG包,Debian Linux就可以进行软件包管理,主要应用在Debian和Ubuntu中。
  • RPM包是由Red Hat公司所开发的包管理系统,功能强大,安装、升级、查询和卸载都非常简单和方便。目前很多Linux版本都在使用这种包管理方式,包括Fedora、CentOS、SuSE等。

Linux默认采用RPM包来安装系统,所以常用的RPM包都在安装光盘中。

RPM包的优点如下:

  • 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载。
  • 安装速度比源码包安装快得多。

RPM包的缺点如下:

  • 经过编译,不能再看到源代码。
  • 功能选择不如源码包灵活。
  • 依赖性。有时我们会发现,在安装软件包a时需要先安装b和c,而在安装b时需要先安装d和e。这就需要先安装d和e,再安装b和c,最后才能安装a。比如,我买了一个漂亮的灯具,打算安装到客厅里,可是在安装灯具之前,客厅总要有顶棚吧,顶棚总要刷好了油漆吧。装修和安装软件其实类似,总要有一定的顺序,但是有时依赖性会非常强。

2、RPM包管理——rpm命令管理

2.1、RPM包的命名规则

RPM包的命名一般都会遵守统一的命名规则,例如:

    httpd-2.2.15-15.el6.centos.1.i686.rpm
  • httpd:软件包名。
  • 2.2.15:软件版本。
  • 15:软件发布的次数。
  • el6:软件发行商。el6是由Red Hat公司发布的,适合在RHEL 6.x(Red Hat Enterprise Linux)和CentOS 6.x上使用。
  • i686:适合的硬件平台。RPM包可以在不同的硬件平台上安装,选择适合不同CPU的软件版本,可以最大限度地发挥CPU性能,所以出现了所谓的i386(386以上的计算机都可以安装)、i586(586以上的计算机都可以安装)、i686(奔腾II以上的计算机都可以安装,目前所有的CPU都是奔腾II以上的,所以这个软件版本居多)、x86_64(64位CPU可以安装)和noarch(没有硬件限制)等文件名。
  • rpm:RPM包的扩展名。我们说过,Linux下的文件不是靠扩展名区分文件类型的,也就是说Linux中的扩展名没有任何含义。可是这里怎么又出现了扩展名呢?原因很简单,如果不把RPM包的扩展名叫作“.rpm”,那么管理员很难知道这是一个RPM包,当然也就无法正确安装了。也就是说,如果RPM包不用“.rpm”作为扩展名,那么系统可以正确识别,但是管理员很难识别这是一个什么样的软件。

注意:我们把httpd-2.2.15-15.el6.centos.1.i686.rpm叫作包全名,而把httpd叫作包名。为什么要做出特殊说明呢?因为有些命令后面一定跟的是包全名,如安装和升级;而有些命令后面一定跟的是包名,如查询和卸载。如果弄错,命令就会报错。

2.2、RPM包的依赖性

我之所以不喜欢RPM包管理系统,是因为RPM包的依赖性。我们看看示意图,如下图所示:
在这里插入图片描述
刚刚说过,假设我们要安装软件包a,则可能需要先安装软件包d和e,再安装软件包b和c才行。有时这种依赖可能会有几十个之多,当然这也要看你的系统默认安装了哪些软件。

但这还不是最可怕的,最可怕的依赖性是什么呢?我们来安装一个RPM包mysql-connector-odbc。这里我们并非讲解安装命令,所以先不说安装命令,只是来看一下安装这个软件的报错:

    [root@localhost ~] rpm -ivh  \
     /mnt/CentOS/mysql-connector-odbc-3.51.26r1127-1.el5.i386.rpm
    #安装指定软件包。\代表一行命令没有完成,换行输入
    warning:  /mnt/CentOS/mysql-connector-odbc-3.51.26r1127-1.el5.i386.rpm:  Header
    V3 DSA signature: NOKEY, key ID e8562897
    error: Failed dependencies:
          libodbcinst.so.1 is needed by mysql-connector-odbc-3.51.26r1127-1.el5.i386

这个报错很明显是依赖性错误(error: Failed dependencies:),也就是说,在安装mysql-connector-odbc前需要先安装libodbcinst.so.1这个软件包。那还不简单,在光盘中找到这个软件包安装上不就行了吗?可是问题来了,我们找遍了两张光盘,发现居然没有叫libodbcinst.so.1的软件包。这是怎么回事?原因很简单,我们一直在说RPM软件包,既然是软件包,那么包中就不止有一个文件,而我们刚刚依赖的libodbcinst.so.1这个库文件只是包中的一个文件而已。如果想要安装libodbcinst.so.1这个库文件,就必须安装它所在的软件包。怎么知道这个库文件属于哪个软件包呢?因为库文件名不和它所属的软件包名类似,所以很难确定这个库文件属于哪个软件包。RPM包管理系统也发现了这个问题,它给我们提供的解决办法是一个网站www.rpmfind.net,如下图所示:
在这里插入图片描述
在搜索框中输入要查找的库文件名,如libodbcinst.so.1,单击“Search”按钮,网站会帮你查询出此库文件所在的软件包。如果在CentOS系统中,那么搜索结果是这个库文件属于unixODBC-libs-2.2.11-10.el5.i386.rpm软件包。所以,只要安装了unixODBC-libs-2.2.11-10.el5.i386.rpm软件包,那么库文件libodbcinst.so.1就会自动安装。

注意:并不是安装mysql-connector-odbc包一定会报缺少libodbcinst.so.1库文件的错误,这和你的系统安装方式有关。如果你的系统默认已经安装好了unixODBC-libs,就不会报刚刚的错误。

那什么是库文件呢?库文件是系统写好的实现一定功能的计算机程序,其他软件如果需要这个功能,就不用再自己写了,直接拿过来使用就可以了,大大加快了软件开发速度。比如,我喜欢玩高达模型,这个模型是已经做好的一个一个的零件,自己组装的时候,只要把这些零件组装在一起就可以了,而不用自己去制作这些零件,大大简化了模型组装的难度。

2.3、RPM包的安装与升级

说了这么多,终于可以开始安装了,我们先安装apache程序。之所以选择安装apache程序,是因为我们后续安装源码包时也计划安装apache程序,这样就能初步认识到源码包和RPM包的区别。不过需要注意的是,同一个程序的RPM包和源码包可以安装到一台服务器上,但是只能启动一个,因为它们需要占用同样的80端口。不过,如果真在生产服务器上,那么一定不会同时安装两个apache程序,容易把管理员搞糊涂,而且会占用更多的服务器磁盘空间。

2.3.1、RPM包默认安装路径

源码包和RPM包安装的程序为什么可以在一台服务器上呢?主要是因为安装路径不同,所以不会覆盖安装。RPM包一般采用系统默认路径安装,而源码包一般通过手工指定安装路径(一般安装到/usr/local/中)安装。

RPM包默认安装路径是可以通过命令查询的,一般安装在如下表所示的目录中:
在这里插入图片描述
RPM包难道就不能手工指定安装路径吗?当然是可以的,但是一旦手工指定安装路径,所有的安装文件就会安装到手工指定位置,而不会安装到系统默认位置。而系统的默认搜索位置并不会改变,依然会去默认位置之下搜索,当然系统就不能直接找到所需的文件,也就失去了作为系统默认安装路径的一些好处。所以我们一般不会指定RPM包的安装路径,而使用默认安装路径。

2.3.2、RPM包的安装

    [root@localhost ~] rpm –ivh 包全名
    #注意一定是包全名。如果是跟包全名的命令,则要注意路径,因为软件包在光盘当中
    选项:
        -i:安装(install)
        -v:显示更详细的信息(verbose)
        -h:打印#,显示安装进度(hash)

例如,安装apache软件包,注意出现两个100%才是正确安装,第一个100%仅是在准备,第二个100%才是正确安装。

    例子1:
    [root@localhost ~]# rpm -ivh  \
     /mnt/cdrom/Packages/httpd-2.2.15-15.el6.centos.1.i686.rpm
    Preparing...              ########################################### [100%]
      1:httpd                ########################################### [100%]

如果打算同时安装多个软件包呢?可以用一条命令同时安装,将多个软件包用空格分开就可以了。

    例子2:
    [root@localhost ~] rpm –ivh a.rpm b.rpm c.rpm
    #一次安装多个软件包

如果还有其他安装要求,比如想强制安装某个软件包而不管它是否有依赖性,就可以通过选项进行调整。

  • –nodeps:不检测依赖性安装。软件安装时会检测依赖性,确定所需的底层软件是否安装,如果没有安装则会报错。如果不管依赖性,想强制安装,则可以使用这个选项。注意:这样不检测依赖性安装的软件基本上是不能使用的,所以不建议这样做。
  • –replacefiles:替换文件安装。如果要安装软件包,但是包中的部分文件已经存在,那么在正常安装时会报“某个文件已经存在”的错误,从而导致软件无法安装。使用这个选项可以忽视这个报错而覆盖安装。
  • –replacepkgs:替换软件包安装。如果软件包已经安装,那么此选项可以把软件包重复安装一遍。
  • –force:强制安装。不管是否已经安装,都重新安装。也就是–replacefiles和–replacepkgs的综合。
  • –test:测试安装。不会实际安装,只是检测一下依赖性。
  • –prefix:指定安装路径。为安装软件指定安装路径,而不使用默认安装路径。注意:如果指定了安装路径,软件没有安装到系统默认路径中,那么系统会找不到这些安装的软件,需要进行手工配置才能被系统识别。所以,我们一般采用默认路径安装RPM包。

apache服务安装成功后,尝试启动。命令如下:

    [root@localhost ~] service 服务名 start|stop|restart|status
    参数:
        start:     启动服务
        stop:      停止服务
        restart:   重启服务
        status:    查看服务状态
    例如:
    [root@localhost ~]# service httpd start
    #启动apache服务

服务启动之后,就可以查看端口号80是否出现。命令如下:

    [root@localhost ~] netstat -tlun | grep 80
    tcp       0     0 :::80                    :::*                     LISTEN

我们也可以在浏览器中输入Linux服务器的IP地址,访问这个apache服务器。目前在apache中没有建立任何网页,所以看到的只是测试页,如下图所示:
在这里插入图片描述
注意:RPM包默认保存在系统光盘的Packages(注意P大写)目录中,所以在安装软件前需要挂载光盘。例如:

        mkdir /mnt/cdrom                      ←建立挂载点
        mount /dev/cdrom /mnt/cdrom           ←挂载光盘

我们一直在说依赖性很麻烦,那么依赖性报错是什么样呢?我们来继续说说gcc这个软件,刚刚我们在写hello.c的时候假设这个软件已经安装成功了。其实,如果采用“基本服务器”方式安装Linux系统,那么gcc这个软件是没有安装的,需要我们手工安装,但是安装这个软件是会报依赖性错误的。

    [root@localhost ~] rpm -ivh /mnt/cdrom/Packages/gcc-4.4.6-4.el6.i686.rpm
    error: Failed dependencies:        ←依赖性错误
            cloog-ppl >= 0.15 is needed by gcc-4.4.6-4.el6.i686
          cpp = 4.4.6-4.el6 is needed by gcc-4.4.6-4.el6.i686
          glibc-devel >= 2.2.90-12 is needed by gcc-4.4.6-4.el6.i686

大家注意,英语语法是被动式的,依赖的软件在前面,我已经用下画线注明了,你千万不要以为出现安装gcc还依赖gcc的乌龙情况。

这里的依赖性很明显,需要我们先安装cloog-ppl、cpp和glibc-devel三个软件,其中“>=”表示版本要大于或等于所显示版本;“<=”表示版本要小于或等于所显示版本;“=”表示版本要等于所显示版本。我们当然可以手工安装,只是比较麻烦。那么,有办法让它自动解决依赖性,直接安装吗?有,我们可以使用yum在线安装工具,它会自动安装依赖的软件,帮助我们解决依赖性。所以,再卖一个关子,我们不在这里安装gcc,留到安装yum的时候让gcc自动安装。

2.3.3、RPM包的升级

    [root@localhost ~] rpm –Uvh 包全名
    选项:
        -U(大写)   升级安装。如果没有安装过,则系统直接安装。如果安装过的版本较低,则
                    升级到新版本(upgrade)
    [root@localhost ~]#  rpm –Fvh 包全名
    选项:
        -F(大写)   升级安装。如果没有安装过,则不会安装。必须安装有较低版本才能升级(freshen)

2.4、RPM包查询

RPM包管理系统是非常强大和方便的包管理系统,它比源码包的方便之处就在于可以使用命令查询、升级和卸载。在查询的时候,其实是在查询/var/lib/rpm/这个目录下的数据库文件,那为什么不直接查看这些文件呢?你可以尝试使用Vim查看这些文件,会发现都是乱码。也就是说,这些文件其实都是二进制文件,不能直接用编辑器查看,所以才需要使用命令查看。

2.4.1、查询命令的格式

RPM查询命令采用如下格式:

    [root@localhost ~]  rpm  选项  查询对象

2.4.2、查询软件包是否安装

可以查询软件包是否安装,命令格式如下:

    [root@localhost ~] rpm –q 包名
    选项:
        -q: 查询(query)

例如,查看一下apache包是否安装,可以执行如下命令:

    [root@localhost ~] rpm -q httpd
    httpd-2.2.15-15.el6.centos.1.i686

因为apache是已经安装完成的包,所以只需要给出“包名”,系统就可以识别。而没有安装的包就必须使用“绝对路径+包全名”格式才可以确定包。前面一直强调的包名和包全名不能写混乱就是这个原因。

2.4.3、查询系统中的所有安装软件包

可以查询Linux系统中所有已经安装的软件包,命令格式如下:

    [root@localhost ~] rpm -qa
    libsamplerate-0.1.7-2.1.el6.i686
    startup-notification-0.10-2.1.el6.i686
    gnome-themes-2.28.1-6.el6.noarch
    fontpackages-filesystem-1.41-1.1.el6.noarch
    gdm-libs-2.30.4-33.el6_2.i686
    gstreamer-0.10.29-1.el6.i686
    redhat-lsb-graphics-4.0-3.el6.centos.i686
    …省略部分输出…

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

    [root@localhost ~] rpm -qa | grep httpd
    httpd-devel-2.2.15-15.el6.centos.1.i686
    httpd-tools-2.2.15-15.el6.centos.1.i686
    httpd-manual-2.2.15-15.el6.centos.1.noarch
    httpd-2.2.15-15.el6.centos.1.i686

你会发现,使用“rpm -q包名”只能查看这个包是否安装,但是使用“rpm -qa | grep包名”会把包含包名称的所有包都列出来。

2.4.4、查询软件包的详细信息

可以查询已经安装的某个软件包的详细信息,命令格式如下:

    [root@localhost ~] rpm –qi 包名
    选项:
        -i: 查询软件信息(information)

例如,查看apache包的安装信息,可以使用以下命令:

    [root@localhost ~] rpm -qi httpd
    Name       : httpd               Relocations: (not relocatable)
    #包名
    Version    : 2.2.15                   Vendor: CentOS
        #版本和厂商
    Release    : 15.el6.centos.1   Build Date: 2012年02月14日 星期二 06时27分17秒
        #发行版本和建立时间
    Install Date: 2013年01月07日 星期一 19时22分43秒    Build Host:
    c6b18n2.bsys.dev.centos.org
        #安装时间
    Group   : System Environment/Daemons   Source RPM:
    httpd-2.2.15-15.el6.centos.1.src.rpm
        #组和源RPM包文件名
    Size       : 2896132                       License: ASL 2.0
        #软件包大小和许可协议
    Signature   : RSA/SHA1, 2012年02月14日 星期二 19时11分00秒,Key ID
    0946fca2c105b9de
        #数字签名
    Packager   : CentOS BuildSystem <http://bugs.centos.org>
    URL        : http://httpd.apache.org/
        #厂商网址
    Summary    : Apache HTTP Server
        #软件包说明
    Description :
    The Apache HTTP Server is a powerful, efficient, and extensible web server.
        #描述

通过这条命令可以看到包名、版本、发行版本、安装时间、软件包大小等信息。

也可以查询还没有安装的软件包的详细信息,命令格式如下:

    [root@localhost ~]  rpm –qip 包全名
    选项:
        -p: 查询没有安装的软件包(package)

注意:没有安装的软件包是存放在光盘中的,而且因为没有安装,所以需要使用包全名。

2.4.5、查询软件包中的文件列表

可以查询已经安装的软件包中的文件列表和安装的完整目录,命令格式如下:

    [root@localhost ~]  rpm –ql 包名
    选项:
        -l: 列出软件包中所有的文件列表和软件所安装的目录(list)

例如,想要查看一下apache包中的文件的安装位置,可以执行如下命令:

    [root@localhost ~] rpm -ql httpd
    /etc/httpd
    /etc/httpd/conf
    /etc/httpd/conf.d
    /etc/httpd/conf.d/README
    /etc/httpd/conf.d/welcome.conf
    /etc/httpd/conf/httpd.conf
    /etc/httpd/conf/magic
    …省略部分输出…

那么,可以查询还没有安装的软件包中的文件列表和打算安装的位置吗?答案是可以,命令格式如下:

    [root@localhost ~]  rpm –qlp 包全名
    选项:
        -p: 查询没有安装的软件包信息(package)

想要查询还没有安装的bind软件包中的文件列表和打算安装的位置,可以执行如下命令:

    [root@localhost ~] rpm -qlp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
    /etc/NetworkManager/dispatcher.d/13-named
    /etc/logrotate.d/named
    /etc/named
    /etc/named.conf
    /etc/named.iscdlv.key
    /etc/named.rfc1912.zones
    …省略部分输出…

2.4.6、查询系统文件属于哪个RPM包

既然可以知道每个RPM包中的文件的安装位置,那么可以查询系统文件属于哪个RPM包吗?当然可以,不过需要注意的是,手工建立的文件是不能查询的,因为这些文件不是通过RPM包安装的,当然不能反向查询它属于哪个RPM包。命令格式如下:

    [root@localhost ~] rpm –qf 系统文件名
    选项:
        -f: 查询系统文件属于哪个软件包(file)

想查询一下ls命令是由哪个软件包提供的,可以执行如下命令:

    [root@localhost ~] rpm -qf /bin/ls
    coreutils-8.4-19.el6.i686

2.4.7、查询软件包所依赖的软件包

查询系统中和已经安装的软件包有依赖关系的软件包,命令格式如下:

    [root@localhost ~] rpm –qR 包名
    选项:
        -R: 查询软件包的依赖性(requires)

例如,想查询一下apache包的依赖包,可以执行如下命令:

    [root@localhost ~] rpm -qR httpd
    /bin/bash
    /bin/sh
    /etc/mime.types
    /usr/sbin/useradd
    apr-util-ldap
    chkconfig
    config(httpd) = 2.2.15-15.el6.centos.1
    httpd-tools = 2.2.15-15.el6.centos.1
    initscripts >= 8.36
    …省略部分输出…

可以查询没有安装的软件包的依赖性吗?加“-p”选项即可。例如,查看一下还没有安装的bind软件包的依赖包,可以执行如下命令:

    [root@localhost ~] rpm -qRp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
    /bin/bash
    /bin/sh
    bind-libs = 32:9.8.2-0.10.rc1.el6
    chkconfig
    chkconfig
    config(bind) = 32:9.8.2-0.10.rc1.el6
    grep
    libbind9.so.80
    libc.so.6
    libc.so.6(GLIBC_2.0)
    libc.so.6(GLIBC_2.1)
    …省略部分输出…

2.5、RPM包卸载

卸载也是有依赖性的。比如,在安装的时候,要先安装httpd软件包,再安装httpd的功能模块mod_ssl包。那么,在卸载的时候,一定要先卸载mod_ssl软件包,再卸载httpd软件包,否则就会报错。软件包卸载和拆除大楼是一样的,你要拆除2楼和3楼,一定要先拆除3楼;如果非要先拆除2楼,那么3楼该存在于什么地方呢?

删除格式非常简单,如下:

    [root@localhost ~] rpm -e 包名
    选项:
        -e  卸载(erase

如果不按依赖性卸载,就会报依赖性错误。例如:

    [root@localhost ~] rpm -e httpd
    error: Failed dependencies:
          httpd-mmn = 20051115 is needed by (installed) mod_wsgi-3.2-1.el6.i686
          httpd-mmn = 20051115 is needed by (installed) php-5.3.3-3.el6_2.8.i686
          httpd-mmn = 20051115 is needed by (installed) mod_ssl-1:2.2.15-15.el6.
    centos.1.i686
          httpd-mmn = 20051115 is needed by (installed) mod_perl-2.0.4-10.el6.i686
          httpd = 2.2.15-15.el6.centos.1 is needed by (installed) httpd-manual-2.2.
    15-15.el6.centos.1.noarch
          httpd is needed by (installed) webalizer-2.21_02-3.3.el6.i686
          httpd is needed by (installed) mod_ssl-1:2.2.15-15.el6.centos.1.i686
          httpd = 0:2.2.15-15.el6.centos.1 is needed by (installed) mod_ssl-1:2.2.15-
    15.el6.centos.1.i686

当然,卸载命令是支持“–nodeps”选项的,可以不检测依赖性直接卸载。但是,如果这样做,则很可能导致其他软件包无法正常使用,所以并不推荐这样卸载。
。。。。。。。

3、RPM包管理——yum在线管理

RPM包的安装虽然很方便和快捷,但是依赖性实在是很麻烦,尤其是库文件依赖,还要去rpmfind网站查找库文件到底属于哪个RPM包,从而导致RPM包的安装非常烦琐。那有没有可以自动解决依赖性、自动安装的方法呢?当然有,yum在线管理就可以自动处理RPM包的依赖性问题,从而大大简化RPM包的安装过程。但是大家需要注意:首先,yum安装安装的还是RPM包;其次,yum安装是需要有可用的yum服务器存在的,当然这个yum服务器可以在网上,也可以使用光盘在本地搭建。

yum可以方便地进行RPM包的安装、升级、查询和卸载,而且可以自动解决依赖性问题,非常方便和快捷。但是,一定要注意yum的卸载功能。yum在卸载软件的同时会卸载这个软件的依赖包,但是如果卸载的依赖包是系统的必备软件包,就有可能导致系统崩溃。除非你确实知道yum在自动卸载时会卸载哪些软件包,否则最好还是不要执行yum卸载。

3.1、yum源搭建

yum源既可以使用网络yum源,也可以使用本地光盘作为yum源。要使用网络yum源,那么你的主机必须是正常联网的。

当然,要使用yum进行RPM包安装,那么必须安装yum软件。查看命令如下:

    [root@localhost ~] rpm -qa | grep yum
    yum-metadata-parser-1.1.2-16.el6.i686
    yum-3.2.29-30.el6.centos.noarch
    yum-utils-1.1.30-14.el6.noarch
    yum-plugin-fastestmirror-1.1.30-14.el6.noarch
    yum-plugin-security-1.1.30-14.el6.noarch

如果没有安装,则需要手工使用RPM包方式安装。

3.3.1、网络yum源服务器搭建

在主机网络正常的情况下,CentOS的yum是可以直接使用的,不过我们需要了解一下yum源配置文件的内容。yum源配置文件保存在/etc/yum.repos.d/目录中,文件的扩展名一定是“.repo”。也就是说,yum源配置文件只要扩展名是“.repo”就会生效。

    [root@localhost ~] ls /etc/yum.repos.d/
    CentOS-Base.repo CentOS-Media.repo  CentOS-Debuginfo.repo.bak CentOS-Vault.repo

这个目录中有4个yum源配置文件,默认情况下CentOS-Base.repo文件生效。我们打开这个文件看看,命令如下:

    [root@localhost yum.repos.d] vim /etc/yum.repos.d/CentOS-Base.repo
    [base]
    name=CentOS-$releasever - Base
    mirrorlist=http://mirrorlist.centos.org/? release=$releasever&arch=$basearch&
    repo=os
    baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    …省略部分输出…

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

  • [base]:容器名称,一定要放在[]中。
  • name:容器说明,可以自己随便写。
  • mirrorlist:镜像站点,这个可以注释掉。
  • baseurl:我们的yum源服务器的地址。默认是CentOS官方的yum源服务器,是可以使用的。如果你觉得慢,则可以改成你喜欢的yum源地址。
  • enabled:此容器是否生效,如果不写或写成enable=1则表示此容器生效,写成enable=0则表示此容器不生效。
  • gpgcheck:如果为1则表示RPM的数字证书生效;如果为0则表示RPM的数字证书不生效。
  • gpgkey:数字证书的公钥文件保存位置。不用修改。

yum源配置文件默认不需要进行任何修改就可以使用,只要网络可用就行。

3.3.2、以本地光盘作为yum源服务器

如果Linux主机不能联网,yum就不能使用吗?yum已经考虑到这个问题,所以在/etc/yum.repos.d/目录下还有一个CentOS-Media.repo文件,这个文件就是以本地光盘作为yum源服务器的模板文件,只需要进行简单的修改即可。

第一步:放入CentOS安装光盘,并挂载光盘到指定位置。命令如下:

    [root@localhost ~] mkdir /mnt/cdrom
    #创建cdrom目录,作为光盘的挂载点
    [root@localhost ~] mount /dev/cdrom  /mnt/cdrom/
    mount: block device /dev/sr0 is write-protected, mounting read-only
    #挂载光盘到/mnt/cdrom目录下

第二步:修改其他几个yum源配置文件的扩展名,让它们失效,因为只有扩展名是“*.repo”的文件才能作为yum源配置文件。当然也可以删除其他几个yum源配置文件,但是如果删除了,当你又想用网络作为yum源时,就没有了参考文件,所以最好还是修改扩展名。命令如下:

    [root@localhost ~] cd /etc/yum.repos.d/
    [root@localhost yum.repos.d] mv CentOS-Base.repo CentOS-Base.repo.bak
    [root@localhost yum.repos.d] mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
    [root@localhost yum.repos.d] mv CentOS-Vault.repo CentOS-Vault.repo.bak

第三步:修改光盘yum源配置文件CentOS-Media.repo,参照以下方法修改:

    [root@localhost yum.repos.d] vim CentOS-Media.repo
    [c6-media]
    name=CentOS-$releasever - Media
    baseurl=file:///mnt/cdrom
    #地址为你自己的光盘挂载地址
    #       file:///media/cdrom/
    #       file:///media/cdrecorder/
    #注释这两个不存在的地址
    gpgcheck=1
    enabled=1
    #把enabled=0改为enabled=1,让这个yum源配置文件生效
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

配置完成,现在可以感受一下yum的便捷了。

3.2、常用yum命令

3.2.1、查询

查询yum源服务器上所有可安装的软件包列表:

    [root@localhost yum.repos.d]# yum list
    #查询所有可用软件包列表
    Installed Packages
    #已经安装的软件包
    ConsoleKit.i686 0.4.1-3.el6  @anaconda-CentOS-201207051201.i386/6.3
    ConsoleKit-libs.i686 0.4.1-3.el6  @anaconda-CentOS-201207051201.i386/6.3
    ...省略部分输出...
    Available Packages
    #还可以安装的软件包
    389-ds-base.i686                       1.2.10.2-15.el6           c6-media
    389-ds-base-devel.i686                 1.2.10.2-15.el6           c6-media
    #软件名                                 版本                所在位置(光盘)
    ...省略部分输出...

查询yum源服务器中是否包含某个软件包:

    [root@localhost yum.repos.d] yum list 包名
    #查询单个软件包
    例如:
    [root@localhost yum.repos.d]# yum list samba
    Available Packages
    samba.i686              3.5.10-125.el6                   c6-media

搜索yum源服务器上所有和关键字相关的软件包:

    [root@localhost yum.repos.d] yum search 关键字
    #搜索服务器上所有和关键字相关的软件包
    例如:
    [root@localhost yum.repos.d]# yum search samba
    #搜索服务器上所有和samba相关的软件包
    ========================N/S Matched: samba =============================
    samba-client.i686 : Samba client programs
    samba-common.i686 : Files used by both Samba servers and clients
    samba-doc.i686 : Documentation for the Samba suite
    …省略部分输出…
      Name and summary matches only, use "search all" for everything.

查询指定软件包的信息:

    [root@localhost yum.repos.d]# yum info samba
    #查询samba软件包的信息
    Available Packages         ←还没有安装
    Name       : samba         ←包名
    Arch       : i686          ←适合的硬件平台
    Version    : 3.5.10        ←版本
    Release    : 125.el6       ←发布版本
    Size       : 4.9 M         ←大小
    Repo       : c6-media      ←在光盘上
    …省略部分输出…

3.2.2、安装

    [root@localhost yum.repos.d] yum -y install 包名
    选项:
        install     安装
        -y          自动回答yes。如果不加-y,那么每个安装的软件都需要手工回答yes
    例如:
    [root@localhost yum.repos.d]# yum -y install gcc
    #使用yum自动安装gcc

在讲RPM包安装时提到,gcc是C语言的编译器,如果没有安装,那么2.4节的源码包就无法安装。但gcc依赖的软件包比较多,手工使用RPM包安装太麻烦了,所以使用yum安装。

yum安装可以自动解决依赖性,而且安装速度也比源码包快得多。不过,yum到底安装的还是RPM包,所以rpm命令还是必须学习和使用的。

3.2.3、升级

    [root@localhost yum.repos.d] yum -y update 包名
    #升级指定的软件包
    选项:
        update:    升级
        -y:        自动回答yes

注意:在进行升级操作时,yum源服务器中软件包的版本要比本机安装的软件包的版本高。

    [root@localhost yum.repos.d] yum -y update
    #升级本机所有软件包

这条命令会升级系统中所有的软件包。不过我们的生产服务器是稳定优先的,所以这种全系统升级的情况并不多见。

3.2.4、卸载

再次强调一下,除非你确定卸载的软件的依赖包不会对系统产生影响,否则不要执行yum的卸载,因为很有可能在卸载软件包的同时卸载的依赖包也是重要的系统文件,这就有可能导致系统崩溃。卸载命令如下:

    [root@localhost yum.repos.d] yum remove 包名
    #卸载指定的软件包
    例如:
    [root@localhost yum.repos.d] yum remove samba
    #卸载samba软件包

3.3、 yum软件组管理

在安装Linux的过程中,在选择软件包的时候,如果选择了“现在自定义”,就会看到Linux支持的许多软件组,比如编辑器、系统工具、开发工具等。那么,在系统安装完成后,是否可以利用yum安装这些软件组呢?当然可以,只需要利用yum的软件组管理命令:
1.查询可以安装的软件组:

    [root@localhost ~] yum grouplist
    #查询可以安装的软件组

2.查询软件组中包含的软件:

    [root@localhost ~] yum groupinfo 软件组名
    #查询软件组中包含的软件
    例如:
    [root@localhost ~]# yum groupinfo "Web Server"
    #查询软件组“Web Server”中包含的软件

3.安装软件组:

    [root@localhost ~] yum groupinstall 软件组名
    #安装指定软件组,组名可以由grouplist查询出来
    例如:
    [root@localhost ~] yum groupinstall "Web Server"
    #安装网页服务软件组

4.卸载软件组:

    [root@localhost ~] yum groupremove 软件组名
    #卸载指定软件组

软件组管理对于安装功能集中的软件集合非常方便。比如,在安装Linux的时候没有安装图形界面,但是后来发现需要图形界面的支持,这时可以手工安装图形界面软件组(X Window System和Desktop),就可以很方便地安装图形界面了。

4、源码包管理

4.1、源码包的安装准备

4.1.1、支持软件的安装

Linux下的绝大多数源码包都是用C语言编写的,还有少部分是用C++等其他程序语言编写的。所以,要想安装源码包,必须安装C语言编译器gcc(如果是用C++编写的程序,则还需要安装gcc-c++)。我们可以先检测一下gcc是否已经安装,命令如下:

    [root@localhost ~] rpm -q gcc
    gcc-4.4.6-4.el6.i686

如果没有安装gcc,则推荐大家采用yum安装方式安装。因为如果手工使用rpm命令安装,那么gcc所依赖的包太多了。命令如下:

    [root@localhost yum.repos.d] yum -y install gcc

有了编译器,还需要考虑一个问题:刚刚写的“hello.c”只有一个源码文件,所以我们可以利用gcc手工编译。但是真正发布的源码包软件内的源码文件可能有成百上千个,而且这些文件之间都是有联系的,编译时有先后顺序。如果这样的源码文件需要手工编译,光想想就是一项难以完成的工作。这时就需要make命令来帮助我们完成编译,所以make也是必须安装的。我们也需要查看一下make是否已经安装,命令如下:

    [root@localhost yum.repos.d] rpm -q make
    make-3.81-20.el6.i686

4.1.2、源码包从哪里来

RPM包是保存在CentOS 6.3的安装光盘中的,那么源码包从哪里来呢?是从官方网站上下载的,我们依然以下载和安装apache为例。前面已经说过,源码包和RPM包都需要安装apache,目的是区分一下源码包和RPM包。

4.2、源码包安装

4.2.1、注意事项

在安装之前,我们先来解释一下源码包的安装注意事项:

  • 软件包是从互联网上下载的。比如apache是从网站http://mirror.bit.edu.cn/apache/httpd/(北京理工大学开源软件镜像服务)上下载的。
  • 下载的软件包格式。下载格式一般都是压缩格式,常见的是“.tar.gz”或“.tar.bz2”,选择你习惯的格式下载即可
  • 下载之后的源代码保存位置。Linux是一个非常严谨的操作系统,每个目录的作用都是固定而且明确的,作为管理员,养成良好的操作习惯非常重要,其中在正确的目录中保存正确的数据就是一个约定俗成的习惯。在系统中保存源代码的位置主要有两个:“/usr/src”和“/usr/local/src”。其中,“/usr/src”用来保存内核源代码;“/usr/local/src”用来保存用户下载的源代码。
  • 软件安装位置。我们刚说了Linux非常注意每个目录的作用,所以安装软件也有默认目录,即“/usr/local/软件名”。我们需要给安装的软件包单独规划一个安装目录,以便于管理和卸载。大家可以想象一下,如果我把每个软件都安装到“/usr/local/”目录下,但是没有给每个软件单独分配一个安装目录,那么以后还能分清哪个软件是哪个软件吗?这样一来也就不能正确地卸载软件了。
  • 软件安装报错。源码包如果安装不报错,那么安装还是很方便的。但是报错后的排错对刚学习的人来说还是有难度的,不过我们先要知道什么样的情况是报错。报错有两个典型特点,这两个特点必须都具备才是报错:其一是出现“error”或“warning”字样;其二是安装过程停止。如果没有停止但是出现警告信息,那么只是软件中的部分功能不能使用,而不是报错。

4.2.2、安装步骤

我们来解释一下源码包安装的具体步骤:
(1)下载软件包。
(2)解压缩。
(3)进入解压目录。
(4)./configure软件配置与检查。
这一步主要有三个作用:
①在安装之前需要检测系统环境是否符合安装要求。
②定义需要的功能选项。“./configure”支持的功能选项较多,可以执行“./configure --help”命令查询其支持的功能。一般都会通过“./configure --prefix=安装路径”来指定安装路径。
③把系统环境的检测结果和定义好的功能选项写入Makefile文件,后续的编译和安装需要依赖这个文件的内容。

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

(6)make clean:清空编译内容(非必需步骤)。如果在“./configure”或“make”编译中报错,那么我们在重新执行命令前一定要记得执行make clean命令,它会清空Makefile文件或编译产生的“.o”头文件。

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

4.3、源码包升级

我们的软件如果进行了数据更新,那么是否需要先把整个软件卸载,然后重新安装呢?当然不需要,我们只需要下载补丁、打上补丁,重新编译和安装就可以了(不用./configure生成新的Makefile文件,make命令也只是重新编译数据),速度会比重新安装一次快得多。

4.4、源码包卸载

我们在说源码包卸载之前,先回顾一下Windows系列操作系统中的软件卸载。在Windows系统中是不能用鼠标右键单击安装之后的软件,选择直接删除的,因为这样做会遗留大量的垃圾文件。这些垃圾文件越多,会导致Windows系统越不稳定。

那么我们在Linux中删除源码包应该怎样操作呢?太简单了,只要找到软件的安装位置(还记得我们要求在安装时必须指定安装位置吗),然后直接删除就可以了。比如删除apache,只需要执行如下命令即可,而且不会遗留任何垃圾文件。

    [root@localhost ~]# rm -rf /usr/local/apache2/

如果apache服务启动了,那么,记得先停止服务再删除。

4.5、函数库管理

4.5.1、什么事函数库

函数库其实就是函数,只不过是系统所调用的函数。这样说吧,我写了一个软件,所有的功能都需要我自己完成吗?其实是不需要的,因为很多功能是别人已经写好的,我只需要拿来使用就好了。这些有独立功能,可以被其他程序调用的程序就是函数。比如,我想打电话,那么我需要自己去制造和生产一部手机吗?当然不需要,我只需要明确我的需求,然后按照需求去买一部手机使用就可以了。

4.5.2、函数库分类

当其他程序调用函数时,根据是否把函数直接整合到程序中而分为静态函数和动态函数。我们分别看看这两种函数的优缺点。
(1)静态函数库
函数库文件一般以“*.a”扩展名结尾,这种函数库在被程序调用时会被直接整合到程序当中。
优点:程序执行时,不需要再调用外部数据,可以直接执行。
缺点:因为把所有内容都整合到程序中,所以编译生成的文件会比较大,升级比较困难,需要把整个程序重新编译。

(1)动态函数库

函数库文件通常以“*.so”扩展名结尾,这种函数库在被程序调用时,并没有直接整合到程序当中,当程序需要用到函数库的功能时,再去读取函数库,在程序中只保存了函数库的指向,如下图所示:
在这里插入图片描述
优点:因为没有把整个函数库整合到程序中,所以文件较小,升级方便,不需要把整个程序重新编译,只需要重新编译安装函数库就好。
缺点:程序在执行时需要调用外部函数,如果这时函数出现问题,或指向位置不正确,那么程序将不能正确执行。

目前Linux中的大多数函数库是动态函数库,主要是因为升级方便;但是函数的存放位置非常重要,而且不能更改。目前被系统程序调用的函数主要存放在“/usr/lib”和“/lib”中,而Linux内核所调用的函数库主要存放在“/lib/modules”中。

5、脚本程序包管理

5.1、脚本程序简介

脚本程序包并不多见,所以在软件包分类中并没有把它列为一类。它更加类似于Windows下的程序安装,有一个可执行的安装程序,只要运行安装程序,然后进行简单的功能定制选择(比如指定安装目录等),就可以安装成功,只不过是在字符界面下完成的。

目前常见的脚本程序以各类硬件的驱动居多,我们需要学习一下这类软件的安装方式,以备将来不时之需。

5.2、Webmin安装

5.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的软件。

5.2.2、安裝

我们来看看脚本程序如何安装和使用。安装一个叫作Webmin的工具软件,Webmin是一个基于Web的系统管理界面。借助任何支持表格和表单的浏览器(和File Manager模块所需要的Java),你就可以设置用户账号、apache、DNS、文件共享等。Webmin包括一个简单的Web服务器和许多CGI程序,这些程序可以直接修改系统文件,比如/etc/inetd.conf和/etc/passwd。Web服务器和所有的CGI程序都是用Perl 5编写的,没有使用任何非标准Perl模块。也就是说,Webmin是一个用Perl语言写的、可以通过浏览器管理Linux的软件。

安裝步驟:
首先下载Webmin软件,地址为http://sourceforge.net/projects/webadmin/files/webmin/,这里下载的是webmin-1.610.tar.gz。

接下来解压缩软件,命令如下:

    [root@localhost ~]# tar -zxvf webmin-1.610.tar.gz

进入解压目录,命令如下:

    [root@localhost ~]# cd webmin-1.610

执行安装程序setup.sh,并指定功能选项,命令如下:

    [root@localhost webmin-1.610]# ./setup.sh
    ***********************************************************************
    *          Welcome to the Webmin setup script, version 1.610       *
    ***********************************************************************
    Webmin is a web-based interface that allows Unix-like operating
    systems and common Unix services to be easily administered.
    Installing Webmin in /root/webmin-1.610 ...
    ***********************************************************************
    Webmin uses separate directories for configuration files and log files.
    Unless you want to run multiple versions of Webmin at the same time
    you can just accept the defaults.
    Config file directory [/etc/webmin]:
    #选择安装位置,默认安装在/etc/webmin目录下。如果安装到默认位置,则直接回车
    Log file directory [/var/webmin]:
    #日志文件保存位置,直接回车,选择默认位置
    ***********************************************************************
    Webmin is written entirely in Perl. Please enter the full path to the
    Perl 5 interpreter on your system.
    Full path to perl (default /usr/bin/perl):
    #指定Perl语言的安装位置,直接回车,选择默认位置,Perl默认就安装在这里
    Testing Perl ...
    Perl seems to be installed ok
    ***********************************************************************
    Operating system name:   CentOS Linux
    Operating system version: 6.3
    ***********************************************************************
    Webmin uses its own password protected web server to provide access
    to the administration programs. The setup script needs to know :
     - What port to run the web server on. There must not be another
      web server already using this port.
     - The login name required to access the web server.
     - The password required to access the web server.
     - If the webserver should use SSL (if your system supports it).
     - Whether to start webmin at boot time.
    Web server port (default 10000):
    #指定Webmin监听的端口,直接回车,默认选定10000
    Login name (default admin):admin
    #输入登录Webmin的用户名
    Login password:
    Password again:
    #输入登录密码
    The Perl SSLeay library is not installed. SSL not available.
    #apache默认没有启动SSL功能,所以SSL没有被激活
    Start Webmin at boot time (y/n):y
    #是否在开机的同时启动Webmin
    …安装过程省略…
    Webmin has been installed and started successfully. Use your web
    browser to go to
      http://localhost:10000/
    and login with the name and password you entered previously.
    #安装完成

这种脚本安装简单快速,不过需要软件发行商发布安装脚本。但是Linux中的绝大多数软件是没有这种脚本的。

6、软件包的选择

至此,Linux中的软件安装方式我们就讲完了,是不是比Windows中的软件安装要复杂一些。不过这也说明Windows下的病毒和木马是不能直接感染Linux的,因为它们的软件包是不一样的。

不过,在安装软件的时候,到底应该使用RPM包还是源码包?我们做一下总结和推荐,当然这是我的个人经验,你也可以按照自己的意愿安装。

软件包安装注意事项:
(1)如果是Linux的底层模块和自带软件,则推荐使用RPM包安装,比如gcc、图形界面、开发库等。另外,不需要手工定制功能的软件,都推荐使用RPM包安装,毕竟安装简单。

(2)如果是在服务器上应用的服务程序,则推荐使用源码包安装,比如apache、DNS、Mail等服务程序。这样它们更适合你的服务器系统,性能更加优化,功能完全由你自由定义。

(3)如果要安装RPM包程序,那么既可以手工使用RPM包安装,也可以使用yum安装。但是如果要卸载程序,则最好不要使用yum卸载,因为容易在卸载某个软件依赖包的时候,把Linux系统依赖包也卸载掉,从而导致系统崩溃。

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值