配置本地yum源

配置本地系統鏡像yum源

掛載系統鏡像html

# mount -o loop /opt/CentOS-6.6-x86_64-bin-DVD1.iso /mnt
# cd /mnt
# ls
CentOS_BuildTag  EULA  images    Packages                  repodata              RPM-GPG-KEY-CentOS-Debug-6     RPM-GPG-KEY-CentOS-Testing-6
EFI              GPL   isolinux  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Security-6  TRANS.TBL

查看yum源配置文件 ---若機器未聯網,能夠將默認的其它配置文件移動到其它目錄python

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

[local-yum]
name=local-yum
baseurl=file:///mnt/Packages/
enabled=1
gpgcheck=0

須要執行命令生成repomd.xmllinux

# createrepo /mnt/Packages/
-bash: createrepo: command not found

說明未安裝createrepo ios

進入軟件包目錄,直接手動先安裝createrepogit

# cd /mnt/Packages/
# rpm -ivh createrepo-0.9.9-22.el6.noarch.rpm

warning: createrepo-0.9.9-22.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
error: Failed dependencies:

        python-deltarpm is needed by createrepo-0.9.9-22.el6.noarch

發現缺乏依賴包,只能手動先安裝依賴包web

# rpm -ivh python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm 

warning: python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
error: Failed dependencies:

        deltarpm = 3.5-0.5.20090913git.el6 is needed by python-deltarpm-3.5-0.5.20090913git.el6.x86_64

# rpm -ivh deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm 

warning: deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]

   1:deltarpm               ########################################### [100%] 

# rpm -ivh python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm
warning: python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:python-deltarpm        ########################################### [100%]
# rpm -ivh createrepo-0.9.9-22.el6.noarch.rpm
warning: createrepo-0.9.9-22.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:createrepo             ########################################### [100%]

 

createrepo 命令安裝完成後,再次執行sql

# createrepo /mnt/Packages/
Directory /mnt/Packages/ must be writable.

從iso鏡像裏掛載出來的始終是可讀的,更改iso的權限都不行,因而把/mnt/Packages/ copy到/opt/Packages,修改local-yumcentos

[local-yum]
name=local-yum
baseurl=file:///opt/Packages/
enabled=1
gpgcheck=0緩存

從新執行bash

# createrepo /opt/Packages/

Spawning worker 0 with 4184 pkgs
Workers Finished
Gathering worker results

Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

終於成功了:

# yum clean all
Loaded plugins: fastestmirror, security
Cleaning repos: local-yum
Cleaning up Everything
Cleaning up list of fastest mirrors
[root@hadoop001 mnt]# yum makecache
Loaded plugins: fastestmirror, security
Determining fastest mirrors
local-yum                                                                                                                                        | 2.9 kB     00:00 ...
local-yum/filelists_db                                                                                                                           | 4.4 MB     00:00 ...
local-yum/primary_db                                                                                                                             | 3.4 MB     00:00 ...
local-yum/other_db                                                                                                                               | 1.9 MB     00:00 ...
Metadata Cache Created

# yum list |wc -l
4203

至此,本地yum源配置成功!


注意:以上方法中的createrepo主要適用於本身將一類軟件包製做成本地源,如ceph軟件包,openstack軟件包等等。

若是將系統鏡像iso裏面的軟件包拷貝出來作成本地yum源可能會出現一些問題:如centos6.6系統中 yum grouplist沒法正常列出yum組。

最好的辦法,也是最簡單的辦法是:

系統鏡像掛載在哪一個目錄下,就直接使用那個目錄做爲鏡像源

# df -h
/dev/loop1               4.4G  4.4G     0 100% /var/www/html/Centos6.6/1

[root@client yum.repos.d]# cat local-6.6.repo 
[local_6.6]
name=local_6.6
baseurl=ftp:/var/www/html/Centos6.6/1/
enabled=1
gpgcheck=0

 

配置局域網yum源

有兩種方式

方式一:ftp方式

 一、服務器端設置vsftpd服務

# yum install vsftpd

# service vsftpd status

# service vsftpd start

# chkconfig vsftpd on

修改vsftpd 服務被登陸以後的默認登錄位置 .

vsftp的匿名用戶爲 linux系統的ftp 用戶.

能夠修改/etc/passwd ,將ftp用戶的 home目錄, 這裏我設置成爲了根目錄 .

# cat /etc/passwd |grep ftp

ftp:x:14:50:FTP User:/:/sbin/nologin

2.修改ftp iptables中的權限.

/etc/sysconfig/iptables-config 中修改模塊,多個模塊用空格鍵位隔開

IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"

/etc/sysconfig/iptables 找到

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

這一句, 並在它上方添加下面一句限制局域網權限 .

-A INPUT -m tcp -p tcp -s 192.168.80.0/24 --dport 21 -j ACCEPT

若是不須要開啓防火牆,就直接關閉便可 .

3.客戶端的yum源設置
 

# vi /etc/yum.repos.d/nagios1.repo

[nagios1]

name=nagios1

baseurl=ftp://192.168.80.131/tmp/Packages/

enabled=1

gpgcheck=0

客戶端測試時候可使用服務器端 yum
 

# yum clean all

# yum list |wc -l

 

方式二:http方式

一、服務器端啓動httpd服務

###centos6.x系統中
# yum install httpd
# service httpd start
# chkconfig httpd on
###centos7.x系統中
# systemctl enable httpd
# systemctl start httpd

二、服務端掛載系統鏡像

# cd /var/www/html/ 
# mkdir Centos6.6
# cd Centos6.6
# mkdir 1
# mount -o loop /data/iso/CentOS-6.6-x86_64-bin-DVD1.iso 1

打開web頁面是能夠查看的

