软件包的组成
1、二进制程序
/bin,/sbin 系统启动(不允许脱离根)
/usr/bin,/usr/sbin 系统提供基本功能(RHEL6中不允许脱离根)
/usr/local/bin,/usr/local/sbin 三方软件
2、配置文件(单文件,单文件在内部分割为多个片段)
/etc
/etc/httpd/
3、库文件(多个软件共有的功能,被组成一个独立功能模块,只能被其他程序调用执行)
/lib,/usr/lib
路径定义 /etc/ld.so.conf/etc/ld.so.conf.d/*.conf
头文件(对库文件的说明,如何去调用本库) /usr/include
静态库多个功能放入一个库文件中,程序在编译时候把整个库文件包含至程序中。
动态库不同程序调用相同功能,复制动态库副本至自己的内存空间中。
4、帮助文件
手册页 /usr/share/man(/etc/man.config)
文档 /usr/share/doc
软件包管理工具
Debian dpkg(数据库记录安装生成文件的相关信息) deb
RedHat rpm(数据库记录安装生成文件的相关信息) rpm 标准的软件管理格式
rpm格式的软件包命名格式
name-[subname|devel]-version-release.arch.rpm
name 名字
subname 一个软件包为了管理方便,在制作rmp包时候,可以划分为多个功能相对独立的rpm包
devel 被其他软件包以来的库文件和头文件(其他软件依赖于此主包,需要装此devel包)
version {major(质的飞跃).minor(改变一些功能).release(修正bug补丁)}
release{ 软件包制作者发型版本号.[系统平台号]}
arch 二进制程序有格式(编译器自身会在软件编译时对软件在特定平台上运行做优化)
32bit (i386,i486,i586,i686)
64bit (x86_64)
noarch(文本文件,根平台没关系)
前段工具
rpm ---> yum
dpkg ---> aptget
Linux上软件包的安装途径
1、rpm包
rmp命令
yum命令
2、源码包
编辑安装
3、编译好的二进制包压缩包
解压后配置使用
rmp包中包含的内容
要安装的文件
要执行的脚本
pre 安装之前
post 安装完成
preun 卸载之前
postun 卸载之后
软件管理功能
安装 (依赖的包叫做能力)
rpm -i PK1 PK2 PK3 ...
-v 详细信息
-h 进度
--test 测试是否可以安装
--nodeps 忽略依赖关系
--replacepkgs 重新安装
--force 无视冲突
卸载
rpm -e PK_name PK2_name ...
--nodeps 忽略依赖关系(其他软件包依赖于它的时候不让卸载)
升级
rpm -F 无old,则不new
-U 无old,则安装new
-v
-h
--oldpackage 降级
注意:内核不应该升级安装,内核允许多版本并存,可直接安装多个不同版本内核
查询
rpm -qPK_name
-qa 当前系统上所有已经安装的软件包
-qi 查询软件包的相关信息
-ql 列出此rpm包安装之后在系统上生成那些文件
-qf 查询此文件是由哪个软件包生成的
-qc 查看此软件包有哪些配置文件
-qd 查看此软件包有那些文档
-q --scripts 查看软件包脚本
-qp 查看尚未安装rpm的软件信息(支持上述选项)
校验 检查某rpm包安装生成的文件有没有被非法修改过
rpm -V PK_name
S.5....T不改变用. 该表表示出来
S file Size differs
M Mode differs (includes permissions and file type)
5 MD5 sum differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
-K PKG 检查软件包签名(或者发行光盘)
需要公钥/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
--import 导入公钥
-K --nodigest 不检查单项加密相关内容sha1 md5
--nosignature 不检验签名gpg dsa
rpm包签名:提取特征码,附加在软件包上,官方使用自己的私钥加密此特征码
验证签名
用官方的公用解密这段被加密的特征码,得到可靠的官方特征码
自己再使用同样的单项加密提取软件包特征码。并比较和官方特征码是否一致。
rpm数据库 /var/lib/rpm
--initdb 重新初始化丢失的库
--rebuilddb 重建,无论事先是否存在
yum
RPM
rpm databas/var/lib/rpm
yum 自动解决依赖关系
x--->y
x 依赖哪些包
y 安装情况
yum 如何解决依赖关系
repository 仓库 yum源 repodata
rmp 每一个rpm包依赖于其他的那些capacity,是rpm包的制作者指定的
就算没有定义rpm命令也可以识别。
yum 配置文件指定找相应的yum仓库,已经安装多少个,多少为安装
下载未安装包到本地缓存,安装完成
仓库在本地某目录
file:///
仓库在远程服务器
ftp:///
http:///
rpm包
repodata/ 自由包含此目录为其子目录的路径,才可以用作yum源
repomd.xml 保留时间戳校验值
primary.xml.gz 当前yum仓库内每个rpm包名字和彼此间依赖关系
每个rpm包能够安装生成的文件
filelists.xml.gz 所有rpm包包含的安装生成的文件的文件列表
other.xml.gz 额外信息,主要包含rpm包的changelog
comps-rhel5-server-core.xml 包组
yum配置
/etc/yum.conf 主配置文件 全局配置
/etc/yum.repos.d/*.repo 分片配置文件 分段配置
/etc/yum/pluginconf.d/ 插件目录
[repo]
name=My Date Base
baseurl=file:///var/yumrepo/Server
baseurl=ftp://192.168.0.254/pub/Server
baseurl=ftp://USERNAME:[email protected]/pub/Server
enabled={0|1}
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
yum命令
repolist
list {installed|available|updates|all}
clean {expire-cache|packages|headers|metadata|dbcache|all}
/var/cache/yum
元数据
rpm包
grouplist 列出包组
groupinfo "GROUP_NAME" 查看包组信息
info zsh 查看包信息
search KETWORD 模糊查询
whatprovides FILE 某文件是由哪个rpm包生成
installPKG_NAME 安装
removey<--x 卸载
update 升级
groupinstall "NAME" 安装包组
groupremovec "NAME" 卸载包组
localinstall 使用yum源安装;如果不是光盘导读作者公钥或者不检查签名
reinstall 重新安装
check-update 检查有哪些可用于升级的包
yum的选项命令
-y 自动回答为yes
-nogpgcheck
创建本地yum源
1、先安装 yum install createrepo(创建yum源命令)
2、createrepo 路径目录
createrepo
-g支持包组定义
yum 高级用法
软件包源码编译安装
source code --> binary
编译安装需要事先安装“开发环境”
Development Tools
Development Libraries
X Software Development
c/c++
./configure
Makefile.in--->makefile (autoconf automake)
-prefix=制定安装路径
--sysconfdir制定配置文件的安装路径
二进制程序 /usr/local/apache/bin 在PATH中添加此路径
库文件管理 /usr/local/apache/lib 如何让系统识别此库
/lib /usr/lib 系统默认库文件路径
导出库文件路径
第一种方法
/etc/ld.so.conf
第二种方法
1、新建文件/etc/ld.so.conf.d/*.conf
并将当前软件的库文件所在的目录添加至此新文件
2、# ldconfig [-v] 通知系统重新读取库
/etc/ld.so.cache并保存至缓存中
头文件管理
/usr/include 系统默认头文件目录
/usr/local/apache/include 如何让系统识别头文件
# ln -s /usr/local/apache/include /usr/include/apache
或者使用cp 也可以
手册页文件
/etc/man.config
/usr/local/apache/man
MANPATH /usr/local/apache/man
如果只是临时使用一次
man -M /usr/local/apache/man httpd
注意:一般情况下都要导出库和头文件
make-->makefile
make install
大多数源程序都会自带文件 INSTALL README
perl
perl Makefile.PL
make
make install
本文转自 ftmoonfans 51CTO博客,原文链接:http://blog.51cto.com/soulboy/1265966