Python生成ubuntu apt镜像地址实现

 更新时间:2023年05月17日 10:49:26   作者:baiyu33  
本文主要介绍了Python生成ubuntu apt镜像地址实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1. 目的

每次新配置 Ubuntu 系统,免不了配置 apt 源。尽管可以通过 GUI 界面进行选择,但自动化程度不够,不同桌面(Unity/Gnome/KDE)下的界面也不太一样; 使用 vim 进行替换足够 Geek,却也免不了查询每个 ubuntu 发行版的名称。使用 Pyhon 可以实现 apt 镜像配置文件的生成, 输入可选的参数(镜像站点、ubuntu发行版本等),即可自动生成配置文件 sources.list. 本文给出代码实现。

2. 设计

  • 定义一个函数,根据输入的发行版数字(例如22.04),返回对应的字符串名称
  • 定义一个函数,根据给定的站点名称(如ustc),给出站点的完整路径
  • 可以选择是否开启 ipv6, 是否用 https, 并且给与默认值

3. 实现

首先观察镜像站点给出的配置文件内容:

可以看到,不同发行版仅仅是名称不一样,配置文件结构是相同的。因此

def get_ubuntu_distro_name_by_number_str(distro_num_str):
    dist_mp = {
        '12.04': 'precise',
        '14.04': 'trusty',
        '16.04': 'xenial',
        '16.10': 'yakkety',
        '17.04': 'zesty',
        '17.10': 'artful',
        '18.04': 'bionic',
        '20.04': 'focal',
        '20.10': 'groovy',
        '21.04': 'hirsute',
        '21.10': 'impish',
        '22.04': 'jammy',
        '22.10': 'kinetic',
        '23.04': 'lunar',
        '23.10': 'mantic'
    }
    return dist_mp[distro_num_str]

然后是不同的镜像站点,路径略有差别:

def get_site_location_by_name(site_name : str):
    site_mp = {
        'ustc':     'mirrors.ustc.edu.cn',
        'aliyun':   'mirrors.aliyun.com',
        'tuna':     'mirrors.tuna.tsinghua.edu.cn',
        '163':      'mirrors.163.com',
        'zju':      'mirrors.zju.edu.cn',
        'huawei':   'mirrors.huaweicloud.com',
        'lzu':      'mirror.lzu.edu.cn',
        'sjtu':     'mirrors.sjtug.sjtu.edu.cn'
    }
    return site_mp[site_name]

接下来是拼接生成配置文件:

def get_mirror_site(distro_num_str='22.04', site_name='aliyun', https=True, ipv6=False):
    protocal = 'https' if https else 'http'
    ipv6_part = 'ipv6' if ipv6 else ''
    location = get_site_location_by_name(site_name)
    # e.g. https://mirrors.ustc.edu.cn
    site_url = "{:s}://{:s}{:s}".format(protocal, ipv6_part, location)
    distro = get_ubuntu_distro_name_by_number_str(distro_num_str)
    mirror_url_lst = [
        '# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释',
        'deb {:s}/ubuntu/ {:s} main restricted universe multiverse'.format(site_url, distro),
        '# deb-src {:s}/ubuntu/ {:s} main restricted universe multiverse'.format(site_url, distro),
        'deb {:s}/ubuntu/ {:s}-updates main restricted universe multiverse'.format(site_url, distro),
        '# deb-src {:s}/ubuntu/ {:s}-updates main restricted universe multiverse'.format(site_url, distro),
        'deb {:s}/ubuntu/ {:s}-backports main restricted universe multiverse'.format(site_url, distro),
        '# deb-src {:s}/ubuntu/ {:s}-backports main restricted universe multiverse'.format(site_url, distro),
        'deb {:s}/ubuntu/ {:s}-security main restricted universe multiverse'.format(site_url, distro),
        '# deb-src {:s}/ubuntu/ {:s}-security main restricted universe multiverse'.format(site_url, distro),
        '# 预发布软件源,不建议启用',
        '# deb {:s}/ubuntu/ {:s}-proposed main restricted universe multiverse'.format(site_url, distro),
        '# deb-src {:s}/ubuntu/ {:s}-proposed main restricted universe multiverse'.format(site_url, distro)
    ]
    for mirror_url in mirror_url_lst:
        print(mirror_url)

4. 调用

以 ustc, ubuntu 22.04 为例,使用时只需要一句话:

if __name__ == '__main__':
    get_mirror_site(distro_num_str='22.04', site_name='ustc')

5. 参考

参考了科大 ustc lug 镜像站点的 repogen 这一网页:https://mirrors.ustc.edu.cn/repogen/

到此这篇关于Python生成ubuntu apt镜像地址实现的文章就介绍到这了,更多相关Python生成ubuntu apt镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python拆分Word文档的四种实用技巧分享

    Python拆分Word文档的四种实用技巧分享

    在日常文档处理中,将大型 Word 文档拆分为多个独立文件是一项常见的需求,拆分文档可以带来许多好处,这篇文章将介绍使用Python将Word文档拆分为多个文档的四种不同方式,需要的朋友可以参考下
    2025-02-02
  • Python还能这么玩之只用30行代码从excel提取个人值班表

    Python还能这么玩之只用30行代码从excel提取个人值班表

    公司实行项目值班制度,拿到值班表,看到全部的值班信息,要去查找自己的值班信息,是一件头痛的事情.作为程序员,当然要简化,将自己的信息提炼出来,需要的朋友可以参考下
    2021-06-06
  • Python中运维神器Psutil的用法详解

    Python中运维神器Psutil的用法详解

    Python的开源库psutil为我们提供了一个强大的工具,能够轻松获取和分析系统利用率的信息,下面就跟随小编一起深入了解一下它的具体使用吧
    2025-02-02
  • Pygame transform模块入门介绍

    Pygame transform模块入门介绍

    pygame.transform模块允许您对加载、创建后的图像进行一系列操作,比如调整图像大小、旋转图片等操作,感兴趣的可以了解一下
    2022-08-08
  • 在Python3 numpy中mean和average的区别详解

    在Python3 numpy中mean和average的区别详解

    今天小编就为大家分享一篇在Python3 numpy中mean和average的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python数据处理和数据清洗的示例详解

    python数据处理和数据清洗的示例详解

    数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等,数据清洗与处理的目的是提高数据的质量,提高实验结果的可靠度,本文给大家介绍了python数据处理和数据清洗的示例,需要的朋友可以参考下
    2024-08-08
  • 一行Python3代码实现解析地址信息

    一行Python3代码实现解析地址信息

    在日常数据处理的过程中,有时候拿到手的是完整的地址信息,如果需要从地址信息中解析出相应的各级行政单元名称,方式有很多,而今天要介绍的方式只需要一行代码即可快速实现,快跟随小编一起学习一下吧
    2022-05-05
  • Python使用Selenium与pytest进行高效测试的示例详解

    Python使用Selenium与pytest进行高效测试的示例详解

    随着软件开发的快速发展,自动化测试成为了提高开发效率、降低错误率的重要工具,Python作为一种高效且易于使用的编程语言,已经成为自动化测试领域的重要工具之一,本文将介绍如何使用Python、Selenium和pytest进行自动化测试,并展示一个简单的自动化测试示例
    2025-01-01
  • Python tkinter实现计算器功能

    Python tkinter实现计算器功能

    这篇文章主要为大家详细介绍了Python tkinter实现计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Python使用pip安装pySerial串口通讯模块

    Python使用pip安装pySerial串口通讯模块

    这篇文章主要为大家详细介绍了Python使用pip安装pySerial串口通讯模块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04

最新评论