首页 > 代码库 > linux 程序包管理

linux 程序包管理

如何实现在linux安装,更新程序。

硬件--内核(系统调用接口)--库调用接口(32位,64位)

API:Application Programming Interface 

POSIX:可移植系统,源代码级别各系统都是兼容的。

程序的源代码文件--预处理--编译--汇编--链接

静态编译:不依赖外部环境

共享编译:直接调用lib .so 文件

linux支持elf,windows支持exe,因为ABI不同(应用二进制接口)

库级别虚拟化,WINE 可以在linux跑windows程序,CYWIN在windows跑linux程序


应用及开发(java,python,php,perl,rubby)和系统及开发(c,c++)


二进制应用程序的组成部分:

二进制文件,库文件,配置文件,帮助文件


程序包管理器:

debian:deb包,包管理器dpt

rehat:rpm ,redhat package manager

gentoo

archlinux 

源代码:name-VERSION.tar.gz

rpm包命名方式(使用源代码制作而成)name-VERSION-ARCH.(指定平台)rpm


常见的arch

x86:i386,i486,i586,i686

x86_64:x86_64,amd64

powerpc:ppc

跟平台无关:noarch


yum rpm包管理器前端安装工具

apt-get :deb包管理器前端工具

zypper:suse上的rpm包前端管理工具

dnf:Fedora22+ rpm包管理器前端管理工具

查看二进制程序所依赖的库文件  ldconfig(/erc/id.so.conf)

ldd /path/to/binary


程序包管理

功能:将编译好的应用程序的各个组成文件打包成一个或几个程序包文件,从而方便快捷的实现程序包的安装,卸载,查询升级和校验等管理操作。

1程序的组成清单(每个包独有)

    文件清单

    安装或卸载运行的脚本

2数据库(公共)

    程序包名称及版本

    依赖关系

    功能说明

    安装生成的个文件的文件路径及校验码信息


管理程序包的方式

使用包管理器工具:rpm

使用前端工具:yum,dnf


rpm

1系统发版的光盘或官方服务器

        centos镜像http://mirrors.aliyun.com ,https://mirrors.sohu.com,https://morrors.163.com

项目官方:

第三方组织:Fedora-EPEL

 搜索引擎:https://rpmfind.net  http://pkgs.org   


centos rpm 命令管理程序包

安装,卸载,升级,查询,校验,数据库维护

安装:

rpm {-i|--install} [install-options] PACKAGE_FILE ...

-i 安装install

-h  以#显示程序包管理执行进度,每个#表示是2%进度

-v 显示安装详细信息

[]install -option]

    --test 测试安装,单不真实执行,dry run

    --nodeps:忽略依赖关系(循环依赖)

    --relacepkgs 重新安装

升级:

       rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...


       rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

upgrade: 安装有旧版程序包,则‘升级’,如果不存在旧版程序包则安装

freeshen:安装有旧版程序包,则升级,如果不存在旧版程序包,则不执行操作


rpm -Uvh package

rpm -Fvh package


注意:1不要对内核做升级操作,linux支持多内核版本并存,因此,对直接安装新版本内核

            2如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会

            直接覆盖老版本的配置文件,而把新版本的文件重命名(.rpmnew)后保留

查询:rpm {-q|--query} [select-options] [query-options]

select-options

-a 所有包

-f  查询指定的文件有哪个包安装生成

-p /path/to/package_file 针对尚未安装的程序包文件做查询

--what‘provide 查询指定的文件由哪个包提供

--whatrequire 查询指定的文件被哪个包所依赖


[query-options]

--changelog 查询rpm包的changelog

-c 查询配置文件

-d 查询帮助文档

-i 简要信息

-l  显示安装生成的所有文件

-R 查询指定程序依赖

--provides 列出指定程序包所提供的capability






linux 程序包管理