在上一篇博客中,写到了如何使用rpm命令来安装、卸载软件等,但是大家都知道,各个软件包之间可能存在依赖关系,如果安装某个软件需要额外的依赖其他若干的包,那么我们就需要将其他额外的包一个一个的安装上去,这样的一个过程是非常耗时的,所以出现了一个前端工具,如yum,dnf,apt-get等,本次博客就centos上的yum和程序包的编译安装做出详细的描述,最后还通过实际的例子介绍了程序包的编译安装。

yum的实现原理

yum实现软件包的获取其实是基于C/S架构的,C为你的主机,S为yum repository(文件服务器或者本地yum  repository),yum repository里面存储了众多的rpm包,以及包的相关元数据文件(包含软件包的列表和依赖关系等)和计算出来的特征码,一般放在repodata目录下面。

当我们使用yum安装一个软件包的时候,会进行如下几个步骤:

1.本地主机会在配置文件里面找到yum repository的指向,并建立连接;

2.从yum repository获取元数据文件和特征码放在缓存里面;

3.通过查看元数据文件获知需要安装的软件包和其依赖的软件的名称并向yum repository发起请求;

4.本地主机获取到软件包后进行安装。

5.安装好后,rpm包会被删除,但是元数据文件和特征码会被保存下来,其目的是为了当你再向yum repository发起连接的时候,先会向yum repository获取到特征码和本地缓存的特征码做对比,如果相同则说明yum repository里面的文件没有发生改变,如果不同,则说明yum repository里面的文件发生了改变,这时候就需要重新向yum repository获取元数据文件了。

通常情况下yum repository都是文件服务器,你可以通过URL进行访问,如:

ftp://path/to/repository/    通过FTP进行访问和传输

http://path/to/repository/  通过http进行访问和传输

nfs://path/to/repository/   通过nfs进行访问和传输

file:///path/to/repository/  用于本地的yum仓库

yum的配置文件

yum的配置文件有:

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

/etc/yum.repos.d/下以repo结尾的文件:为仓库的指向提供配置

yum.conf的内容:

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=
debuglevel=
logfile=/var/log/yum.log
exactarch=
obsoletes=
gpgcheck=
plugins=
installonly_limit=
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

yum.conf的内容

cachedir:缓存目录,默认情况下在"/var/cache/yum";

keepcache:是否保存缓存,0是不保存,1是保存;

debuglevel:Debug信息的输出等级,范围为0-10,默认为2

logfile:存放log的文件路径

exactarch:是否精确匹配平台,默认是1,精确匹配平台

obsolete:这个选项仅仅会影响升级,简单的说相当于upgrade,允许更新旧版本的rpm包

gpgcheck:是否经验安装包的来源合法性

plugins:是否允许使用插件安装插件,1表示安装

installonly_limit:允许同时保持的内核包

bugtracker_url:bug的追踪的url

distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,这里是centos-release

具体的可以是使用命令man yum.conf查看

下面我们来看一下/etc/yum.repos.d/下的文件

[root@localhost ~]# 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

这里就有很多以repo结尾的文件,都是yum repository的指向:

让我们来看一下/etc/yum.repo.d/CentOS-Base.repo,其他里面的yum repository都是disable的:

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
# [base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=
enabled=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

CentOS-Base.repo

repository指向的定义:

[repositoryID]   #具有唯一性
name=some name for this repository
baseurl=url://path/to/repository #yum repository的url可以为多个,路径下必须有repodata
enable= #是否开启,1为开启,0为关闭,不写的话,默认开启
gpgckeck=
gpgkey=URL
cost=
enablegroup= #是否允许使用包组,默认是允许
但是我们可以看到CentOS-Base.repo里面没有baseurl而是mirrorlist,mirrorlist指向的URL就是存放了baseurl的位置。
yum的repo配置文件中的可用的变量:

$releasever:当前os的发行版的主版本号
$arch:平台
$basearch:基础平台
$YUM0-$YUM9:用户自定义的变量

yum命令的用法

