首页
IT
登录
6mi
u
盘
搜
搜 索
IT
fedora23新系统没网时使用以前缓存的rpm包
fedora23新系统没网时使用以前缓存的rpm包
xiaoxiao
2025-02-18
10
#!/bin/bash # Sat Aug 13 05:43:38 EDT 2016 # 这个脚本为单一用途设计. 情况是这样的, 我在用fedora23, 我设置了使用 # 163镜象站为yum源, 但是以网站为yum源必须连网才能用, 我不是随时有网, # 我就想把163镜象站那个目录下载下来, 一个yum源应该包括两个目录, 一个repodata # 和一个Packages, repodata保存了这个源一些信息, 约106M, Packages的内容的所有 # 实际rpm包, 非常大, 这个源又是"Everything", 意思是包含了所有的包, 估计至少有 # 几十G, 不可能整个下载下来. # 我以前通过163镜象源已经安装了很多包, 这些包都保存着没有删除, 它们以缓存的身 # 份在一个目录下. 我下载了repodata, 但是repodata不能直接使用这些缓存的rpm包, # repodata只会在同目录的Packages目录下找包, 它当然找不到, 就报错. 我就想写一 # 个脚本, 对这些已缓存的包, 做一个链接在Packages下不就行了. 几千个包, 不可能 # 手动做这个工作, 必须写脚本. # 哇, 太棒了, 我终于能不连网用dnf命令了, Packages_dir='/home/fedora-23-live-mate/Packages'; repodata_dir='/home/fedora-23-live-mate/repodata'; cache_dir='/home/fedora-23-live-mate/Packages/163-2bc373219fe8a076/packages'; function ooSingle() { if [ $# == 0 ] then return 0; fi local PackageName="$1"; local PackageNameFirstChar=${PackageName:0:1}; local Package_dir2="$Packages_dir"/"$PackageNameFirstChar"; mkdir "$Package_dir2" -p 2>/dev/null; local PackageSymName="$Package_dir2"/"$PackageName"; local PackageCacheName="$cache_dir"/"$PackageName"; if [ ! -e "$PackageSymName" ] then ln -s "$PackageCacheName" "$PackageSymName"; echo "create link for $PackageName"; fi return 0; } function ooAll() { Pwd=`pwd`; cd "$cache_dir"; for x in `ls *.rpm` do ooSingle "$x"; done return 0; cd "$Pwd"; } if [ $# = 0 ] then : elif [[ ($# -eq 1) && ($1 = 'ooAll') ]] then ooAll; elif [[ ($# -eq 2) && ($1 = 'ooSingle') ]] then ooSingle "$2"; fi
转载请注明原文地址: https://ju.6miu.com/read-1296584.html
最新回复
(
0
)