首页 > 代码库 > 7、yum 学习笔记

7、yum 学习笔记

Linux的程序包管理:

软件包的组成部分:

二进制程序 /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

lib, /usr/lib, /lib64, /usr/lib64, /usr/local/lib, /usr/local/lib64

/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

配置文件 /etc

帮助文件 man文件, info文件, README, INSTALL, ChangeLog


man COMMAND

        到某路径下查找与命令名同名的通常以.gz结尾的压缩文件的名字

        /usr/share/man/


ldd命令:

查看应用所依赖的共享库

ldd [options] FILE...


rpm包的使用:

rpm包命名格式:

源程序:name-version.tar.{gz|bz2|xz}

version: major.minor.release


rpm包:name-version-release.arch.rpm

release:通常包含rpm的制作发行号,还包含适用的OS

bash-4.3.2-2.el6.x86_64.rpm


来源合法性验正:

源程序:通过md5或sha1校验码验正;

rpm包:发行商提供的合法性是可信的

验正包完整性:校验码

验正来源合法:公钥



获取rpm包的途径:

1、发行商的光盘或站点服务器

以CentOS为例: 

    http://mirrors.163.com

    http://mirrors.sohu.com

2、http://rpmfind.net

3、http://rpm.pbone.net



rpm包管理:安装

# rpm -ivh [install-options] /path/to/rpm_package 安装软件包,显示安装进度

[install-options]

--test 仅测试,不真正执行安装过程

--nodeps 忽略依赖关系

--replacepkgs 重新安装

原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件



rpm包管理:卸载

#rpm -e [install-options] package_name 卸载软件包

[install-options]

--nodeps 忽略依赖关系



rpm包管理:查询


#rpm -qa 查询所有已经安装的包

#rpm -q package_name 查询某单个包是否安装

#rpm -qi package_name 查询包的描述信息

#rpm -ql package_name 查询包安装之后在当前系统生成文件列表

#rpm -qd package_name 查询包安装后生成的帮助文档

#rpm -qc package_name 查询包安装后生成的配置文件

#rpm -qf /path/to/somefile 查询某文件是哪个包安装生成的

#rpm -q --scripts package_name 查询包相关的脚本

脚本有四类:

preinstall 安装前脚本

postinstall 安装后脚本

preuninstall         卸载前脚本

postuninstall         卸载后脚本


查询尚未安装的rpm包文件的相关信息:

#rpm -pqi /path/to/package_file 查询包的描述信息

#rpm -pql /path/to/package_file 查询包安装之后在当前系统生成文件列表

#rpm -pqd /path/to/package_file 查询包安装后生成的帮助文档

#rpm -pqc /path/to/package_file 查询包安装后生成的配置文件



rpm包之升级:


#rpm -Uvh [install-options] /path/to/package_file 升级或安装

#rpm -Fvh [install-options] /path/to/package_file 升级

[install-options]

--nodeps 忽略依赖关系

--force 强行安装



rpm包管理:检查包安装后生成的文件是否被修改过;

#rpm -V package_name


       S file Size differs

       M Mode differs (includes permissions and file type)

       5 digest (formerly MD5 sum) differs

       D Device major/minor number mismatch

       L readLink(2) path mismatch

       U User ownership differs

       G Group ownership differs

       T mTime differs

       P caPabilities differ



rpm包管理:检验来源合法性和软件包完整性

包完整性:通过单向加密机制(md5|sha1)

来源合法性:通过公钥加密机制(RSA)


导入制作者的公钥,CentOS发行版的公钥在iso文件中; 

导入命令:rpm --import /path/to/gpg-key-file


#pm -K --nosignature /path/to/package_file 只检查完整性,不检查来源合法性         #pm -K --nodigest /path/to/package_file 不检查完整性,只检查来源合法性

#pm -K /path/to/package_file 既检查完整性,又检查来源合法性


rpm包管理:数据库重建

数据库:/var/lib/rpm/


#rpm --initdb 初始化,如果事先不存在一个数据库,则新建之;

#rpm --rebuilddb 重建,直接重建数据库,会覆盖原有的库;



yum客户端:

1、配置文件:指定各可用的yum仓库;

2、缓存元数据:yum会到各可用yum仓库获取元数据,并缓存至本地; 

3、分析元数据:根据具体操作请求完成元数据分析, 可能包括检查依赖关系、文件列表等信息;

4、执行具体操作:


客户端配置文件指定对应服务器访问方式:

ftp   ftp://server/path/to/repo

http  http://server/path/to/repo

nfs   nfs://server/nfs_path

file  file:///path/to/repository


要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中:

/etc/yum.conf

