vs2017程序包清单签名验证失败_rpm和yum的使用,程序包编译安装以及编译apache过程中出现的问题...

一、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 移除所有符合 的软件包(如果
被指定未多个软件包,常常会导致错误出现)
--badreloc 对不可重定位的软件包重新分配文件位置
-e, --erase=+ 清除 (卸载) 软件包
--excludedocs 不安装程序文档
--excludepath= 略过以 开头的文件
--force --replacepkgs --replacefiles 的缩写
-F, --freshen=+ 如果软件包已经安装,升级软件包
-h, --hash (和 -v 一起使用效果更好),以#显示程序包管理
执行进度;每个#表示2%的进度
--ignorearch 不验证软件包架构
--ignoreos 不验证软件包操作系统
--ignoresize 在安装前不检查磁盘空间
-i, --install 安装软件包
--justdb 更新数据库,但不修改文件系统
--nodeps 不验证软件包依赖
--nofiledigest 不验证文件摘要
--nocontexts 不安装文件的安全上下文
--noorder 不对软件包安装重新排序以满足依赖关系
--noscripts 不执行软件包脚本
--notriggers 不执行本软件包触发的任何脚本
--nocollections 请不要执行任何动作集
--oldpackage 更新到软件包的旧版本(带 --force
自动完成这一功能)
--percent 安装软件包时打印百分比
--prefix=
如果可重定位,便把软件包重定位到
--relocate== 将文件从 重定位到
--replacefiles 忽略软件包之间的冲突的文件
--replacepkgs 如果软件包已经有了,重新安装软件包
--test 不真正安装,只是判断下是否能安装
-U, --upgrade=+ 升级软件包
所有 rpm 模式和可执行文件的通用选项:
-D, --define=“MACRO EXPR” 定义值为 EXPR 的 MACRO
--undefine=MACRO undefine MACRO
-E, --eval=“EXPR” 打印 EXPR 的宏展开
--macros= 从文件 <...> 读取宏,不使用默认文件
--nodigest 不校验软件包的摘要
--nosignature 不验证软件包签名
--rcfile= 从文件 <...> 读取宏,不使用默认文件
-r, --root=ROOT 使用 ROOT 作为顶级目录 (default: "/")
--dbpath=DIRECTORY 使用 DIRECTORY 目录中的数据库
--querytags 显示已知的查询标签
--showrc 显示最终的 rpmrc 和宏配置
--quiet 提供更少的详细信息输出
-v, --verbose 提供更多的详细信息输出
--version 打印使用的 rpm 版本号
最常用到的选项是:rpm -ivh PACKAGE_FILE

最常见rpm包的地方就是我们的centos安装光盘,这里我挂载一个安装光盘并进入到其中

4a478282f3af0224a71548a8f7fa10eb.png

d905b77c0f4bf58d85c4ee9caa4252f5.png

其中的Packages文件夹中就存放这非常多的rpm包

fc52217a736d0b732e4f138c469c8d0b.png

7bde663006c043018c3ff27299403381.png

我们先导入光盘中的公钥,这样可以保证rpm包的合法性

8a3cecd5328fccb61f8d0fe6ceab4ab6.png

再新建数据库,方便rpm包的安装

99294e0a33eb37cf4d2c36066e1341f1.png

安装一个rmp包试试

4266a86c40b8713380611ac8845e34a5.png

因为包与包之间存在依赖性,所以必须手动解决依赖性或忽略依赖性,这是rpm工具的弱点,所以有了yum作为rpm的补充,后面会降到yum,这里我们忽略依赖性安装

db73885effe007db81843eb8596fb540.png

将刚才安装的包卸载掉,选项为-e

eb29f570d01d6829857da976d99d8fb4.png

二、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:

http://mirrors.aliyun.com/

http://mirrors.sohu.com/

http://mirrors.163.com/

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中

bf3b0373788676e61a62205c32a49d08.png

将系统自带的网络yum重命名以免使用,用mv重命名

mv CentOS-Base.repo CentOS-Base.repo.bak

5dab07fd61b836e942940f0334bb7026.png

将系统光盘挂载到/media/cdrom中