yum [options] [command] [package ...]
command is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* update-minimal [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* autoremove [package1] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache [fast]
* groups [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
(maintained for legacy reasons only - use repoquery or yum provides)
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
* reinstall package1 [package2] [...]
* downgrade package1 [package2] [...]
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled]
* repoinfo [all|enabled|disabled]
* repository-packages <enabled-repoid> <install|remove|remove-or-reinstall|remove-or-

yum命令

1.显示repository列表:

repolist [all|enabled|disabled]
all:显示所有的yum repository
enable:不带参数默认显示启用的yum repository
disable:显示关闭的yum repository
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.cn99.com
* updates: mirrors.aliyun.com
repo id repo name status
!base//x86_64 CentOS- - Base ,
!extras//x86_64 CentOS- - Extras
!updates//x86_64 CentOS- - Updates ,
[root@localhost yum.repos.d]# yum repolist all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.cn99.com
* updates: mirrors.aliyun.com
repo id repo name status
C7.0.1406-base/x86_64 CentOS-7.0. - Base disabled
C7.0.1406-centosplus/x86_64 CentOS-7.0. - CentOSPlus disabled
C7.0.1406-extras/x86_64 CentOS-7.0. - Extras disabled
C7.0.1406-fasttrack/x86_64 CentOS-7.0. - CentOSPlus disabled
C7.0.1406-updates/x86_64 CentOS-7.0. - Updates disabled
C7.1.1503-base/x86_64 CentOS-7.1. - Base disabled
C7.1.1503-centosplus/x86_64 CentOS-7.1. - CentOSPlus disabled
C7.1.1503-extras/x86_64 CentOS-7.1. - Extras disabled
C7.1.1503-fasttrack/x86_64 CentOS-7.1. - CentOSPlus disabled
C7.1.1503-updates/x86_64 CentOS-7.1. - Updates disabled
C7.2.1511-base/x86_64 CentOS-7.2. - Base disabled
C7.2.1511-centosplus/x86_64 CentOS-7.2. - CentOSPlus disabled
C7.2.1511-extras/x86_64 CentOS-7.2. - Extras disabled
C7.2.1511-fasttrack/x86_64 CentOS-7.2. - CentOSPlus disabled
C7.2.1511-updates/x86_64 CentOS-7.2. - Updates disabled
!base//x86_64 CentOS- - Base enabled: ,
base-debuginfo/x86_64 CentOS- - Debuginfo disabled
base-source/ CentOS- - Base Sources disabled
c7-media CentOS- - Media disabled
centosplus//x86_64 CentOS- - Plus disabled
centosplus-source/ CentOS- - Plus Sources disabled
cr//x86_64 CentOS- - cr disabled
!extras//x86_64 CentOS- - Extras enabled:
extras-source/ CentOS- - Extras Sources disabled
fasttrack//x86_64 CentOS- - fasttrack disabled
!updates//x86_64 CentOS- - Updates enabled: ,
updates-source/ CentOS- - Updates Sources disabled

yum repolist举例

2.显示程序包

yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]

3.安装程序包

yum install package1 [package2] [...]
yum reinstall package1 [package2] [...] (重新安装)

4.升级程序包

yum update [package1] [package2] [...]
yum downgrade package1 [package2] [...] (降级)

5.检查可用升级

yum check-update

6.卸载程序包

yum remove | erase package1 [package2] [...]

7.查看程序包information

yum info package1 [package2] [...]

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

yum provides | whatprovides feature1 [feature2] [...]
[root@localhost yum.repos.d]# yum provides /bin/ls
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.cn99.com
* updates: mirrors.aliyun.com
coreutils-8.22-.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo : base
Matched from:
Filename : /bin/ls coreutils-8.22-.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo : @anaconda
Matched from:
Filename : /bin/ls

yum provides举例

9.清理本地缓存

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

10.构建缓存

yum makecache

11.搜索

yum search string1 [string2] [...] #以指定的关键字搜索程序包及Summary信息

12.查看指定包所依赖的capabilities

yum deplist package1 [package2] [...]

13.查看yum事务历史

yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

14.安装及升级本地程序包

yum localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
yum localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)

15.包组管理的相关命令

yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]

16.yum的命令选项

--nogpgcheck:禁止进行gpg check;
-y: 自动回答为“yes”;
-q:静默模式;
--disablerepo=repoidglob:临时禁用此处指定的repo;
--enablerepo=repoidglob:临时启用此处指定的repo;
--noplugins:禁用所有插件;

如何使用光盘当作本地yum repository?

(1)挂载光盘至某目录,例如/media/cdrom

