Linux程序包安装和管理方式共计三种:
一、[yum|dnf],通过官网或者其他开源网站提供的文件服务器,本机镜像源等途径进行安装。
二、rpm,通过官网或者其他开源网站通过下载rpm包,在本地继续安装
三、源代码编译,通过官网或者其他开源网站下载源代码自己编译安装
yum|dnf
yum|dnf 安装程序包的机制是通过官网或者其他开源网站提供的文件服务器、本机镜像源等,在这个文件服务器上面存储了众多rpm包,以及包的相关的元数据(放置于特定目录文件:repodata),因此我们只需要让本机能够访问这个文件服务器即可。
一、yum|dnf 安装的优势:在远程的文件服务器上面储存了元数据,元数据记录了,每一个程序报的依赖关系,当我们需要下载某个程序包时,首先文件服务器会自行读取元数据确定相关安装报的依赖关系,将所有这个程序需要依赖的库函数,程序包等等一起按照程序包要求的特定顺序进行安装。这样安装避免了我们自己去确定程序的依赖关系,节约了时间。
1,文件服务器格式(共四类):
(ftp文件服务器) ftp://
(http文件服务器) http://
(ntf文件服务器) ntf://
(本机镜像服务器) file:///
1,现在本机查看是否安装了yum或者dnf工具,rpm -q [yum|dnf]
[root@localhost ~]# rpm -q yum
yum-3.4.3-132.el7.centos.0.1.noarch
可以看到本机已经安装了yum工具。
2,本机yum客服端:
配置文件:
/etc/yum.conf :为所有仓库提供公共配置
/etc/yum.repos.d/*.repo :为仓库的指向提供配置
常用的仓库配置,具体的每个信息请man yum.conf
库指向的定义
[repositoryID]—->这个yum源的名字,必须有
name=Some name for this repository——>对于这个yum详细描述
[baseurl=url://path/to/repository
url://path/to/repository
url://path/to/repository
yum源的指向地址,这是本地yum元的地址
mirrorlist 互联网镜像指向,这个yum必须支持插件功能]必须有
enabled={1|0}是否启动,0代表不启用,1代表启用
gpgcheck={1|0}是否检查这个软件包的来源是否合法,0代表不启用,1代表启用
repo_gpgcheck={1|0}是否检查这个yum源合法,0代表不启用,1代表启用
gpgkey=URL 软件包合法性key的位置,一般都在本机的
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enablegroup={0|1} 检查软件包组是否合法,0代表不启用,1代表启用
failovermethod={roundrobin|priority} yum源的扫描方式,一共两种方式:
1、轮循扫描,随机从一个baseurl地址开始,当这个baseurl链接服务器失败后才链接下一个baseurl地址
2、priority,直接从上到下依次扫描
bandwidth
username :服务器不允许匿名显示需要输入用户名
passwd :服务器上面有密码是需要输入面
显示仓库列表
yum
repolist [all|enabled|disabled]
yum程序包管理工具的功能:
升级/检查/卸载
查看程序包informat
查看指定的特性(可以是某文件)是由那个程序包所提供
provides|whatprovides
清理本地缓存
clean
构建缓存
makecache (没必要做,每次安装都会构建缓存,更新缓存)
搜索
search(模糊匹配机制)
以指定的关键字搜索程序报名及summary信息;
重新安装
reinstall
程序包降级
downgrade
显示某个程序包的依赖关系
deplist
查看yum事务历史
yum history
yum history summary
yum 来安装rpm包,可以解决rpm 的依赖关系
localinstall(可以直接使用insall)
localupdate(直接使用update)
显示包组
grouplist
包组安装:
groupinstall
包组信息
groupinfo
包组移除:
groupremove
如何使用光盘当做本地yum仓库
(1)挂载光盘至某目录。例如/media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) 创建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
yum的命令行选项
–nogpgcheck 禁止执行gpg check
-y 自动回答为“yes”
-q 静默模式:
–disablerepo=repoidglob :临时禁用此处指定的repo
–enablerepo=repoidglob :临时启用此处的repo
yum的repo配置文件中可用的变量
$releasever :当前os发行版的主板号
$arch :平台类型
$basearch :基础平台
$YUM0-YUM9 (基本没用)
自建yum源
createrepo [options]<directory>
这个命令里面的选项基本没用,若有需要自行man
二、rpm
rpm=rpm is packeage manager
rpm的优势:
使用RPM最大的好处在于它提供快速之安装,减少编译安装之侦错困扰。对于最终用户来说,RPM所提供的众多功能使维护系统要比以往容易的多。安装、卸载和升级RPM软件包均只需一条命令即可完成,所有烦琐的细节问题无须您费心。RPM维护一个所有已安装的软件包和文件的数据库,可以让您进行功能强大的软件包查询和验证工作。
在软件包升级过程中,RPM会对配置文件进行特别处理,因此您绝对不会丢失以往的定制信息——这对于直接使用.tar.gz文件是不可能的。对于程序员,RPM可以让您连同软件的源代码打包成源代码和二进制软件包供最终用户使用。这个过程十分简单,整个过程由一个主文件和可能的补丁程序组成。RPM在软件的新版本发布时,这种“原始”源代码,补丁程序和软件生成指令的清晰描述简化了软件包的维护工作。
rpm包的劣势:需要自己解决程序包的依赖关系
rpm包命名的格式:
redis-3.0.2-1.centos7.x64.rpm
name-VERSION-release(打包次数).arch.rpm
VERSION:majior.minor.release(发行版本)
release.arch:rpm包的发行号
relese.os:2.el7.i386.rpm
archetceure:i386,x64(amd64),ppc,noarch
changelog:每次rpm更改后都有一个changelog开记录更改信息
拆包:
redis-3.0.2.tar.gz–>redis-3.0.2-1.centos7.x64.rpm
把一个包当中的n个功能拆开,可以实现按需安装
拆包后分为:主包和支包
主包:name-VERSION-release.arch.rpm
支包:name-function-release.arch.rpm
function:devel,utils(工具程序),libs(库包)
rpm程序包管理器的功能
安装、升级、卸载、查询、检验、数据库维护
rpm 命令:rpm [options] [package_file]
安装:-i,–install
升级:-U,-update,-F,–freshen
卸载:-e,–erase
查询:-q,–query
校验: -v,–verify
数据库维护;–rebuilddb,–initdb
安装:-i,–install
-h:hash ,以50个#来表示安装进度
-v,–verbose:显示安装过程的详细信息
-vv:更详细的过程输出
-vvv:超级详细的过程输出
组合使用:-ivh;-ivvh
–test:不执行真正的安装过程,而仅仅报告依赖关系及冲突信息
–nodeps:忽略依赖关系,副作用是能安装成功,不一定能运行成功;不建议这样安装
–replacepkgs:覆盖安装–重新安装并覆盖原文件,但是修改的配置文件不会还原,因为系统默认是你有意识的修改,删除可以恢复
–force:强制安装
注意:rpm可以自带脚本:
四类:
preinstall:安装过程开始之前运行的脚本,%pre,–nopre
postinstall:安装过程完成之后的脚本,%post,–nopost
preuninstall:卸载过程真正开始执行之前运行的脚本,%preun,–nopreun
postuninstall:卸载过程完成之后运行的脚本,%postun,–nopostun
–noscripts 所有脚本都不执行
–nosingnature 不检查包签名信息,不检查来源合法性
–nodigest不检查包完整性信息,md5信息
升级
rpm {-U|–upgrade}[install-options]PACKAGE_FILE…
-U 升级或者安装
{-F|–freshen}[install-iptions]PACKAGE_FILE…
-F 升级
组合使用-iUh;-iFh
–test,不执行真正的安装或者升级过程,而仅仅报告依赖关系和冲突信息等
–oldpackage :将级;
–force :强制升级;
注意:(1)不要对内核做升级操作;Linux支持多内核并存,因此直接安装新版本内核
(2)如果某原程序包的配置文件安装后层级被修改过,升级是,新版本提供的配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENANME.rpmnew)后提供;
卸载:
{-e|–erase}[options]PACKAGE_NAME….
–nodeps
–test:测试卸载时,dry run模式
-allmathes:如果一个程序包同时安装多个版本,则此选项一次全部卸载之
注意:如果程序包的配置文件被安装后曾被修改,卸载时,此文件通常不会删除,而是被重命名(加后缀.rpmsave)后留存。
查询:
{-q|–query}[select-options][query-options]
[select-options]
PACEAGE_NAME:查询某包或某些包是否安装;
rpm -q PACKAGE_NAME…
-a,–all 查询所有已经安装过的包
-f FILE :查询某些文件是有那个包安装生成;
-f /PATH/TO/SOMEFILE
-pi 查询某些安装的包文件的相关信息,使用-p选项
-pi PACKAGE_FILE
–whatprovides CAPABILITY:查询指定的CAPABILITY由那个程序包提供
–whatrequire CAPANILITY:查询指定的CAPABILITY被那个包所依赖
[query-options]
-p 文件包名 用于执行查询未安装文件包的相关信息,接下面
–changelog:查询rpm包的changelog
-l,–list:程序安装生成的所有文件列表
-i,–info 查询程序包的相关信息
-c,–configfiles 查询程序包安装完成后所有的配置文件
-d, 查询程序安装完成后生成的所有的帮助文件
–provides:列出指定程序包提供的所有的CAPABILITIES
-R,–requires:查询指定程序包所依赖的各种资源
–scrips 查询安装或者卸载时执行的脚本
校验:
{-v|–verify}[select-option][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
包来源合法性验证和完整性验证:
来源合法性验证:由我们信任的制作者提供;依赖制作者的数字签名,签名是作者使用自己的私钥加密程序包的特性码进行的;
所谓内容合法:包未被二次修改;完整性校验成功,依赖于制作者提供的程序特征码
验证方式:安装者用同样的特征码提取算法提取程序包的特征码,与原作者提供的比较
centos 自带 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
数据重建:
rpm 管理器数据库路径:/var/lib/rpm/
查询操作:通过此处数据库进行
获取帮助:
CentOS6 man rpm
CentOS6 man rpmdb
rpm {–initdb|rebuilddb}
–initdb:初始化数据库
–rebuilddb:重新构建数据库
但是构建数据库不一定能让原来程序的数据库完全恢复,所以慎用,实在需要恢复是可以尝试。
三、编译安装
编译安装的优势:是将源代码在本机编译而成的安装好,能够更好地适应本机的硬件,不会存在兼容性的问题。
程序包编译安装
testapp-VERSION-release.src.rpm–>安装后,使用rpmrebuild命令制作成二进制格式的rpm包,而后再安装;
源代码组织格式:
多文件:文件中的代码之间,很可能存在跨文件依赖关系;
源代码–>预处理–>编译器(gcc,c语言编译器)–>汇编–>链接(链接器)–>执行
C、C++:make(项目打包构建管理工具)(configure–>Makefile.in –>makefile)
java:maven
C代码编译安装三步骤:
./configure
(1)通过选项传递参数,指定启动特性,安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile
(2)检查各启动特性依赖的外部环境
make (*)
根据makefile文件,构建应用程序
make install
开发工具:
autoconf:生成configure脚本(有些程序未自带,需要通过此工具生成)
automake:生成Makefile.in
建议安装前查看install,没有install看readme
开源程序源代码的获取:
程序官方自建站点:
apache.org(ASF)
代码托管:
SourceForege
Giphub.com
code.google.com
C/C++ gcc(GNC C Complier)
编译C源代码:
前提:提供开发工具及开发环境
开发工具:make,gcc等
开发环境:开发库,头文件
gilbc:标准库
通过“包组”提供开发组件
Centos 6:"Development Tools","Server platform Development"
第一步:configuer脚本
选项:指定安装位置、指定启用的特性
–help :获取其支持的选项
./configure –prefix=PREFIX 指定默认安装位置
–sysconfdir=/PATH/TO/SOMEWHERE 配置文件安装的位置
System types:
Optional Features:可选特性
–disable-FEATURE
–enable-FEATURE[=ARG]
Optional Packages:可选包
–with-PACKAGE[=ARG]
–without-PACKAGE
安装后的配置:
(1)导出二进制程序目录至PATH环境变量中:
编辑文件/etc/profile.d/NAME.SH
exprot PAHT=/PATH/TO/BIN:$PATH
(2)导出库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在的目录至此文件:
让系统重新生成缓存:
ldconfig [-var]
(3)导出头文件
创建连接目录或者文件
ln -sv
存放位置/usr/include
(4)导出帮助手册
编辑/etc/man.conf
添加一条新的路径MANPATH
原创文章,作者:fighter,如若转载,请注明出处:http://www.178linux.com/26383