文件I/O 2024.8.9

1:realloc()的使用

指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)

头文件:#include <stdlib.h> 有些编译器需要#include <malloc.h>,在TC2.0中可以使用alloc.h头文件

功能:先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回,如果空间不够,先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域(注意:原来指针是自动释放,不需要使用free),同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。

返回值:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。

注意:这里原始内存中的数据还是保持不变的。当内存不再使用时,应使用free()函数将内存块释放。

出处:realloc() 用法详解_realloc用法-优快云博客

2:尝试用fread去实现fgetc函数和fgets函数

fgetc:获取指定文件的一个字符       int fgetc(FILE *stream);

fp = fopen("file.txt","r");
   if(fp == NULL) 
   {
      perror("打开文件时发生错误");
      return(-1);
   
char my_fgetc(FILE *fp)
{
    char c;
    if (fread(&c, sizeof(char), 1, fp)!= 1) {
        return EOF;
    }
    return c;
}

void my_fputc(FILE *fp, char c)
{
    fwrite(&c, sizeof(char), 1, fp);
}

void my_fgets(char *s, FILE *fp)
{
    int i=0;
    char *buf = calloc(1024, sizeof(char));
    fread(buf,1,1024,fp);
    while(buf[i]!='\n')
    {
        i++;
    }
    strncpy(s,buf,i);
    s[i]='\0';                                           
    free(buf);
}

void my_fputs(char *s, FILE *fp)
{
    fwrite(s,1,strlen(s),fp);
    fwrite("\n",1,1,fp);
}   

root@kubevirt1910b:/etc/apt# cat sources.list # 华为开源镜像站 - Ubuntu 22.04 (jammy) arm64 源 deb https://mirrors.huaweicloud.com/ubuntu/ jammy main restricted universe multiverse deb-src https://mirrors.huaweicloud.com/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.huaweicloud.com/ubuntu/ jammy-updates main restricted universe multiverse deb-src https://mirrors.huaweicloud.com/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.huaweicloud.com/ubuntu/ jammy-backports main restricted universe multiverse deb-src https://mirrors.huaweicloud.com/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.huaweicloud.com/ubuntu/ jammy-security main restricted universe multiverse deb-src https://mirrors.huaweicloud.com/ubuntu/ jammy-security main restricted universe multiverse root@kubevirt1910b:/etc/apt# sudo sed -i &#39;s|http://mirrors.huaweicloud.com|https://mirrors.aliyun.com|g&#39; /etc/apt/sources.list root@kubevirt1910b:/etc/apt# sudo apt-get update Ign:1 https://download.docker.com/linux/ubuntu jammy InRelease Hit:2 https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial InRelease Hit:3 https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_22.04 InRelease Ign:1 https://download.docker.com/linux/ubuntu jammy InRelease Ign:1 https://download.docker.com/linux/ubuntu jammy InRelease Err:1 https://download.docker.com/linux/ubuntu jammy InRelease Could not handshake: Error in the pull function. [IP: 3.170.229.111 443] Get:4 https://mirrors.huaweicloud.com/ubuntu jammy InRelease [270 kB] Get:5 https://mirrors.huaweicloud.com/ubuntu jammy-updates InRelease [128 kB] Get:6 https://mirrors.huaweicloud.com/ubuntu jammy-backports InRelease [127 kB] Get:7 https://mirrors.huaweicloud.com/ubuntu jammy-security InRelease [129 kB] Get:8 https://mirrors.huaweicloud.com/ubuntu jammy/multiverse Sources [304 kB] Get:9 https://mirrors.huaweicloud.com/ubuntu jammy/restricted Sources [23.7 kB] Get:10 https://mirrors.huaweicloud.com/ubuntu jammy/main Sources [1,340 kB] Get:11 https://mirrors.huaweicloud.com/ubuntu jammy/universe Sources [17.8 MB] Get:12 https://mirrors.huaweicloud.com/ubuntu jammy/main amd64 Packages [1,395 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Get:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages [1,369 kB] Ign:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages Get:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages [19.6 kB] Get:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages [19.6 kB] Get:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages [19.6 kB] Get:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages [19.6 kB] Get:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages [19.6 kB] Get:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages [19.6 kB] Ign:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages Get:55 https://mirrors.huaweicloud.com/ubuntu jammy/universe arm64 Packages [13.9 MB] Get:55 https://mirrors.huaweicloud.com/ubuntu jammy/universe arm64 Packages [13.9 MB] Ign:55 https://mirrors.huaweicloud.com/ubuntu jammy/universe arm64 Packages Get:58 https://mirrors.huaweicloud.com/ubuntu jammy/multiverse arm64 Packages [184 kB] Get:58 https://mirrors.huaweicloud.com/ubuntu jammy/multiverse arm64 Packages [184 kB] Get:58 https://mirrors.huaweicloud.com/ubuntu jammy/multiverse arm64 Packages [184 kB] Ign:58 https://mirrors.huaweicloud.com/ubuntu jammy/multiverse arm64 Packages Ign:62 https://mirrors.huaweicloud.com/ubuntu jammy-updates/main arm64 Packages Ign:63 https://mirrors.huaweicloud.com/ubuntu jammy-updates/restricted arm64 Packages Get:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages [1,259 kB] Get:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages [1,259 kB] Get:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages [1,259 kB] Get:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages [1,259 kB] Get:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages [1,259 kB] Ign:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages Get:70 https://mirrors.huaweicloud.com/ubuntu jammy-updates/multiverse arm64 Packages [38.6 kB] Get:70 https://mirrors.huaweicloud.com/ubuntu jammy-updates/multiverse arm64 Packages [38.6 kB] Get:70 https://mirrors.huaweicloud.com/ubuntu jammy-updates/multiverse arm64 Packages [38.6 kB] Ign:70 https://mirrors.huaweicloud.com/ubuntu jammy-updates/multiverse arm64 Packages Ign:74 https://mirrors.huaweicloud.com/ubuntu jammy-backports/main arm64 Packages Ign:75 https://mirrors.huaweicloud.com/ubuntu jammy-backports/universe arm64 Packages Ign:76 https://mirrors.huaweicloud.com/ubuntu jammy-security/main arm64 Packages Ign:77 https://mirrors.huaweicloud.com/ubuntu jammy-security/restricted arm64 Packages Ign:78 https://mirrors.huaweicloud.com/ubuntu jammy-security/universe arm64 Packages Ign:79 https://mirrors.huaweicloud.com/ubuntu jammy-security/multiverse arm64 Packages Ign:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages Ign:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages Ign:55 https://mirrors.huaweicloud.com/ubuntu jammy/universe arm64 Packages Ign:58 https://mirrors.huaweicloud.com/ubuntu jammy/multiverse arm64 Packages Ign:62 https://mirrors.huaweicloud.com/ubuntu jammy-updates/main arm64 Packages Ign:63 https://mirrors.huaweicloud.com/ubuntu jammy-updates/restricted arm64 Packages Ign:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages Ign:70 https://mirrors.huaweicloud.com/ubuntu jammy-updates/multiverse arm64 Packages Ign:74 https://mirrors.huaweicloud.com/ubuntu jammy-backports/main arm64 Packages Ign:75 https://mirrors.huaweicloud.com/ubuntu jammy-backports/universe arm64 Packages Ign:76 https://mirrors.huaweicloud.com/ubuntu jammy-security/main arm64 Packages Ign:77 https://mirrors.huaweicloud.com/ubuntu jammy-security/restricted arm64 Packages Ign:78 https://mirrors.huaweicloud.com/ubuntu jammy-security/universe arm64 Packages Ign:79 https://mirrors.huaweicloud.com/ubuntu jammy-security/multiverse arm64 Packages Ign:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages Ign:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages Ign:55 https://mirrors.huaweicloud.com/ubuntu jammy/universe arm64 Packages Ign:58 https://mirrors.huaweicloud.com/ubuntu jammy/multiverse arm64 Packages Ign:62 https://mirrors.huaweicloud.com/ubuntu jammy-updates/main arm64 Packages Ign:63 https://mirrors.huaweicloud.com/ubuntu jammy-updates/restricted arm64 Packages Ign:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages Ign:70 https://mirrors.huaweicloud.com/ubuntu jammy-updates/multiverse arm64 Packages Ign:74 https://mirrors.huaweicloud.com/ubuntu jammy-backports/main arm64 Packages Ign:75 https://mirrors.huaweicloud.com/ubuntu jammy-backports/universe arm64 Packages Ign:76 https://mirrors.huaweicloud.com/ubuntu jammy-security/main arm64 Packages Ign:77 https://mirrors.huaweicloud.com/ubuntu jammy-security/restricted arm64 Packages Ign:78 https://mirrors.huaweicloud.com/ubuntu jammy-security/universe arm64 Packages Ign:79 https://mirrors.huaweicloud.com/ubuntu jammy-security/multiverse arm64 Packages Ign:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages Ign:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages Ign:55 https://mirrors.huaweicloud.com/ubuntu jammy/universe arm64 Packages Ign:58 https://mirrors.huaweicloud.com/ubuntu jammy/multiverse arm64 Packages Ign:62 https://mirrors.huaweicloud.com/ubuntu jammy-updates/main arm64 Packages Ign:63 https://mirrors.huaweicloud.com/ubuntu jammy-updates/restricted arm64 Packages Ign:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages Ign:70 https://mirrors.huaweicloud.com/ubuntu jammy-updates/multiverse arm64 Packages Ign:74 https://mirrors.huaweicloud.com/ubuntu jammy-backports/main arm64 Packages Ign:75 https://mirrors.huaweicloud.com/ubuntu jammy-backports/universe arm64 Packages Ign:76 https://mirrors.huaweicloud.com/ubuntu jammy-security/main arm64 Packages Ign:77 https://mirrors.huaweicloud.com/ubuntu jammy-security/restricted arm64 Packages Ign:78 https://mirrors.huaweicloud.com/ubuntu jammy-security/universe arm64 Packages Ign:79 https://mirrors.huaweicloud.com/ubuntu jammy-security/multiverse arm64 Packages Ign:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages Ign:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages Ign:55 https://mirrors.huaweicloud.com/ubuntu jammy/universe arm64 Packages Ign:58 https://mirrors.huaweicloud.com/ubuntu jammy/multiverse arm64 Packages Ign:62 https://mirrors.huaweicloud.com/ubuntu jammy-updates/main arm64 Packages Ign:63 https://mirrors.huaweicloud.com/ubuntu jammy-updates/restricted arm64 Packages Ign:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages Ign:70 https://mirrors.huaweicloud.com/ubuntu jammy-updates/multiverse arm64 Packages Ign:74 https://mirrors.huaweicloud.com/ubuntu jammy-backports/main arm64 Packages Ign:75 https://mirrors.huaweicloud.com/ubuntu jammy-backports/universe arm64 Packages Ign:76 https://mirrors.huaweicloud.com/ubuntu jammy-security/main arm64 Packages Ign:77 https://mirrors.huaweicloud.com/ubuntu jammy-security/restricted arm64 Packages Ign:78 https://mirrors.huaweicloud.com/ubuntu jammy-security/universe arm64 Packages Ign:79 https://mirrors.huaweicloud.com/ubuntu jammy-security/multiverse arm64 Packages Err:13 https://mirrors.huaweicloud.com/ubuntu jammy/main arm64 Packages 404 Not Found [IP: 124.70.61.162 443] Ign:48 https://mirrors.huaweicloud.com/ubuntu jammy/restricted arm64 Packages Ign:55 https://mirrors.huaweicloud.com/ubuntu jammy/universe arm64 Packages Ign:58 https://mirrors.huaweicloud.com/ubuntu jammy/multiverse arm64 Packages Err:62 https://mirrors.huaweicloud.com/ubuntu jammy-updates/main arm64 Packages 404 Not Found [IP: 124.70.61.162 443] Ign:63 https://mirrors.huaweicloud.com/ubuntu jammy-updates/restricted arm64 Packages Ign:64 https://mirrors.huaweicloud.com/ubuntu jammy-updates/universe arm64 Packages Ign:70 https://mirrors.huaweicloud.com/ubuntu jammy-updates/multiverse arm64 Packages Err:74 https://mirrors.huaweicloud.com/ubuntu jammy-backports/main arm64 Packages 404 Not Found [IP: 124.70.61.162 443] Ign:75 https://mirrors.huaweicloud.com/ubuntu jammy-backports/universe arm64 Packages Err:76 https://mirrors.huaweicloud.com/ubuntu jammy-security/main arm64 Packages 404 Not Found [IP: 124.70.61.162 443] Ign:77 https://mirrors.huaweicloud.com/ubuntu jammy-security/restricted arm64 Packages Ign:78 https://mirrors.huaweicloud.com/ubuntu jammy-security/universe arm64 Packages Ign:79 https://mirrors.huaweicloud.com/ubuntu jammy-security/multiverse arm64 Packages Reading package lists... Done W: Failed to fetch https://download.docker.com/linux/ubuntu/dists/jammy/InRelease Could not handshake: Error in the pull function. [IP: 3.170.229.111 443] E: Failed to fetch https://mirrors.huaweicloud.com/ubuntu/dists/jammy/main/binary-arm64/Packages 404 Not Found [IP: 124.70.61.162 443] E: Failed to fetch https://mirrors.huaweicloud.com/ubuntu/dists/jammy-updates/main/binary-arm64/Packages 404 Not Found [IP: 124.70.61.162 443] E: Failed to fetch https://mirrors.huaweicloud.com/ubuntu/dists/jammy-backports/main/binary-arm64/Packages 404 Not Found [IP: 124.70.61.162 443] E: Failed to fetch https://mirrors.huaweicloud.com/ubuntu/dists/jammy-security/main/binary-arm64/Packages 404 Not Found [IP: 124.70.61.162 443] W: Some index files failed to download. They have been ignored, or old ones used instead. 下载ubuntu默认源
11-04
<think>我们面对的问题是: 1. 在运行`sudo apt-get update`时,无法从`https://download.docker.com/linux/ubuntu`获取InRelease文件(可能是SSL证书问题或网络问题)。 2. 从`https://mirrors.huaweicloud.com/ubuntu`获取arm64软件包时出现404错误。 3. 用户还希望恢复Ubuntu默认源。 根据引用中的信息: - 引用[1]提到了阿里云镜像源出现`Unable to find expected entry`错误,这通常是因为软件源配置中指定的路径不正确。 - 引用[2]指出Docker源的证书验证失败,即SSL证书问题。 - 引用[3]则展示了将官方源替换为国内源(如中科大源)来解决连接问题。 因此,我们可以采取以下步骤: ### 步骤1:修复Docker源的SSL问题(或替换为国内镜像) 由于直接访问Docker官方源可能存在证书问题,我们可以尝试两种方法: - 方法A:修复证书(如果只是临时证书问题,可以更新证书) - 方法B:将Docker源替换为国内镜像(如阿里云) 这里我们采用方法B,因为国内镜像通常速度更快且稳定。 ### 步骤2:修复华为镜像源的404错误 404错误表明该镜像源上可能没有arm64架构的软件包,或者路径发生了变化。我们可以更换为其他支持arm64的国内镜像源(如阿里云、清华源、中科大源)。 ### 步骤3:恢复Ubuntu默认源(如果需要) 用户提到“下载Ubuntu默认源”,我们可以将`sources.list`文件恢复为Ubuntu官方源,但考虑到国内访问官方源可能较慢,建议使用国内镜像源。如果用户坚持使用官方源,我们也可以恢复。 ### 具体操作步骤: #### 1. 备份当前的源列表 ```bash sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo cp /etc/apt/sources.list.d/* /etc/apt/sources.list.d.bak/ # 备份sources.list.d目录下的所有文件 ``` #### 2. 修复Docker源的问题 首先,我们检查Docker源的配置。通常Docker源的配置文件在`/etc/apt/sources.list.d/docker.list`。我们可以将其内容替换为阿里云的Docker镜像源。 编辑(或创建)Docker源配置文件: ```bash sudo nano /etc/apt/sources.list.d/docker.list ``` 将文件内容替换为: ``` deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable ``` 注意:这里假设系统是Ubuntu 22.04 (Jammy Jellyfish),并且是amd64架构。如果是arm64,则将`[arch=amd64]`改为`[arch=arm64]`。 如果用户不需要Docker源,也可以暂时注释掉该文件中的内容,或者删除该文件。 #### 3. 更换Ubuntu主源为国内镜像(解决华为镜像404问题) 编辑`sources.list`文件: ```bash sudo nano /etc/apt/sources.list ``` 将文件内容替换为阿里云镜像源(以Ubuntu 22.04为例): ``` deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse ``` 或者,如果用户希望使用官方源,则替换为: ``` deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse ``` 但请注意,官方源在国内访问可能较慢。 #### 4. 更新软件包列表 完成上述修改后,运行: ```bash sudo apt-get update ``` ### 其他可能的问题处理 - 如果更新过程中仍然出现证书错误,可以尝试安装ca-certificates: ```bash sudo apt-get install --reinstall ca-certificates ``` - 如果更新过程中出现GPG密钥错误,可以添加对应的密钥。例如,对于Docker,可以运行: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - ``` ### 总结 通过以上步骤,应该能够解决: 1. Docker源无法访问的问题(通过更换为阿里云镜像) 2. 华为镜像源arm64软件包404问题(通过更换整个Ubuntu源为阿里云镜像) 3. 恢复默认源(如果用户选择官方源) ### 相关问题 §§相关问题§§ 1. 如何选择适合的Linux软件镜像源? 2. 如何解决apt-get update过程中的GPG密钥错误? 3. Ubuntu不同版本(如20.04, 22.04)的镜像源配置有什么区别? 4. 如何为特定架构(如arm64)配置软件源? </think>### 解决 Ubuntu apt-get update 错误与源配置问题 我将逐步解决以下问题: 1. Docker 官方源无法获取 InRelease 文件(证书错误) 2. 华为镜像源 arm64 软件包 404 错误 3. 恢复 Ubuntu 默认源配置 --- #### **步骤 1:修复 Docker 源证书错误** ```bash # 更新 CA 证书 sudo apt-get install --reinstall ca-certificates # 添加 Docker 官方 GPG 密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 修改 Docker 源配置 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list ``` **原理**:证书错误通常因 CA 证书过期导致,重新安装证书并验证 GPG 签名可解决[^2]。 --- #### **步骤 2:解决 ARM64 软件包 404 错误** ```bash # 备份当前源配置 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 恢复 Ubuntu 官方默认源 sudo tee /etc/apt/sources.list << &#39;EOF&#39; deb http://archive.ubuntu.com/ubuntu $(lsb_release -cs) main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu $(lsb_release -cs)-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu $(lsb_release -cs)-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu $(lsb_release -cs)-security main restricted universe multiverse EOF ``` **说明**:华为镜像可能缺少特定架构包,恢复官方源确保完整性[^3]。 --- #### **步骤 3:完整修复验证** ```bash # 更新软件源 sudo apt-get update -o Acquire::https::Verify-Peer=false # 临时忽略证书验证 # 安装必要组件 sudo apt-get install -y apt-transport-https ca-certificates # 最终更新验证 sudo apt-get update ``` **预期输出**: ``` Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease Hit:2 https://download.docker.com/linux/ubuntu jammy InRelease ... Reading package lists... Done ``` --- #### **步骤 4:国内用户加速方案(可选)** 如需国内镜像,推荐清华源: ```bash sudo sed -i &#39;s|http://archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g&#39; /etc/apt/sources.list sudo sed -i &#39;s|http://security.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g&#39; /etc/apt/sources.list ``` --- ### **关键点解析** 1. **证书错误根源** SSL/TLS 握手失败常因: - 系统时间不正确(运行 `sudo date -s "2024-06-15 12:00:00"` 校准) - 根证书过期(通过 `ca-certificates` 包更新) 2. **ARM64 支持问题** 官方源提供完整的多架构支持: ``` $ grep ARCH /etc/apt/sources.list deb [arch=amd64,arm64] http://ports.ubuntu.com jammy main ``` 3. **源配置优先级** `/etc/apt/sources.list.d/` 目录下的配置优先于主配置文件,需同步检查[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值