[root@localhost yum.repos.d]# mount -r /dev/sr0 /media/cdrom/
[root@localhost yum.repos.d]#
[root@localhost yum.repos.d]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/cl-root % /
devtmpfs % /dev
tmpfs % /dev/shm
tmpfs % /run
tmpfs % /sys/fs/cgroup
/dev/sda1 % /boot
tmpfs % /run/user/
/dev/sr0 % /media/cdrom
(2)创建配置文件
先把本地的CentOS-Base.repo备份一下

[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@localhost yum.repos.d]# vim CentOS-Local.repo
[CentOS7]
name=CentOS7 rpm from disk
baseurl=file:///media/cdrom/
gpgcheck=
[root@localhost cdrom]# yum repolist #显示可用的仓库列表
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
CentOS7 CentOS7 rpm from disk ,
repolist: ,
[root@localhost cdrom]#

如何创建yum仓库?

前面写到baseurl指向的yum repository的下必须有repodata目录,repodata目录下存放着元数据和特征码等信息,那么如何生存呢?

我们现在/xfs目录下放了一些关于xfs的rpm包:

[root@localhost xfs]# ll
total
-rw-r--r--. root root Sep : xfsprogs-4.5.-.el7_3.i686.rpm
-rw-r--r--. root root Sep : xfsprogs-4.5.-.el7_3.x86_64.rpm
-rw-r--r--. root root Sep : xfsprogs-4.5.-.el7_3.i686.rpm
-rw-r--r--. root root Sep : xfsprogs-4.5.-.el7_3.x86_64.rpm
-rw-r--r--. root root Sep : xfsprogs-devel-4.5.-.el7_3.i686.rpm
-rw-r--r--. root root Sep : xfsprogs-devel-4.5.-.el7_3.x86_64().rpm
-rw-r--r--. root root Sep : xfsprogs-devel-4.5.-.el7_3.x86_64.rpm
-rw-r--r--. root root Sep : xfsprogs-devel-4.5.-.el7_3.i686.rpm
-rw-r--r--. root root Sep : xfsprogs-devel-4.5.-.el7_3.x86_64.rpm

使用createrepo来生成:

[root@localhost ~]# createrepo /xfs/
Spawning worker with pkgs
Spawning worker with pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost ~]# ll /xfs/
total
drwxr-xr-x. root root Sep : repodata
-rw-r--r--. root root Sep : xfsprogs-4.5.-.el7_3.i686.rpm
-rw-r--r--. root root Sep : xfsprogs-4.5.-.el7_3.x86_64.rpm
-rw-r--r--. root root Sep : xfsprogs-4.5.-.el7_3.i686.rpm
-rw-r--r--. root root Sep : xfsprogs-4.5.-.el7_3.x86_64.rpm
-rw-r--r--. root root Sep : xfsprogs-devel-4.5.-.el7_3.i686.rpm
-rw-r--r--. root root Sep : xfsprogs-devel-4.5.-.el7_3.x86_64().rpm
-rw-r--r--. root root Sep : xfsprogs-devel-4.5.-.el7_3.x86_64.rpm
-rw-r--r--. root root Sep : xfsprogs-devel-4.5.-.el7_3.i686.rpm
-rw-r--r--. root root Sep : xfsprogs-devel-4.5.-.el7_3.x86_64.rpm
[root@localhost ~]# ll /xfs/repodata/
total
-rw-r--r--. root root Sep : 048072895365ec38b370d70bc209f3fd08a54bba535a2feb497448fa7b3d622e-other.xml.gz
-rw-r--r--. root root Sep : 29cf78ac1dcc6c2443c5a2d9a135a4a7f1591f44a1964c984c1664000ac86ee6-other.sqlite.bz2
-rw-r--r--. root root Sep : 2a83ee6cbdb7d0ca6063f91aa8e382271a05ae1e868f637beb0549758511325b-filelists.xml.gz
-rw-r--r--. root root Sep : 40f7e90c6dc338f5292d2cb1ee3d2153241fb714eca0365d2419eadfe7fda2e0-filelists.sqlite.bz2
-rw-r--r--. root root Sep : 5c4be0e2d956a133454d00f51c3833d44d13c60375937bf59bce4258210d9075-primary.sqlite.bz2
-rw-r--r--. root root Sep : 5c7e3e89ad6e3210fee5ca5519fcd26bb60f4356d9035da5e273bb69521b8be3-primary.xml.gz
-rw-r--r--. root root Sep : repomd.xml #特征码

createrepo生成repodata

然后在配置文件里面添加就行了,这样本地创建的yum repository就生效了:

