Python生成ubuntu apt鏡像地址實現
1. 目的
每次新配置 Ubuntu 系統(tǒng),免不了配置 apt 源。盡管可以通過 GUI 界面進行選擇,但自動化程度不夠,不同桌面(Unity/Gnome/KDE)下的界面也不太一樣; 使用 vim 進行替換足夠 Geek,卻也免不了查詢每個 ubuntu 發(fā)行版的名稱。使用 Pyhon 可以實現 apt 鏡像配置文件的生成, 輸入可選的參數(鏡像站點、ubuntu發(fā)行版本等),即可自動生成配置文件 sources.list
. 本文給出代碼實現。
2. 設計
- 定義一個函數,根據輸入的發(fā)行版數字(例如22.04),返回對應的字符串名稱
- 定義一個函數,根據給定的站點名稱(如ustc),給出站點的完整路徑
- 可以選擇是否開啟 ipv6, 是否用 https, 并且給與默認值
3. 實現
首先觀察鏡像站點給出的配置文件內容:
可以看到,不同發(fā)行版僅僅是名稱不一樣,配置文件結構是相同的。因此
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), '# 預發(fā)布軟件源,不建議啟用', '# 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鏡像內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python還能這么玩之只用30行代碼從excel提取個人值班表
公司實行項目值班制度,拿到值班表,看到全部的值班信息,要去查找自己的值班信息,是一件頭痛的事情.作為程序員,當然要簡化,將自己的信息提煉出來,需要的朋友可以參考下2021-06-06在Python3 numpy中mean和average的區(qū)別詳解
今天小編就為大家分享一篇在Python3 numpy中mean和average的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Python使用Selenium與pytest進行高效測試的示例詳解
隨著軟件開發(fā)的快速發(fā)展,自動化測試成為了提高開發(fā)效率、降低錯誤率的重要工具,Python作為一種高效且易于使用的編程語言,已經成為自動化測試領域的重要工具之一,本文將介紹如何使用Python、Selenium和pytest進行自動化測試,并展示一個簡單的自動化測試示例2025-01-01