您的位置:首页 > 产品设计 > 产品经理

rpm软件包管理,YUM以及源码编译安装

2012-06-02 14:53 603 查看
一、初始rpm软件包
1、软件包是由以下几个部分组成的:
1)二进制程序
2)配置文件:
组成方式有三种:单个文件
将主配置文件分割为多个小文件,并放置于某目录中
单个文件,在内部分割为多个段的
3)库文件:
静态库
动态库
4)帮助文件
手册页
文档(一般在/usr/share/doc)
2、应用程序一般存放的位置:
1)二进制程序
/bin/,/sbin/:
/usr/bin,/usr/sbin;
/usr/localbin,/usr/localsbin
2)库文件:
/lib
/usr/lib
/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
3) 配置文件/etc
例:/etc/httpd
4) 帮助文件:
/usr/share/man
/etc/man.config
/usr/share/doc
3、rpm格式与命名
bash-3.1-16.1.i386.rpm
bash 软件包名称
3.1-16.1 版本号
i386 硬件平台
rpm 扩展名

一个软件包为了管理上的方便,在制作成rpm包的时候,可以分多个功能相对独立的rpm包
name-version:主包
name-subname-version:子包
name-devel-version:库文件,头文件

4、Linux软件包的安装途径:
1)rpm
rpm
yum
2)源码
编译
3)编译好的二进制压缩,解压后配置使用

5、rpm 命令:
rpm -ivh 完整软件包名称
-i 安装
-v 显示安装信息
-h 以#号显示进度

(一般常用选项为 rpm -ivh 安装)

--replacepkgs 替换安装
--nodeps 忽略依赖关系
--force 强制安装(主要用在安装旧的软件代替新的软件)
--test 测试安装

rpm -e 软件包名称 卸载软件包

rpm -Uvh 完整软件包名称 无论旧版本软件是否安装,都安装新版本
rpm -Fvh 完整软件包名称 若旧版本软件没有安装,则放弃安装新版本

rpm -qa 查询系统已经安装所有的软件包
rpm -q 软件包名称 查询指定包是否安装
rpm -qa | grep 软件包名称 查询当前系统安装了哪些与软件包名称相关的包
rpm -qi 软件包名称 查询已安装软件包的详细信息
rpm -ql 软件包名称 查询已安装软件包安装到什么地方去了
rpm -qf 文件的绝对路径 查询该文件由哪个包产生
rpm -q --scripts 软件包名称 查询次rpm包内置脚本

rpm -qpi 完整软件包名称 查询未安装软件的详细信息
rpm -qpl 完整软件包名称 查询未安装软件要安装的文件路径
rpm -qc 软件包名称 查询软件生成的配置文件

-V 软件包名称 查询已安装软件的文件是否有修改
-K 完整软件包名 查询未安装软件的签名
-- nodigest 不检验单向加密相关内容
-- nosignature 不检验签名。
事先需要我们导入公钥的,公钥我们可以再官网得到
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

rpm包的数据库:/var/lib/rpm
重建数据库
rpm --initdb 重建丢失的
rpm --rebuilddb 全部重建

二、rpm 解决了我们的编译问题,但是又有个比编辑跟头痛的问题出现了,要解决依赖关系,比如我要装A软件包,他说需要B,安装B又要C,如果都是软件包的话还好,有的可能是软件包产生的文件,这下就哭了,不过还好有yum的出现,解决了这个依赖问题,让我们看看yum怎么使用

1、提要yum就一定要先说下什么是yum源,也就是yum仓库,yum源里有我们需求的rpm包,但是他怎么解决的呢?
首先每个源都有个目录是repodata/ ,只有包含此目录为其子目录的路径才可以做yum源,里面包含的几个文件:
repomd.xml 保留时间戳
primary.xm.gz 当前yum仓库内每一个rpm包的名字及其彼此间的依赖关系;每个rpm包内部包含的文件。
filelist.xml.gz 所有rpm包的文件列表
other.xml.gz 其他信息
2、yum的配置文件:
/etc/yum.conf yum的配置文件,包含一些缓存目录的设置,日志等等。
/etc/yum.repos.d/ 怎么找yum仓库就是通过这文件的
/etc/yum/pluginconf.d/ yum的插件
这里我们主要介绍/etc/yum.repos.d/这目录,在这里以*.repo接尾的文件都是定义的yum的相关信息:
[rhel-debuginfo] yum源的信息
name=Red Hat Enterprise Linux $releasever - $basearch - Debug yum的名字
baseurl=ftp://192.168.0.254/pub/Server yum仓库的位置
enabled=1 是否开启yum,1开启,0 关闭
gpgcheck=1 是否开启效验,1开启,0关闭
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 效验公钥的位置