http://192.168.8.212/Centos6.6/1

三、客戶端yum源配置

# cd /etc/yum.repos.d
# cat local-6.6.repo 
[local_6.6]
name=local_6.6
#baseurl=ftp://192.168.8.212/var/www/html/Centos6.6/1/  註釋部分爲ftp方式,用來對比
baseurl=http://192.168.8.212/Centos6.6/1/
enabled=1
gpgcheck=0
[root@client yum.repos.d]# yum makecache
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
local_6.6                                                           | 4.0 kB     00:00     
Metadata Cache Created
[root@client yum.repos.d]# yum list |wc -l
6557

備註:

配置文件中的enabled=1參數表示啓用該yum源,若不啓動將1改成0

yum配置文件參數含義

$ cat /etc/yum.conf
[main]
cachedir=/var/cache/yum     #yum下載的RPM包的緩存目錄
keepcache=0         #緩存是否保存,1保存,0不保存。
debuglevel=2         #調試級別(0-10),默認爲2(具體調試級別的應用,我也不瞭解)。
logfile=/var/log/yum.log     #yum的日誌文件所在的位置
exactarch=1         #在更新的時候,是否容許更新不一樣版本的RPM包,好比是否在i386上更新i686的RPM包。
obsoletes=1         #這是一個update的參數,具體請參閱yum(8),簡單的說就是至關於upgrade,容許更新陳舊的RPM包。
gpgcheck=1         #是否檢查GPG(GNU Private Guard),一種密鑰方式簽名。
plugins=1         #是否容許使用插件,默認是0不容許,可是咱們通常會用yum-fastestmirror這個插件。
installonly_limit=3     #容許保留多少個內核包。
exclude=selinux*     #屏蔽不想更新的RPM包,可用通配符,多個RPM包之間使用空格分離。

備註:

通常想要保留本身下載的rpm包,主要是網絡版源中的一類rpm包,能夠將/etc/yum.conf中的keepcache=0參數修改成keepcache=1

而後在/var/cache/yum 找到本身須要的rpm包,整合起來就能夠作出本身的離線yum源了。

 

將Centos6.6系統的ISO1和ISO2鏡像軟件包整合到一塊兒

一般咱們只使用CentOS-6.6-x86_64-bin-DVD1.iso的軟件包,可是偶爾仍是會用到DVD2中的軟件,同時yum list能夠查出,可是直接yum install會報錯,並且若是再把DVD2作成yum源也很麻煩,因此爲了省事,直接把DVD1和2的軟件包整合起來。

具體作法以下:

一、將DVD1掛載出來的全部內容拷貝至文件夾5

# df -h
/dev/loop1               4.4G  4.4G     0 100% /var/www/html/Centos6.6/1

# cd /var/www/html/Centos6.6/
# mkdir 5
# cp -r 1/* 5/
# cd 5
# ls 
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  Packages  RELEASE-NOTES-en-US.html  repodata  RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Debug-6  RPM-GPG-KEY-CentOS-Security-6  RPM-GPG-KEY-CentOS-Testing-6  TRANS.TBL

二、將DVD2掛載出來的Packages裏面的全部軟件包拷貝到5中

注意只要rpm包,其餘的都不要,能夠先進入執行命令檢查一下

# ls |grep -v rpm

拷貝rpm包

# cp -r 2/* 5/Packages/

三、更新repodata

追加文件或者更新rpm包時,須要createrepo -v --update 來更新repodata

# createrepo -v --update 5/Packages/

四、清緩存

# yum clean all
# yum makecache

五、檢查

# yum grouplist|wc -l
214
# yum list |wc -l
6563

重點是如今本來在DVD2的rpm包都追加到了DVD1的yum源中了,繼續安裝文件不會提示只能夠list不能夠install了。

心得:yum源配置安裝軟件的基礎,配置一個正常的本地yum源,軟件安裝基本完成了一半。

yum與createrepo相關的內容還有不少,持續學習並更新中……

 

createrepo命令學習

createrepo用以建立yum源(軟件倉庫),即爲存放於本地特定位置的衆多rpm包創建索引,描述各包所需依賴信息,並造成元數據。


基本語法:createrepo [option] <directory>


經常使用參數詳解


    -u  --baseurl <url>
        指定Base URL的地址


    -o --outputdir <url>
        指定元數據的輸出位置


    -x --excludes <packages>
        指定在造成元數據時須要排除的包


    -i --pkglist <filename>
        指定一個文件,該文件內的包信息將被包含在即將生成的元數據中,格式爲每一個包信息獨佔一行,不含通配符、正則,以及範圍表達式。


    -n --includepkg
        經過命令行指定要歸入本地庫中的包信息,須要提供URL或本地路徑。


    -q --quiet
        安靜模式執行操做,不輸出任何信息。


    -g --groupfile <groupfile>
        指定本地軟件倉庫的組劃分,範例以下:
 	createrepo -g comps.xml /path/to/rpms
        注意:組文件須要和rpm包放置於同一路徑下。




    -v --verbose
        輸出詳細信息。


    -c --cachedir <path>
        指定一個目錄,用做存放軟件倉庫中軟件包的校驗和信息。當createrepo在未發生明顯改變的相同倉庫文件上持續屢次運行時,指定cachedir會明顯提升其性能。


    --update
        若是元數據已經存在,且軟件倉庫中只有部分軟件發生了改變或增減,則可用update參數直接對原有元數據進行升級,效率比從新分析rpm包依賴並生成新的元數據要高不少。


    -p --pretty
        以整潔的格式輸出xml文件。


    -d --database

        該選項指定使用SQLite來存儲生成的元數據,默認項。

參考連接

http://linux.51yip.com/search/createrepo

相關文章
相關標籤/搜索