在线获取所有依赖rpm包的方法

在线,获取,所有,依赖,rpm,方法 · 浏览次数 : 450

小编点评

**步骤:** 1. **获取软件包 URL:** 使用 `yum repolist` 命令列出所有可下载的软件包。 2. **选择下载方法:** 根据软件包类型选择合适的下载方法。例如,对于 RPM 包,可以使用 `yumdownloader ansible --resolve` 命令。 3. **下载软件包:** 使用 `repotrack fio --forcearch ARCH` 命令下载软件包。`ARCH` 代表要下载的架构。 4. **安装软件包:** 使用 `yum install -r` 命令安装软件包。 5. **清理临时文件:** 使用 `yum clean` 命令清理临时文件。 **示例:** ```bash # 获取软件包 URL repo_urls=$(yum repolist | grep -E "(.+)\/(.+)" | head -n 3) # 选择下载方法 method="yumdownloader ansible --resolve" # 下载软件包 ${method} --source "$repo_urls" # 安装软件包 yum install -r package.rpm ``` **其他提示:** * 使用 `--verbose` 参数可以详细显示软件包的下载进度。 * 使用 `--errorlog` 参数可以记录下载过程中遇到的错误。 * 使用 `--exclude` 参数可以排除特定软件包。 * 使用 `--noarch` 参数可以下载特定的架构。

正文

背景

现在经常有一些不能上网的LInux机器但是需要安装一些软件.
但是有时候经常因为有依赖关系找不到的情况比较麻烦. 
或者是一些公司的网络总是受限,网络速度非常慢.
下载安装非常折磨人. 
这个时候就需要从能够上网的机器拉取 rpm包进行处理.
但是此时经常有两个问题.
1. 拉取的架构可能不兼容.
2. 拉取的rpm包可能用来关系不完整
基于此, 需要寻找一下解决方案.

常用解决方案

最常用的下载方式有:
yum --downloadonly --downloaddir
yumdownloader xxx 
如果需要解决依赖关系可能需要使用
yumdownloader ansible --resolve
但是这一个好像有一点不太一样的地方. 跟已经安装的软件多少有关系
可能会下载不完整. 
还需要注意需要使用这个工具:
yum  install yum-utils -y

repotrack的解决方案

首先可以查看是什么软件带这个命令:
yum provides repotrack
可以发现:
centos7的是 yum-utils*
centos8的是 dnf-plugins-core*
如果需要可以安装着两个软件 再进行处理. 

查看帮助

最近学习过程中发现自己最大的缺点是动不动就想搜索解决问题.
其实最快最好的解决问题的方法是查看帮助 man 或者是 -h

通过快速查看帮助文档可以快速解决问题.

常用命令

mkdir -p /fio/x86_64
mkdir -p /fio/aarch64
cd  /fio/x86_64
repotrack fio --forcearch x86_64
cd  /fio/aarch64   
repotrack fio --forcearch aarch64
注意如果默认的repo没有可能无法下载. 

还可以指定repo

下载常用的repo

我这边还是放到了 /etc/yum.repos.d/下面
然后进行了一些简单处理. 

可以使用 yum repolist 查看具体的repo
然后使用如下命令获取部分下载路径. 

repotrack fio --repoid AppStream --forcearch x86_64 --urls 

注意 在银河麒麟上面他的releasever 的版本是 10 与 CentOS是不一样的. 
需要单独处理
sed -i 's/$releasever/8.5.2111/g' Centos-8.repo

但是银河麒麟依旧有一些与CentOS8的冲突没有解决掉. 
建议还是找一个能上外网的同发行版的机器进行验证. 

附件查看帮助

[root@gscloud-app-kunpeng-arm ansible_x86_64]# repotrack -h
usage: dnf download [-c [config file]] [-q] [-v] [--version]
                    [--installroot [path]] [--nodocs] [--noplugins]
                    [--enableplugin [plugin]] [--disableplugin [plugin]]
                    [--releasever RELEASEVER] [--setopt SETOPTS]
                    [--skip-broken] [-h] [--allowerasing] [-b | --nobest] [-C]
                    [-R [minutes]] [-d [debug level]] [--debugsolver]
                    [--showduplicates] [-e ERRORLEVEL] [--obsoletes]
                    [--rpmverbosity [debug level name]] [-y] [--assumeno]
                    [--enablerepo [repo]] [--disablerepo [repo] | --repo
                    [repo]] [--enable | --disable] [-x [package]]
                    [--disableexcludes [repo]] [--repofrompath [repo,path]]
                    [--noautoremove] [--nogpgcheck] [--color COLOR]
                    [--refresh] [-4] [-6] [--destdir DESTDIR] [--downloadonly]
                    [--comment COMMENT] [--bugfix] [--enhancement]
                    [--newpackage] [--security] [--advisory ADVISORY]
                    [--bz BUGZILLA] [--cve CVES]
                    [--sec-severity {Critical,Important,Moderate,Low}]
                    [--forcearch ARCH] [--source] [--debuginfo]
                    [--debugsource] [--arch [arch]] [--resolve] [--alldeps]
                    [--url] [--urlprotocols {http,https,rsync,ftp}]
                    packages [packages ...]

