在Linux系统上管理软件需要通过程序包管理器来实现。

程序包管理:

将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作;

常用的有RPM、YUM、手动编译源码安装。

 

 rpm 执行安装包
二进制包(Binary)以及源代码包(Source)两种。二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译、安装。源代码包经常以src.rpm作为后缀名。

rpm包命名格式:

wKiom1buY7KRbvN5AAB89ZyGoRA916.png

rpm主包和支包区分:

某个软件包可能会比较大,那么就会做成几部分。比较常用的功能做成主包,其它附加功能做成子包。而子包需要依赖主包运行。

    主包:name-VERSION-release.arch.rpm 

    支包:name-function-VERSION-release.arch.rpm 

            function:devel, utils, libs, ...

例如:

zlib-1.2.3-29.el6.x86_64.rpm

zlib-devel-1.2.3-29.el6.x86_64.rpm

 

rpm命令管理程序包:

安装、升级、卸载、查询和校验、数据库维护

rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE]

安装:-i, --install

升级:-U, --update, -F, --freshen

卸载:-e, --erase 

查询:-q, --query

校验:-V, --verify

数据库维护:--builddb, --initdb

常用命令组合:

-ivh:安装显示安装进度--install--verbose--hash
-Uvh或-Fvh:升级软件包--Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包
--oldpackage:降级;
--force:强制升级;

 

 

先将ISO镜像文件挂载

[root@bogon mnt]# mount -o loop /dev/cdrom /mnt/centos_iso/

 

检查本机是否安装zsh

[root@bogon Packages]# rpm -q zsh
package zsh is not installed

安装rpm包

[root@bogon Packages]# rpm -ivh zsh-4.3.11-4.el6.centos.x86_64.rpm 
warning: zsh-4.3.11-4.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]
[root@bogon Packages]# rpm -q zsh
zsh-4.3.11-4.el6.centos.x86_64

重新安装包

[root@bogon Packages]# rpm -ivh --replacepkgs zsh-4.3.11-4.el6.centos.x86_64.rpm

 

测试安装包(并不安装)

[root@bogon Packages]# rpm -ivh --test zsh-4.3.11-4.el6.centos.x86_64.rpm 
warning: zsh-4.3.11-4.el6.centos.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
[root@bogon Packages]# rpm -q zsh
package zsh is not installed

升级包

[root@bogon Packages]# rpm -Uvh zsh-4.3.11-4.el6.centos.x86_64.rpm

 

降级

[root@bogon Packages]# rpm -Uvh --oldpackage PackageName

卸载包

[root@bogon Packages]# rpm -e zsh-4.3.11-4.el6.centos.x86_64

 

YUM:Yellowdog Update Modifier。

RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。要使用yum必须有一个yum源。

常见yum源及epel源

  http://fedoraproject.org/wiki/EPEL

  http://mirrors.aliyun.com/

  http://mirrors.sohu.com/

  http://mirrors.163.com/

  http://mirrors.ustc.edu.cn/fedora/epel/

 

配置文件:

/etc/yum.conf:为所有仓库提供公共配置