[root@localhost yum.repos.d]# vim CentOS-Local.repo
[CentOS7]
name=CentOS7 rpm from disk
baseurl=file:///media/cdrom/
gpgcheck=
enable= [xfs]
name=xfs for centos7
baseurl=file:///xfs/
gpgcheck=
enable=

程序包的编译安装

我们有的时候并不能获取到相应软件的rpm包或者是原本就是没有rpm包的,但是一般项目网站都会给我们提供对应的源代码,然后我们可以使用工具进行编译安装。

编译C源代码的前提:
提供开发环境及开发工具。

开发工具:make,gcc等

开发环境:开发库,头文件,标准库等

在centos中是通过“包组”提供开发组件

在centos6中:

yum groupinstall "Development Tools"
yum groupinstall "Server Platform Development"

在centos7中:

yum groupinstall "Development Tools" #即可

然后就可以开始编译安装了!

建议:安装前查看install或者readme文件

第一步:

运行configure脚本(./configure):

(1)通过传递参数,指定启动特性、安装路径等,执行时会参考用户指定以及Makefile.in文件(有的时候可能没有configure文件和Makefile.in文件,autoconf根据指定的配置文件可以生成configure文件,automake可以根据指定的配置文件生成Makefile.in文件),最终生成Makefile。

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

选项:
--help:获取其他支持的使用选项
--prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置
Optional Features: 可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages: 可选包
--with-PACKAGE[=ARG]
--without-PACKAGE

如果不指定--prefix选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件放在/usr/local/etc,其他的资源文件放在/usr/local/share。指定prefix的好处就是当你想卸载软件的时候,直接删除该安装目录就行了,也可以将整个目录拷贝到其他的机器上使用,前提是同样的操作系统。

第二步:

make(make其实是一个项目的构建工具,它可以对代码进行预处理、编译等操作)

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

第三步:
make install

用来安装,它从Makefile中读取指令,安装到指定的位置。

安装后的配置:

(1)导出二进制程序目录至PATH环境变量中:
         编辑文件/etc/profile.d/NAME.sh
         export PATH=/PATH/TO/BIN:$PATH
         再让shell进程重新读配置文件 source /PATH/FROM/CONFI_FILE
(2)导出库文件路径
         编辑/etc/ld.so.conf.d/NAME.conf
         添加新的库文件所在目录至此文件中
         让系统重新生成缓存:ldconfig [-v]
(3)导出头文件
         基于链接的方式实现:ln -sv 
(4)导出帮助手册
         编辑/etc/man_db.config文件,添加一个MANPATH。

编译安装apache 2.2并启动此服务

1.解压缩并展开文件:

[root@localhost ~]# tar xf httpd-2.2..tar.bz2 

2.查看目录下的文件:

[root@localhost ~]# cd httpd-2.2.
[root@localhost httpd-2.2.]#
[root@localhost httpd-2.2.]# ll
total
-rw-r--r--. Nov ABOUT_APACHE
-rw-r--r--. Jul acinclude.m4
-rw-r--r--. Oct Apache.dsw
drwxr-xr-x. Jul : build
-rw-r--r--. Aug BuildAll.dsp
-rw-r--r--. Jul BuildBin.dsp
-rwxr-xr-x. Sep buildconf
-rw-r--r--. Jun : CHANGES
-rw-r--r--. Feb config.layout
-rwxr-xr-x. Jul : configure
-rw-r--r--. May configure.in
drwxr-xr-x. Jul : docs
-rw-r--r--. Nov emacs-style
-rw-r--r--. May httpd.dep
-rw-r--r--. Jun httpd.dsp
-rw-r--r--. May httpd.mak
-rw-r--r--. Jul : httpd.spec
drwxr-xr-x. Jul : include
-rw-r--r--. Jan INSTALL
-rw-r--r--. Dec InstallBin.dsp
-rw-r--r--. Nov LAYOUT
-rw-r--r--. May libhttpd.dep
-rw-r--r--. Jan libhttpd.dsp
-rw-r--r--. May libhttpd.mak
-rw-r--r--. Jan LICENSE
-rw-r--r--. Nov Makefile.in
-rw-r--r--. Jan Makefile.win
drwxr-xr-x. Jul : modules
-rw-r--r--. Jan NOTICE
-rw-r--r--. Mar NWGNUmakefile
drwxr-xr-x. Jul : os
-rw-r--r--. Jan README
-rw-r--r--. Aug README.platforms
-rw-r--r--. Dec README-win32.txt
-rw-r--r--. Mar ROADMAP
drwxr-xr-x. Jul : server
drwxr-xr-x. Jul : srclib
drwxr-xr-x. Jul : support
drwxr-xr-x. Jul : test
-rw-r--r--. Oct VERSIONING

