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 列出包的描述信息 # yumwhatprovides|provides /path/to/somefile 查询某文件是由哪个包安装生成的 # yuminstall package_name 安装指定的程序包 # yum reinstall package_name 重新安装指定的程序包 # yumerase package_name 卸载指定的程序包
# yumcheck-update 检查可升级的包 # yumupdate 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |