Linux教程:rpm包管理器,yum工具,编译安装从入门到精通

示例:
#rpm -ivh --nodeps php-fpm-5.4.16-23.el7_0.3.x86_64.rpm
解释:忽略依赖关系安装软件php-fpm
#rpm -ivh --replacepkgs zsh-5.0.2-7.el7.x86.64.rpm
解释:重新安装一次软件zsh
#rpm -ivh --replacepkgs --nodigest --nosignature zsh-5.0.2-7.el7.x86.64.rpm
解释:digest即完整性,signature即来源合法性,表示安装时不检查zsh安装包的完整性和来源合法性
(2)升级:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE
rpm {-F|--freshen} [install-options] PACKAGE_FILE
 upgrade:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”
 freshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作
rpm -Uvh PACKAGE_FILE
rpm -Fvh PACKAGE_FILE
 --oldpackage:降级
 --force:强行升级
注意:
(1)不要对内核做升级操作,Linux支持多内核版本并存,因此直接安装新版本内核即可
(2)如果原程序包的配置文件安装后曾被修改,升级时新版本提供的同一个配置文件并不会直接覆盖老版本的配置文件,而是把新版本的文件重命名(FILENAME.rpmnew)后保留
(3)查询:
rpm {-q|--query} [select-options] [query-options]
[select-options]
 -q:查询包
 -a:所有包
 -f:查看指定的文件由哪个程序包安装生成
 -p /PATH/TO/PACKAGE_FILE:针对尚未安装的程序包文件查询其安装文件信息
 --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
 --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
[query-options]
 --changelog:查询rpm包的更新日志
 -c:查询程序的配置文件
 -d:查询程序的文档
 -i:information
 -L:列出许可证信息
 -l:查看指定的程序包安装后生成的所有文件
 --scripts:程序包自带的脚本片段
 -R:查询指定的程序包所依赖的CAPABILITY
 --provides:列出指定程序包所提供的CAPABILITY
用法小结:
(1)-qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE
(2)-qpi PACKAGE_FILE,-qpl PACKAGE_FILE
(3)-qa
示例:
#rpm -qa | grep "php"
解释:查询所有rpm包,并找出“php”开头的软件包
#rpm -qf /etc/issue
解释:查询/etc/issue文件是由哪个程序包安装生成
#rpm -q --whatrequires /bin/cat
解释:查询/bin/cat被哪些程序包依赖
#rpm -q --whatprovides /bin/cat
解释:查询/bin/cat是由哪个包所提供
#rpm -q --changelog zsh
解释:查询zsh的安装更新日志
#rpm -q -c zsh
解释:查询zsh包含的配置文件
#rpm -q --conflicts zsh
解释:列出zsh包和哪些文件会发生冲突
#rpm -q -d zsh
解释:列出zsh包下的所有的手册文档
#rpm -qi zsh
解释:列出包的相关简要信息,包含名称,版本和描述信息
#rpm -ql zsh
解释:列出zsh安装后生成的所有文件的列表
#rpm -q --scripts zsh
解释:列出所有程序包含的脚本
#rpm -q -R zsh
解释:列出zsh程序包所依赖的CAPABILITY
#rpm -ql -p php-common-5.4.16-23.el7_0.3.x86_64.rpm
解释:如果程序php-common没有安装,那么使用-p可以查询其安装后可以生成的文件的信息
(4)卸载:
rpm {e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME
示例:
#rpm -e zsh
解释:卸载zsh
(5)校验:
rpm {-V|--verify} [select-options] [verify-options]
校验信息含义:
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly 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
P caPabilities differ
示例:
#rpm -V zsh
解释:校验zsh哪些地方有发生改变。
包来源合法性验正及完整性验正:
 完整性验正:SHA256
 来源合法性验正:RSA
公钥加密:
 对称加密:加密,解密使用同一个密钥
 非对称加密:密钥是成对的
 public key:公钥,公开所有人
 secret key:私钥,不能公开
导入所需要的公钥:
CentOS 7发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7
#rpm --import RPM-GPG-KEY-CentOS-7
(6)数据库重建:
rpm {--initdb|--rebuilddb}
 initdb:初始化,如果事先不存在数据库,则新建之;否则,不执行任何操作
 rebuilddb:重建,无论当前存在与否,直接重新创建数据库
总结:
以上这些命令就是RPM包管理器的所有基础的管理功能,后面的所有服务的配置过程,首先都需要创建用户并安装程序包,这是两个经常用到的操作,其中安装程序包部分比重会更大,所以这部分的知识大家一定要做到熟练运用。
Linux程序包管理之--yum
rpm是Linux的一种软件包名称,以.rpm结尾,安装的时候语法为:rpm -ivh,rpm报道安装有一个很大的缺点就是文件的关联性太大,有时候装一个软件要安装很多其他的软件包,很麻烦,所以就有了yum前端管理工具的诞生,它可以彻底解决这个软件依赖的关联性问题,很方便,只要配置两个文件即可安装。简单的说,rpm只能安装已经下载到本地机器上的rpm包,yum能在线下载并安装rpm包,能更新系统,并且还能自动处理包与包之间的依赖问题,这是yum前端管理工具解决的重要问题。
yum是rpm软件包管理器的前端管理工具。yum是一个在Fedora和RedHat以及CentOS的shell前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐地一次次下载、安装。

在网络中会有一些文件服务器,在服务器上会有一块存储空间,用来存放用户所需的所有rpm包文件,然后这个文件服务系统会通过一个文件共享服务的接口输出到外部主机,这个文件服务我们称之为yum仓库。我们一般用户所使用的是Linux主机,本身支持rpm包管理器的基本功能,同时还支持yum工具的使用。本地的yum通过一个配置文件决定自己要到网络中哪个服务器去下载哪些软件包,配置文件会告诉我们主机上的yum工具通过哪个地址能找到所需的文件服务器,yum在接收到安装程序的指令后会尝试着通过配置指令去找远端的服务器主机。远程服务器会提供一个自身数据仓库的元数据描述信息,用来大体记录自身信息,这时Linux主机只会将容量较小的元数据下载至本地的缓存cache当中,yum客户端就会分析安装的指令中是否有用户请求安装的包名,如果有话就会像yum仓库尝试读取下载这个包,同时还会通过配置文件去分析软件包之间的依赖关系,会分析得出需要但尚未安装的软件包的名称,并罗列出来,然后再去向yum仓库请求连接下载所需的程序包。下载完成后会将软件包缓存在本地cache当中,在本地会去执行类似rpm的命令操作,安装时会自动先去安装有依赖关系的文件,安装完成后会自动清除缓存中的文件以节约空间,但是元数据不会删除,因为安装包文件在一个系统中很少会多次安装,但是元数据文件会多次的用来对比分析等操作,所以会留下元数据文件。有时候我们的客户端在进行yum命令安装的时候,连接不上网络上的yum仓库服务器,这个时候就需要我们自己定义策略来判断是否使用已过期或者无法判断是否过期的rpm包文件。所以说yum客户端需要连接一个远程的yum仓库,到仓库中下载元数据文件,在本地支持yum完成程序包的安装或者升级操作,如果还需要其他依赖的程序包时,yum还需要启动一个文件服务器的客户端到文件服务器去下载所需要的文件,所以我们说yum是C/S架构,它需要一个文件访问的服务器,完成对软件包的提供和安装管理。
YUM:Yellowdog Udatte Modifier
存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata)
文件服务器:
 ftp://(ftp服务器提供文件服务)
 http://(http服务器提供文件服务)
 nfs://(Linux系统中nfs文件系统提供服务)
 file:///(本地计算机提供文件服务)
