OpenStack學(xué)習(xí)筆記(一):建立本地yum源

獲取yum的安裝包

不管是安裝openstack還是相關(guān)的組件毅访,都常用yum命令來下載白群,而默認(rèn)的yum源經(jīng)常是指向國(guó)外的網(wǎng)站,下載速度都不會(huì)太快签钩,這時(shí)候有兩個(gè)選擇:

  • 更改repo文件掏呼,使其指向國(guó)內(nèi)的yum源
  • 更改repo文件,使其指向本地的yum源

本文主要講述的是第二種铅檩,即更改repo文件憎夷,使其指向本地的yum源。

系統(tǒng)環(huán)境

  • windows 10操作系統(tǒng)
  • python3.5.2
    (主要用到lxml昧旨,requests拾给,os三個(gè)包,如果lxml無法安裝兔沃,也可以用BeautifulSoup或者正則代替)
  • wget1.5.1
  • centos7

使用本地yum源主要分為以下幾步:

  • 在windows上下載所需的RPM包
  • 將RPM包上傳到centos7的虛擬機(jī)
  • 使用createrepo創(chuàng)建索引
  • 修改repo文件使其指向本地文件

在windows上下載所需的RPM包

在下載RPM包的時(shí)候選擇的是國(guó)內(nèi)的開源鏡像站阿里云和網(wǎng)易云鸣戴,下載過程中主要分為兩步:
  • 生成鏈接文件
  • 使用wget下載文件中的鏈接
之所以使用wget是開始看到wget有一個(gè)參數(shù)-r可以遞歸下載,可是在windows系統(tǒng)上試驗(yàn)時(shí)候發(fā)現(xiàn)只能下載html文件粘拾,不能下載整個(gè)目錄,查資料和試驗(yàn)后決定先寫一個(gè)簡(jiǎn)單的爬蟲爬取鏡像站RPM包的地址创千,生成一個(gè)text文件缰雇,然后使用wget的-i選項(xiàng)來下載相應(yīng)的文件,python腳本如下:
    from lxml import etree
    import requests
    import os
    
    
    class wget_list(object):
        def __init__(self,url):
            self.url_b=url
            self.response = requests.get(self.url_b)
            self.response.encoding = 'utf-8'
            self.html = etree.HTML(self.response.text)
            self.url_list=[]
            self.comd_b='wget -nc -P '
        def get_child_url(self):
            self.tmp = self.html.xpath('////@href')
            for i in self.tmp:
                self.url_list.append(self.url_b+i.text)
            return self.url_list
        def write_url_list(self,file_dict,url_w):
            f = open(file_dict, 'a')
            for i in url_w:
                f.write(i)
                f.write('\n')
            f.close()
        def wget_url(self,file_dict,file_name):
            comd=self.comd_b+file_dict+' '+file_name
            os.system(comd)
            
    url='http://mirrors.aliyun.com/epel/7/x86_64/'
    file_dict='F:\wget\epel'
    file_name='F:\wget\epel.txt'
    t=wget_list(url)
    lu=t.get_child_url()
    
    for i in lu:
        wmt=wget_list(i)
        li2=wmt.get_child_url()
        wmt.write_url_list(file_name,li2)
    
    t.wget_url(file_dict,file_name)
主要思想是先爬取網(wǎng)頁追驴,分析網(wǎng)頁后拿到網(wǎng)頁上面的全部鏈接械哟,然后將鏈接寫入txt文件,最后調(diào)用wget命令下載列表中的文件殿雪。
以epel為例暇咆,阿里云上分為了多個(gè)文件夾,每個(gè)文件夾里面又有很多的rpm文件,總共10000+個(gè)文件爸业,如果一個(gè)一個(gè)下載幾乎不可能其骄,但是可以通過爬蟲獲取鏈接,然后批量下載扯旷。下面解釋下代碼部分拯爽。
    class wget_list(object):
        def __init__(self,url):
            self.url_b=url
            self.response = requests.get(self.url_b)
            self.response.encoding = 'utf-8'
            self.html = etree.HTML(self.response.text)
            self.url_list=[]
            self.comd_b='wget -nc -P '

以上部分初始化,通過傳入的url鏈接生成etree钧忽,并初始化相關(guān)變量毯炮。

        def get_child_url(self):
            self.tmp = self.html.xpath('//a')
            for i in self.tmp:
                self.url_list.append(self.url_b+i.text)

get_child_url這個(gè)方法是獲取子鏈接,通過之前生成的etree來通過xpath進(jìn)行解析耸黑,通過分析頁面發(fā)現(xiàn)子鏈接都是a標(biāo)簽桃煎,所以可以通過下面這xpath獲取所有的子鏈接,再將子鏈接寫入到url_list這個(gè)變量里大刊。

        def write_url_list(self,file_dict,url_w):
            f = open(file_dict, 'a')
            for i in url_w:
                f.write(i)
                f.write('\n')

