linux软件包架构不匹配,Linux学习之包管理

Linux学习之程序包管理

1、包管理器就是对应用程序打包和包管理的应用软件,包管理包括安装、升级、卸载、查询和校验管理。

最早出现的包管理器是debian的deb,

随后reahat才推出了其包管理器rpm:RedHat package manager,之后就不断完善成为现在RedHat衍生版以及suse的包管理器;所以rpm的定义随之成为:RPM is package manager。

程序包是由以下四个部分组成:

1、二进制程序:/bin,/sbin,/usr/bin,/usr/sbin

2、库文件:/lib_64,/usr/lib_64

3、配置文件:/etc

4、帮助文档:manual,info

包管理器作用详解:

打包:将不同部分的文件归档组织存放的过程

安装:将包中的二进制文件、库文件、配置文件以及帮助文件存放至相应的目录,最后设置该程序的环境变量使程序能在系统中正常运行使用;

卸载:删除该程序的所有文件以及环境变量

升级:将新版的程序文件覆盖至就版本的程序文件上

查询:查看应用软件安装文件以及这些文件的信息

校验:核对包文件来源的合法性和完整性

2、rpm包:

分包机制:

PackageName-VERSION.tar.gz

其分包机制是将常用打包归档成为一个包,其他不常用的功能单独打包归档或以组合的方式打包归档;如:

核心包:PackageName-VERSION

支包:PackageName-Part1-VERSION

VERSION:版本包

版本号是由:主版本号(major)+次版本号(minor)+修正号(release)三部分组成的

主版本号:major的更改是软件的重要功能的加减引起的

次版本号:minor是一些小功能的增减引起的

修正好:release是弥补以前的bug

bash-4.2.4.tar.gz

rpm包的命名机制:

PackageName-VERSION-RELEASE.ARCH.rpm

VERSION:是软件包的版本号:

RELEASE:是rpm软件的修正号

ARCH:是表示该软件包使用的架构,如i386,x86_64等

如:

da4ed27afaa5bec93ada88eab84e22f9.png

如何获取rpm包

a、发行版提供的程序包;这是安全级别最高的一种方式

b、Fedora-EPEL项目

c、项目的官方站点

d、搜索引擎 如:

http://rpmfind.net

http://rpm.pbone.net

http://pkgs.org

3、基于rpm命令实现程序包管理:

安装:

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

-i:安装

-v:显示过程,-vv,-vvv更加详细的显示安装过程

-h:以#表示安装进度

--nodeps:忽略依赖关系安装

748631f2d035705d4335f61ea8e370aa.png

升级:

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

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

-Uvh:如果有旧版本的程序,则升级,如果没有则安装

-Fvh:如果有旧版本的程序,则升级,没有则不安装

--oldpackage:降级

--force:强制

dd4fff1105edf43568865771d4914d56.png

卸载