查看

3.运行configure脚本,并指定软件安装目录为/usr/local/apache2,指定配置文件的路径为/etc/http2

[root@localhost httpd-2.2.]# ./configure --prefix=/usr/local/apache2  --sysconfdir=/etc/httpd2  #这里指定了配置文件的存放位置,也可以不指定,如果不指定默认在安装目录下有一个conf目录,建议不指定

4.make

[root@localhost httpd-2.2.]#make

5.make  install

[root@localhost httpd-2.2.]#make install

如果没有任何报错就代表已经安装成功了,我们去安装目录下面看一下(如果指定了安装目录,所有的东西都会被放在指定的目录下面,建议大家这么做,因为以后想删除软件的时候,直接将整个目录删除了进行了,本次例子中的配置文件是放在/etc/httpd2下,如果卸载也要记得删除此目录):

[root@localhost httpd-2.2.]# cd /usr/local/apache2/
[root@localhost apache2]# ll
total
drwxr-xr-x. root root Sep : bin
drwxr-xr-x. root root Sep : build
drwxr-xr-x. root root Sep : cgi-bin
drwxr-xr-x. root root Sep : error
drwxr-xr-x. root root Jul : htdocs
drwxr-xr-x. root root Sep : icons
drwxr-xr-x. root root Sep : include
drwxr-xr-x. root root Sep : lib
drwxr-xr-x. root root Sep : logs
drwxr-xr-x. root root Sep : man
drwxr-xr-x. root root Jul : manual
drwxr-xr-x. root root Sep : modules

好的,接下来进行安装后的一些工作:

1.导出二进制配置文件至PATH环境变量中:

[root@localhost apache2]# vim /etc/profile.d/apache.sh

export PATH=/usr/local/apache2/bin:$PATH

[root@localhost apache2]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost apache2]#
[root@localhost apache2]# source /etc/profile.d/apache.sh #让进程重新读取一些配置文件
[root@localhost apache2]# echo $PATH
/usr/local/apache2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2.导出库文件路径

[root@localhost apache2]# vim /etc/ld.so.conf.d/apache2.conf

/usr/local/apache2/lib
[root@localhost apache2]# ldconfig #使用ldconfig重新生成缓存

3.导出头文件,创建软连接

[root@localhost include]# ln -sv /usr/local/apache2/include/  /usr/include/apache2
‘/usr/include/apache2’ -> ‘/usr/local/apache2/include/’

4.导出帮助手册

修改完之后我们就可以使用man手册了
[root@localhost include]man apachectl

以上步骤完成之后,我们可以运行服务了:

[root@localhost ~]# apachectl start  #启动,停用则使用apachectl stop
[root@localhost ~]# netstat -tan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0.0.0.0: 0.0.0.0:* LISTEN
tcp 127.0.0.1: 0.0.0.0:* LISTEN
tcp 192.168.172.134: 192.168.172.1: ESTABLISHED
tcp6 ::: :::* LISTEN #当80端口被监听说明已经启用成功了
tcp6 ::: :::* LISTEN
tcp6 ::: :::* LISTEN

可以直接在浏览器里面查看啦!It works(记得关闭防火墙,systemctl stop firewalld)!

