导语
在使用apt-mirror工具下载ubuntu22镜像源导入内网后,apt-get update发现缺少dep11,cnf及binary-i386下的一些索引文件,导致更新失败,无法正常使用,在网上找到了两种方法来解决。
- 环境 ubuntu 22.04.1
方法1
由于apt-mirror在2017年就停止了维护更新,之后出现的ubuntu20和ubuntu22更新了仓库的索引文件,apt-mirror没有办法兼容。所以可以通过修改apt-mirror脚本来下载缺失的文件。
使用管理员权限打开*/usr/bin/apt-mirror*。
在下面代码块中注释掉$uri =~ s/^([^@]+)?@?// if $uri =~ /@/;
sub sanitise_uri {
my $uri = shift; $uri =~ s[^(\w+)://][];
#$uri =~ s/^([^@]+)?@?// if $uri =~ /@/;
$uri =~ s&:\d+/&/&; # and port information
$uri =~ s/~/\%7E/g if get_variable("_tilde");
return $uri;
}
在下面代码中插入add_url_to_download( $url . $_ . "/cnf/Commands-" . $arch . ".xz" );
add_url_to_download( $url . $_ . "/binary-" . $arch . "/Release" );
add_url_to_download( $url . $_ . "/binary-" . $arch . "/Packages.gz" );
add_url_to_download( $url . $_ . "/binary-" . $arch . "/Packages.bz2" );
add_url_to_download( $url . $_ . "/binary-" . $arch . "/Packages.xz" );
add_url_to_download( $url . $_ . "/cnf/Commands-" . $arch . ".xz" );
add_url_to_download( $url . $_ . "/i18n/Index" );
保存后退出。重新启动apt-mirror。
方法二
手动下载缺失的索引文件。
找到一个脚本,可以使用wget批量下载文件。
下面代码可以批量下载cnf文件夹下的文件包,并自动下载目录结构。
$ vi cnf.sh
#!/bin/bash
for p in "${1:-focal}"{,-{security,updates}}\
/{main,restricted,universe,multiverse};do >&2 echo "${p}"
wget -q -c -r -np -R "index.html*"\
"http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-amd64.xz"
wget -q -c -r -np -R "index.html*"\
"http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-i386.xz"
done
参考
http://t.csdn.cn/t5Buh
https://www.linuxtechi.com/setup-local-apt-repository-server-ubuntu/