/etc/yum.repos.d/*.repo


配置文件格式:由两段组成,类似windows的ini配置文件

[main] :主配置段

[repo] :仓库配置段


配置repo:

[repo_ID]

name=String

baseurl=仓库的访问路径

enabled={1|0}

gpgcheck={1|0}

gpgkey=公钥文件(可以在本地,也可是服务器端路径)

cost=定义此仓库开销,默认为1000


[base]

name=CentOS 6.5 X86_64 relase 

baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/

enabled=1

gpgcheck=1

gpgkey=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/RPM-GPG-KEY-CentOS-6



yum的各命令:

# yum repolist 列出所有可用yum repo

# yum clean all 清理缓存


# yum list [all|installed|available]         列出[所有的安装包|已安装包|可安装包]

# yum info package_name 列出包的描述信息

# yum whatprovides|provides /path/to/somefile 查询某文件是由哪个包安装生成的 


# yum install package_name 安装指定的程序包

# yum reinstall package_name 重新安装指定的程序包

# yum erase package_name 卸载指定的程序包

                                           

# yum check-update 检查可升级的包

# yum update package_name 升级指定的程序包

# yum downgrade package_name 降级指定的程序包

                                           

# yum grouplist 列出所有包组

# yum groupinfo "group_name" 显示包组信息

# yum groupinstall "group_name" 安装指定的包组

# yum groupremove "group_name" 卸载指定的包组


如果系统为CentOS 5,常用的开发包组为“Development Tools”和“Development Libraries”

如果系统为CentOS 6,常用的开发包组为“Development Tools”和“Server Platform Development”


安装本地包:

# yum install /path/to/package_file

手动禁止检查来源及完整性:--nogpgcheck

# yum --nogpgcheck install /tmp/zsh-2.3.1-2.el6.x86_64.rpm 



练习:安装相关的包组,确保如下命令可执行

# gcc --version

gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)

Copyright (C) 2010 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


#yum -y groupinstall "Development tools" "Server Platform Development"



yum repository: 文件服务器

repodata/:

repomd.xml: 


测试实现yum repository的配置:

1、准备文件服务器;使用httpd为例,请事先确保已经安装httpd程序包;

2、在/var/www/html目录,使用一个目录来保存准备制作成为yum仓库的所有rpm包;

# cd /var/www/html

# lftp 172.16.0.1/pub/Sources/6.x86_64

# lftp: > mirror openstack

# bye

3、创建yum仓库

# rm -rf /var/www/html/openstack/repodata

# createrepo /var/www/html/openstack

4、启动httpd服务

# service httpd start

5、配置使用自建的yum仓库

[openstack]

name=Openstack Repository

baseurl=http://172.16.100.7/openstack/

enabled=1

gpgcheck=0

6、配置好epel的yum源

7、测试使用

# yum install openstack-keystone



程序包管理之编译安装:


源程序:

项目工程:把代码分散于多个源代码文件

GNU/make


autoconf: configure脚本 

检查编译环境是否编译需求,并定义当前程序编译时启用哪个特性或功能,以及安装路径的定义等等;

结果:会根据Makefile.in文件生成makefile文件

automake: Makefile.in文件

用于结合configure脚本生成makefile文件

makefile文件是make命令的配置文件



编译安装的步骤:

1、拿到源代码,并解压:

# tar xf package-version.tar.{gz|bz2|xz}

注意:展开后的目录名通常为package-version

2、切换至源码目录中

# cd package-version

3、执行configure脚本

# ./configure

4、编译

# make

5、安装

# make install



configure脚本的通用功能:

我们需要定义的配置:

1、指定安装路径:

--prefix=/usr/local/package_name

--sysconfdir=/etc/package_name

2、指定启用/禁用的特性:

--enable-feature: 例如--enable-fpm

--disable-feature: 例如 --disable-socket

3、指定所依赖功能、程序或文件

--with-function:启用某功能

--without-function:禁用某功能


不同的程序,其configure脚本功能不同,要获取帮助:

./configure --help


练习:

1、编译安装nginx, 并启动之;

2、编译安装axel,并试用之;

3、编译安装httpd,并启动之;



/usr/local/apache/bin


二进制程序:

# vim /etc/profile.d/apache.sh

PATH=/usr/local/apache/bin:/usr/local/apache/sbin:$PATH

export PATH


头文件输出给系统:

# ln -sv /usr/local/apache/include /usr/include/httpd


库文件输出:

# vim /etc/ld.so.conf.d/httpd.conf

/usr/local/apache/lib


让系统重新生成库文件路径缓存

# ldconfig



导出man文件:

# vim /etc/man.config

MANPATH /usr/local/apache/man


本文出自 “开源殿堂” 博客,请务必保留此出处http://kaiyuandiantang.blog.51cto.com/10699754/1942716

7、yum 学习笔记