fedora23新系统没网时使用以前缓存的rpm包

    xiaoxiao2025-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)