/etc/yum.repos.d/*.repo:为仓库的指向提供配置

仓库指向的定义:

[repositoryID]

name= #名称描述

baseurl=        #yum源目录,源地址

gpgcheck=1      #检查GPG-KEY0为不检查,1为检查

enabled=1      #是否用该yum源,0为禁用,1为使用

gpgkey=      #gpgcheck=0时无需配置

enablegroups={1|0}

failovermethod={roundrobin|priority}

默认为:roundrobin,意为随机挑选;

cost=

默认为1000

 

 

配置本地yum源步骤:

[root@bogon etc]# ls /etc/yum.repos.d
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-Debuginfo.repo  CentOS-Media.repo
[root@bogon yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@bogon yum.repos.d]# vim Centos-Local.repo

内容为:

[Base]

name=Centos-Local-repo

baseurl=file:///mnt/centos_iso/Packages

enabled=1

gpgcheck=1

gpgkey=file:///mnt/centos_iso/RPM-GPG-KEY-CentOS-6

 

查看yum源列表

[root@bogon yum.repos.d]# yum list

 

yum常用命令

 

显示程序包: 

 [root@bogon yum.repos.d]# yum list

 

显示程序包的详细信息:

[root@bogon yum.repos.d]# yum info httpd
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
Available Packages
Name        : httpd
Arch        : x86_64
Version     : 2.2.15
Release     : 45.el6.centos
Size        : 829 k
Repo        : Base
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and
            : extensible web server.

 

安装程序包:

[root@bogon yum.repos.d]# yum -y install Package_Name

 

 

重新安装:

[root@bogon yum.repos.d]# yum reinstall Package_Name

 

检查升级

[root@bogon yum.repos.d]# yum check-update

 

升级程序包:

 
[root@bogon yum.repos.d]# yum update Package_Name

 

 

降级程序包:

 [root@bogon yum.repos.d]# yum downgrade Package_Name

 

卸载程序包:

[root@bogon yum.repos.d]# yum remove Package_Name

 

查看指定的特性(可以是某文件)是由哪个程序包所提供:

  provides | whatprovides feature1 [feature2] [...]
 [root@bogon yum.repos.d]# yum provides Package_Name

 

 

    清理本地缓存:

 [root@bogon yum.repos.d]# yum clean all
Loaded plugins: fastestmirror, security
Cleaning repos: Base
Cleaning up Everything
Cleaning up list of fastest mirrors

   

     构建缓存:

 [root@bogon yum.repos.d]# yum makecache
Loaded plugins: fastestmirror, security
Determining fastest mirrors
Base                                             | 4.0 kB     00:00 ... 
Base/group_gz                                    | 219 kB     00:00 ... 
Base/filelists_db                                | 6.2 MB     00:00 ... 
Base/primary_db                                  | 4.6 MB     00:00 ... 
Base/other_db                                    | 2.8 MB     00:00 ... 
Metadata Cache Created

   

 搜索:

 [root@bogon yum.repos.d]# yum search Package_Name

    以指定的关键字搜索程序包名及summary信息;

 

    查看指定包所依赖的capabilities:

[root@bogon yum.repos.d]# yum deplist Package_Name

 

yum的历史事务

[root@bogon yum.repos.d]# yum history
Loaded plugins: fastestmirror, security
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     4 | root <root>              | 2016-03-20 16:09 | Erase          |    1   
     3 | root <root>              | 2016-03-20 16:02 | Reinstall      |    1   
     2 | root <root>              | 2016-03-20 16:00 | Install        |    6  <
     1 | System <unset>           | 2016-03-16 08:30 | Install        |  385 > 
history list

 

源码编译安装

C代码编译安装三步骤:

    ./configure:

    (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;

    (2) 检查依赖到的外部环境;

    make:

    根据makefile文件,构建应用程序;

    make install

 

    开发工具:

    autoconf: 生成configure脚本

    automake:生成Makefile.in

 

    建议:安装前查看INSTALL,README

 

安装后的配置:
      (1) 导出二进制程序目录至PATH环境变量中;
       编辑文件/etc/profile.d/NAME.sh
        export PATH=/PATH/TO/BIN:$PATH

      (2) 导出库文件路径
       编辑/etc/ld.so.conf.d/NAME.conf
        添加新的库文件所在目录至此文件中;

       让系统重新生成缓存:
        ldconfig [-v]

      (3) 导出头文件
       基于链接的方式实现:
        ln -sv

      (4) 导出帮助手册
       编辑/etc/man.config文件
        添加一个MANPATH

 

示例:

先将下载后的源码文件解压

[root@bogon sr]# ls
httpd-2.2.31.tar.bz2
[root@bogon sr]# tar -xf httpd-2.2.31.tar.bz2

 

进入目录查看

[root@bogon httpd-2.2.31]# ls
ABOUT_APACHE   configure.in    LAYOUT         os
acinclude.m4   docs            libhttpd.dep   README
Apache.dsw     emacs-style     libhttpd.dsp   README.platforms
build          httpd.dep       libhttpd.mak   README-win32.txt
BuildAll.dsp   httpd.dsp       LICENSE        ROADMAP
BuildBin.dsp   httpd.mak       Makefile.in    server
buildconf      httpd.spec      Makefile.win   srclib
CHANGES        include         modules        support
config.layout  INSTALL         NOTICE         test
configure      InstallBin.dsp  NWGNUmakefile  VERSIONING

 

编译

 [root@bogon httpd-2.2.31]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/apache2

 

make

[root@bogon httpd-2.2.31]#  make

 

make install

[root@bogon httpd-2.2.31]# make install

 

安装完成后查看安装后的目录

 [root@bogon bin]# tree -L 1 /usr/local/apache2/
/usr/local/apache2/
├── bin
├── build
├── cgi-bin
├── error
├── htdocs
├── icons
├── include
├── lib
├── logs
├── man
├── manual
└── modules
12 directories, 0 files

 

测试apache

[root@bogon local]# /usr/local/apache2/bin/httpd -k start
httpd: apr_sockaddr_info_get() failed for bogon
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

这个问题应该是没有在 /etc/httpd/conf/httpd.conf 中设定 ServerName。所以apache会用主机上的名称来取代,首先会去找 /etc/hosts 中有没有主机的定义。

解决办法:

1)可以设定httpd.conf文件中的 ServerName,如下:ServerName localhost:80                        

2)在 /etc/hosts 中填入自己的主机名称 bogon,如下:127.0.0.1 tao (用户名称)

 

解决后再次启动

[root@bogon bin]# /usr/local/apache2/bin/httpd -k start

httpd (pid 51466) already running

查看80端口是否被监听

 [root@bogon bin]# ss -tnl
State      Recv-Q Send-Q    Local Address:Port      Peer Address:Port 
LISTEN     0      128                  :::80                  :::*     
LISTEN     0      128                  :::22                  :::*     
LISTEN     0      128                   *:22                   *:*     
LISTEN     0      100                 ::1:25                  :::*     
LISTEN     0      100           127.0.0.1:25                   *:*

 

可以通过直接访问来测试了

wKioL1buhbzQul00AAAjUBSMlJE554.png

 

OK!