【Linux相识相知】yum的配置使用和程序包的编译安装的更多相关文章

  1. 【Linux相识相知】rpm包管理

    我们日常在使用Windows的时候,如果要安装某个软件,最简单的方法就是在程序包的官网直接下载软件包到本地,一般是以.exe或者.msi格式的文件,然后一直下一步下一步就能安装成功了,但是在使用lin ...

  2. 《linux源代码包的编译安装》RHEL6

    linux下源代码包的编译安装其实没那么复杂. 我是win7系统装的虚拟机,就简单说下: 举个简单的例子: http://www.openssl.org/ 这是openssl的官网,下载openssl ...

  3. linux学习笔记-lrmi源码包的编译安装方法

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 官方的lrmi包没有人更新了,如果碰到需要这个编译安装这个包,可以参考我的解决思路,如下: https://pkgs.org/这 ...

  4. Linux 平台下 YUM 源配置 手册

    Redhat/Centos 系的Linux 平台,推荐使用YUM 来安装相关依赖包. 安装方式有两种,一种是使用本地的YUM,一种使用在线的YUM. 1         在线YUM 源 如果操作系统能 ...

  5. Linux中的yum的配置以及常见报错的处理

    一. 今天登录服务器的时候,误把yum所在的cache文件夹中的文件删除掉了,导致yum不能够使用,解决的方法: 显示错误如下: Loaded plugins: fastestmirror Deter ...

  6. Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用

    1.下载extundelete包,安装依赖 我用的是Centos系统,在安装extundelete之前需要安装e2fsprogs,e2fsprogs-libs,e2fsprogs-devel. yum ...

  7. [环境配置]Ubuntu 16.04 源码编译安装OpenCV-3.2.0+OpenCV_contrib-3.2.0及产生的问题

    1.OpenCV-3.2.0+OpenCV_contrib-3.2.0编译安装过程 1)下载官方要求的依赖包 GCC 4.4.x or later CMake 2.6 or higher Git GT ...

  8. yum 下载全量依赖 rpm 包及离线安装(终极解决方案)

    目录 简介 验证环境 查看依赖包 方案一(推荐):repotrack 方案二:yumdownloader 方案三:yum 的 downloadonly 插件 离线安装 rpm 参考资料 简介 通常生产 ...

  9. 【linux相识相知】网络属性配置

    当我们拥有一个崭新的计算机的时候,第一步恐怕都是迫不及待的下载各种软件,看视频,听音乐等,这里的关键的一点是要有网络.现在的个人计算机大部分都是windows操作系统的,接入网络网络很简单,插上网线也 ...

随机推荐

  1. 构建 MariaDB Galera Cluster 分布式数据库集群(一)

    MariaDB Galera Cluster 介绍 简介 MariaDB集群是MariaDB同步多主机集群,仅支持XtraDB(详见本文结尾注释)/InnoDB存储引擎(虽然有对MyISAM实验支持 ...

  2. WS Security 认证方式详解

    本文参考文档如下: MSDN 官方详解 : http://www.microsoft.com/china/MSDN/library/WebServices/WebServices/HowASP.NET ...

  3. 【模板小程序】链表排序(qsort/insert_sort/merge_sort)

    前言 本文章整理了链表排序的三种方法,分别是快速排序.插入排序.归并排序.为适应不同用途,先给出常用的int版本,再在此基础上抽象出类模板. 目录 一.针对整数的版本(常用) 文中链表定义 链表相关操 ...

  4. [补档]happiness

    happiness 题目 传送门:http://cogs.pro/cogs/problem/problem.php?pid=1873 高一一班的座位表是个n×m的矩阵,经过一个学期的相处,每个同学和前 ...

  5. 26. leetcode 350. Intersection of Two Arrays II

    350. Intersection of Two Arrays II Given two arrays, write a function to compute their intersection. ...

  6. 快慢指针实现不依赖计数器寻找中位数(linked list)

    该方法在不借助计数器变量实现寻找中位数的功能.原理是:快指针的移动速度是慢指针移动速度的2倍,因此当快指针到达链表尾时,慢指针到达中点.程序还要考虑链表结点个数的奇偶数因素,当快指针移动x次后到达表尾 ...

  7. JavaScript中的EcMAScript学习笔记

    一.Javascript概述(知道)    a.一种基于对象和事件驱动的脚本语言    b.作用: 给页面添加动态效果    c.历史: 原名叫做livescript.W3c组织开发的标准叫ECMAs ...

  8. Luogu P2690 接苹果

    题目背景 USACO 题目描述 很少有人知道奶牛爱吃苹果.农夫约翰的农场上有两棵苹果树(编号为1和2), 每一棵树上都长满了苹果.奶牛贝茜无法摘下树上的苹果,所以她只能等待苹果 从树上落下.但是,由于 ...

  9. String对象常用的一些方法

    anchor() 创建 HTML 锚. big() 用大号字体显示字符串. blink() 显示闪动字符串. bold() 使用粗体显示字符串. charAt() 返回在指定位置的字符. charCo ...

  10. webpack 引入 bootstrap

    Bootstrap中是一种事实上的界面标准,标准到现在的网站大量的使用它.如果可以使用webpack引入的bootstrap,就可以一个npm install完成项目的依赖,而不必手工的添加到html ...