一、rpm包管理
用法: rpm [选项…]
查询/验证软件包选项:
-a, –all 查询/验证所有软件包
-f, –file 查询/验证文件属于的软件包
-g, –group 查询/验证组中的软件包
-p, –package 查询/验证一个软件包
–pkgid query/verify package(s) with package identifier
–hdrid query/verify package(s) with header identifier
–triggeredby query the package(s) triggered by the package
–whatrequires query/verify the package(s) which require a dependency
–whatprovides 查询/验证提供相关依赖的软件包
–nomanifest 不把非软件包文件作为清单处理
查询选项(用 -q 或 –query):
-c, –configfiles 列出所有配置文件
-d, –docfiles 列出所有程序文档
-L, –licensefiles list all license files
–dump 转储基本文件信息
-l, –list 列出软件包中的文件
–queryformat=QUERYFORMAT 使用这种格式打印信息
-s, –state 显示列出文件的状态
验证选项(用 -V 或 –verify):
–nofiledigest 不验证文件摘要
–nofiles 不验证软件包中文件
–nodeps 不验证包依赖
–noscript 不执行验证脚本
安装/升级/擦除选项:
–allfiles 安装全部文件,包含配置文件,否则配置文件会被跳过。
–allmatches 移除所有符合 <package> 的软件包(如果 <package>
被指定未多个软件包,常常会导致错误出现)
–badreloc 对不可重定位的软件包重新分配文件位置
-e, –erase=<package>+ 清除 (卸载) 软件包
–excludedocs 不安装程序文档
–excludepath=<path> 略过以 <path> 开头的文件
–force –replacepkgs –replacefiles 的缩写
-F, –freshen=<packagefile>+ 如果软件包已经安装,升级软件包
-h, –hash (和 -v 一起使用效果更好),以#显示程序包管理
执行进度;每个#表示2%的进度
–ignorearch 不验证软件包架构
–ignoreos 不验证软件包操作系统
–ignoresize 在安装前不检查磁盘空间
-i, –install 安装软件包
–justdb 更新数据库,但不修改文件系统
–nodeps 不验证软件包依赖
–nofiledigest 不验证文件摘要
–nocontexts 不安装文件的安全上下文
–noorder 不对软件包安装重新排序以满足依赖关系
–noscripts 不执行软件包脚本
–notriggers 不执行本软件包触发的任何脚本
–nocollections 请不要执行任何动作集
–oldpackage 更新到软件包的旧版本(带 –force
自动完成这一功能)
–percent 安装软件包时打印百分比
–prefix=<dir> 如果可重定位,便把软件包重定位到 <dir>
–relocate=<old>=<new> 将文件从 <old> 重定位到 <new>
–replacefiles 忽略软件包之间的冲突的文件
–replacepkgs 如果软件包已经有了,重新安装软件包
–test 不真正安装,只是判断下是否能安装
-U, –upgrade=<packagefile>+ 升级软件包
所有 rpm 模式和可执行文件的通用选项:
-D, –define=“MACRO EXPR” 定义值为 EXPR 的 MACRO
–undefine=MACRO undefine MACRO
-E, –eval=“EXPR” 打印 EXPR 的宏展开
–macros=<FILE:…> 从文件 <FILE:…> 读取宏,不使用默认文件
–nodigest 不校验软件包的摘要
–nosignature 不验证软件包签名
–rcfile=<FILE:…> 从文件 <FILE:…> 读取宏,不使用默认文件
-r, –root=ROOT 使用 ROOT 作为顶级目录 (default: "/")
–dbpath=DIRECTORY 使用 DIRECTORY 目录中的数据库
–querytags 显示已知的查询标签
–showrc 显示最终的 rpmrc 和宏配置
–quiet 提供更少的详细信息输出
-v, –verbose 提供更多的详细信息输出
–version 打印使用的 rpm 版本号
最常用到的选项是:rpm -ivh PACKAGE_FILE
最常见rpm包的地方就是我们的centos安装光盘,这里我挂载一个安装光盘并进入到其中
其中的Packages文件夹中就存放这非常多的rpm包
我们先导入光盘中的公钥,这样可以保证rpm包的合法性
再新建数据库,方便rpm包的安装
安装一个rmp包试试
因为包与包之间存在依赖性,所以必须手动解决依赖性或忽略依赖性,这是rpm工具的弱点,所以有了yum作为rpm的补充,后面会降到yum,这里我们忽略依赖性安装
将刚才安装的包卸载掉,选项为-e
二、yum源管理
yum是对rpm的补充,因为rpm工具无法自动解决安装包的依赖问题,而yum很好的解决了这个问题
yum源的配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
/etc/yum.repos.d/*.repo仓库指向的定义:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
默认为:roundrobin,意为随机挑选;
cost=
默认为1000
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号;
$arch: 平台;
$basearch:基础平台;
$YUM0-$YUM9
国内常用yum源url:
yum的命令行选项:
–nogpgcheck:禁止进行gpg check;
-y: 自动回答为“yes”;
-q:静默模式;
–disablerepo=repoidglob:临时禁用此处指定的repo;
–enablerepo=repoidglob:临时启用此处指定的repo;
–noplugins:禁用所有插件;
yum的子命令:
显示仓库列表:
repolist [all|enabled|disabled]
显示程序包:
list
# yum list [all | glob_exp1] [glob_exp2] […]
# yum list {available|installed|updates} [glob_exp1] […]
安装、重新安装程序包:
install package1 [package2] […]
reinstall package1 [package2] […] (重新安装)
升级、降级程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] (降级)
检查可用升级:
check-update
卸载程序包:
remove | erase package1 [package2] […]
查看程序包information:
info […]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
provides | whatprovides feature1 [feature2] […]
清理本地缓存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
makecache
搜索:
search string1 [string2] […]
以指定的关键字搜索程序包名及summary信息;
查看指定包所依赖的capabilities:
deplist package1 [package2] […]
查看yum事务历史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安装及升级本地程序包:
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
包组管理的相关命令:
* groupinstall group1 [group2] […]
* groupupdate group1 [group2] […]
* grouplist [hidden] [groupwildcard] […]
* groupremove group1 [group2] […]
* groupinfo group1 […]
1、配置本地yum源
进入/etc/yum.repos.d中
将系统自带的网络yum重命名以免使用,用mv重命名
mv CentOS-Base.repo CentOS-Base.repo.bak
将系统光盘挂载到/media/cdrom中
打开CentOS-Media.repo,在baseurl中加入/media/cdrom
enabled=1表示启用
用yum install安装一个没安装过的软件试试
2、配置阿里云yum源
在/etc/yum.repos.d中创建一个repo文件,这里我创建的是aliyun.repo
文件中的内容是
[Centos7-ailiyun.com]
name=Centos-$releasever-$basearch
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch
enabled=1
gpgcheck=0
[updates-ailiyun.com]
name=Centos-$releasever-$basearch-updates
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch
enabled=1
gpgcheck=0
其中变量$releasever获取的是版本号,$basearch获取的是系统架构(如x86_64)
enabled=1表示启用,gpgcheck=0表示不进行校验
创建完之后构建本地缓存数据库,yum makecache
安装一个未安装的软件试试,比如centos7系统中没有ifconfig,我们yum install net-tools.x86_64
这里可以很明显的看到yum会自动帮你解决依赖关系
3、配置epel源
直接在上面的aliyun.repo中添加一个epel仓库
添加完成之后记得构建缓存
三、程序包的编译安装
1、开源源码获取站点
2、编译C源代码
前提:提供开发工具及开发环境
开发工具:make, gcc等
开发环境:开发库,头文件
glibc:标准库
通过“包组”提供开发组件
CentOS 6: "Development Tools", "Server Platform Development",
第一步: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
3、安装并编译httpd-2.4
安装包组提供开发组件
通过wget下载一个httpd-2.4的源码至本地并解压
指定安装位置和配置文件路径
报错因为为没找到APR包,那么我们去官网下一个编译安装
make
make install
安装完APR后我们回到httpd下继续刚才的编译安装
再次报错,缺少APR-util包,按照刚才安装APR包的方法安装
这里需要指明之前APR安装的位置
安装完APR-util之后,再次安装httpd
编译时注意指明apr或者apr-util的安装位置
再次出错缺少pcre-config,还是按照前面的方法安装编译pcre-config
安装完pcre-config后编译httpd还是提示错误,需要安装pcre-devel
这里我们就用yum源安装了
再次编译httpd
这次成功了,继续执行make和make install
完成后打开httpd服务试试
这里需要注意的是,如果网页打不开请关闭selinux.
原创文章,作者:N17_信风,如若转载,请注明出处:http://www.178linux.com/12900
评论列表(1条)
知道写标签的同学都是注重细节的同学。赞,能有代码格式化就更好了