write_url_list這個(gè)方法是將傳入的url列表追加寫入到txt文件为迈,主要用于保存構(gòu)造的下載鏈接。

        def wget_url(self,file_dict,file_name):
            comd=self.comd_b+file_dict+' '+file_name
            os.system(comd)

wget_url這個(gè)方法則是根據(jù)傳入的文件和目錄奈揍,文件內(nèi)的url下載到目錄下曲尸。

創(chuàng)建repo文件

創(chuàng)建repo文件主要可以分為以下幾步:

  • 下載安裝createrepo
  • 上傳RPM包
  • 執(zhí)行createrepo命令

下載安裝createrepo包

獲取了rpm安裝包之后可以在linux環(huán)境下使用createrepo命令來創(chuàng)建索引,之后使用yum命令就可以直接安裝男翰,而使用createrepo命令需要先下載createrepo包另患,這個(gè)包可以直接使用系統(tǒng)盤來安裝,過程如下:

  • 掛載光盤到指定目錄
  • 修改repo文件
  • 直接使用yum命令下載
    掛載光盤到指定目錄可以直接使用以下mount命令蛾绎,這樣子就可以將光盤的內(nèi)容掛載到指定目錄了
    mount -o loop /dev/cdrom /mnt/cdrom/
    備份并新增repo文件:
    cd /etc/yum.repos.d/
    rename .repo .repo.bak *
    vi local.repo
    然后在新增的repo文件輸入如下命令:
    [base]
    name=base
    baseurl=file:///mnt/cdrom
    gpgcheck=0
    enable=1
    因?yàn)閥um命令會(huì)判斷/etc/yum.repos.d目錄下的后綴為repo的文件信息進(jìn)行下載安裝昆箕,所以先將原repo文件重命名備份,然后新增一個(gè)后綴為repo的文件即可租冠。
    文件內(nèi)容第一行鹏倘、第二行僅僅指代庫的名稱,可以任意填寫顽爹,但中括號(hào)內(nèi)的必須唯一纤泵,第三行指yum源的repodata文件夾坐在目錄,后面的兩項(xiàng)指的是不需要驗(yàn)證镜粤,且該內(nèi)容有效捏题。
    最后通過以下命令來下載安裝createrepo包。
    yum install createrepo

上傳RPM包

以在鏡像站下載的openstack-liberty為例子肉渴,在進(jìn)行簡(jiǎn)單的IP配置之后公荧,可以通過相關(guān)工具將文件上傳到指定目錄,比較常用的有secureCRT自帶secureFX來將下載的openstack-liberty上傳到centos的目錄下同规。

createrepo命令

createrepo is a program that creates a repomd (xml-based rpm metadata) repository from a set of rpms.

根據(jù)命令介紹循狰,craterepo是一個(gè)創(chuàng)建RPM包的倉庫索引的程序窟社,常用的主要有-p -o -d

-d --database
Generate sqlite databases for use with yum. This is now the default.
-p --pretty
Output xml files in pretty format.
-o --outputdir <url>
Optional output directory (useful for read only media).

-d指使用sqlite數(shù)據(jù)庫使用yum,這個(gè)是默認(rèn)選項(xiàng)绪钥;
-p指的是用漂亮的個(gè)數(shù)輸出xml文件
-o指的是輸出目錄灿里,選項(xiàng)后必須接目錄
現(xiàn)在可以使用以下命令來創(chuàng)建repodata文件

    createrepo -p  -d -o /var/ftp/openstack-liberty /var/ftp/openstack-liberty

由執(zhí)行命令后的截圖可以看到生成了一個(gè)repodata文件夾,文件夾下面有一個(gè)repomd.xml文件和其他文件昧识,這里就是倉庫的索引文件钠四,同理用命令對(duì)其他的RPM包也創(chuàng)建repo文件。


配置yum源

配置本機(jī)yum源

配置本機(jī)yum源跪楞,只需要按照之前的步驟缀去,執(zhí)行以下命令修改repo文件即可,修改后的文件如圖所示:

vi /etc/yum.repos.d/local.repo 

圖中顯示repo文件包含了3個(gè)包甸祭,base缕碎,openstack-liberty和epel,其中base是光盤自帶的基礎(chǔ)包池户,openstack-liberty是從開源鏡像站下載的rpm包咏雌,epel是centos的一些擴(kuò)展應(yīng)用包,基本能解決大部分軟件的安裝問題校焦∩薅叮可以通過以下命令驗(yàn)證是否配置成功,運(yùn)行結(jié)果如圖所示寨典,可以看到存在base氛雪,epel,openstack-liberty三個(gè)包:

yum clean all
yum list

這里配置本機(jī)yum源完成耸成。

配置FTP服務(wù)器

配置好本機(jī)yum源后报亩,為了不必再其他機(jī)器上面也上傳文件等一系列操作,可以直接建立一個(gè)ftp服務(wù)器井氢,然后其他機(jī)器可以直接配置repo文件指向該目錄弦追,具體步驟如下:

  • 安裝vsftpd
    yum install vsftpd
  • 啟動(dòng)ftp服務(wù)并設(shè)置為自啟動(dòng)
    systemctl restart vsftpd.service
    systemctl enable vsftpd.service
  • 修改配置文件指定ftp的目錄,在最后一行添加一句anon_root=/var/ftp/來指定ftp目錄花竞,之后可以登錄本機(jī)FTP站點(diǎn)驗(yàn)證劲件。
    vi /etc/vsftpd/vsftpd.conf
  • 關(guān)閉防火墻
    systemctl stop firewalld.service
    systemctl disable firewalld.service
  • 清空iptables
    iptables -Z
    iptables -F
    iptables -X

修改repo文件

在另一臺(tái)機(jī)上面?zhèn)浞輗epo文件,然后修改repo文件如下:

  cd /etc/yum.repos.d/       
  rename .repo .repo.bak *
  vi local.repo

在另一臺(tái)機(jī)執(zhí)行命令约急,進(jìn)行測(cè)試寇仓,發(fā)現(xiàn)可以正常使用,至此烤宙,本地yum配置完成。

yum clean all
yum list

遇過的問題:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市薇缅,隨后出現(xiàn)的幾起案子危彩,更是在濱河造成了極大的恐慌,老刑警劉巖泳桦,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汤徽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡灸撰,警方通過查閱死者的電腦和手機(jī)谒府,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浮毯,“玉大人完疫,你說我怎么就攤上這事≌叮” “怎么了壳鹤?”我有些...
    開封第一講書人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)惦蚊。 經(jīng)常有香客問我器虾,道長(zhǎng),這世上最難降的妖魔是什么蹦锋? 我笑而不...
    開封第一講書人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任兆沙,我火速辦了婚禮,結(jié)果婚禮上莉掂,老公的妹妹穿的比我還像新娘葛圃。我一直安慰自己,他們只是感情好憎妙,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開白布库正。 她就那樣靜靜地躺著,像睡著了一般厘唾。 火紅的嫁衣襯著肌膚如雪褥符。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評(píng)論 1 308
  • 那天抚垃,我揣著相機(jī)與錄音喷楣,去河邊找鬼趟大。 笑死,一個(gè)胖子當(dāng)著我的面吹牛铣焊,可吹牛的內(nèi)容都是我干的逊朽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼曲伊,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼叽讳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起坟募,我...
    開封第一講書人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤岛蚤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后婿屹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體灭美,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年昂利,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了届腐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜂奸,死狀恐怖犁苏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扩所,我是刑警寧澤围详,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站祖屏,受9級(jí)特大地震影響助赞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜袁勺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一雹食、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧期丰,春花似錦群叶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至埠通,卻和暖如春赎离,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背端辱。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工梁剔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留圾浅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓憾朴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親喷鸽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子众雷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • http://blog.csdn.net/mathewsking/article/details/8211273 ...
    liuboxx1閱讀 6,071評(píng)論 1 1
  • Yellow dog Updater(Yum)是CentOS所有版本的默認(rèn)包管理器,yum主要功能是更方便的添加/...
    maxwell2ic閱讀 16,560評(píng)論 7 26
  • 今天6點(diǎn)二十多起來吃藥做祝,剛出來娃就醒了砾省,讓我給穿衣服。我吃了藥給穿上衣服梳好辮子混槐,早飯吃了半個(gè)韭菜煎包编兄,喝了一碗粥...
    圈_圈_閱讀 127評(píng)論 0 0
  • 下班,散步声登,回家狠鸳。周遭川行的車流,恰恰給了自己小心翼翼的保護(hù)意識(shí)。一個(gè)人的時(shí)候,總是能得以更多的望向自己念脯。 低頭瞥...
    沄間一杯茶閱讀 424評(píng)論 0 0
  • 你触徐,是否曾有一個(gè)花藝夢(mèng)想 街角的陽光房,暖暖的冬日午后省有,喝著咖啡,打理花材,只等懂的人出現(xiàn)…… 或是偶然临梗,許是注定...
    愛在云雨閱讀 730評(píng)論 0 0