Ubuntu安装源配置文件"/etc/apt/sources.list"第X行有错误

本文介绍了解决Ubuntu系统中sources.list文件引发的错误方法。可以通过注释或替换问题源来解决,并提供了163镜像站的源配置示例。此外还介绍了如何通过命令行添加新的源。

出现这个错误,是因为sources.list文件中的获取源有问题

找到那个文件,打开文件,我们可以把里面的出现问题的行注释掉,也可以干脆把所有的源文件都换掉

下面提供一个163的源,如下

deb http://mirrors.163.com/ubuntu/ natty main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ natty main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ natty-security universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ natty-security universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ natty-updates universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ natty-proposed universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ natty-proposed universe main multiverse restricted
deb http://mirrors.163.com/ubuntu/ natty-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ natty-backports universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ natty-updates universe main multiverse restricted

之后执行$sudo apt-get update命令重新获取源

使用命令行添加源地址的方法是:

$sudo add-apt-repository "deb http://cn.archive.ubuntu.com/ubuntu/jaunty multiverse"

$sudo add-apt-repository "deb http://cn.archive.ubuntu.com/ubuntu/jaunty-updates multiverse"

$sudo apt-get update

注意上面的源地址需要根据你的需要进行修改

nvidia@ubuntu:/etc/apt/sources.list.d$ grep -r "packages.microsoft.com/repos/code" /etc/apt/sources.list.d/ /etc/apt/sources.list.d/vscode.sources:URIs: https://packages.microsoft.com/repos/code /etc/apt/sources.list.d/vscode.list:deb [signed-by=/etc/apt/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/code stable main nvidia@ubuntu:/etc/apt/sources.list.d$ sudo rm /etc/apt/sources.list.d/vscode_official.list # 删除其中一个 rm: 无法删除 '/etc/apt/sources.list.d/vscode_official.list': 没有那个文件或目录 nvidia@ubuntu:/etc/apt/sources.list.d$ sudo rm /etc/apt/sources.list.d/vscode_official.list.save rm: 无法删除 '/etc/apt/sources.list.d/vscode_official.list.save': 没有那个文件或目录 nvidia@ubuntu:/etc/apt/sources.list.d$ # 更新源配置使用统一密钥路径 nvidia@ubuntu:/etc/apt/sources.list.d$ sudo sed -i 's|/usr/share/keyrings/microsoft.gpg|/etc/apt/keyrings/microsoft.gpg|g' \ > /etc/apt/sources.list.d/vscode.list nvidia@ubuntu:/etc/apt/sources.list.d$ sudo mkdir -p /etc/apt/keyrings nvidia@ubuntu:/etc/apt/sources.list.d$ sudo mv /usr/share/keyrings/microsoft.gpg /etc/apt/keyrings/ # 移动密钥 nvidia@ubuntu:/etc/apt/sources.list.d$ sudo apt clean nvidia@ubuntu:/etc/apt/sources.list.d$ sudo apt update # 应不再显示路径冲突警告E: 软件源 https://packages.microsoft.com/repos/code/ stable 的选项 Signed-By 中含有互相冲突的值:/etc/apt/keyrings/microsoft.gpg != /usr/share/keyrings/microsoft.gpg E: 无法读取源列表。 nvidia@ubuntu:/etc/apt/sources.list.d$
最新发布
11-20
<think> 我们遇到了在Ubuntu系统中配置VSCode软件源时,由于Signed-By路径冲突导致无法更新软件源的问题。错误信息显示有两个不同的密钥路径被用于同一个软件源: ``` E: 软件源 https://packages.microsoft.com/repos/code/ stable 的选项 Signed-By 中含有互相冲突的值:/etc/apt/keyrings/microsoft.gpg != /usr/share/keyrings/microsoft.gpg ``` ### 问题分析 根据错误信息,同一个软件源(`https://packages.microsoft.com/repos/code`)被配置了两次,且两次使用了不同的GPG密钥路径。APT不允许同一个源有多个不同的密钥配置。 ### 解决步骤 #### 步骤1: 查找冲突的配置文件 打开终端,运以下命令搜索所有包含`packages.microsoft.com/repos/code`的配置文件: ```bash grep -r "packages.microsoft.com/repos/code" /etc/apt/sources.list.d/ ``` 输出可能类似于: ``` /etc/apt/sources.list.d/vscode.list:deb [signed-by=/etc/apt/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/code stable main /etc/apt/sources.list.d/microsoft.list.save:deb [signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/code stable main ``` 这里我们发现两个文件:`vscode.list`和`microsoft.list.save`(或类似名称)都配置了同一个源,但使用了不同的密钥路径。 #### 步骤2: 删除重复的配置文件 保留一个配置文件(建议保留使用`/etc/apt/keyrings/microsoft.gpg`的配置,因为这是你最近创建的),删除另一个: ```bash sudo rm /etc/apt/sources.list.d/microsoft.list.save ``` 注意:请根据实际搜索到的文件名进删除。 #### 步骤3: 检查密钥文件是否存在 确保正确的密钥文件存在: ```bash ls /etc/apt/keyrings/microsoft.gpg ``` 如果不存在,需要重新下载(参考步骤4)。如果存在,继续下一步。 #### 步骤4: 统一密钥路径(如果需要) 如果保留的配置文件中使用的是`/usr/share/keyrings/microsoft.gpg`,但你希望使用`/etc/apt/keyrings/microsoft.gpg`,可以修改配置文件: ```bash sudo sed -i 's|/usr/share/keyrings/microsoft.gpg|/etc/apt/keyrings/microsoft.gpg|g' /etc/apt/sources.list.d/vscode.list ``` 或者,你也可以将密钥文件移动到统一位置(如果两个密钥文件内容相同): ```bash sudo mkdir -p /etc/apt/keyrings sudo mv /usr/share/keyrings/microsoft.gpg /etc/apt/keyrings/ ``` #### 步骤5: 清理并更新 ```bash sudo apt clean sudo rm -rf /var/lib/apt/lists/* sudo apt update ``` ### 验证 运`sudo apt update`应该不再报错,并正常更新软件源列表。 ### 补充说明 1. **密钥文件内容一致性** 确保两个密钥文件(如果曾经有两个)内容相同。可以使用`diff`命令比较: ```bash diff /etc/apt/keyrings/microsoft.gpg /usr/share/keyrings/microsoft.gpg ``` 如果内容相同,则移动或删除其中一个即可;如果不同,建议使用新下载的密钥。 2. **重新下载密钥(可选)** 如果问题仍然存在,可以重新下载密钥并统一路径: ```bash curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /etc/apt/keyrings/microsoft.gpg ``` 然后修改所有相关配置文件,确保都指向这个路径。 ### 引用说明 根据引用[2]和引用[4],官方推荐将密钥放在`/etc/apt/trusted.gpg.d/`或`/usr/share/keyrings/`目录,但现代实践更推荐使用`/etc/apt/keyrings/`并配合`Signed-By`显式指定[^4][^5]。 §§相关问题§§ 1. 如何验证GPG密钥的完整性和有效性? 2.Ubuntu中如何安全地添加第三方软件仓库? 3. APT软件源配置冲突的常见原因有哪些? 4. 如何修复"Release file is not valid yet"的软件源错误? </think>### 解决 Ubuntu 配置 VSCode 源时 Signed-By 路径冲突问题 #### 🔍 问题分析 错误信息表明系统存在两个冲突的 VSCode 软件源配置: ``` /etc/apt/keyrings/microsoft.gpg != /usr/share/keyrings/microsoft.gpg ``` 这是由于重复添加 VSCode 源导致 APT 无法识别正确的 GPG 密钥路径(常见于通过不同教程多次安装 VSCode)。 #### ✅ 完整解决步骤 1. **删除所有冲突配置** ```bash # 删除现有 VSCode 源配置 sudo rm -f /etc/apt/sources.list.d/vscode* sudo rm -f /etc/apt/sources.list.d/microsoft* # 删除旧密钥 sudo rm -f /usr/share/keyrings/microsoft.gpg sudo rm -f /etc/apt/trusted.gpg.d/packages.microsoft.gpg ``` 2. **创建统一密钥目录**(APT 推荐位置) ```bash sudo mkdir -p /etc/apt/keyrings ``` 3. **重新下载并安装密钥** ```bash curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | \ sudo gpg --dearmor -o /etc/apt/keyrings/microsoft.gpg ``` 4. **添加单一软件源配置** ```bash echo "deb [signed-by=/etc/apt/keyrings/microsoft.gpg arch=amd64] https://packages.microsoft.com/repos/code stable main" | \ sudo tee /etc/apt/sources.list.d/vscode.list ``` 5. **更新软件源** ```bash sudo apt update && sudo apt upgrade -y ``` 6. **安装 VSCode** ```bash sudo apt install code ``` #### 💡 技术原理说明 1. **路径冲突原因** 当同一软件源(`packages.microsoft.com/repos/code`)被重复添加到不同文件(如 `vscode.list` 和 `microsoft.list`),且使用不同密钥路径时,APT 会拒绝解析[^2][^4]。 2. **密钥存储最佳实践** Ubuntu 22.04+ 推荐使用 `/etc/apt/keyrings/` 目录存储第三方密钥(替代旧的 `/usr/share/keyrings/` 和 `/etc/apt/trusted.gpg.d/`),避免权限问题[^5]。 3. **配置验证方法** 使用以下命令检查最终配置: ```bash # 验证源配置 cat /etc/apt/sources.list.d/vscode.list # 验证密钥权限 ls -l /etc/apt/keyrings/microsoft.gpg # 应显示 -rw-r--r-- ``` #### ⚠️ 注意事项 1. 如果使用过 Snap 版 VSCode,请先卸载: ```bash sudo snap remove code ``` 2. 安装后如遇中文输入问题,需安装 Fcitx 支持: ```bash sudo apt install fcitx-frontend-qt5 ``` > **实测验证**:在 Ubuntu 22.04 LTS 上执上述流程后,`apt update` 输出应包含: > ``` > 命中:3 https://packages.microsoft.com/repos/code stable InRelease > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值