3、yum常用命令


yum repolist 显示当前系统所有可用yum源
yum list installed 显示已安装过的包
yum list available 显示可安装的包。
yum list updates 显示可升级的包
yum clean all 清除yum缓存
yum grouplist 列出组的信息
yum groupinfo "组名称" 查看组的内容
yum groupinstall "组名称" 安装组,有空格时候加""号
yum groupremove "组名称" 卸载组
yum info 软件包 查看软件包的信息
yum search 软件包 查找软件包

yum install 软件包 安装自动解决依赖关系

yum remove 软件包 卸载软件包并且也卸载依赖关系,不明确依赖关系慎用

yum localinstall rpm软件包 在本地安装rpm软件包,并在yum仓库解决依赖关系
--nogpgcheck 不效验

4、如何制作yum源:
yum install createrepo 首先现在个createrepo的软件包
createrepo dir 用createrepo 加存放rpm包的路径即可

baseurl=file:///tmp/myyum 在yum配置文件里更下下yum源的路径,这里的file:///tmp/myyum = file:// + /tmp/myyum/(rpm路径); file指本地路径

事后清下缓存即可。

三、虽然rpm和yum都很不错但是有的时候还是需要源码安装更适合自己的服务要求。

首先说下压缩的命令

1)gzip:
压缩后以.gz结尾,并且删除源而文件
gzip:压缩
gunzip 解压缩
zcat 不用解压查看压缩后的内容

gzip 1-9 FILE,也已指定压缩级别,默认6
-d 解压缩 = gunzip
zcat FILE

2)bzip2:
压缩后以.bz2结尾
bzip2 压缩,也可以指定级别1-9
-k 保留原文件
bunzip2 解压缩
bzcat 不用解压缩查看压缩内容

另:gzip,bzip2 无法有效压缩目录

3)zip:可以压缩目录,需要先指定压缩名字

zip FILENAME.zip FILE1 FILE2 dir... 压缩
unzip 解压缩
-d 指定解压到哪

4)tar 只归档(打包目录),不压缩

tar -cf FILENAME.tar FILE1 FILE2 .. 归档
-xf FILENAME.tar 展开
-tf FILENAME.tar 不展开查看内容列表
(显示详细信息可以加-v参数,例:-cvf

z: 以gzip 压缩并归档
j: 以bzip2 压缩并归档
例:tar -zcvf FILENAME.tar.gz FILE1 FILE2 用gzip压缩并归档
tar -zxvf FILENAME.tar.gz 展开打包压缩文件
以bzip2压缩,解压缩将z换成j即可

5)源码安装
解压好文件后,进入解压后的目录中依次执行以下命令即可:
./configure 测试环境生成Makefile文件
make 编译
make install 安装

补充:源前提条件linux系统必须先安装gcc
yum -y install *gcc*

./configure --help
--prifix= 指定安装路径
--sysconfdir= 指定配置文件的安装路径
make
make install

(当我们指定路径以后,可能系统会找不到路径所以做以下操作)
PATH=$PATH:/usr/lcoal/apache/bin
导出库文件路径:

/etc/ld.so.conf
1、/etc/ld.so.conf.d/*.conf 并将当前软件的库文件所在目录添加至此文件
2、ldconfig 重新读库 -v 查看过程

头文件:
#ln -s /usr/local/apache/incllude/ /usr/include
手册页:/etc/man.conf:中添加 MAN路径
man -M /usr/local/apache/man httpd 临时

注:本文属于个人学习总结,如有错误欢迎指出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息