yum程序包管理和程序包编译安装
一、yum程序包的管理
1、yum repo 存储了许多的rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata)
yum客户端:配置文件:
/etc/yum.conf:为所有仓库提供公共配置。
/etc/yum.repos.d/*.repo:为仓库的指向提供配置,如果自建yum仓库的话,要在/yum.repos.d/下面自定义建立repo结尾的文档,然后进行配置工作。
2、定义yum仓库配置文件需要定义的内容有:
[repositoryID] 公共的主配置段
name=Some name for this repository 仓库完整名称
baseurl=url://path/to/repository/ 仓库访问的URL路径,可以访问本地自建的路径。
url://path/to/repository/ 可以指向多个URL路径,可以是ftp:// http://
enabled={1|0} 是否启用此功能,默认是启用的。1为启用,0为不启用。
gpgcheck={1|0} 是否检查程序包的来源合法性。1为启用,0为不启用。
gpgkey=URL 指明秘钥文件,能访问秘钥文件的文件路径。
enablegroups={1|0} 是否支持在此仓库上支持组管理程序包。默认为是可以的。1为可以,0为部可以。
failovermethod={roundrobin|priority} 选择URL地址是否原则顺序,还是轮训。默认为随机的。
cost= 开销数字,默认为1000.
3、指向一个yum仓库
(1)进入配置文件cd /etc/yum.repos.d , vim 建一个以repo结尾的文件进行编辑
[root@mageedu yum.repos.d]# vim CentOS-local.repo
[server2]
name=aliyun
baseurl=http://mirrors.aliyun.com/centos/6.7/os/x86_64/
gpgcheck=0
Enable=1
然后进行:wq 保存退出即可
(2)查看yum 仓库列表 使用 yum repolist 即可查看:如下,结果已经显示,已经读取成功。
[root@mageedu yum.repos.d]# yum repolist
4、yum 命令的用法
(1)显示程序包:
yum repolist all 显示所有仓库列表
yum repolist enabled 显示已经启用的仓库列表
yum repolist disabled 显示未启用的仓库列表
yum list 显示程序包列表(可以配合通配符使用)例如:yum list php*
yum list available 显示可用的程序包,但是未安装 ,可以配合通配符过滤使用。
yum list installed 显示已经安装的程序包,可以配合通配符过滤使用。
yum list updates 显示可以升级的程序包,可以配合通配符过滤使用。
(2)安装程序包:
yum install + 程序包 +...
[root@mageedu yum.repos.d]# yum install gcc
已加载插件:fastestmirror, langpacks
server | 2.9 kB 00:00
server2 | 3.7 kB 00:00
server3 | 3.6 kB 00:00
server4 | 4.3 kB 00:00
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* centosplus: mirrors.opencas.cn
* extras: mirrors.opencas.cn
* updates: mirrors.opencas.cn
软件包 gcc-4.8.5-4.el7.x86_64 已安装并且是最新版本
无须任何处理
(3)升级程序包:
yum update + 程序包 +...
(4)检查可用升级包:
yum check-update
(5)卸载指定程序包:
yum remove | erase +程序包 +...
[root@mageedu yum.repos.d]# yum remove cpp
已加载插件:fastestmirror, langpacks
正在解决依赖关系
--> 正在检查事务
---> 软件包 cpp.x86_64.0.4.8.5-4.el7 将被 删除
--> 正在处理依赖关系 cpp = 4.8.5-4.el7,它被软件包 gcc-4.8.5-4.el7.x86_64 需要
--> 正在检查事务
---> 软件包 gcc.x86_64.0.4.8.5-4.el7 将被 删除
--> 正在处理依赖关系 gcc,它被软件包 systemtap-devel-2.8-10.el7.x86_64 需要
--> 正在处理依赖关系 gcc = 4.8.5,它被软件包 libtool-2.4.2-21.el7_2.x86_64 需要
--> 正在处理依赖关系 gcc,它被软件包 systemtap-devel-2.8-10.el7.x86_64 需要
--> 正在处理依赖关系 gcc = 4.8.5-4.el7,它被软件包 gcc-c++-4.8.5-4.el7.x86_64 需要
--> 正在处理依赖关系 gcc = 4.8.5-4.el7,它被软件包 libquadmath-devel-4.8.5-4.el7.x86_64 需要
--> 正在处理依赖关系 gcc = 4.8.5-4.el7,它被软件包 gcc-gfortran-4.8.5-4.el7.x86_64 需要
--> 正在检查事务
---> 软件包 gcc-c++.x86_64.0.4.8.5-4.el7 将被 删除
---> 软件包 gcc-gfortran.x86_64.0.4.8.5-4.el7 将被 删除
---> 软件包 libquadmath-devel.x86_64.0.4.8.5-4.el7 将被 删除
---> 软件包 libtool.x86_64.0.2.4.2-21.el7_2 将被 删除
---> 软件包 systemtap-devel.x86_64.0.2.8-10.el7 将被 删除
--> 正在处理依赖关系 systemtap-devel = 2.8-10.el7,它被软件包 systemtap-2.8-10.el7.x86_64 需要
--> 正在检查事务
---> 软件包 systemtap.x86_64.0.2.8-10.el7 将被 删除
--> 解决依赖关系完成
依赖关系解决
=======================================================================
Package 架构 版本 源 大小
=======================================================================
正在删除:
cpp x86_64 4.8.5-4.el7 @anaconda 15 M
为依赖而移除:
gcc x86_64 4.8.5-4.el7 @anaconda 37 M
gcc-c++ x86_64 4.8.5-4.el7 @anaconda 16 M
gcc-gfortran x86_64 4.8.5-4.el7 @anaconda 16 M
libquadmath-devel x86_64 4.8.5-4.el7 @anaconda 18 k
libtool x86_64 2.4.2-21.el7_2 @updates 2.2 M
systemtap x86_64 2.8-10.el7 @anaconda 44 k
systemtap-devel x86_64 2.8-10.el7 @anaconda 6.1 M
事务概要
=======================================================================
移除 1 软件包 (+7 依赖软件包)
安装大小:92 M
是否继续?[y/N]:
(6)查看程序包information:
info
[root@mageedu yum.repos.d]# yum info gcc
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* centosplus: mirrors.opencas.cn
* extras: mirrors.opencas.cn
* updates: mirrors.opencas.cn
已安装的软件包
名称 :gcc
架构 :x86_64
版本 :4.8.5
发布 :4.el7
大小 :37 M
源 :installed
来自源:anaconda
简介 : Various compilers (C, C++, Objective-C, Java, ...)
网址 :http://gcc.gnu.org
协议 : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions
: and LGPLv2+ and BSD
描述 : The gcc package contains the GNU Compiler Collection version
: 4.8. You'll need this package in order to compile C code.
(7)provides :查看指定的特性是由哪个程序包所提供的。
[root@mageedu yum.repos.d]# yum provides gcc
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* centosplus: mirrors.btte.net
* extras: mirrors.opencas.cn
* updates: mirrors.btte.net
gcc-4.4.7-16.el6.x86_64 : Various compilers (C, C++, Objective-C, Java,
: ...)
源 :server2
gcc-4.8.5-4.el7.x86_64 : Various compilers (C, C++, Objective-C, Java,
: ...)
源 :base
gcc-4.8.5-4.el7.x86_64 : Various compilers (C, C++, Objective-C, Java,
: ...)
源 :server3
gcc-4.8.5-4.el7.x86_64 : Various compilers (C, C++, Objective-C, Java,
: ...)
源 :@anaconda
(8)清理本地的缓存:
clean
(9)构建本地缓存:
makecache
(10)搜索
search string1 +...
[root@mageedu yum.repos.d]# yum search bash
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* centosplus: mirrors.btte.net
* extras: mirrors.sina.cn
* updates: mirrors.btte.net
========================== N/S matched: bash ==========================
bash-argsparse.noarch : An high level argument parsing library for bash
bash-completion.noarch : Programmable completion for Bash
bash-completion-extras.noarch : Additional programmable completions for
: Bash
bash-doc.x86_64 : Documentation files for bash
bashdb.noarch : BASH debugger, the BASH symbolic debugger
bashmount.noarch : A menu-driven bash script for mounting removable
: media
libguestfs-bash-completion.noarch : Bash tab-completion scripts for
: libguestfs tools
pcp-pmda-bash.x86_64 : Performance Co-Pilot (PCP) metrics for the Bash
: shell
python-django-bash-completion.noarch : bash completion files for Django
bash.x86_64 : The GNU Bourne Again shell
bats.noarch : Bash Automated Testing System
python-argcomplete.noarch : Bash tab completion for argparse
sys_basher.x86_64 : A multithreaded hardware exerciser
(11)重新安装程序包:
reinstall +程序包 +...
(12)查看指定包所依赖的关系(capabilities)
yum deplist +程序包名
[root@mageedu yum.repos.d]# yum deplist gcc
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* centosplus: mirrors.opencas.cn
* extras: mirrors.opencas.cn
* updates: mirrors.opencas.cn
软件包:gcc.x86_64 4.8.5-4.el7
依赖:/bin/sh
provider: bash.x86_64 4.2.46-19.el7
依赖:/sbin/install-info
provider: info.x86_64 5.1-4.el7
依赖:binutils >= 2.20.51.0.2-12
provider: binutils.x86_64 2.23.52.0.1-55.el7
依赖:cpp = 4.8.5-4.el7
provider: cpp.x86_64 4.8.5-4.el7
依赖:glibc-devel >= 2.2.90-12
provider: glibc-devel.x86_64 2.17-106.el7_2.4
provider: glibc-devel.i686 2.17-106.el7_2.4
provider: libgomp.x86_64 4.8.5-4.el7
provider: libgomp.i686 4.8.5-4.el7
依赖:libgomp.so.1()(64bit)
provider: libgomp.x86_64 4.8.5-4.el7
依赖:libm.so.6()(64bit)
(13)yum history
yum history packages-list
yum history info
(14)localinstall
localupdate
四、包组管理的程序包:
groupinstall group1 [group2] [...] 安装包组
groupupdate group1 [group2] [...]更新包组
yum groupdate 升级包组
grouplist [hidden] [groupwildcard] [...] 列出包组列表
groupremove group1 [group2] [...] 删除包组
groupinfo group1 [...] 显示包组的信息
五、创建一个本地的YUM仓库:
(1)先建一个目录存放RPM包,mkdir -p /yum/repo
然后将其xen 下的所有RPM包放到 /yum/repo 目录下。
ls /yum/repo 查看一下是否已经有所有的程序包 ,RPM包已经存在。
(2)创建包组 createrepo ./ 执行完成后会生成repodata 目录
[root@mageedu repo]# createrepo ./
Spawning worker 0 with 54 pkgs
Spawning worker 1 with 54 pkgs
Spawning worker 2 with 54 pkgs
Spawning worker 3 with 53 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
(3)进入cd repodata 目录里面去,查看一下内容ls
[root@mageedu repo]# cd repodata/
[root@mageedu repodata]# ls
08b988bec63dbb8b476890070da0e7b1bc8506d506fd07381592e69ac39029ad-primary.xml.gz
64e03fa19b70d01b9dc3618a3967993d9edc2107d1522f78684538f90424c5b6-other.xml.gz
95195bf6953a8b596668938f5c313cba45bf83508c0fa350ba953bd57f1d1fc9-primary.sqlite.bz2
ae734d43ef5877bfb1d913c516f1bf0c62035bd9d15d3eaeebce92960ffcdd40-filelists.xml.gz
baf986873befe7ab4b59e3a01a3fbd6d8fb69c061ba36869e17b769e860302a4-filelists.sqlite.bz2
dfb93d132de8da0c3c622c8fe8d3ddcb18d5e0c7cd8e2a4501b3ab69ce4641d1-other.sqlite.bz2
repomd.xml
(4)进入 cd /etc/yum.repos.d/下 编辑 vim CentOS-local.repo
[server]
name=xen 指明仓库的名字
baseurl=file:///yum/repo 仓库的URL位置
gpgcheck=0 是否需要合法性检查
Enable=1 启用
编辑完成后之后保存退出:wq
(5)查看一下启用的仓库列表 使用命令yum repolist 查看结果中已经有 xen,说明yum仓库已经启用了。
[root@mageedu yum.repos.d]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.btte.net
* centosplus: mirrors.opencas.cn
* extras: mirrors.opencas.cn
* updates: mirrors.opencas.cn
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base 9,007
centosplus/7/x86_64 CentOS-7 - Plus 53
extras/7/x86_64 CentOS-7 - Extras 226
server xen 215
server2 aliyun os 6,575
server3 iso 9,007
server4 epel 9,664
updates/7/x86_64 CentOS-7 - Updates 942
repolist: 35,689
程序包的编译安装
第一步:configure脚本
选项:指定安装位置、指定启用的特性
--help: 获取其支持使用的选项
选项分类:
安装路径设定:
--prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;
System types:
Optional Features: 可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages: 可选包
--with-PACKAGE[=ARG]
--without-PACKAGE
第二步:make
第三步:make install
安装后的配置:
(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
案例如下:编译安装apache 2.2; 启动此服务;
在根目录新建一个目录为mkdir apache,然后将其httpd-2.2.29.tar.bz2放进apache目录中。
进入apache目录中,然后进行对原文件进行解压,tar -xf httpd-2.2.29.tar.bz2,加压完成后
会显示httpd-2.2.29文件类表如下:
3. 然后进入httpd-2.2.29文件中,然后进行查看一下,ls 然后指定安装路径和配置文件的安装路径,命令如下,里面没有Makefile文件,第一步编译安装后,就会生成。
[root@mageedu httpd-2.2.29]# ls
ABOUT_APACHE buildconf config.status httpd.dep InstallBin.dsp modules.o README-win32.txt VERSIONING
acinclude.m4 buildmark.o configure httpd.dsp LAYOUT NOTICE ROADMAP
Apache.dsw CHANGES configure.in httpd.mak libhttpd.dep NWGNUmakefile server
build config.layout docs httpd.spec libhttpd.dsp modules os srclib
BuildAll.dsp config.log emacs-style include libhttpd.mak modules.c README support
BuildBin.dsp config.nice httpd INSTALL LICENSE modules.lo README.platforms test
4.进行编译安装的第一步:
[root@mageedu httpd-2.2.29]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2
5.进行编译安装的第二步:
[root@mageedu httpd-2.2.29]#make
6.进行编译安装的第三步;
[root@mageedu httpd-2.2.29]#make install
7.对apachect1 进行服务的启动
[root@mageedu apache2]# ./bin/apachectl start
8.查看80端口是否已经启动,查看命令netstat -tan
[root@mageedu apache2]# netstat -tan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 52 192.168.1.123:22 192.168.1.112:61355 ESTABLISHED
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
9.然后进行测试,用windows的电脑网页地址中输入linux虚拟机电脑的地址,查看结果如下;
总结,以上就是apache2.2程序的包的编译安装过程和测试结果。
继续努力。