CentOs之yum详解整理
CentOs之yum详解整理
yum的地位:yum是rpm的前端管理工具,而且依赖于rpm。
yum仓库:yum repository,仓库里存储了众多rpm包,以及包的相关的元数据文件.yum仓库里会有个repodata目录存在.
ftp:// http://file:///(本地服务器,例光盘) /nfs://
查看yum的信息:
[root@yph7yum.repos.d]# rpm -q yum ------查看yum命令的安装包是哪个
yum-3.4.3-125.el7.centos.noarch
[root@yph7yum.repos.d]# rpm -qc yum ------查看yum命令的配置文件
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf
yum的配置文件:
/etc/yum.conf:此文件为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置。配置一个或多个仓库指向,如果多个仓库都有需要的那个程序包包,就选择最近的仓库,或者选择成本低的仓库。
用man 5 yum.conf可以查看对yum.conf文件的读取帮助。
[root@yph7yum.repos.d]
#cat/etc/yum.conf
[main]----------指公共区
cachedir=
/var/cache/yum/
$basearch/$releasever
keepcache=0
debuglevel=2
logfile=
/var/log/yum
.log
exactarch=1为1表示精确匹配,如果要的是centos7的包,centos6.7的就默认不匹配
obsoletes=1
gpgcheck=1为1表示检测来源合法性及内容完整性
plugins=1
installonly_limit=5
………………………………………此处省略……字
#PUTYOURREPOSHEREORINseparatefilesnamedfile.repo
#in/etc/yum.repos.d
仓库的指向的定义:
[repositoryID]仓库ID
name=Some namefor this repository等号右边是自己定义的文件名
baseurl=url://path/to/repository/ 等号右边是要下载的程序包的url
enabled={1|0}是否启用仓库,1表示启用,默认为1
gpgcheck={1|0}安装前是否检查来源合法性及完整性,1为默认表示是
gpgkey=URL指明秘钥文件的路径
enablegroups={1|0}是否支持在此仓库上使用组来批量管理包,1为默认,表示是
failovermethod={roundrobin|priority};默认为:roundrobin,意为随机挑选;
cost=1000,表示开销,默认为1000
创建yum仓库:
请自行查看/etc/yum.repos.d/CentOs-Base.repo这个文件,然后我们仿照这个yum源仓库文件的格式写一个我们自己的仓库文件。注意:有repodata所在的路径才能是yum源指定的路径。
创建之前先把原仓库重命名一下。mv CentOS-Base.repo CentOS-Base.repo.bak
下面我们来自己创建本地yum源仓库文件centos-local.repo,内容如下:
[base]
name=Base Repo172.16.0.1 ----------自己定义的名字
baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-7-x86_64-1503/ ----下载程序包的路径
gpgcheck=0---------------不检查来源合法性及内容完整性
[epel]
name=Fedora EPELfor EL6 x86 64
baseurl=http://172.16.0.1/fedora-epel/7/x86_64/
gpgcheck=0
这是两个不同的仓库,虽然写在同一个文件。如果是相同的仓库,里面的文件是镜像,就可以把多个url写在同一个“baseurl”下面。
yum命令的用法:详细信息请manyum
yum [options][command] [package ...]
显示仓库列表:默认显示已启用的,即enabled
repolist[all|enabled|disabled]
[root@yph7yum.repos.d]# yum repolist enabled显示可用的仓库列表
[root@yph7yum.repos.d]# yum repolist all显示可用的和不可用的仓库列表
[root@yph7yum.repos.d]# yum repolist disabled显示不可用的仓库列表
显示程序包:
yum list[all |glob_exp1] [glob_exp2] [...]基于文件名通配查找:
[root@yph7yum.repos.d]
#yumlist|wc–l
15651-----------------一共有15651个程序包
[root@yph7yum.repos.d]
#yumlistPHP*|wc–l
657-------------------一共657个PHP开头的程序包
yum list{available|installed|updates} [glob_exp1] [...]
[root@yph7 yum.repos.d]# yum list available显示可以用的包
[root@yph7 yum.repos.d]# yum list installed显示已安装的包
[root@yph7 yum.repos.d]# yum list updates显示可更新的包
[root@yph7 yum.repos.d]# yum list updates xorg* | wc–l
13-------------------------一共有13个可更新的并且以xorg开头的程序包
安装程序包:
installpackage1[package2] [...]
[root@yph7 ~]# yum install PHPwapmail.noarch
[root@yph7 ~]# yum install gcc-4.5.4 如果不想安装最新程序包,可以这样指明要安装程序包的版本
reinstallpackage1 [package2] [...] 重新安装程序包
[root@yph7~]# yum reinstall zsh 在安装zsh之后,要重新安装一次
升级程序包:
update[package1][package2] [...]
[root@yph7 ~]#yum update xorg-x11-drv-fbdev
……………………………………………………….
更新完毕:
xorg-x11-drv-fbdev.x86_64 0:0.4.3-16.el6
完毕!
downgradepackage1 [package2] [...]降级安装
检查可用升级:
check-update
[root@yph7 ~]#yum check-update | wc –l
71 ------------------有71个可用升级包
卸载程序包:
removepackage1 [package2] [...]
[root@yph7~]
#yumremovezsh------会默认把依赖cpp的gcc也卸载掉
…………………………………………………..
删除:
zsh.x86_640:4.3.11-4.el6.centos
完毕!
查看程序包information:
info[...]
[root@yph7~]
#yuminfozsh
名称:zsh
架构:x86_64
版本:4.3.11
发布:4.el6.centos
大小:2.2M
源:base
简介:Apowerfulinteractiveshell
网址:http:
//zsh
.sunsite.dk/
协议:BSD
查看指定的特性或者文件是由哪个程序包所提供:类似 rpm -qf
provides|whatprovides feature1 [feature2] [...]
[root@yph7~]# yum provides zsh
[root@yph7~]
#yumprovides/etc/zshrc
Loadingmirrorspeedsfromcachedhostfile
zsh-4.3.11-4.el6.centos.x86_64:Apowerfulinteractiveshell
源:base
匹配来源:
文件名:
/etc/zshrc
zsh-4.3.11-4.el6.centos.x86_64:Apowerfulinteractiveshell
清理本地缓存:
clean[ packages| Metadata | expire-cache | rpmdb | plugins | all ]
(对应于上面的单词分别是)包,元数据,过期缓存,rpmdb ,插件,所有缓存
[root@yph7~]
#yumcleanexpire-cache
正在清理软件源:baseepelextra
3Metadata文件已移除
[root@yph7~]
#yumcleanMetadata
正在清理软件源:baseepelextra
9Metadata文件已移除
6sqlite文件已移除
0Metadata文件已移除
[root@yph7~]
#yumcleanpackages
正在清理软件源:baseepelextra
0package文件已移除
构建缓存:makecache
[root@yph7~]
#yummakecache
………………………………………………….
(13
/13
):extra
/7/x86_64/other_db
|417kB00:00:00
Loadingmirrorspeedsfromcachedhostfile
元数据缓存已建立
searchstring1[string2] [...]
[root@yph7~]
#yumsearchbash-------由于结果比较多,只截取一部分内容
bash
-argsparse.noarch:Anhighlevelargumentparsinglibrary
for
bash
bash
-completion.noarch:Programmablecompletion
for
Bash
bash
-doc.x86_64:Documentationfiles
for
bash
python-argcomplete.noarch:Bashtabcompletion
for
argparse-------这个包名没有“
bash
”,但概要信息里有。
查看指定包所依赖的capabilities:
deplistpackage1[package2] [...]
[root@yph7~]
#yumdeplistzsh-----------查看zsh与其他包的依赖关系
软件包:zsh.x86_644.3.11-4.el6.centos
依赖:
/bin/sh
provider:
bash
.x86_644.1.2-33.el6
依赖:
/sbin/install-info
provider:info.x86_644.13a-8.el6
依赖:coreutils
provider:coreutils.x86_648.4-37.el6
……………………………………………………….
查看yum事务历史:在什么时候,有谁执行过哪些yum的安装或卸载等操作
history
[info|list |summary| stats|packages-list|packages-info|addon-info|redo|undo|rollback|new|sync]
[root@yph7~]
#yumhistory
ID|登录用户|日期和时间|操作|变更数
-------------------------------------------------------------------------------
1|系统<空>|2015-12-0819:14|Install|1137
[root@yph7~]
#yumremovezsh
[root@yph7~]
#yumhistory
ID|登录用户|日期和时间|操作|变更数
-------------------------------------------------------------------------------
2|root<root>|2015-12-2405:53|Erase|1<
1|系统<空>|2015-12-0819:14|Install|1137>
[root@yph6yum.repos.d]
#yumhistorysummary
Loadedplugins:fastestmirror,refresh-packagekit,security
Loginuser|Time|Action(s)|Altered
-------------------------------------------------------------------------------
root<root>|Lastday|Install|4
root<root>|Lastweek|Install|41
System<
unset
>|Last3months|Install|997
history
summary
安装及升级本地程序包:
安装本地包时,如果有依赖关系的包在网站上,yum会自动下载安装依赖包,rpm无此功能
localinstall rpmfile1 [rpmfile2] [...] localinstall只是为了兼容,建议用install
[root@yph7~]
#yuminstallbooth-0.2.0-31.1.x86_64.rpm-----从下面可以看到会自动安装依赖的包
--->软件包booth.x86_64.0.0.2.0-31.1将被安装
-->正在处理依赖关系cluster-glue-libs>=1.0.6,它被软件包booth-0.2.0-31.1.x86_64需要
--->软件包clusterlib.x86_64.0.3.0.12.1-73.el6将被安装
--->软件包corosync.x86_64.0.1.4.7-2.el6将被安装
localupdate rpmfile1 [rpmfile2] [...];同理,建议用update,而不是localupdate
[root@yph7~]
#yumupdatezsh-5.0.2-7.el7_1.2.x86_64.rpm-------可以看到也是可以自动解决依赖关系的
正在检查zsh-5.0.2-7.el7_1.2.x86_64.rpm:zsh-5.0.2-7.el7_1.2.x86_64
zsh-5.0.2-7.el7_1.2.x86_64.rpm将作为zsh-5.0.2-7.el7_1.1.x86_64的更新
正在解决依赖关系
-->正在检查事务
--->软件包zsh.x86_64.0.5.0.2-7.el7_1.1将被升级
--->软件包zsh.x86_64.0.5.0.2-7.el7_1.2将被更新
-->解决依赖关系完成
包组管理的相关命令:
grouplist[hidden] [groupwildcard] [...]
[root@yph7 ~]#yum grouplist | wc –l
96 ----------------------------一共96个包组
groupinstallgroup1 [group2] [...] ---安装包组内的包,而且自动安装依赖包
[root@yph6~]
#yumgroupinstall"ServerPlatform"
(15
/18
):openssl-1.0.1e-42.el6_7.1.x86_64.rpm|1.5MB00:05
(16
/18
):pam-1.1.1-20.el6_7.1.x86_64.rpm|658kB00:01
(17
/18
):redhat-lsb-4.0-7.el6.centos.x86_64.rpm|11kB00:00
(18
/18
):redhat-lsb-compat-4.0-7.el6.centos.x86_64.rpm|10kB00:00
groupupdategroup1 [group2] [...] 升级包组内包
[root@yph7 ~]#yum groupupdate "Server Platform"
groupremove group1 [group2] [...] 卸载包组内的包
[root@yph7 ~]#yum groupremove "XWindow System " ------------卸载图形界面包组
groupinfo group1 [...] 查看包组的信息
[root@yph7 ~]#yum groupinfo "X Window System" 可以列出包组内的所有包,包含下列三大类。
MandatoryPackages:必须安装的包
Default Packages:默认安装的包
OptionalPackages:可选择安装的包
yum的命令行选项:
--nogpgcheck:安装时禁止进行gpgcheck,即便仓库中定义为检测。
-y:对安装过程的交互自动回答为“yes”。
-q:静默模式;
--disablerepo=repoidglob:临时禁用此处指定的repo;
--enablerepo=repoidglob:临时启用此处指定的repo;
--noplugins:禁用所有插件;
repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号;比如centos7中的"7"
$basearch:基础平台;无论i386,i486,还是i586都理解为i386
$arch: 平台
$YUM0-$YUM9:
例如:http://mirrors.magedu.com/centos/$releasever/$basearch/os
用光盘做本地仓库:
[root@yph6 media]# mkdir /media/cdrom
[root@yph6 media]# mount -r -t iso9660 /dev/cdrom /media/cdrom
---"-r"为只读,"-t"指明类型,如iso9660;
或者用下面的方法挂载光盘:
[root@yph6 media]#mount -o loop /dev/cdrom /media/cdrom
新建或者添加yum仓库指向:
[cdrom]
name=cdrom
baseurl=file:///media/cdrom
通过光盘做的仓库安装zsh
[root@yph6yum.repos.d]
#yuminstallzsh
................................................
DependenciesResolved
====================================================================================================================
PackageArchVersionRepositorySize
====================================================================================================================
Installing:
zshi6864.3.11-4.el6cdrom2.2M
TransactionSummary
====================================================================================================================
Install1Package(s)
..................................................................
Installed:
zsh.i6860:4.3.11-4.el6
Complete!
创建本地yum仓库:
[root@yph7repo]
#createrepo./-把当前目录创建为本地yum仓库,会读取包的元数据,并创建repodata目录
Spawningworker0with54pkgs
Spawningworker1with54pkgs
Spawningworker2with54pkgs
Spawningworker3with53pkgs
WorkersFinished
SavingPrimaryMetadata
Saving
file
listsMetadata
SavingotherMetadata
GeneratingsqliteDBs
sqliteDBscomplete
[root@yph7repo]
#lsrepodata---出现repodata目录说明仓库创建成功,看看repodata里的文件
1dc98dfa72c7eeabd25aa5288acf222d46270bf25e4c4695fc929ecbb2bf7c1f-primary.sqlite.bz2
64e03fa19b70d01b9dc3618a3967993d9edc2107d1522f78684538f90424c5b6-other.xml.gz
78ca5492b1c3eedb45c50f6d97f63724f1fb2e2ff8d5dc05f1d2c024c786d513-primary.xml.gz
ae734d43ef5877bfb1d913c516f1bf0c62035bd9d15d3eaeebce92960ffcdd40-filelists.xml.gz
baf986873befe7ab4b59e3a01a3fbd6d8fb69c061ba36869e17b769e860302a4-filelists.sqlite.bz2
dfb93d132de8da0c3c622c8fe8d3ddcb18d5e0c7cd8e2a4501b3ab69ce4641d1-other.sqlite.bz2
repomd.xml
repodata目录下有个repomd.xml文件,这里存储同目录下其他文件的特征码,指纹信息
[root@yph7yum.repos.d]
#vimcentos-xen.repo新建仓库指向
[xen4centos]
name=Xen4centos6
baseurl=
file
:
///yum/repo
gpgcheck=0
或者在/etc/repos.d/centos-local.repo里添加新的仓库指向
[root@yph7yum.repos.d]
#yumrepolist------查看刚才创建的仓库是否可用
base|3.6kB00:00:00
Notusingdownloadedrepomd.xmlbecauseitisolderthanwhatwehave:
Current:WedAug505:49:562015
Downloaded:WedApr108:19:442015
epel|4.3kB00:00:00
extra|3.4kB00:00:00
xen4centos|2.9kB00:00:00
xen4centos
/primary_db
|134kB00:00:00
Loadingmirrorspeedsfromcachedhostfile
源标识源名称状态
baseBaseRepo172.16.0.16,575
epelFedoraEPELforEL6x86648,508
extra
/7/x86_64
CentOS7x86_64extras277
xen4centosXen4centos6215
repolist:15,575
[root@yph7yum.repos.d]
#yuminstallxen------利用本地仓库安装xen程序,本地仓库创建完成
程序包编译安装:
源代码编译安装过程.
源代码-->预处理 -->编译(gcc)-->汇编(需要汇编器) -->链接(需要链接器) -->执行
make会自动调动预处理器做预处理,再调动编译器
C代码编译安装三步骤:
第一步: ./configure
(1) 通过选项传递参数,指定启用特性、安装路径等;执行./configure时会参考用户的指定以及Makefile.in文件生成makefile;makefile是编译安装时的必须依赖的引导文件。
(2)检查依赖到的外部环境;
第二步:make
make不是编译器,它是管理器,调用编译器完成编译的,只是个项目管理工具,依赖于mkafile这个文件完成对程序的安装等操作。
第三步:make install
其实这是一些脚本,把二进制放到指定的二进制的安装路径下去,库文件放到指定的库文件路径下去,作用大致就这些。
开发工具:
autoconf: 能生成configure脚本
automake:能生成Makefile.in
建议:安装前查看INSTALL,README
1、官方自建站点:
apache.org (ASF)
mariadb.org
2、代码托管:
SourceForge
Github.com
code.google.com
程序包编译安装的过程:
下载httpd-2.2.29源码包,解压后查看里面的文件
[root@yph6httpd-2.2.29]
#ls
ABOUT_APACHEbuildconfemacs-styleINSTALLLICENSEOssrclib
acinclude.m4CHANGEShttpd.depInstallBin.dspMakefile.
in
READMEsupport
Apache.dswconfig.layouthttpd.dspLAYOUTMakefile.winREADME.platforms
test
buildconfigurehttpd.maklibhttpd.depmodulesREADME-win32.txtVERSIONING
BuildAll.dspconfigure.
in
httpd.speclibhttpd.dspNOTICEROADMAP
BuildBin.dspdocsincludelibhttpd.makNWGNUmakefileserver
$ ./configure--prefix=PREFIX ---------第一步
$ make ----------------第二步
$ make install -------------------第三步
$PREFIX/bin/apachectl start---------------第四步
然后可以查看configure命令的选项:
[root@yph6httpd-2.2.29]# ./configure –help
安装之前先安装好需要用到的工具,即一个包组
[root@yph6httpd-2.2.29]# yum groupinstall "Server Platform Development"
另外gcc也是个必须编译的工具,也要装上。
[root@yph6httpd-2.2.29]# yum install gcc
然后需要选择安装路径,因为我们没有通过rpm包安装,所以不能通过rpm管理器卸载,所以我们只能手动卸载并删除其配置文件,所以要指定并记住安装路径。
[root@yph6httpd-2.2.29]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2 ---第一步
[root@yph6httpd-2.2.29]# make --------------第二步
[root@yph6httpd-2.2.29]# make install -----------第三步
[root@yph6httpd-2.2.29]# cd /usr/local/apache2
[root@yph6apache2]# ls
bin buildcgi-bin error htdocsicons include liblogs man manualmodules
[root@yph6apache2]
#lsbin
abapr-1-configapxsdbmmanageenvvars-stdhtdbmhtpasswdhttxt2dbmrotatelogs
apachectlapu-1-configcheckgidenvvarshtcachecleanhtdigesthttpdlogresolve
[root@yph6apache2]# ./bin/apachectl start-----------第四步
安装后的配置:
(1)导出二进制程序目录至PATH环境变量中;否则只能用绝对路径
新建建文件/etc/profile.d/apache2.sh,写入下行代码
export PATH=/usr/local/apache2/bin:$PATH
(2)导出库文件路径
新建文件/etc/ld.so.conf.d/apache2.conf
把这个路径/usr/local/apache2/lib添加至文件中,即添加新的库文件所在目录至此新建文件中;
让系统重新生成缓存:ldconfig -v,否则只能下次开机才生效
(3)导出头文件
本来include目录应该在/usr/include 中才对,但现在却在当前目录下,可以
可以连接整个目录过去,也可以连接每一个文件过去,可以导出整个目录为一个符号链接,也可以导出所有文件为一个符号链接
基于链接的方式实现:
[root@yph6apache2]# ln -sv include /usr/include/apache2
[root@yph6 apache2]# ln -sv /uar/local/apache2/include /usr/include/apache2
`/usr/include/apache2' -> `/uar/local/apache2/include'
(4)导出帮助手册
编辑/etc/man.config文件
MANPATH /usr/man
MANPATH/usr/share/man
MANPATH/usr/local/man
MANPATH/usr/local/share/man
MANPATH/usr/X11R6/man--------------------前面几行是/etc/man.config本来就有内容
MANPATH/usr/local/apache2/man ----------在MANPATH的行下面添加一行man路径
注意:安装过程的选项:
安装路径的设定:
--prefix=/PATH/TO/SOMEWHERE:指定默认安装位置;默认为/usr/local/
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;
有需要的话可以加上下面的选项:
System types:
OptionalFeatures: 可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
OptionalPackages: 可选包
--with-PACKAGE[=ARG]依赖关系
--without-PACKAGE不允许依赖
附加:
CentOS 6上通过提供开发组件的两个重要包组为:
"Development Tools","ServerPlatform Development",