首页 > 代码库 > linux学习笔记(软件包管理)
linux学习笔记(软件包管理)
前言:运维工程师平时安装服务时很正常的事情,所以软件包的管理就显得尤为重要。
内容:
基础知识。
程序发行的源代码都是不可以运行的,需要编译之后才可以运行,linux发行版的厂商会在他的机器上进行编译然后提供下载使用,用户可以直接拿到二进制的可执行文件进行使用。
通过file可以看到文件时不是可执行文件( ELF 32-bit LSB)是可执行文件,shared libs是使用了共享库。shell脚本显示Bourne-Again是应为#!/bin/bash的原因。
程序的组成部分:1.二进制程序 2.库 3.配置文件 4。帮助文件
文件系统说明
/usr/share/man /etc /bin /sbin /lib | 这些是系统启动是要用到的,不能挂载到额外的分区上,否则是不能在启东时找到。 这些都是启动时内核所要的程序。 |
/usr/bin /usr/sbin /usr/lib | 这些是系统启动之后核心的程序,建议独立分区 |
/usr/local/bin sbin lib etc man | 这些一般都是第三方的软件。 |
/pot | 第三方程序,现在已经不怎么用了 |
/sys | 不能单独的分区,默认为空;只是内核单独的管理。 |
/dev | 设备文件不能单独的分区,现在使用的是udev,能够按照需求进行设备文件创建(dynamic device management) |
/root | root用户的家目录,不能单独分区 |
/var | 建议单独分区 |
/boot | 内核,启动过程:POST-->BIOS(HD)-->(MBR)bootloader(文件系统结构,ext2, ext3, xfs)-->内核 |
常见的做法:/boot放在一个独立的分区上,而根文件系统放在一个LVM上 原因:/boot是在开机启动的时候要用到,此时的计算机不认识文件系统,但是bootloader知道/boot在哪里,什么样的结构,但是LVM是内核启动之后才能够识别的,所以/boot不能放在LVM上,要放在一个独立的分区上。 |
2.软件包管理器的核心功能:
1、制作软件包;
2、安装、卸载、升级、查询、校验;
3.软件包管理概况
Redhat, SUSE, Debian
Redhat, SUSE: RPM
Redhat Package Manager
PRM is Package Manager
Debian: dpt
依赖关系:
X-->Y-->Z 传递依赖
X-->Y-->Z-->X 循环依赖
前端工具:yum, apt-get 前段依赖于后端。
后端工具:RPM, dpt
rpm包的命名:
包:组成部分
主包:
bind-9.7.1-1.el5.i586.rpm
子包:
bind-libs-9.7.1-1.el5.i586.rpm
bind-utils-9.7.1-1.el5.i586.rpm
包名格式:
name-version-release.arch.rpm
bind-major.minor.release-release.arch.rpm
例如:
rpm包:
二进制格式
rpm包作者下载源程序,编译配置完成后,制作成rpm包
bind-9.7.1-1.noarch.rpm
bind-9.7.1-1.ppc.rpm
4.软件包管理器功能:
安装、查询、卸载、升级、校验、数据库的重建、验正数据包等工作;
1、安装
rpm -i /PATH/TO/PACKAGE_FILE
-h: 以#显示进度;每个#表示2%;
-v: 显示详细过程
-vv: 更详细的过程
rpm -ivh /PATH/TO/PACKAGE_FILE
--nodeps: 忽略依赖关系;
--replacepkgs: 重新安装,替换原有安装;
--force: 强行安装,可以实现重装或降级;
--test是不装但是测试安装包依赖等。
2、查询
rpm -q PACKAGE_NAME: 查询指定的包是否已经安装(注意这里只是包名,不是包的全称)
rpm -qa : 查询已经安装的所有包
rpm -qi PACKAGE_NAME: 查询指定包的说明信息;
rpm -ql PACKAGE_NAME: 查询指定包安装后生成的文件列表;
rpm -qc PACEAGE_NEME:查询指定包安装的配置文件;
rpm -qd PACKAGE_NAME: 查询指定包安装的帮助文件;
rpm -q --scripts PACKAGE_NAME: 查询指定包中包含的脚本
rpm -qf /path/to/somefile: 查询指定的文件是由哪个rpm包安装生成的;
如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;
rpm -qpi /PATH/TO/PACKAGE_FILE
rpm -qpl
rpm -qpc
rpm -qpd
3、升级
rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果装有老版本的,则升级;否则,则安装;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出;
--oldpackage: 降级
4、卸载
rpm -e PACKAGE_NAME
--nodeps忽视依赖
5、校验
rpm -V PACKAGE_NAME
每一个位都对应着不一样的属性改变。
6、重建数据库/var/lib/rpm
rpm
--rebuilddb: 重建数据库,一定会重新建立;
--initdb:初始化数据库,没有才建立,有就不用建立;
7、检验来源合法性,及软件包完整性;
加密类型:
对称 :加密解密使用同一个密钥
公钥:一对儿密钥,公钥,私钥;公钥隐含于私钥中,可以提取出来,并公开出去;
单向:md5
# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-redhat-release
rpm -K /PAPT/TO/PACKAGE_FILE
dsa, gpg: 验正来源合法性,也即验正签名;可以使用--nosignature,略过此项
sha1, md5: 验正软件包完整性;可以使用--nodigest,略过此项
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 导入密钥文件
5.yum的用法
本文出自 “技术至上” 博客,谢绝转载!
linux学习笔记(软件包管理)