Linux学习笔记之在 CentOS 里下载 RPM 包及其所有依赖包
0x00 概述
前几天我尝试去创建一个仅包含我们经常在 CentOS 7 下使用的软件的本地仓库。当然,我们可以使用 curl 或者 wget 下载任何软件包,然而这些命令并不能下载要求的依赖软件包。你必须去花一些时间而且手动的去寻找和下载被安装的软件所依赖的软件包。然而,我们并不是必须这样。在这个简短的教程中,我将会带领你以两种方式下载软件包及其所有依赖包。我已经在 CentOS 7 下进行了测试,不过这些相同的步骤或许在其他基于 RPM 管理系统的发行版上也可以工作,例如 RHEL,Fedora 和 Scientific Linux。
0x01 利用 Downloadonly 插件下载 RPM 软件包及其所有依赖包
我们可以通过 yum 命令的 Downloadonly 插件下载 RPM 软件包及其所有依赖包。
为了安装 Downloadonly 插件,以 root 身份运行以下命令。
yum install yum-plugin-downloadonly
现在,运行以下命令去下载一个 RPM 软件包。
yum install --downloadonly <package-name>
# 默认情况下,这个命令将会下载并把软件包保存到 /var/cache/yum/ 的 rhel-{arch}-channel/packageslocation 目录,不过,你也可以下载和保存软件包到任何位置,你可以通过 –downloaddir 选项来指定。
yum install --downloadonly --downloaddir=<directory> <package-name>
例子:
yum install --downloadonly --downloaddir=/root/mypackages/ httpd
终端输出:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.excellmedia.net
* epel: epel.mirror.angkasa.id
* extras: centos.excellmedia.net
* updates: centos.excellmedia.net
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 :2.4.-.el7.centos. will be installed
--> Processing Dependency: httpd-tools = 2.4.-.el7.centos. for package: httpd-2.4.-.el7.centos..x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.-.el7.centos..x86_64
--> Processing Dependency: libaprutil-.so.()(64bit) for package: httpd-2.4.-.el7.centos..x86_64
--> Processing Dependency: libapr-.so.()(64bit) for package: httpd-2.4.-.el7.centos..x86_64
--> Running transaction check
---> Package apr.x86_64 :1.4.-.el7 will be installed
---> Package apr-util.x86_64 :1.5.-.el7 will be installed
---> Package httpd-tools.x86_64 :2.4.-.el7.centos. will be installed
---> Package mailcap.noarch :2.1.-.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved =======================================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================================
Installing:
httpd x86_64 2.4.-.el7.centos. updates 2.7 M
Installing for dependencies:
apr x86_64 1.4.-.el7 base k
apr-util x86_64 1.5.-.el7 base k
httpd-tools x86_64 2.4.-.el7.centos. updates k
mailcap noarch 2.1.-.el7 base k Transaction Summary
=======================================================================================================================================
Install Package (+ Dependent packages) Total download size: 3.0 M
Installed size: M
Background downloading packages, then exiting:
(/): apr-1.4.-.el7.x86_64.rpm | kB ::
(/): apr-util-1.5.-.el7.x86_64.rpm | kB ::
(/): mailcap-2.1.-.el7.noarch.rpm | kB ::
(/): httpd-tools-2.4.-.el7.centos..x86_64.rpm | kB ::
(/): httpd-2.4.-.el7.centos..x86_64.rpm | 2.7 MB ::
---------------------------------------------------------------------------------------------------------------------------------------
Total kB/s | 3.0 MB ::
exiting because "Download Only" specified
现在去你指定的目录位置下,你将会看到那里有下载好的软件包和依赖的软件。在我这种情况下,我已经把软件包下载到 /root/mypackages/ 目录下。让我们来查看一下内容:
ls /root/mypackages/
样本输出:
apr-1.4.-.el7.x86_64.rpm
apr-util-1.5.-.el7.x86_64.rpm
httpd-2.4.-.el7.centos..x86_64.rpm
httpd-tools-2.4.-.el7.centos..x86_64.rpm
mailcap-2.1.-.el7.noarch.rpm
正如你在上面输出所看到的, httpd软件包已经被依据所有依赖性下载完成了 。
请注意,这个插件适用于 yum install/yum update, 但是并不适用于 yum groupinstall 。默认情况下,这个插件将会下载仓库中最新可用的软件包。然而你可以通过指定版本号来下载某个特定的软件版本。
例子:
yum install --downloadonly --downloaddir=/root/mypackages/ httpd-2.2.-.el7
此外,你也可以如下一次性下载多个包:
yum install --downloadonly --downloaddir=/root/mypackages/ httpd vsftpd
0x02 使用 Yumdownloader 工具来下载 RPM 软件包及其所有依赖包
Yumdownloader是一款简单,但是却十分有用的命令行工具,它可以一次性下载任何 RPM 软件包及其所有依赖包。
以 root 身份运行如下命令安装 Yumdownloader 工具。
yum install yum-utils
一旦安装完成,运行如下命令去下载一个软件包,例如 httpd。
yumdownloader httpd
为了根据所有依赖性下载软件包,我们使用 --resolve参数:
yumdownloader --resolve httpd
默认情况下,Yumdownloader 将会下载软件包到当前工作目录下。
为了将软件下载到一个特定的目录下,我们使用 --destdir 参数:
yumdownloader --resolve --destdir=/root/mypackages/ httpd
或者
yumdownloader --resolve --destdir /root/mypackages/ httpd
终端输出:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.excellmedia.net
* epel: epel.mirror.angkasa.id
* extras: centos.excellmedia.net
* updates: centos.excellmedia.net
--> Running transaction check
---> Package httpd.x86_64 :2.4.-.el7.centos. will be installed
--> Processing Dependency: httpd-tools = 2.4.-.el7.centos. for package: httpd-2.4.-.el7.centos..x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.-.el7.centos..x86_64
--> Processing Dependency: libaprutil-.so.()(64bit) for package: httpd-2.4.-.el7.centos..x86_64
--> Processing Dependency: libapr-.so.()(64bit) for package: httpd-2.4.-.el7.centos..x86_64
--> Running transaction check
---> Package apr.x86_64 :1.4.-.el7 will be installed
---> Package apr-util.x86_64 :1.5.-.el7 will be installed
---> Package httpd-tools.x86_64 :2.4.-.el7.centos. will be installed
---> Package mailcap.noarch :2.1.-.el7 will be installed
--> Finished Dependency Resolution
(/): apr-util-1.5.-.el7.x86_64.rpm | kB ::
(/): mailcap-2.1.-.el7.noarch.rpm | kB ::
(/): apr-1.4.-.el7.x86_64.rpm | kB ::
(/): httpd-tools-2.4.-.el7.centos..x86_64.rpm | kB ::
(/): httpd-2.4.-.el7.centos..x86_64.rpm | 2.7 MB ::
让我们确认一下软件包是否被下载到我们指定的目录下。
ls /root/mypackages/
终端输出:
apr-1.4.-.el7.x86_64.rpm
apr-util-1.5.-.el7.x86_64.rpm
httpd-2.4.-.el7.centos..x86_64.rpm
httpd-tools-2.4.-.el7.centos..x86_64.rpm
mailcap-2.1.-.el7.noarch.rpm
不像 Downloadonly 插件,Yumdownload 可以下载一组相关的软件包。
yumdownloader "@Development Tools" --resolve --destdir /root/mypackages/
在我看来,我喜欢 Yumdownloader 更胜于 Yum 的 Downloadonly 插件。但是,两者都是十分简单易懂而且可以完成相同的工作。
参考
Linux学习笔记之在 CentOS 里下载 RPM 包及其所有依赖包的更多相关文章
- 如何在 CentOS 里下载 RPM 包及其所有依赖包
方法一.利用 Downloadonly 插件下载 RPM 软件包及其所有依赖包 默认情况下,这个命令将会下载并把软件包保存到 /var/cache/yum/ 的 rhel-{arch}-channel ...
- CentOS7中下载RPM及其所有的依赖包
CentOS7中下载RPM及其所有的依赖包 转载beeworkshop 最后发布于2019-09-28 07:43:40 阅读数 1096 收藏 展开 利用 Downloadonly 插件下载 RP ...
- Linux 学习笔记 5 文件的下载、压缩、解压、初步认识yum
写在前面 上节我们通过简单的几组命令,已经完全的实现了文件的移动.删除.更名.以及复制,我们最常用的基本玩法,本节将带着大家学习压缩.解压的相关步骤. Linux 学习笔记 4 创建.复制.移动.文件 ...
- Linux学习笔记(7)CRT实现windows与linux的文件上传下载
Linux学习笔记(7)CRT实现windows与linux的文件上传下载 按下Alt + p 进入SFTP模式,或者右击选项卡进入 命令介绍 help 显示该FTP提供所有的命令 lcd 改变本地上 ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- 91 Testing Linux学习笔记
91 Testing Linux学习笔记... 学习地址:91Testing 的Linux教程=====================学习网址:http://www.91testing.net/ar ...
- 20155303狄惟佳预备作业三Linux学习笔记
20155303狄惟佳预备作业三Linux学习笔记 初次接触Ubuntu系统以及Linux内核,了解了其产生的历史,从感性来讲,深深吸引我的是其中蕴含的珍贵的开源精神,以及Stallman等人对&qu ...
- Linux学习笔记-Linux系统简介
Linux学习笔记-Linux系统简介 UNIX与Linux发展史 UNIX是父亲,Linux是儿子. UNIX发行版本 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP P ...
- Linux 学习笔记 1 使用最小的系统,从分区安装系统开始
我们常用的linux系统在安装过程中大多都省略了对系统进行分区的操作,以至于后期,不了解什么是分区以及分区当中最基本的一些概念, 我们不说最细的知识,只求了解这个过程,那直接步入正题,开始第一节的学习 ...
随机推荐
- 236A
#include <stdio.h> #include <string.h> int main() { char str[150]; int arr[35]; memset(s ...
- Mongodb 基础 数据导入导出和用户管理
数据导出 导出命令使用方式 mongoexport---->csv/json使用 参数: -d 库名 -c 表名 -f field1,field2....列名 -q 查询条件 -o 导出文件名 ...
- Python 正在表达式
什么是正则表达式 正则表达式:是一组特殊的字符序列,又称为规则表达式,它能方便你检查一个字符串是否与某种模式匹配.通常用来检索和替换那些符合某些模式的文本.python中的re模块,实现了全部的正则表 ...
- fill和memset的区别
https://blog.csdn.net/xs18952904/article/details/75195412 memset只能初始化成为0或者-1,其他都要用fill来完成. #include& ...
- unity3d-游戏实战突出重围,第三天 绘制数字
实现效果: 准备资源 using UnityEngine; using System.Collections; public class hznum : MonoBehaviour { //存储图片资 ...
- 21.JQ的监听事件(点击div外面可以让它消失)
JQ的监听事件(点击div外面可以让它消失) //监听整个页面 $(document).bind("click", function() { //给需要的对象赋予事件 $(&quo ...
- mysql----------局域网数据库:如何让navicat链接局域网其他的数据库。
1.找到被链接的数据库,打开以后有一个自带的mysql数据库,打开以后下面有一个user表,把里面的第一条数据的第一个字段改成% 百分号,然后保存,重启数据库,搞定 2.如果是linux下的话,记得把 ...
- .NET 黑魔法 - asp.net core 日志系统
asp.net core 里如何记录日志呢? 这要从asp.net core的依赖注入说起,在asp.net core里的依赖注入真是无所不在,各种面向切面的接口与事件. 好吧,来点干货. 首先,我们 ...
- netCore webapi Uow实现方式
参照 http://www.cnblogs.com/GreedyL/p/7474368.html 思路: 1.创建ActionFilter拦截请求,在拦截器中注入IUOW,IUOW里面注入IDbCon ...
- springboot之session、cookie
1- 获取session的方案 session: https://blog.csdn.net/yiifaa/article/details/77542208 2- session什么时候创建? ...