rpm {-e|--erase} [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_FILE

3a3ccf5fc6001081a416acb1e4871515.png

查询:

rpm {-q|--query} [select-options] [query-options]

查询选项:

-qa:查询本机已经安装的所有程序包

1552878b692f1be17779a9bd175017e3.png

-qf /path/to/somefile:查询此处的文件由那个程序包安装生成;

80eff49e1c26db25dc8d08b727fa0aa3.png

-qc:查询指定程序包安装生成的配置文件

2b37aa17a713a7183dd4d7b3b8f97cbd.png

-qd:查询指定的程序包生成的文档

381918b8de1977a7b20c2f021ab94d14.png

-qi:查询指定的程序包的祥光信息

85900b72d29012a6f770d1f3de36e454.png

-ql:查询程序包安装生成的所有文件的列表

1672c8307ebe2ca1562d21b9cb4b5a40.png

-q --scripts:查询程序包相关的脚本

preinstall:安装前脚本

postinstall:安装后脚本

preuninstall:卸载前脚本

postuninstall:卸载后脚本

-p:查询正对是未安装的程序包文件;

校验:

rpm {-V|--verify} [select-options] [verify-options]

S file size differs//大小改变

M mode differs//权限改变

5 digest(formerly MD5 sum) differs//md5改变

D device major/minor number mismatch//设备文件的主次号不匹配

L readlin(2) path mismatch//

U user ownership differs//属主

G group ownership differs//属组

T mtime differs//修改时间戳

P caPabilities differs//删除文件

02c93ce4300d958fa428c1395c31336c.png

29f51816973822806f6b5b3d25dcf7b3.png

包校验:

来源的合法性

文件的完整性

导入密钥:rpm --import /path/to/KEY_FILE

校验:rpm -K /path/to/RPM_FILE

dbe2a2ce1d078a4928848c2d723db149.png

4、YUM:Yellow dog Updater Modified

通过仓库查找包并解决包依赖的问题

yum repositories:

文件服务器:

ftp://hosthome/path/to/REPO

http://hosthome/path/to/REPO

file:///path/to/REPO

yum程序的配置文件:

/etc/yum.conf :定义全局配置,对有有的仓库都试用的配置

f3c724f740edf2e78ca856a61252765a.png

/etc/yum.repos.d/*.repo

一个文件通常用于一个或一组功能相近或相关的仓库

定义一个仓库指向:

[REPO_ID] //id是全局唯一的

name=     //名字

baseurl=   //文件服务器路径,建议不要指向多个

#mirrorlist=SCHME://HOSTNAME/PATH/TO/MIRROR_LIST_FILE //baseurl的替代,MIRROR_LIST_FILE是一个定义了可用镜像文件列表的文本文件

enable={0|1} //是否启用仓库

gpgcheck={0|1} //是否对包进行校验

gpgkey= //指明使用哪个文件校验

cost    //指明这个仓库的开销

7c270cb355a96ce3b4502985b77e123f.png

定义仓库指向可用变量:

$releasever:引用当前系统的主版本号

$basearch:引用当前系统的基本架构

htpp://mirror.xxx.xx/centos/$releasever/$basearch

5、yum命令

yum [options] [command] [package...]

[command]

安装:install

[root@pizi yum.repos.d]# yum install nmap

已加载插件:fastestmirror, refresh-packagekit, security

设置安装进程

Loading mirror speeds from cached hostfile

* base: mirrors.sina.cn

* extras: mirrors.sina.cn

* updates: mirrors.sina.cn

base                                                                                               | 3.7 kB     00:00

extras                                                                                             | 3.4 kB     00:00

updates                                                                                            | 3.4 kB     00:00

解决依赖关系

--> 执行事务检查

---> Package nmap.x86_64 2:5.51-4.el6 will be 安装

--> 完成依赖关系计算

依赖关系解决

==========================================================================================================================

软件包                    架构                        版本                               仓库                       大小

==========================================================================================================================

正在安装:

nmap                      x86_64                      2:5.51-4.el6                       base                      2.8 M

事务概要

==========================================================================================================================

Install       1 Package(s)

总下载量:2.8 M

Installed size: 9.7 M

确定吗?[y/N]:y

下载软件包:

nmap-5.51-4.el6.x86_64.rpm                                                                         | 2.8 MB     00:00

运行 rpm_check_debug

执行事务测试

事务测试成功

执行事务

正在安装   : 2:nmap-5.51-4.el6.x86_64                                                                               1/1

Verifying  : 2:nmap-5.51-4.el6.x86_64                                                                               1/1

已安装:

nmap.x86_64 2:5.51-4.el6

完毕!

卸载:remove

1decf427708a22d5bd6a7d97503ace33.png

升级:update

7eba91112197b7ac2dbdd253720efa55.png

查询: info

63d8b3887e773fda24b717e27d3c1203.png

search KEYWORD

list all | installed|availiable

provide /path/to/somefile:查询执行文件由那个包安装生成

重新安装:reinstall

降级:downgrade

清理缓存:clean [package|metadata|expire-cache|apmdb|plugins|all]

手动生成缓存:makecache

包组:

grouplist

groupinfo 'GRP_NAME'

groupinstall "GRP_NAME"

groupremove "GRP_NAME"

2b075be1471f5afb7fe184c84dcbfdec.png

仓库:

repolist [all|enabled|disabled]

repoinfo [all|enabled|disabled]

ef1cbbc1dd1da80653143a0ce8cd5628.png

至此包管理就先写到这里,后续会有更加详细的补充。欢迎大家关注!