我有时会遇到一个问题,我只想搜索或安装一个小包,而我的互联网连接非常有限(例如:国外偏远地区的移动数据)。更像是紧急情况,我不介意使用缓存的存储库内容;上一次更新应该是一两个星期前。然而dnf
坚持下载几 MB 的元数据,这需要永远并且我不想要,今天早些时候发生了我只是因为这个而无法完成一个简单的搜索操作。我尝试离线运行该命令,但如果元数据不是最新的,它会拒绝运行。是否有强制命令使用旧数据的选项,或配置条目来更改它被视为有效的时间段?
nhe*_*hed 10
我知道这个问题有点旧(这个选项可能是新的)但这对我有用:
-C, --cacheonly
Run entirely from system cache, don't update the cache and use it even in case it is expired.
Run Code Online (Sandbox Code Playgroud)
所以dnf -C install ...
为我工作
ps 在我的情况下,我正在安装我在其他地方下载并通过运动鞋网传输的 RPM,因为我的网络被破坏,我不想dnf
通过直接安装rpm
可执行文件来破坏
如果您查看各种 dnf 和 yum 存储库配置文件,您应该会发现几个明确的元数据到期时间,例如:
/etc/yum.repos.d/fedora-updates.repo
metadata_expire=6h
/etc/dnf/dnf.conf
metadata_expire=86400
Run Code Online (Sandbox Code Playgroud)
您可以在dnf
命令行上使用覆盖这些--setopt=
,但您必须为每个启用的存储库以及 dnf 主配置显式执行此操作。所以你最终会得到类似的东西
sudo dnf --setopt=metadata_expire=-1 \
--setopt=fedora.metadata_expire=-1 \
--setopt=fedora-update.metadata_expire=-1 \
--setopt=rpmfusion-free.metadata_expire=-1 \
search abcdef
Run Code Online (Sandbox Code Playgroud)
请注意使用 sudo 以避免 dnf 为用户创建单独的缓存。