挂载系统镜像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 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
在/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
若是不须要开启防火墙,就直接关闭便可 .
# 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
###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
# 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
$ 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源了。
一般咱们只使用CentOS-6.6-x86_64-bin-DVD1.iso的软件包,可是偶尔仍是会用到DVD2中的软件,同时yum list能够查出,可是直接yum install会报错,并且若是再把DVD2作成yum源也很麻烦,因此为了省事,直接把DVD1和2的软件包整合起来。
具体作法以下:
# 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
注意只要rpm包,其余的都不要,能够先进入执行命令检查一下
# ls |grep -v rpm
拷贝rpm包
# cp -r 2/* 5/Packages/
追加文件或者更新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用以建立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来存储生成的元数据,默认项。
参考连接