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                     移除所有符合 <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:

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中

将系统自带的网络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、开源源码获取站点

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

安装包组提供开发组件

通过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.

时间: 2024-10-17 03:38:33

rpm和yum的使用,程序包编译安装以及编译apache过程中出现的问题的相关文章

程序包管理之源代码编译安装及rpm源码包安装

一.程序源码编译安装步骤 二.程序路径管理 三.简单源码编译安装示例 四.rpm源码包安装 一.程序源码编译安装步骤 --------------------------------------- 1.cd SOURCE_CODE    #cd到程序源码文件夹 --------------------------------------- 2../configure    #检查编译环境,对程序定制编译配置,编译前读一读README,INSTALL #常用配置参数:--prefix=安装路径,-

linux CentOS7 中安装包管理:rpm 、yum及源码包安装使用

一. 安装软件包的三种方法 yum ---python rpm工具 yum工具 源码包 二. rpm包介绍 设置光驱并挂载: [[email protected] ~]# mount /dev/cdrom /mntmount: /dev/sr0 写保护,将以只读方式挂载 [[email protected] ~]# ls /mntEULA    isolinux  repodata                      TRANS.TBL GPL     LiveOS    RPM-GPG-

2018-1-8 5周1次课 rpm、yum、源码包

7.1 安装软件包的三种方法 安装软件包的三种方法: ·rpm工具 ·yum工具 ·源码包 难度:源码包 > rpm工具 > yum工具 7.2 rpm包介绍 ·rpm工具使用 设置光驱并挂载 在虚拟机光盘位置,设置光盘连接后,进入系统中挂载光驱 [[email protected] ~]# df -h 文件系统        容量  已用  可用 已用% 挂载点 /dev/sda3        18G  1.2G   17G    7% / devtmpfs        479M    

liunx命令6 vim编辑、压缩命令、rpm、yum及源码包编译安装

[[email protected] ~]# yum install -y vim-enhanced vim打开文件编辑(有颜色) [[email protected] ~]# vim  !$                   //上一条命令的最后一条参数 [[email protected] ~]# vim +10 !$                //打开文件进入第十行 :set number                                 //显示行号 vim 一般模式

linux下系统软件包管理(rpm、yum、源码包安装)

1. rpm工具rpm全称为Redhat Package Manager,红帽软件包管理工具,设计理念是开放的,不仅仅是在RedHat平台上,在SUSE上也是可以使用的. rpm包名字构成由-和.分成了若干部分,如abrt-cli-2.0.8-15.el6.centos.i686.rpm,abrt-cli是包名,2.0.8-15是版本号,el6指的是redhat企业版6,centos指的是这是在centos上用的,i686指的是平台类型.有些rpm包并没有写具体的平台而是noarch,这代表这个

Linux程序包管理--源码编译的原理和基本方法

Linux中使用rpm格式的程序文件包来安装是比较方便的方法, 但是有一部分程序文件包没有rpm包格式, 这时就需要用户自己手工编译源码包来进行安装. 文本主要讲解源码编译的原理和基本操作过程. 源码包命名方式 name - VERSION . tar . gz 其中: VERSION = major . minor . release major表示主版本号, 经过比较大的改进 minor表示次版本号, 改进比较小 release表示对一些bug进行修复 源码包编译过程 源码包是指经过程序员编

笔记6 压缩工具、安装软件包(rpm、yum、源码包)、shell。

压缩打包 常见的压缩文件 windows:rar.zip.7z Linux:.zip..gz..bz2..xz..tar..gz..tar.bz2..tar.xz gzip压缩工具 它压缩后边直接跟文件名就可以 命令:gzip -d 解压的意思 命令gzip -数字  表示它的压缩级别,1--9,数字越大越严谨,默认保持的是6级别. 命令:file 查看解压缩文件,因为它被解压缩了,是一个二进制文件所以不能用cat来查看它的内容. 命令:zcat  可以查看解压缩文件的内容 命令:gzip -c

ORM之PetaPoco错误--VS中NUGet程序包管理安装PetaPoco

一般在Vs中使用PetaPoco的时候都是使用NuGet程序包管理来安装PetaPoco的,如果你在安装PetaPoco前设置了ConnectionString,那么PetaPoco中的T4模板会自动为你的数据库创建对应的类.PS:这是PetaPoco的优点,但是我个人还是喜欢手动创建类,不知道如何能够屏蔽这项功能. 但是T4模板为你创建类的时候,它自动生成的代码的命名空间是你ConnectionString的Name标签.那么问题来了,如果你的Name标签中的字符串是包含空格的,那么生成的命名

项目问题总结1:Nuget无法安装程序包dll,提示:此程序包已安装

问题描述: 我们在做项目的过程中免不了使用Nuget安装一些其他系统发布的dll,以完成我们的业务代码,但是在使用的过程中遇到一个问题,那就是因某些原因造成引用无效,其表现如下: 导致这种情况发生的原因很多,我现在要说的是其中 一种,那就是引用的dll被删除了,我们需要重新在Nuget里面进行安装,这时问题来了,当我们查找到想要的dll时,显示已经安装,如下图所示: 但是我们在已经安装的包里面进行查找,发现并没有,如下图所示 而且我们在解决方案的项目文件目录中也找不到目标dll,肿么办?明明没有