下载软件包至当前目录

General DNF options:
  -c [config file], --config [config file]
                        config file location
  -q, --quiet           quiet operation
  -v, --verbose         verbose operation
  --version             show DNF version and exit
  --installroot [path]  set install root
  --nodocs              do not install documentations
  --noplugins           disable all plugins
  --enableplugin [plugin]
                        enable plugins by name
  --disableplugin [plugin]
                        disable plugins by name
  --releasever RELEASEVER
                        override the value of $releasever in config and repo
                        files
  --setopt SETOPTS      set arbitrary config and repo options
  --skip-broken         resolve depsolve problems by skipping packages
  -h, --help, --help-cmd
                        show command help
  --allowerasing        allow erasing of installed packages to resolve
                        dependencies
  -b, --best            try the best available package versions in
                        transactions.
  --nobest              do not limit the transaction to the best candidate
  -C, --cacheonly       run entirely from system cache, don't update cache
  -R [minutes], --randomwait [minutes]
                        maximum command wait time
  -d [debug level], --debuglevel [debug level]
                        debugging output level
  --debugsolver         dumps detailed solving results into files
  --showduplicates      show duplicates, in repos, in list/search commands
  -e ERRORLEVEL, --errorlevel ERRORLEVEL
                        error output level
  --obsoletes           enables dnf's obsoletes processing logic for upgrade
                        or display capabilities that the package obsoletes for
                        info, list and repoquery
  --rpmverbosity [debug level name]
                        debugging output level for rpm
  -y, --assumeyes       automatically answer yes for all questions
  --assumeno            automatically answer no for all questions
  --enablerepo [repo]   Enable additional repositories. List option. Supports
                        globs, can be specified multiple times.
  --disablerepo [repo]  Disable repositories. List option. Supports globs, can
                        be specified multiple times.
  --repo [repo], --repoid [repo]
                        enable just specific repositories by an id or a glob,
                        can be specified multiple times
  --enable, --set-enabled
                        enable repos with config-manager command
                        (automatically saves)
  --disable, --set-disabled
                        disable repos with config-manager command
                        (automatically saves)
  -x [package], --exclude [package], --excludepkgs [package]
                        exclude packages by name or glob
  --disableexcludes [repo], --disableexcludepkgs [repo]
                        disable excludepkgs
  --repofrompath [repo,path]
                        label and path to an additional repository to use
                        (same path as in a baseurl), can be specified multiple
                        times.
  --noautoremove        disable removal of dependencies that are no longer
                        used
  --nogpgcheck          disable gpg signature checking (if RPM policy allows)
  --color COLOR         control whether color is used
  --refresh             set metadata as expired before running the command
  -4                    resolve to IPv4 addresses only
  -6                    resolve to IPv6 addresses only
  --destdir DESTDIR, --downloaddir DESTDIR
                        set directory to copy packages to
  --downloadonly        only download packages
  --comment COMMENT     add a comment to transaction
  --bugfix              Include bugfix relevant packages, in updates
  --enhancement         Include enhancement relevant packages, in updates
  --newpackage          Include newpackage relevant packages, in updates
  --security            Include security relevant packages, in updates
  --advisory ADVISORY, --advisories ADVISORY
                        Include packages needed to fix the given advisory, in
                        updates
  --bz BUGZILLA, --bzs BUGZILLA
                        Include packages needed to fix the given BZ, in
                        updates
  --cve CVES, --cves CVES
                        Include packages needed to fix the given CVE, in
                        updates
  --sec-severity {Critical,Important,Moderate,Low}, --secseverity {Critical,Important,Moderate,Low}
                        Include security relevant packages matching the
                        severity, in updates
  --forcearch ARCH      Force the use of an architecture

