Ubuntu16.04使用sudo add-apt-repository时报错:aptsources.distro.NoDistroTemplateException

使用sudo add-apt-repository 时候,系统报错:

Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 96, in <module>
    sp = SoftwareProperties(options=options)
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 114, in __init__
    self.reload_sourceslist()
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 607, in reload_sourceslist
    self.distro.get_sources(self.sourceslist)    
  File "/usr/lib/python3/dist-packages/aptsources/distro.py", line 89, in get_sources
    (self.id, self.codename))
aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for Kylin/kylin

原因:
我装了ukylin优麒麟系统的软件(ukylin-wine和ukylin-wechat),导致Ubuntu的系统配置lsb-release文件被修改了。而且系统设置中的software&updates都打不开了!
可以看到/etc/lsb-release文件的内容变成了这样:

DISTRIB_ID=Kylin
DISTRIB_RELEASE=V10
DISTRIB_CODENAME=kylin
DISTRIB_DESCRIPTION="Kylin V10 SP1"
DISTRIB_KYLIN_RELEASE=V10
DISTRIB_VERSION_TYPE=enterprise
DISTRIB_VERSION_MODE=normal

解决方法:
修改/etc/lsb-release里面的内容:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.5 LTS"

注: 具体的发型号是16.04的那个版本我忘了,随便写个16.04.5吧。

参考:

  1. Ubuntu安装软件时报错:aptsources.distro.NoDistroTemplateException: Error:Could not find a distribution templ
  2. Ubuntu18.04.5 LTS 安装优麒麟应用商店的坑
<think>好的,我现在需要帮助用户解决GPG公钥不可用的问题,并配置APT安全更新。首先,我得回忆一下相关的知识,看看用户提到的具体错误信息和已有的引用内容。用户提到需要添加缺失的GPG公钥599F576057BDF67C,修复NO_PUBKEY错误。根据引用[2],用户之前可能遇到过类似的问题,并且通过使用apt-key命令从keyserver.ubuntu.com获取公钥来解决。不过,现在Ubuntu 22.04及更高版本已经弃用了apt-key,所以需要改用其他方法。 首先,我需要确认正确的步骤。用户当前的情况是缺少公钥,导致APT无法验证软件包的签名,因此需要手动添加这个公钥。根据引用[2]中的例子,之前的做法是使用sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 密钥号。但根据最新的Ubuntu文档,现在推荐将公钥直接添加到/etc/apt/trusted.gpg.d/目录中,而不是使用apt-key add,因为后者已被弃用。 所以,正确的步骤应该是使用gpg命令将公钥导出并保存到指定目录。例如,用户需要执行以下步骤: 1.Ubuntu密钥服务器获取公钥: sudo gpg --homedir /tmp --no-default-keyring --keyring /etc/apt/trusted.gpg.d/599F576057BDF67C.gpg --keyserver keyserver.ubuntu.com --recv-keys 599F576057BDF67C 这里,--homedir指定临目录,避免影响现有配置;--no-default-keyring确保不使用默认密钥环;--keyring指定保存路径,以密钥ID命名,方便管理。 2. 更新APT仓库缓存: sudo apt update 这样应该就能解决NO_PUBKEY的问题了。 另外,用户还想配置APT安全更新。这可以通过设置自动安全更新来实现,使用unattended-upgrades工具: 1. 安装unattended-upgrades: sudo apt install unattended-upgrades 2. 启用自动安全更新配置: sudo dpkg-reconfigure --priority=low unattended-upgrades 在配置过程中选择“是”即可启用自动安装安全更新。 需要注意的是,对于较旧的Ubuntu版本(如16.04之前),可能仍需要使用apt-key命令,但用户现在使用的应该是较新的版本,所以推荐使用新的方法。同,确保密钥服务器可用,如果默认服务器有问题,可以尝试更换其他服务器,比如hkp://keyserver.ubuntu.com:80。 最后,还要验证步骤是否正确,比如执行命令后是否不再报错apt update是否成功,以及自动更新是否配置正确。如果用户遇到问题,可能需要检查命令中的密钥ID是否正确,或者是否有网络问题连接密钥服务器。 总结一下,步骤分为添加公钥和配置自动更新两部分。确保使用最新的方法,避免使用已弃用的apt-key,并且指导用户正确执行命令。同,根据引用中的例子,用户可能已经尝试过类似的方法,但需要调整以适应新的系统要求。</think>### 解决方案:添加缺失的GPG公钥并配置APT安全更新 #### 一、添加缺失的GPG公钥 1. **通过gpg命令直接添加** ```bash sudo gpg --homedir /tmp --no-default-keyring \ --keyring /etc/apt/trusted.gpg.d/599F576057BDF67C.gpg \ --keyserver keyserver.ubuntu.com \ --recv-keys 599F576057BDF67C ``` - `--homedir /tmp`:指定临目录避免污染系统配置 - `--keyring`:将公钥保存到系统信任目录,命名格式为`[密钥ID].gpg`[^2][^3] - 若密钥服务器无法连接,可尝试替换为`hkp://keyserver.ubuntu.com:80` 2. **更新APT缓存** ```bash sudo apt update ``` #### 二、配置APT安全更新 1. **安装自动更新工具** ```bash sudo apt install unattended-upgrades ``` 2. **启用安全更新** ```bash sudo dpkg-reconfigure --priority=low unattended-upgrades ``` 在交互界面中选择`Yes`启用自动安全更新[^4]。 3. **验证配置** 检查配置文件`/etc/apt/apt.conf.d/50unattended-upgrades`,确保包含以下内容: ```text Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; }; ``` #### 三、补充说明 - **旧系统兼容方案**:Ubuntu 16.04之前可使用弃用方法(不推荐): ```bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 599F576057BDF67C ``` - **密钥验证**:通过`apt-key list`可查看已安装的公钥列表[^1]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值