我有时会遇到一个问题,我只想搜索或安装一个小软件包,并且我的互联网连接非常有限(例如:国外偏远地区的移动数据)。由于更多的是紧急情况,我不介意使用缓存的存储库内容;上次更新是在一两周前。但dnf
坚持下载几 MB 的元数据,这需要很长时间,而且我不想要,今天早些时候,我刚刚无法完成一个简单的任务搜索操作因此。我尝试离线运行该命令,但如果元数据不是最新的,它将拒绝运行。是否有一个选项强制命令使用旧数据,或者有一个配置条目来更改其被认为有效的时间段?
答案1
我知道这个问题有点老了(这个选项可能是新的)但这对我有用:
-C, --cacheonly
Run entirely from system cache, don't update the cache and use it even in case it is expired.
所以dnf -C install ...
为我工作
ps 在我的例子中,我正在安装在其他地方下载并通过sneakernet传输的RPM,因为我的网络已损坏,并且我不想dnf
通过直接使用rpm
可执行文件安装来破坏
答案2
如果您查看各种 dnf 和 yum repo 配置文件,您应该会发现几个明确的元数据到期时间,例如:
/etc/yum.repos.d/fedora-updates.repo
metadata_expire=6h
/etc/dnf/dnf.conf
metadata_expire=86400
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
请注意使用 sudo 以避免 dnf 为用户创建单独的缓存。
答案3
这不是暂时的,但它是可逆的。
sudo zypper modifyrepo --no-refresh --all
或者
sudo zypper modifyrepo --no-refresh --remote
当您有多余的数据时,您可以手动刷新
sudo zypper refresh
使用 GUI 时,这也会关闭存储库的刷新。
您还可以使用 YAST 中的“存储库”选项在 GUI 中控制它们,但这将进行刷新,除非在首次启动时已关闭。