- rpm包管理器
- yum工具使用
- 构建私有仓库
- 源码包编译安装
程序包管理器:RPM-redhat package manager, c语言编写。将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序的安装、升级、卸载和查询等管理操作;
- rpm包命名格式:以rpm结尾
name-version-release.arch.rpm
version:major.minor.release
release:rpm包发行号
arch:架构:x64,i386,i686,noarch -
获取程序包的方法:
1.系统发行的光盘ISO镜像、镜像站点、系统发行官方网站
2.项目的官方站点,如Apache下的众多项目
3.第三方组织:epel...
4.下载源码包自己编译 -
rpm命令使用:
- 安装:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
通用选项:
-v: 详细信息
-vv:更详细信息
安装选项:
-h: hash mask显示进度条,,每个#表示2%进度
--test:仅测试安装,检查报告是否有冲突
--nodeps:忽略依赖关系
--replacepkgs:重新安装
--force:强制安装
--nosignture:不检查包签名信息,不检查来源合法性
--nodigest:不检查包完整性信息 - 卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
选项:
--allmatches:卸载所有匹配指定名称的程序包的各版本;
--nodeps:忽略依赖关系
--test:测试卸载模式 - 升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-U:升级或者安装
-F:仅升级
选项:
--oldpackage:降级
--force:强制更新 - 查询:
rpm {-q|--query} [select-options] [query-options]
[select-options]:
PACKAGE_NAME:查询指定已安装的程序包
-a.--all:查看所有已安装的程序
-f,--file FILE_NAME:查询文件是由那个程序提供
-p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
[query-options]:
--changelog:查询rpm包的changlog;
-l, --list:程序安装生成的所有文件列表;
-i, --info:程序包相关的信息,版本号、大小、所属的包组,等;
-c, --configfiles:查询指定的程序包提供的配置文件;
-d, --docfiles:查询指定的程序包提供的文档;
--provides:列出指定的程序包提供的所有的CAPABILITY;
-R, --requires:查询指定的程序包的依赖关系;
--scripts:查看程序包自带的脚本片断; - 校验:
rpm {-V|--verify} [select-options] [verify-options]
检查包来源是否安全:来源合法性与完整性
获取并导入信任的包制作者的公钥:发行商的提供的包附带在光盘内
对于CentOS发行版来说:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
验正:
(1) 安装此组织签名的程序时,会自动执行验正;
(2) 手动验正:rpm -K PACKAGE_FILE
- 安装:
- yum工具能够自动解决依赖关系,底层的实现还是依赖于rpm,要使用yum安装需要先配置file.repo结尾的仓库配置文件,存储了众多rpm包,以及包的相关的元数据文件(repodata)
其他版本:
yum:rhel系列系统上rpm包管理器的前端工具;
apt-get (apt-cache):deb包管理器的前端工具;
zypper:suse的rpm管理器前端工具;
dnf:Fedora 22+系统上rpm包管理器的前端工具;- yum配置文件:
/etc/yum.conf:主配置文件为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向自定义配置 - 配置文件格式:
[repositoryID] #仓库名称
name=Some name for this repository#仓库描述信息
baseurl=url://path/to/repository/ #可以多个,指向源的有效路径,可以是:ftp://、http://、nfs://、file:///
enabled={1|0} 是否启用 1启用 ,去掉默认启动
gpgcheck={1|0} 1 检查其来源合法、完整
gpgkey=URL 密钥文件[docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg 文件中可用的变量: $releasever: 当前OS的发行版的主版本号; 6 7 $arch: 平台架构; $basearch:基础平台;
- yum配置文件:
-
构建私有仓库
createrepo-0.9.9-28.el7.noarch ,创建仓库元数据repodata 用法:createrepo [options] <directory> 选项: -o --outputdir <url> 指定元数据输出位置 -v:详细信息 -q:静默模式 -g ,--groupfile <groupfile>#指定本地软件仓库的组划分 ,组文件和包需放在一起 # createrepo -g comps.xml ./
1.创建元数据
[root@xt data]# ls rpm/ crmsh-3.0.0-6.2.noarch.rpm ldirectord-3.9.6-0rc1.1.2.x86_64.rpm repodata [root@xt data]# man createrepo [root@xt data]# createrepo -v ./rpm/ -o ./ Spawning worker 0 with 1 pkgs Spawning worker 1 with 1 pkgs Spawning worker 2 with 0 pkgs Spawning worker 3 with 0 pkgs Worker 0: reading crmsh-3.0.0-6.2.noarch.rpm Worker 1: reading ldirectord-3.9.6-0rc1.1.2.x86_64.rpm Workers Finished Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Starting other db creation: Thu Jan 10 14:59:06 2019 Ending other db creation: Thu Jan 10 14:59:06 2019 Starting filelists db creation: Thu Jan 10 14:59:06 2019 Ending filelists db creation: Thu Jan 10 14:59:06 2019 Starting primary db creation: Thu Jan 10 14:59:06 2019 Ending primary db creation: Thu Jan 10 14:59:06 2019 Sqlite DBs complete [root@xt data]# ls repodata rpm
2.配置yum源文件
baseurl需要指定到repodata目录即可
-
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-distribution-syn‐ chronization> [package2] [...] * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ] * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] * load-transaction [txfile] * updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all | check-running- kernel] * fssnapshot [summary | list | have-space | create | delete] * fs [filters | refilter | refilter-cleanup | du] * check * help [command]
- 命令选项:
--nogpgcheck:禁止进行gpg check;
-y:自动回答为“yes”;
-q:静默模式;
--disablerepo=repoid glob:临时禁用此处指定的repo;
--enablerepo=repoid glob:临时启用此处指定的repo; - 清空本地缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] -
构建缓存
yum makecache fast - 显示仓库列表:
yum repolist [all|enabled|disabled] - 显示程序包
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...] - 安装|重新安装:
yum {install | reinstall} package1 [package2] [...] -
拆卸
yum remove | erase package1 [package2] [...]
注:卸载也会把依赖的包删除,需要看清楚,否则可能删除与系统相关的包 - 升级
update [package1] [package2] [...]
downgrade package1 [package2] [...] (降级) - 查看程序包信息
yum info [...] - 搜索:以关键字符搜索
yum search string1 [string2] [...] - 查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides file[root@xt ~]# yum provides "*/gdisk" Loaded plugins: fastestmirror Repository base is listed more than once in the configuration Loading mirror speeds from cached hostfile base: mirrors.aliyun.com extras: mirrors.tuna.tsinghua.edu.cn updates: mirrors.163.com epel/7/x86_64/filelists | 10 MB 00:00:01 gdisk-0.8.10-2.el7.x86_64 : An fdisk-like partitioning tool for GPT disks Repo : base Matched from: Filename : /usr/sbin/gdisk gdisk-0.8.10-2.el7.x86_64 : An fdisk-like partitioning tool for GPT disks Repo : @base Matched from: Filename : /usr/sbin/gdisk
- 包组相关命令管理:7+groups包含所有子命令
yum groups install group1 [group2] [...]
yum info group1 [group2] [...]
yum list [groupwildcard] [...]
yum remove group1 [group2] [...]
yum summary :快速查看有哪些包组可用或已安装
- 命令选项:
- 源码包编译安装
有时候别人做好的包不一定满足需求,需要定制某些功能,可以下载程序的源代码自己编译符合需求的程序。- 开源代码的获取:
官方站点:apache.org 、 https://www.kernel.org/
代码托管:SourceForge、Github.com、code.google.com
比如从ntfs-3g下载源码包:里面包含一切需要的文件
安装编译前查看INSTALL,README,文件里描述了安装步骤及功能详细说明 - 通常C代码编译安装三步骤:
./configure: (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile; (2) 检查依赖到的外部环境; make [-j #]:根据makefile文件编译,构建应用程序,启用cpu多线程任务 make install:安装
[root@xt ntfs-3g_ntfsprogs-2017.3.23]# ./configure --prefix=/root/data #指定默认安装位置,默认为/usr/local/ checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether to enable maintainer-specific portions of Makefiles... no checking for style of include used by make... GNU checking for gcc... no #gcc等开发工具没有,需要先安装,通常提供Development Tools即可(需要看安装版本) checking for cc... no checking for cl.exe... no configure: error: in `/root/data/ntfs-3g_ntfsprogs-2017.3.23': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details ============================= yum groups install Development\ Tools ============================= ./configure --prefix=/root/data重新检查 .................... /usr/bin/rm: cannot remove 'libtoolT': No such file or directory#个别警告或者错误可以忽略 You can type now 'make' to build ntfs-3g.#进行下一步操作编译 ============================= # make -j 4 ...................... libtool: link: gcc -DFUSE_USE_VERSION=26 -I../include/fuse-lite -I../include/ntfs-3g -DPLUGIN_DIR=\"/root/data/lib/ ntfs-3g\" -g -O2 -Wall -o .libs/lowntfs-3g lowntfs_3g-lowntfs-3g.o lowntfs_3g-ntfs-3g_common.o -ldl ../libfuse-lite/.libs/libfuse-lite.a -lpthread ../libntfs-3g/.libs/libntfs-3g.so -Wl,-rpath -Wl,/root/data/libmake[2]: Leaving directory `/root/data/ntfs-3g_ntfsprogs-2017.3.23/src' make[2]: Entering directory `/root/data/ntfs-3g_ntfsprogs-2017.3.23' make[2]: Leaving directory `/root/data/ntfs-3g_ntfsprogs-2017.3.23' make[1]: Leaving directory `/root/data/ntfs-3g_ntfsprogs-2017.3.23' =============================编译完成即可安装 make install [root@xt data]# ls bin include lib sbin share
- 安装完后的文件:
- 安装后配置一些文件便于使用
(1) 导出二进制程序目录至PATH环境变量中;不导出执行命令需要用绝对路径! 编辑文件/etc/profile.d/NAME.sh export PATH=/PATH/TO/BIN:/root/data/ntfs-3g (2) 导出库文件路径 编辑/etc/ld.so.conf.d/ntfs-3g.conf, 添加/root/data/ntfs-3g/lib 到文件中; 让系统重新生成缓存: ldconfig [-v] (3) 导出头文件 基于链接的方式实现:一般用于二进制包名称比较长 ln -sv (4) 导出帮助手册 编辑/etc/man_db.config文件,添加一个MANPATH #MANPATH /root/data/ntfs-3g/share/man
- 开源代码的获取:
- 当某个程序中的某个文件丢失或者误删,重装程序带来不便,有没有多余备份
rpm2cpio - Extract cpio archive from RPM Package Manager (RPM) package.
[root@xt rpm]# rpm2cpio ldirectord-3.9.6-0rc1.1.2.x86_64.rpm | cpio -id #注意展开的目录会覆盖原有的目录
382 blocks
[root@xt rpm]# ls
crmsh-3.0.0-6.2.noarch.rpm etc ldirectord-3.9.6-0rc1.1.2.x86_64.rpm repodata test usr
[root@xt rpm]# ls etc/
ha.d/ logrotate.d/
[root@xt rpm]# ls etc/ha.d/resource.d/ldirectord
crmsh-3.0.0-6.2.noarch.rpm ldirectord-3.9.6-0rc1.1.2.x86_64.rpm test/
etc/ repodata/ usr/
转载于:https://blog.51cto.com/12580678/2341013