标签:linux程序包管理
应用程序 shell
————————
lib call
————
system call
————————
硬件
————————
API:应用编程接口
ABI:应用二进制接口
c/c++程序格式:
源代码:文本格式的程序代码
二进制格式:将文本格式的程序代码通过编译器编译成二进制格式
编译开发环境:编译器,头文件,开发库
java/python程序格式:
源代码:文本格式的程序代码
二进制:将源代码编译成能在其虚拟机(jvm/pvm)运行的格式
开发环境:编译器,开发库
程序包管理器:
源代码——>目标二进制格式——>组织成一个或有限几个"包"文件
完成:安装,卸载,查询,校验
程序包管理器:
debian:dpt,dpkg ".deb"
redhat:rpm ".rpm"
suse:rpm ".rpm"
gentoo:ports
源代码包命令格式:name-version.tar.gz
rpm包命名格式:name-version-release.arch.rpm
如:redis-3.0.2-1.centos7.x64.rpm
拆包:主包和支包
主包:name-version-release.arch.rpm
支包:name-function-version-release.arch.rpm
function:devel,untils,libs
依赖关系:一个程序包的安装卸载可能需要另外几个程序包的支持
前端工具:自动解决依赖关系
yum:rhel系类os上rpm的包管理前端工具
apt-get(apt-cache):deb系类os上包管理前段工具
zypper:suse上的rpm包管理前段工具
dnf:Fedora 22+系统上的rpm包管理前端工具
程序包管理器的功能:
1.程序包的组成清单(独立):文件清单,安装或卸载时运行的脚本
2.数据库(公共):/var/lib/rpm
记录程序包的名称,版本,依赖关系,功能说明,安装生成的各文件的文件 路径及校验信息等
获取程序包的途径:
1.系统发行版本的光盘,官方文件服务器,镜像站点
2.项目官方站点:如:zabbix.org
3.第三方:(a)EPEL
(b)程序包搜索引擎:pkgs.org,rpmfind.net,rpm.pbone.net
4.自己动手,丰衣足食
建议:检查其来源的合法性,程序包的完整性
Centos系统上rpm命令管理程序包:
安装,升级,卸载,查询和校验,数据库维护
rpm命令: rpm [options] [PACKAGE_FILE]
安装:-i
升级:-U,-F
卸载:-e
查询:-q
校验:-V
数据库维护:--buliddb,--initdb
安装:rpm -i [install options] PACKAGE_FILE
-v:显示信息
-vv:更详细的输出
-h:以hash标记输出进度条;每个进度条代表2%的进度
--test:测试安装,检查并报告依赖关系
--nodeps:忽略依赖关系,不建议使用
--replacepkgs:重新安装
--nosignature:不检查包的签名信息,即不检查来源合法性
--nodigest:不检查包的完整性
注意rpm可以自带脚本,共4类
perinstall:安装过程之前运行的脚本 %pre
postinstall:安装完成之后运行的脚本 %post
preuninstall:卸载前运行的脚本 %preun
postuninstall:卸载后运行的脚本 %postun
升级:rpm -Uvh PACKAGE_FILE:升级或安装
rpm -Fvh PACKAGE_FILE:升级
--oldpackage:降级
--force:强制
注意:1.不要对内核做升级;linux支持多内核版本并存,因此直接安装新内核
2.如果某原程序包的配置文件安装后曾被修改,那么升级后新版本的程序提供的同一个配置 文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后 提供
卸载:rpm -e PACKAGE_NAME
--allmatches:卸载所有匹配指定名称的程序包的各版本
--nodeps:忽略依赖关系
--test:测试卸载
查询:rpm -q [selection options] [query-options]
selection options:
PACKAGE_NAME:查询指定的程序包是否已安装及其版本
-a:查询所有已安装过的程序包
-f FILE:查询指定的文件由哪个程序包安装生成
-p PACKAGE_FILE:查询未安装的程序包的相关信息
--whatprovides CAPABILITY:查询指定的capability由哪个程序包 提供
--whatrequires CAPABILITY:查询指定的capability被哪个包依赖
query-options:
-changelog:查询rpm包的changelog
-l:程序安装生成的所有文件列表
-i:程序包的相关信息,版本号,大小,所属的包组...
-c:查询指定的程序包的配置文件
-d:查询指定的程序包提供的文档
--provides:列出指定的程序包提供的CAPABILITY
-R:查询指定程序包的依赖关系
--scripts:查看程序包自带的脚本
校验:rpm -V
程序包来源合法性验证:数字签名
完整性验证:
获取并导入信任的包制作者的密钥 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-7
数据库重建:
rpm管理数据库的路径:/var/lib/rpm
查询,安装等操作都通过数据库进行
rpm [--initdb|--rebuilddb] [--dbpath directory] [--root directory]
--initdb:初始化数据库,当前无任何数据库时可实现创建一个新的,当前有数据库则不会 执行任何操作 --rebuilddb:重新构建,是通过读取当前系统上以安装过的程序包进行重建的
yum前端管理工具:
显示仓库列表:repolist [all|enabled|disabled]
显示程序包:list [all]
安装:install package1 [package2]...
重新安装:reinstall package1 [package2]...
升级:update package1 [package2]...
降级:downgrade package1 [package2]
检查可用升级程序包:check-update
卸载:remove
查看程序包简要信息:info
查看指定的特性(可以是文件)是由哪个程序包提供的:provide
清理本地缓存:clean [packages|rpmdb|all]
构建缓存:makecache
搜索:search STRING1 [STRING2]...
查看指定的程序依赖的capabilities:deplist [package1] [package2]...
查看YUM事物历史(安装,卸载等信息):history [info|list|packages-list|packages-info]
包组管理的相关命令:
groupinstall group1 [group2]...
grpupupdate group1 [group2]...
grouplist group1 [group2]...
groupremove group1 [group2]...
groupinfo group1 [group2]...
如何使用光盘当做本地YUM仓库:
1.mount -r /dev/cdrom /media
2.vim /etc/yum.repos.d/base.repo
[base]
name=Centos7 packages
baseurl=file:///media
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-7
:wq
yum的命令行选项:
--nogpgcheck:不检查程序包来源的合法性和程序包的完整性
-y:无需用户确认安装
-q:静默
--disablerepo=xxx:临时禁用此处指定的repo
--enablerepo=xxx:临时启用此处指定的repo
--noplugins:禁用所有插件
YUM的repo配置文件中的可用变量:
$releasesever:当前os发版本的主版本号
$arch:平台(cpu架构i386,X86_64,PPC)
$basearch:基础平台(i386,i486,i586-->i386)
如:http://mirrors.echoh.com/centos/$releasesever/$basearch/OS
创建YUM仓库:createrepo [option] FILE
源码包编译安装:
源代码组织格式:
多文件:文件中的代码间可能存在跨文件依赖关系,所以需要用项目管理工具(make/maven)
开发工具:
autoconf:生成configure脚本
automake:生成Makefile.in
编译安装3步骤:
(1)./configure:A通过传递参数指定安装路径,启用的特性等,执行时参考用户指定的Makefile.in 文件生成makefile
B检查依赖到的外部环境(编译环境)
(2)make:根据makefile文件,构建应用程序
(3)make install:安装
开源程序源代码的获取:
官方站点:apache.rog,mariadb.org..
托管站点:code.google.com,Github.com,SourceForge
编译安装C源代码程序:
1.提供开发工具(make,gcc),开发环境(开发库,头文件,glibc:标准C库)
yum -y install "Development Tools" "Server Platform Development"
2. ./configure 配置(--help获取其支持的选项)
选项分类:
指定安装路径:--prefix=/PATH/TO/FILE:默认为/usr/local/xxx
指定system os:System type:作用是实现交叉编译
可选特性:--disable-FEATURE,--enable-FEATURE
可选包:--with-PACKAGE,--without-PACKAGE
3.make
4.make install
安装后的配置:
(A)导出程序二进制目录至PATH环境变量中:
cp xx /etc/profile.d/xx.sh
vim xx.sh
export PATH=/usr/local/http2/bin:$PATH
(B)导出库文件路径
添加新的库文件至/etc/ld.so.conf.d/文件中
让系统重新生成缓存:ldconfig [-v]
(C)导出头文件
基于链接的方式(ln -s)
(D)导出帮助手册:
添加一个MANPATH
标签:linux程序包管理
原文地址:http://11358534.blog.51cto.com/11348534/1828419