Python: 生成ubuntu apt镜像地址

该文介绍了一个用Python编写的脚本,用于根据用户输入的Ubuntu发行版号和镜像站点自动生成apt源的配置文件sources.list。脚本包含了获取发行版名称、站点路径的功能,并支持HTTPS和IPv6的选择。调用示例为配置ustc镜像源的22.04版本。
摘要由CSDN通过智能技术生成


在这里插入图片描述

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/
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UbuntuPython 和 Docker 都是非常流行的技术栈组件,在软件开发中有着广泛的应用。如果你想在一个 Docker 容器中运行基于 UbuntuPython 应用,首先你需要做的就是下载对应的 Docker 镜像。 1. **Docker 镜像基础**:Docker 提供了一个庞大的官方仓库(Docker Hub),其中包含了各种预构建的基础镜像,如 Ubuntu 的官方镜像(`ubuntu`)和 Python 的基础镜像(例如 `python:latest`, `python:3.x` 等)。你可以通过命令行访问这些镜像。 示例: ``` docker pull ubuntu # 下载最新版的 Ubuntu 镜像 docker pull python # 或者下载 Python 镜像 ``` 2. **安装 Python**:如果你需要的是包含 Python镜像,可以直接拉取,因为很多基础镜像已经预装了不同版本的 Python。如果镜像中没有安装特定版本的 Python,可以在容器启动时或 Dockerfile 中添加安装步骤。 3. **自定义镜像**:如果你想要创建一个定制化的镜像,可以从官方镜像开始,并添加额外的 Python 包或其他配置。可以通过 Dockerfile 来定义这个过程,文件里会列出一系列命令来安装所需软件。 ```dockerfile # 使用官方的 Ubuntu 基础镜像 FROM ubuntu # 更新系统并安装 Python RUN apt-get update && apt-get install -y python3 # 添加你的 Python 库或代码 COPY your_python_code /app # 设置环境变量等其他配置 CMD ["python", "/app/main.py"] ``` 然后,运行 `docker build -t my-python-app .` 来构建你的镜像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值