您的位置:首页 > 运维架构 > Linux

菜鸟学Linux 第029篇笔记 软件管理,rpm命令

2016-11-21 16:56 465 查看
菜鸟学Linux 第029篇笔记 软件管理,rpm命令

应用程序:
程序:底层Architecture密切相关

C语言: 源代码-->(编译)二进制格式
脚 本: 解释器(二进制程序)

源代码-->编译-->链接-->运行
程序:

静态
动态

静态链接
动态链接

程序:指令+数据

Linux 共享库 .so (shared object)

程序配置文件:

程序组成部分:
二进制程序
库(包含程序自己私有的库)会将其自己的库文件放入到/lib /usr/lib
配置文件
帮助文件

linux 一级目录
/boot
/etc
/usr
/var
/lib
/tmp
/bin
/sbin
/proc
/sys
/mnt
/media
/home
/root
/misc
/opt
/srv

安装软件所涉及的目录:
1.系统启动就需要用到的程序,不能挂载到额外的分区,必须在根上(帮助文档目录除外)
/etc, 程序配置文件
/bin, 程序二进制文件
/sbin, 程序二进制文件
/lib, 库文件
/usr/share/man(帮助文件) 全局共享只读目录

2.提供系统核心功能,可以单独分区(不推荐)
/usr/
bin
sbin
lib

3. 安装第三方软件,单独分区(推荐)
/usr/local
bin
sbin
lib
etc
man
/opt 早期第三方软件安装到此目录

其它目录
以下两个目录称为伪文件系统,不能单独分区,默认为空(启动后才会有)
/proc 给用户提供调用接口
/sys 硬件调用接口

/dev 设备文件 不可单独分区!!
udev 能够利用内核所提供的硬件信息,动态创建设备文件,
并给设备文件取一个让用户容易认识的名字

/home 家目录,建议单独 但作为服务器来讲用到不多
/root 管理员家目录 可以单独分区但不建议
/var 外围文件系统日志文件等等 建议单独分区
/boot 内核,initrd(initramfs) 建议单独分区
POST-->BIOS(HD)-->(MBR)bootloader(文件系统结构,ext2,ext3...)-->内核
/boot 一个分区 根lvm

程序:指令+数据
指令:芯片
CPU:普通指令,特权指令
指令集

编译 程序指令-->汇编指令-->所对应的芯片指令(intel,Amd,Powerpc...)

软件包管理器
1.打包成一文件:二进制程序,库文件,配置文件,帮助文件
2.生成数据库 追踪所安装的每一个文件

功能
1.制作软件包;
2.安装,卸载,升级,查询,校验;

Redhat,SUSE : RPM
Redhat Package Manager
RPM is Package Manager
Debian: dpt

依赖关系:
当用rpm安装软件时,有可能会遇到安装A软件需要先安装B软件
而安装B软件需要安装C软件, 此种关系称为依赖关系;
后端工具,rpm dpt 安装软件时,需要自己来解决安装软件时的依赖关系
需要手动安装该软件所依赖的其它软件
前端工具,yum apt-get 可以自动帮用户解决安装软件时的依赖关系
即自动安装所需要安装的其它软件
前端工具:yum apt-get
后端工具:RPM, dpt

yum: yellowdog Update Modifier

rpm命令
rpm:
数据库:/var/lib/rpm
rpmbuild:
安装、查询、卸载、升级、校验、数据库重建、验证数据包等工作

rpm命名:
包:组成部分
主包:
bind-9.7.1-1.i589.e15.rpm
子包:
bind-lib-9.7.1-1.8586.e15.rpm
包名格式
name-version-release-.arch.rpm
bind-major.minor.release-release.arch.rpm
主版本号:重大改进
次版本号:某个子功能发生重要变化
发行号:修正部分bug,调整一点功能

rpm包:
二进制格式
源代码格式

查看当前系统内核版本
uname ( print system information)
-a, --all
print all information, in the following order, except omit -p
and -i if unknown:

rpm command:
1.安装
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm -ivh /path/name.rpm
--nodeps
Don’t do a dependency check before installing or upgrading
a package. 忽略依赖关系,但是软件安装后可能会无法运行
--force 强行安装,可以实现重装或降级
--test Do not install the package, simply check for and report
potential conflicts.

2.查询
rpm -q PACKAGE_NAME 不能跟路径 查询指定的包是否已经安装 query
rpm -qa 查询已经安装的所有包 all
rpm -qi PACKAGE_NAME 查询指定包的说明信息 information
rpm -ql PACKAGE_NAME 查询指定包安装生成的文件列表list directory
rpm -qc PACKAGE_NAME 查询指定的安装包的配置文件config
rpm -qf /path/to/somefile 查询指定的文件是由哪个rpm包安装生成的;
-qd PACKAGE_NAME 查询软件包的帮助文件 docfiles
-q --scripts PACKAGE_NAME 查询软件包中包含的脚本
如果某rpm包尚未安装,我们需要查询其说明信息,安装以后会生成的文件
rpm -qpi /path/to/package.rpm

3.升级
rpm -Uvh /path/to/new_package_file.rpm 如果装有老版本的,则升级,否则安装
rpm -Fvh /path/to/new_package_file.rpm 如果装有老版本的,则升级,否则退出
--oldpackage 降级

4.卸载
rpm -e PACKAGE_NAME 卸载rpm包 erase
-nodeps 卸载但不删除所依赖的rpm包

5.校验
rpm -V PACKAGE_NAME 验证rpm软件包

6.重建rpm数据库
rpm
--rebuilddb: 重建数据库,一定会重新建立;
initdb: 初始华数据库,没有才建立,有就不用建立;
Use --initdb to create a new database if one doesn’t already
exist (existing database is not overwritten),
use --rebuilddb to rebuild the database indices from the installed
package headers.

7.检验来源合法性,及软件包完整性
加密类型
对称:加密解密使用同一个密钥
非对称:一对密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去
单向:MD5

/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 存放验证信息 public key
如果没有导入验证信息rpm不可对软件包做数据认证
导入验证信息
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

rpm {-K|--checksig} [--nosignature] [--nodigest] /path/to/package.rpm
用来验证安装包的完整性和合法性

dsa, gpg: 验证软件包来源合法性,即验证签名 --nodigest 忽略此项
shal, md5: 验证软件包完整性:可以使用 --nosignature 忽略此项
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息