yum客户端:
 配置文件:
  /etc/yum.conf:为所有仓库提供公共配置
  /etc/yum.repos.d/*.repo:为仓库的指向提供配置
 仓库指向的定义:
  [repositoryID]
  name=Some name for this repository(仓库功能的完整的描述)
  baseurl=url://path/to/repository/(指向了仓库的访问路径)
  enabled={1|0}(是否启用此仓库,默认为1,启用此仓库)
  gpgcheck={1|0}(程序包安装前校验其完整性和来源合法性)
  gpgkey=URL(指明能访问密钥文件的访问路径)
  enablegroup={1|0}(是否使用基于组来批量管理程序包)
  failovermethod={roundrobin|priority}(轮询|优先级)
   默认为:roundrobin,意为随机挑选
  cost=1000
   默认为1000

示例:
#vim centos-local.repo
[base]
name=Base Repo on 198.18.0.1
baseurl=http://198.18.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/
gpgcheck=0
[epel]
name=Fedora EPEL for EL6 x86_64
baseurl=http://198.18.0.1/frdora-epel/6/x86_64
gpgcheck=0

开源程序源代码的获取路径:
官方自建站点:
  Apache.org(ASF)
  mariadb.org
代码托管站点:
  SourceForge
  Github.com
  code.google.com
工具C/C++:gcc(GNU C Complier)
【A】编译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:默认启用的,我们不想启用,可以使用disable选项
     --enable-FEATURE[=ARG]:默认没有启用,我们把它启用,那么使用的是enable选项
   Optioal Packages:可选包
     --with-PACKAGE[=ARG](依赖于某包)
     --without-PACKAGE(不依赖于某包)
 第二步:make
 第三步:make install
【B】安装后的配置:
(1)导出二进制程序目录至PATH环境变量中,修改PATH环境变量,以能够识别此程序的二进制文件路径
  编辑文件/etc/profile.d/NAME.sh:
   export PATH=/PATH/TO/BIN:$PATH
(2)导出库文件路径:
  编辑/etc/ld.so.conf.d/NAME.conf:
   添加新的库文件所在目录至此文件中,在默认情况下系统搜索文件的路径/lib、/usr/lib;
   想增添额外搜寻路径,在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件
  让系统重新生成缓存:
   ldconfig [-v]
(3)导出头文件,输出给系统:
  默认:/usr/include/
  基于连接的方式实现:
   ln -sv:创建软连接,并且显示创建过程
   eg.#ln -s /usr/local/tengine/include/ /usr/include/tengine
(4)导出帮助手册:
  编辑/etc/man.config文件,添加一个MANPATH:
   #vim /etc/man.config
   MANPATH /usr/local/apache2/man
示例:
#yum install createrepo
解释:可以创建出系统所需的repodata的文件
#yum repolist
解释:会自动获取新的yum源
#yum install xen
解释:安装xen程序包
#gcc --version
解释:查询本机的gcc的版本
yum仓库创建实例:
#!mkdir -p /yum/repo
解释:“!”表示在本地创建一个目录/yum/repo
#lcd /yum/repo
解释:进入到本地的yum目录当中
#mget *.rpm
解释:从网络的yum仓库中获取所有以rpm结尾的文件
#createrepo ./
解释:创建当前目录的repodata
#vim centos-local.repo
[xen4centos]
name=Xen 4 CentOS 6
baseurl=file:///yum/repo/
gpgcheck=0
使用yum安装httpd服务:
#yum groupinstall "Server Platform Development" -y
解释:安装包组“erver Platform Development”,并且安装时自动回答为yes
#cd httpd-2.2.29
解释:进入到httpd的目录
#./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2
解释:程序的安装路径是/usr/local/apache2,配置文件的安装路径是/etc/httpd2
#make
解释:执行编译操作
#make install
解释:执行install复制安装的操作
#cd /usr/local/apache2/
解释:进入到apache2的目录
#ls bin
解释:显示bin目录下的信息
#bin/apachectl start
解释:启动apache服务器
#netstat -tan
解释:查看系统中有哪些监听端口是打开的,其中-t是建立tcp连接,-n表示以数字的方式显示,-a (all)显示所有选项
#apachectl stop
解释:将apache服务器停止

猜你喜欢

转载自www.linuxidc.com/Linux/2018-04/151915.htm