马哥预习课13_软件包管理rpm和yum

▼软件运行和编译

1. ABI : Application Binary Interface
2. API : Application Programming Interface

程序源代码
预处理
编译
汇编
链接
*编译
静态编译.a
动态编译.so

▼静态和动态链接

  1. 静态链接
    把程序对应的依赖库复制一份到包
lib*.a
嵌入程序包
升级难,需重新编译
把程序对应的依赖库复制一份到包
占用空间多,迁移容易
  1. 动态链接
lib*.so
连接指向
只把依赖做一个动态链接
占用空间小,升级方便

▼包和包管理器

  1. 包的组成:二进制文件、库文件、配置文件、帮助文件
  2. 程序包管理器:
    debian:deb文件,dpkg包管理器
    redhat:rpm文件,rpm包管理器

库文件

  1. 查看二进制程序所依赖的库文件
    /ldd /PATH/TO/BINARY_FILE
  2. 管理及查看本机装载的库文件
    lsconfig加载配置文件中指定的库文件
    /sbin/ldconfig -p 显示本机已经缓存的所有可用库文件名及文件路径
  3. 映射关系
    /etc/ld.so.conf , /etc/ld.so.conf.d/*conf 配置文件
    /etc/ls.so.cache 缓存文件

▼程序包的来源

CentOS镜像
https://www.centod.org/download/
http://miirors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com

Fedora-EPEL
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/

▼rpm [OPTION] PACKAGE_FILE包管理

[OPTION] 用途
-i 安装
-v 显示过程
-vv
-h 以####显示进度
示例rpm -ivh PACKAGE_FILE

rpm 包安装

[install-options] 用途
--test 测试安装
--nodeps 忽略依赖关系
--replacepkgs 不检查来源
--nodigest 不检查完整性
--noscripts 不执行程序包脚本
%pre 安装前脚本 --nopre
%post 安装后脚本 --nopost
%preun 卸载前脚本 --nopreun
%postun 卸载后脚本 --nopostun

rpm 包升级

有旧版,升级
rpm -U [install-option] PACKAGE_FILE

没有旧版,不升级
rpm -F [install-option] PACKAGE_FILE

示例
rpm -Uvh PACKAGE_FILE

[install-options]
--oldpackage降级
--force 强制安装

rpm 包查询

命令
rpm -q [select-options] [query-options]

[select-options] 用途
-a 所有包
-f 指定的文件由哪个程序包生成
-p RPMFILE 对未安装的程序包查询
--whatprovides CAPABILITY 查询指定CAPABILITY包由哪个包提供
--whatrequires CAPABILITY 查询指定CAPABILITY包由哪个包依赖
[query-options] 用途
--changelog 查询rpm包的changelog
-c 查询程序的配置文件
-d 查询程序的文档
-i 查询程序的详情
-I 查看指定的包安装后生成的所有文件
--scripts 程序包自带的脚本
--provides 列出指定程序包所提供的CAPABILITY
-R 查询指定的程序包所依赖的CAPABILITY
`查看指定的包安装后生成的所有文件`
rpm -ql httpd

rpm 包卸载

rpm -e [OPTIONS] PACKAGE_FILE

rpm 包校验

rpm -V [select-option] [verify-options]

在这里插入图片描述

rpm 数据库

  1. 数据库重建
    /var/lib/rpm
  2. rpm {--initdb| --rebuiddb}
    initdb初始化
    rebuilddb 重建

rpm示例

rpm -ql httpd

▼yum仓库

▷yum 仓库

  1. 所有仓库公共配置/etc/yum.conf
  2. 仓库指向提供配置/etc/yum.repos.d/*.repo
  3. 日志文件 /var/log/yum.log

.repo 文件定义

[repositoryID]
name= STRING
baseurl =	http://
				https://
				ftp://
				file://
enabled={1|0}
gpgcheck={1|0}
gpgkey=url://              `当gpgcheck=1`
enablegroups={1|0}
failovermethod={roudrobin|priority}
		roundrobin : 随机(默认)
		priority : 按顺序
cost=1000(默认)

▷yum [OPTION] [COMMAND] [PACKAGE]

yum的选项

[OPTION] 用途
--nogpgcheck 禁用gpg check
-y 自动回答
-q 静默安装
--disablerepo = REPO 临时禁用指定repo
--enablerepo = REPO 临时启用指定repo
--noplugins 禁用插件

查看yum仓库列表

yum repolist {all|enabled|disabled}

yum的程序包

1. 显示安装好的程序包
yum list [all | golb_exp1]
yum list {available | installen | updates} [globj_exp1]

2. 安装/升级程序包
yum install PACKAGE1 [PACKAGE2]
yum reinstall PACKAGE1 [PACKAGE2]重装
yum update rpmfile1升级

3. 查看yum安装历史
yum history
yum history info NUM
yum history undo NUM
yum history redo NUM

4. 查看程序包
yum info PACKAGE

5. 查看指定的文件/特性是谁提供的
yum {provides | whatprovides} feature

6. 清理本地缓存/var/cache/yum/$ basearch/$releasever
yum clean [packages | metadata | expire-cache | rpmdb | plugins | all]

7. 构建缓存
yum makecache

8. 搜索包
yum search string1

9. 查看指定包所依赖的CAPABILITIES
yum deplist package1

10. 包组命令

  1. yum groupinstall group1
  2. yum groupdate group1
  3. yum grouplist [HIDDEN] [groupwildcard]
  4. yum groupremove group1
  5. yum groupinfo group1

11. 创建yum仓库
createrepo [OPTION] DIR

yum源

  1. 阿里云repo文件
    阿里云
  2. CentOS系统的yum源
    阿里云
    清华大学
  3. EPEL的yum源
    阿里云
  4. 阿里巴巴开源软件
    阿里巴巴

搭建http的yum仓库

1. `安装httpd服务`
[root@CentOS7 cd]$yum install httpd.x86_64 

2. `查询httpd安装后生成的文件`
[root@CentOS7 cd]$rpm -ql httpd

3. `启用httpd服务`
[root@CentOS7 cd]$systemctl enable httpd.service 
[root@CentOS7 cd]$systemctl start httpd.service

4. `创建文件夹`
[root@CentOS7 html]$cd /var/www/html/
[root@CentOS7 html]$mkdir centos/{6,7}/os/x86_64 -pv
mkdir: created directory ‘centos’
mkdir: created directory ‘centos/6’
mkdir: created directory ‘centos/6/os’
mkdir: created directory ‘centos/6/os/x86_64’
mkdir: created directory ‘centos/7’
mkdir: created directory ‘centos/7/os’
mkdir: created directory ‘centos/7/os/x86_64’

5. `挂载`
[root@CentOS7 html]$mount /dev/sr0  centos/7/os/x86_64/
mount: /dev/sr0 is write-protected, mounting read-only
[root@CentOS7 html]$mount /dev/sr1  centos/6/os/x86_64/
mount: /dev/sr1 is write-protected, mounting read-only

6. `配置repo并使用`
  1 [cdrom]
  2 name=cdrom
  3 baseurl=http://192.168.88.132/centos/7/os/x86_64/
  4 gpgcheck=0
  5 enable=1  

7. `生成repodata`
[root@CentOS7 app]$ls
tree-1.6.0-10.el7.x86_64.rpm
[root@CentOS7 app]$createrepo .
Spawning worker 0 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

8. `查看repodata`
[root@CentOS7 app]$cd repodata/
[root@CentOS7 repodata]$ls
126a4254b443d131331b4b0690e9c0b6d21a2086439cafc91c06cef05a4d4d80-filelists.sqlite.bz2
13fdc6b363cf52e0a85e9c14a3c7542ff8aa1414059ed3e60e921abe39b608ca-filelists.xml.gz
7a3b13e0c3442e911847404ebcb6949af1631a3be1d30b65bc6e5af70e018b20-primary.sqlite.bz2
b466b726e2bed2fb4186bdcb74332cec08c47ab09dda9e910bd438c4e79d06f2-primary.xml.gz
bf7893674c749b8e5bb4688498d02e729c2ab4839cd6e3baeeeaa0c9d8aa24c7-other.xml.gz
de5be08c023c4647355eb21db734c14e07f61ddce7b3802e6a42867e4a46d45f-other.sqlite.bz2
repomd.xml

猜你喜欢

转载自blog.csdn.net/weixin_42758707/article/details/89885120