yum¶
1 rpm¶
rpm包里面是已经编译好并打包成一定目录层级的文件,安装过程就是将包里面的文件拷贝到安装目录下
- 功能:rpm包管理
- 语法:
- 查询包信息:
rpm {-q|--query} [select-options] [query-options]
- 安装包:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
- 更新包:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
- 更新或安装:
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
- 卸载包:
rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
-v
:显示详细信息,包括进度-h
:通常与-v
一起使用,获得更好的显示效果
1.1 rpm安装¶
-vh 可以显示详细的过程、进度信息
rpm -i file
:安装(不会显示详细安装信息)rpm -ivh *.rpm
:安装(显示详细安装信息、进度信息)
1.1.1 强制安装¶
rpm -ivh *.rpm --nodeps --force
:强制安装,不考虑依赖
1.1.2 指定安装位置¶
rpm -ivh *.rpm --prefix=安装路径
通常指定安装目录不使用rpm来操作,容易产生错误,建议使用[rpm2cpio和cpio](#rpm2cpio和cpio)命令
1.2 rpm更新¶
rpm -Uvh *.rpm
:如果没有,则安装,否则更新rpm -Fvh 包全名
:如果没有则不安装,否则更新
1.3 rpm卸载¶
rpm -e 软件名
1.4 查询rpm包是否安装¶
rpm -q 包名
:查询安装包的简要信息rpm -qi 包名
:查看一个包的详细信息rpm -qf 文件名
:查看一个文件是由哪个包安装的rpm -ql 包名
:查看一个包安装了哪些文件rpm -qa
:查看系统中安装了哪些包- 示例:
$ rpm -q gcc
gcc-4.8.5-44.el7.x86_64
$ rpm -qi gcc
Name : gcc
Version : 4.8.5
Release : 44.el7
Architecture: x86_64
Install Date: Fri 27 Aug 2021 03:28:38 PM CST
Group : Development/Languages
Size : 39226437
License : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Signature : RSA/SHA256, Thu 15 Oct 2020 02:49:36 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : gcc-4.8.5-44.el7.src.rpm
Build Date : Wed 30 Sep 2020 10:42:39 AM CST
Build Host : x86-02.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://gcc.gnu.org
Summary : Various compilers (C, C++, Objective-C, Java, ...)
Description :
The gcc package contains the GNU Compiler Collection version 4.8.
You,ll need this package in order to compile C code.
$ rpm -qf /usr/bin/gcc
gcc-4.8.5-44.el7.x86_64
$ rpm -ql gcc
/usr/bin/c89
/usr/bin/c99
/usr/bin/cc
/usr/bin/gcc
/usr/bin/gcc-ar
/usr/bin/gcc-nm
/usr/bin/gcc-ranlib
...
$ rpm -qa
geoipupdate-2.5.0-1.el7.x86_64
setup-2.8.71-11.el7.noarch
python-IPy-0.75-6.el7.noarch
python-pycurl-7.19.0-19.el7.x86_64
...
1.5 rpm包下载地址¶
- https://centos.pkgs.org/
- http://www.rpmfind.net/linux/rpm2html/search.php rpmfind: http://rpmfind.net/linux/RPM/index.html
pkgs: https://pkgs.org/
fedora koji: https://koji.fedoraproject.org/koji/index
pbone: http://rpm.pbone.net/
源码: https://src.fedoraproject.org/projects/rpms/%2A
CentOS CentOS7.7 https://vault.centos.org/7.7.1908/os/Source/SPackages/
https://vault.centos.org/7.7.1908/updates/Source/SPackages/
CentOS7.8 https://vault.centos.org/7.8.2003/os/Source/SPackages/
https://vault.centos.org/7.8.2003/updates/Source/SPackages/
CentOS7.9 https://vault.centos.org/7.9.2009/os/Source/SPackages/
https://vault.centos.org/7.9.2009/updates/Source/SPackages/
CentOS8.2 https://vault.centos.org/8.2.2004/AppStream/Source/SPackages/
https://vault.centos.org/8.2.2004/BaseOS/Source/SPackages/
CentOS8.3 https://vault.centos.org/8.3.2011/AppStream/Source/SPackages/
https://vault.centos.org/8.3.2011/BaseOS/Source/SPackages/
1.6 rpm包制作¶
1.7 主要流程¶
- 配置.spec文件
- 执行
rpmbuild [option] .spec文件
1.7.1 设置打包时不删除调试信息¶
在spec文件中添加%define __strip /bin/true
2 rpm2cpio和cpio¶
2.1 rpm2cpio¶
rpm2cpio 也是rpm包附加的,意味着只要rpm工具,就会有rpm2cpio
```shell
$ rpm -qf /usr/bin/rpm2cpio
rpm-4.11.3-45.el7.x86_64
$ rpm -qf /usr/bin/rpm
rpm-4.11.3-45.el7.x86_64
```
- 语法:
rpm2cpio rpm包 > cpio文件
:将rpm包转成cpio文件rpm2cpio rpm包|cpio -idvm
:先将rpm包转成cpio文件,再执行cpio提取归档文件内容(常用)
- 示例:直接生成cpio文件
$ ls
test.rpm
$ rpm2cpio test.rpm > test.cpio
$ ls test.cpio
test.cpio
2.2 cpio¶
- 语法:
rpm2cpio rpm包|cpio -idvm
:常用命令,在当前目录安装rpm包内容
- 示例
$ rpm2cpio test.rpm |cpio -idvm
./usr/local/include/nccode
./usr/local/include/nccode/blockdata.h
./usr/local/include/nccode/codingmodule.h
./usr/local/include/nccode/codingparam.h
./usr/local/include/nccode/nccode_define.h
./usr/local/include/nccode/nccode_enums.h
./usr/local/include/nccode/nccode_memorypool.h
./usr/local/include/nccode/segmentdata.h
./usr/local/include/nccode/storagecodingmodule.h
./usr/local/lib64/libjerasure.so
./usr/local/lib64/libnc_code.so
11061 blocks
3 yum¶
- 参考教程
- 功能:基于rpm包的管理工具
- 语法:
yum [options] [command] [package ...]
- 部分command功能描述
语法 | 功能 |
---|---|
yum install package1 [...] | 安装包(可以同时安装多个包) |
yum remove package1 [...] | 卸载安装包(可以同时指定多个包) |
yum update [package1] [...] | 升级包同时也升级软件和系统内核(不指定包名,默认升级所有包) |
yum upgrade [package1] [...] | 只升级包,不升级软件和系统内核(不指定包名,默认升级所有包) |
yum check-update [package1] [...] | 只升级包,不升级软件和系统内核(不指定包名,默认升级所有包) |
yum list | 显示系统中已经安装和可以安装包的信息 |
yum list [...] | 显示指定包的信息 |
yum info package | 显示指定包信息(比list更详细) |
yum deplist package | 显示包的依赖 |
yum repolist | 显示配置的安装源 |
- 部分option功能描述¶
命令 | 功能 |
---|---|
-y | 安装过程确认都是y |
-t | 忽略安装过程错误 |
-v | 显示安装过程详细信息 |
3.1 查找so属于哪一个包¶
- 语法:
yum provides .so名
- 示例
$ yum provides libcrypto.so.10
已加载插件:fastestmirror, priorities
Loading mirror speeds from cached hostfile
1:openssl-libs-1.0.1e-42.el7_1.9.i686 : A general purpose cryptography library with TLS implementation
源 :base
匹配来源:
提供 :libcrypto.so.10
3.2 仅下载包不安装¶
<font color=#ED7001>yum-plugin-downloadonly</font> 方式默认会下载依赖,而`yumdownloader`需要<font color=#ED7001>--resolve</font>来指定下载依赖
3.2.1 方法一:使用yum-plugin-downloadonly插件¶
- 安装工具:
yum install -y yum-plugin-downloadonly
- 使用仅下载命令:
yum -y install --downloadonly --downloaddir=下载目录 包名
--downloadonly
:表示只下载--downloaddir=下载目录
:指定rpm包下载到哪个位置
3.2.2 方法二:使用yumdownloader工具¶
- 下载工具:
yum install yum-utils
- 使用yumdownloader下载rpm包:
yumdownloader --resolve --destdir=下载目录 rpm包
--resolve
:表示下载依赖包--destdir=下载目录
:指定rpm包下载到哪个位置
3.2.3 方法三(推荐):自动下载所有依赖,不管本机是否已经安装了相应的库¶
- 下载工具:
yum install yum-utils
- 执行命令:
repotrack rpm包
3.3 yum源配置¶
- 一般我们在
/etc/yum.repos.d/
目录下新建.repo仓库文件 - 配置yum源后,再执行如下指令
yum clean all
yum makecache
yum list
- 参考资料