Python生成ubuntu apt鏡像地址實(shí)現(xiàn)
1. 目的
每次新配置 Ubuntu 系統(tǒng),免不了配置 apt 源。盡管可以通過 GUI 界面進(jìn)行選擇,但自動(dòng)化程度不夠,不同桌面(Unity/Gnome/KDE)下的界面也不太一樣; 使用 vim 進(jìn)行替換足夠 Geek,卻也免不了查詢每個(gè) ubuntu 發(fā)行版的名稱。使用 Pyhon 可以實(shí)現(xiàn) apt 鏡像配置文件的生成, 輸入可選的參數(shù)(鏡像站點(diǎn)、ubuntu發(fā)行版本等),即可自動(dòng)生成配置文件 sources.list
. 本文給出代碼實(shí)現(xiàn)。
2. 設(shè)計(jì)
- 定義一個(gè)函數(shù),根據(jù)輸入的發(fā)行版數(shù)字(例如22.04),返回對(duì)應(yīng)的字符串名稱
- 定義一個(gè)函數(shù),根據(jù)給定的站點(diǎn)名稱(如ustc),給出站點(diǎn)的完整路徑
- 可以選擇是否開啟 ipv6, 是否用 https, 并且給與默認(rèn)值
3. 實(shí)現(xiàn)
首先觀察鏡像站點(diǎn)給出的配置文件內(nèi)容:
可以看到,不同發(fā)行版僅僅是名稱不一樣,配置文件結(jié)構(gòu)是相同的。因此
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]
然后是不同的鏡像站點(diǎn),路徑略有差別:
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]
接下來(lái)是拼接生成配置文件:
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 = [ '# 默認(rèn)注釋了源碼鏡像以提高 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), '# 預(yù)發(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. 調(diào)用
以 ustc, ubuntu 22.04 為例,使用時(shí)只需要一句話:
if __name__ == '__main__': get_mirror_site(distro_num_str='22.04', site_name='ustc')
5. 參考
參考了科大 ustc lug 鏡像站點(diǎn)的 repogen 這一網(wǎng)頁(yè):https://mirrors.ustc.edu.cn/repogen/
到此這篇關(guān)于Python生成ubuntu apt鏡像地址實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python生成ubuntu apt鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python設(shè)置代理和添加鏡像源的方法
- Python永久配置國(guó)內(nèi)鏡像源安裝再也不用擔(dān)心卡頓
- Python-pip配置國(guó)內(nèi)鏡像源的安裝方式
- pip/anaconda修改鏡像源,加快python模塊安裝速度的操作
- Python二叉樹的鏡像轉(zhuǎn)換實(shí)現(xiàn)方法示例
- Python 腳本拉取 Docker 鏡像問題
- Python實(shí)現(xiàn)Harbor私有鏡像倉(cāng)庫(kù)垃圾自動(dòng)化清理詳情
- Python selenium的安裝和下載谷歌瀏覽器鏡像驅(qū)動(dòng)
- Python Web項(xiàng)目Cherrypy使用方法鏡像
相關(guān)文章
Python還能這么玩之只用30行代碼從excel提取個(gè)人值班表
公司實(shí)行項(xiàng)目值班制度,拿到值班表,看到全部的值班信息,要去查找自己的值班信息,是一件頭痛的事情.作為程序員,當(dāng)然要簡(jiǎn)化,將自己的信息提煉出來(lái),需要的朋友可以參考下2021-06-06在Python3 numpy中mean和average的區(qū)別詳解
今天小編就為大家分享一篇在Python3 numpy中mean和average的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-08-08python數(shù)據(jù)處理和數(shù)據(jù)清洗的示例詳解
數(shù)據(jù)清洗是指發(fā)現(xiàn)并糾正數(shù)據(jù)文件中可識(shí)別的錯(cuò)誤的最后一道程序,包括檢查數(shù)據(jù)一致性,處理無(wú)效值和缺失值等,數(shù)據(jù)清洗與處理的目的是提高數(shù)據(jù)的質(zhì)量,提高實(shí)驗(yàn)結(jié)果的可靠度,本文給大家介紹了python數(shù)據(jù)處理和數(shù)據(jù)清洗的示例,需要的朋友可以參考下2024-08-08一行Python3代碼實(shí)現(xiàn)解析地址信息
在日常數(shù)據(jù)處理的過程中,有時(shí)候拿到手的是完整的地址信息,如果需要從地址信息中解析出相應(yīng)的各級(jí)行政單元名稱,方式有很多,而今天要介紹的方式只需要一行代碼即可快速實(shí)現(xiàn),快跟隨小編一起學(xué)習(xí)一下吧2022-05-05Python使用Selenium與pytest進(jìn)行高效測(cè)試的示例詳解
隨著軟件開發(fā)的快速發(fā)展,自動(dòng)化測(cè)試成為了提高開發(fā)效率、降低錯(cuò)誤率的重要工具,Python作為一種高效且易于使用的編程語(yǔ)言,已經(jīng)成為自動(dòng)化測(cè)試領(lǐng)域的重要工具之一,本文將介紹如何使用Python、Selenium和pytest進(jìn)行自動(dòng)化測(cè)試,并展示一個(gè)簡(jiǎn)單的自動(dòng)化測(cè)試示例2025-01-01Python?tkinter實(shí)現(xiàn)計(jì)算器功能
這篇文章主要為大家詳細(xì)介紹了Python?tkinter實(shí)現(xiàn)計(jì)算器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01