Download command-specific options:
  --source              取而代之下载源代码软件包 src.rpm
  --debuginfo           取而代之下载 -debuginfo 软件包
  --debugsource         download the -debugsource package instead
  --arch [arch], --archlist [arch]
                        限定查询指定架构的软件包
  --resolve             解析并下载所需的依赖关系
  --alldeps             when running with --resolve, download all dependencies
                        (do not exclude already installed ones)
  --url, --urls         打印 rpm 可被下载的 url 列表而不是直接下载
  --urlprotocols {http,https,rsync,ftp}
                        当执行时带有 --url 参数,则限制使用指定协议

  packages              将要下载的软件包

与在线获取所有依赖rpm包的方法相似的内容:

在线获取所有依赖rpm包的方法

背景 现在经常有一些不能上网的LInux机器但是需要安装一些软件. 但是有时候经常因为有依赖关系找不到的情况比较麻烦. 或者是一些公司的网络总是受限,网络速度非常慢. 下载安装非常折磨人. 这个时候就需要从能够上网的机器拉取 rpm包进行处理. 但是此时经常有两个问题. 1. 拉取的架构可能不兼容.

[转帖]什么是CDN?CDN的工作原理是怎样的?

1.什么是CDN? CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术

驱动开发:取进程模块的函数地址

在笔者上一篇文章`《驱动开发:内核取应用层模块基地址》`中简单为大家介绍了如何通过遍历`PLIST_ENTRY32`链表的方式获取到`32位`应用程序中特定模块的基地址,由于是入门系列所以并没有封装实现太过于通用的获取函数,本章将继续延申这个话题,并依次实现通用版`GetUserModuleBaseAddress()`取远程进程中指定模块的基址和`GetModuleExportAddress()`

[转帖]《Linux性能优化实战》笔记(24)—— 动态追踪 DTrace

使用 perf 对系统内核线程进行分析时,内核线程依然还在正常运行中,所以这种方法也被称为动态追踪技术。动态追踪技术通过探针机制来采集内核或者应用程序的运行信息,从而可以不用修改内核和应用程序的代码就获得丰富的信息,帮你分析、定位想要排查的问题。 以往,在排查和调试性能问题时,我们往往需要先为应用程

(1)semantic-kernel入门课程

(1)semantic-kernel入门课程 获取OpenAI在线API 由于在国内的限制,我们并没有办法直接访问OpenAI,所以下面的教程我们会推荐使用https://api.token-ai.cn,然后您需要在这个网站中注册一个账号,并且创建一个令牌(最好是设置无限额度和无过期时间),创建好的

时隔3个月,Uber 再遭数据泄露...

在今年9月,Uber 就发生过一起数据泄露事件,尽管黑客并无意发动大规模攻击或以此来获取巨额利益,但其成功获取对 Uber 所有敏感服务的完全管理员访问权限仍令人后怕。而在上周,名为“UberLeak”的用户又在黑客论坛上公开了一个600Mb 的存档文件,其中包含来自 Uber 系统的2000万条数

CH57x/CH58x/CH59x获取从机广播信息

有时需要通过主机设备(MCU非手机)获取从设备的广播信息例如广播包,MAC地址,扫描应答包等 以下的程序片段及功能实现是在WCH的CH59X的observer例程上实现的; 1、获取广播包 所有的函数在库函数中都可以找到,具体实现函数如下: case GAP_DEVICE_INFO_EVENT: {

Spring源码:Bean生命周期(四)

在本文中,我们深入探讨了 Spring 框架中 Bean 的实例化过程,关于某些细节以后我会单独拿出一篇文章单独讲解,我们来总结下实例化都做了哪些事情:先从bean定义中加载当前类,因为最初Spring使用ASM技术解析元数据时只获取了当前类的名称寻找所有InstantiationAwareBeanPostProcessors实现类,并调用实例化前的方法postProcessBeforeInsta

如何获取 C#程序 内核态线程栈

## 一:背景 ### 1. 讲故事 在这么多的案例分析中,往往会发现一些案例是卡死在线程的内核态栈上,但拿过来的dump都是用户态模式下,所以无法看到内核态栈,这就比较麻烦,需要让朋友通过其他方式生成一个蓝屏的dump,这里我们简单汇总下。 ## 二:如何生成内核态dump ### 1. 案例代码

js脚本化css

脚本化CSS 我们刚讲过如何获取和设置行内样式的值,但是我们开发不会所有样式都写在行内,同时js没法获取内嵌样式表和外部样式表中的值. 事实上DOM提供了可靠的API,得到计算后的样式。 1. 获取计算样式表 只读,不可写 获取的值是计算后的绝对值,不是相对值 window.getComputedS