软件包管理器
1、打包成一文件:二进制程序,库文件,配置文件,帮助文件
2、生成数据库,追踪所安装的每一个文件
软件包管理器的核心功能:
1、制作软件包;
2、安装、卸载、升级、查询、校验;
--------------------------------rpm
rpm命令:
rpm:
数据库: /var/lib/rpm
rpmbuild:SRPM:其提供的软件内容并没有被编译,它提供的是代码源,需要自己通过编译。
安装的时候RPM与SRPM需要注意的问题
1、软件安装的环境必须与打包时的环境需求一致或相当;
2、需要满足软件的依赖属性需求;
3、反安装时需要特别小心,最底层的软件不可先删除,否则可能造成整个系统的问题,
则此时需要的步骤、用SRPM
先将该文件以RPM管理的方式编译,此时SRPM会被编译成为RPM文件;
然后将编译完成的RPM文件安装到Linux系统中
文件格式 文件名格式 直接安装与否 内含程序类型 可否修改参数并编译
RPM XXX.rpm 可 已编译 不可
SRPM XXX.src.rpm 不可 未编译的源代码 可
RPM的优点
1、RPM内含已经编译过的程序与设置文件等数据,可以让用户免除重新编译的困扰
2、RPM在被安装之前,会先检查系统的硬盘容量、操作系统版本,可避免文件被错误安装
3、RPM文件本身提供软件版本信息、依赖属性软件名称、软件用途说明、软件所含文件等信息,以便与了解软件
4、RPM管理的方式使用数据库记录RPM文件的相关参数,便于升级、删除、查询与验证
1、安装(install):
rpm -i /PATH/TO/PACKAGE_FILE
-h:以#显示进度:每个#表示2%
-v:显示详细安装
-vv:显示更详细的过程
rpm -ivh /PATH/TO/PACKAGE_FILE
rpm -vih rp-pppoe-3.5-32.1.i386.rpm
--nodeps:忽略依赖关系
--replacepkgs:重新安装,替换原有安装;
--force:强行安装,可以实现重装或降级;
在没有网络的情况下,想用光盘来安装,那么就需要
挂载光盘,使用: mount /dev/cdrom /media
找出文件的实际路径:find /media -name 'pam-devel*'
测试此软件是否有依赖性:rpm -ivh pam-devel... --text
直接安装:rpm -ivh pam-devel...
卸载光盘:umount /dev/cdrom
2、查询 (query)
rpm -q PACKAGE_NAMEPACKAGE_NAME
rpm -qa:查询已经安装的所有包
rpm -qi PACKAGE_NAME:查询指定包的说明信息;
rpm -ql PACKAGE_NAME:查询指定安装包后生成的文件列表;
rpm -qc PACKAGE_NAME:查新指定包安装的配置文件;
rpm -qd PACKAGE_NAME:查新指定包安装的配置文件;
rpm -q --scripts PACKAGE_NAME:查询指定包中包含的脚本
rpm -qf /PATH/TO/SOMEFILE:查新指定的文件是由哪个rpm包安装生成的
如果某rpm包尚未安装,我们需查询器说明信息、安装以后会生成的文件;
rpm -qpi /PATH/TO/PACKAGE_FILE i软件包的信息
rpm -qpl /PATH/TO/PACKAGE_FILE l软件包的列表
rpm -qa <==已安装软件
rpm -q[licdR] <==已安装的软件
rpm -qf 存在于系统上的某个文件名
rpm -qp[licdR]未安装的某个文件名
3、升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的则升级,否则安装
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的则升级,否则退出
--oldpackage:降级
4、卸载
rpm -e PACKAGE_NAME
--nodeps
找出与pam有关的软件名称,并删除
rpm -qa | grep pam
rpm -e pam
5、校验
rpm -V PACKAGE_NAME检查文件是不是被非法改变过的
6、重建数据库
rpm
--rebuilddb:重建数据库,一定会重新建立;
--initdb:初始化数据库,没有才建立,有就不用建立;
7、检验来源合法性,及软件包完整性;
加密类型:
对称:加密解密使用同一对密钥
公钥:一对儿密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来并公开出去
单向:
/etc/pki/rpm-gpg/
rpm -K /PATH/TO/PACKAGE_FILE
dsa,gpg:验证来源合法性,也即验证签名:可以使用 --nosignature略过此项
sha1,md5:验证软件包完整性;可以使用--nodigest,略过此项
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:导入密钥文件
srpm
RPM安装:SRPM.其提供的软件内容并没有被编译,它提供的是代码源,需要自己通过编译。
二进制格式:
源程序-->编译-->二进制格式
有些特性是编译选定的,如果编译时未选定此特性,将无法使用
rpm包会落后于源码包,甚至落后很多
定制:手动编译安装
编译环境,开发环境
开发库,开发工具,
C,C++:
gcc:GNU C Complier,C
g++:
make:项目管理工具,
makefile:定义了make(gcc,g++)按何种次序去编译这些源程序
automake,-->makefile.in -->makefile
autoconf,-->configure配置当前文件如何编译
make install
编译安装的三步骤:
前提:准备开发环境(编译环境)
安装"Development Tools"和"Development Libraries"
#tar //解压缩
#cd //cd到当前目录
# ./configure脚本
--help
--prefix=/path/to/somewhere指定安装路径
--sysconfdir=/PATH/TO/CONFFILE_PATH指定配置文件路径
功能:1、让用户选定编译特性;2、检查编译环境,
#make
#make install
#tar xf tengine-1.4.2.tar.gz
#cd tegnine-1.4.1
# ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
#/usr/local/tengine/sbin/ngix
解决nginx没法直接运行,先编辑vim /etc/profile 然后加进去PATH=$PATH:/usr/local/tengine/sbin/ngix
然后重读 source /etc/profile或者重新登录
netstat -tnlp可以查看 其为web80端口
可以在浏览器打开相应地址打开相应的网页
编辑网页文件,可以cd /usr/local/tengine/ cd html/ ls 其为index.html
然后vim编辑
编译好软件包以后,如果想将其安装到非默认路径下
1、修改PATH环境变量,以能够识别此程序的二进制文件路径
修改/etc/profile文件
在/etc/profile.d/目录中建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
2、默认情况下,系统搜索库文件的路径/lib,/usr/lib;要增添额外搜寻路径:
在/etc/ld.so.conf.d/目录中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;
#ldconfig:通知系统重新搜寻库文件
-v:显示重新搜寻库的过程
3、头文件:#include 输出给系统
默认:/usr/include
增添头文件搜寻路径,可以使用连接进行;
/usr/local/tengine/include/ /usr/include/
两种方式:
ln -s /usr/local/tengine/include/* /usr/include/或
ln -s /usr/local/tengine/include /usr/include/tengine
4、man文件路径:默认安装在--prefix指定的目录下的man目录;/usr/share/man
1、man -M /PATH/TO/MAN_DIR COMMAND
2、在/etc/man.config中添加一条MANPATH
----------------------------------------------------yum
rpm --> yum yum:rpm能力
解决rpm的依赖关系
yum仓库中的元数据文件:
primary.xml.gz
所有RPM包的列表
依赖关系
每个RPM安装生成的文件列表
filelists.xml.gz
当前仓库内所有RPM包的所有文件列表;
other.xml.gz
额外信息,RPM包的修改日志;
repomd.xml
记录的是上面三个文件的时间戳和校验和;
yum install zsh
comps*xml:RPM包分组信息
如何为yum定义repo文件
[Repo_ID]
name=Description
baseurl=
ftp://
http://
enabled={1|0}允许1 不允许0
gpgcheck={1|0}
gpgkey=路径
yum [options] [command] [package ...]
-y:自动回答yes
--installroot=/some/path:将软件安装在/some/path中而不是默认路径
--nogpgcheck不做检查
list:列表
支持glob
all
available:可用的,仓库中有尚未安装的
installed:已安装的
updates:可用的升级
clean:清理缓存
packages
headers
metadata
dbcache
repolist:显示repo列表及其简要信息
enabled:默认
disabled
install:安装
yum install PACKAGE_NAME
update:升级
update_to:升级为指定版本
yum list updates <==一定要是updates
remove|erase:卸载
info:详细信息
provides| whatprovides:查看指定的文件或特性是由哪个包安装生成的
groupinfo
grouplist
groupinstall
groupremove
groupupdate
光盘创建yum
/media/cdrom/{Sever,VT,Cluster,ClusterStorage}
本文转自 陈延宗 51CTO博客,原文链接:http://blog.51cto.com/407711169/1156530,如需转载请自行联系原作者