f8a83b5162f6a5693f9cc0cbebe4f71f.png

打开CentOS-Media.repo,在baseurl中加入/media/cdrom

f53cbd4567efd72ec97944c1195c81c2.png

enabled=1表示启用

用yum install安装一个没安装过的软件试试

2、配置阿里云yum源

在/etc/yum.repos.d中创建一个repo文件,这里我创建的是aliyun.repo

72d92521ab7c3a7b70ddce9e51d10a94.png

文件中的内容是

c4c24461ea2cb1958a2e7a3a0f8aa9c1.png

[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

5199ed3428a1e09560d709bb6e062fe7.png

安装一个未安装的软件试试,比如centos7系统中没有ifconfig,我们yum install net-tools.x86_64

ed51221e570fe197377a428fb8ab20ff.png

394cd9f12035e86d78ca680d0e3d3b67.png

这里可以很明显的看到yum会自动帮你解决依赖关系

3、配置epel源

直接在上面的aliyun.repo中添加一个epel仓库

53ab1b5b25acdf44464f90af628dba99.png

添加完成之后记得构建缓存

2cf4e26aa1995ded648b079f591820f0.png

三、程序包的编译安装

1、开源源码获取站点

www.Github.com

www.apache.org

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

安装包组提供开发组件

2b6278d1344c7681a75cb72b8f5db864.png

通过wget下载一个httpd-2.4的源码至本地并解压

77a41f43050236f9f141765132148420.png

a80fd7cb20b3f4d7be777100d8fa6f70.png

指定安装位置和配置文件路径

7a77b0ee347ac17554208d2616de3580.png

报错因为为没找到APR包,那么我们去官网下一个编译安装

86ace8ffe5aa958132fae3f7d84a57ed.png

951d72afeb75944d43f59d5a6b305098.png

9d31618d0a290baf8b3c892991a36037.png

43ff436d8ed777fff7e91d9e82aa5727.png

make

69d81cdbd533b0cf1456c703376f577c.png

make install

ddd3c61c45297756af0f38ecb9f9bc2b.png

安装完APR后我们回到httpd下继续刚才的编译安装

1eab55602ebe710e30e4806d61bc0d54.png

584609916e6194c3284d41f7c52eaf08.png

再次报错,缺少APR-util包,按照刚才安装APR包的方法安装

b84c218507cae7116c6e2220f209ec61.png

4aa5c01ab417126ef37c8c1e3d8517c5.png

5825103efb0df9d9fc5a5e0b1c9cdb4b.png

ff9f69733b8c29cf7e538f2e1d39cf3d.png

这里需要指明之前APR安装的位置

838a5a75e53df2f708990c297bcf4993.png

安装完APR-util之后,再次安装httpd

b9223daa6ffb4f9058b8e28307fce555.png

编译时注意指明apr或者apr-util的安装位置

6ec66f6914c4e4b9fa399b4f5b025e80.png

4d62926564cd11764aabd21e932d74bd.png

再次出错缺少pcre-config,还是按照前面的方法安装编译pcre-config

20d42c397fedb0afa85f86ff6097691d.png

5f330588f0bfc0dd9f01f7e7a87e6f3a.png

bd7372b265dde1216878f831c03640d6.png

安装完pcre-config后编译httpd还是提示错误,需要安装pcre-devel

0917c420015ce395d1babf36972c3034.png

这里我们就用yum源安装了

dfa19630d9cd1821ecdb194070d6e60d.png

再次编译httpd

badc38fa7e92778d4bc256a3318016a0.png

cda13db6c35c85d2182cdf752ebad98d.png

3a97484b958219f98ed4d5cf2b8b5ff9.png

这次成功了,继续执行make和make install

838d23187b757b8d42e9f7e1e53353c5.png

7a5b2d31485d78a5e577a082bb034d78.png

完成后打开httpd服务试试

1642038221db3cfee6c2424a3b3e2a85.png

2fb6c633d8194664dc895348e91222fa.png

3e1686d8b0c1efcd7db7e676c0d2ff15.png

这里需要注意的是,如果网页打不开请关闭selinux.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值