本文讲解centos创建本地软件仓库(基于文件和基于http server)的方式。
准备软件库
既然建立自己的软件库,一定要有软件,从哪里来? 来自其他库。
下面有2种方式: 全量和增量(我们需要的软件)。
同步整个centos仓库
下面的操作当然是在有网的情况下操作:
安装需要的软件:
1
# yum install createrepo yum-utils reposync
存放软件地址:
1
# mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}
同步软件库:
1
2
3
4# reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/
# reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/
# reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/
# reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/可选:定时同步
1
2
3
4
5
6
7
8
9
10
11
12# vim /etc/cron.daily/update-localrepos
#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS=”base centosplus extras updates”
##a loop to update repos one at a time
for REPO in ${LOCAL_REPOS}; do
reposync -g -l -d -m --repoid=$REPO --newest-only --download-metadata --download_path=/var/www/html/repos/
createrepo -g comps.xml /var/www/html/repos/$REPO/
done
# chmod 755 /etc/cron.daily/update-localrepos
同步需要的软件
同步整个库未免有点太多了, 一般我们只需要很少的部分。
可以使用yum的--downloadonly
参数只下载不安装:
1 | # mkdir tmp |
建立本地库
也就是从文件夹下加载库:
1 | # cd /etc |
新配置内容为:
1 | [centos7] |
然后建立并启用仓库:
1 | # createrepo /var/www/html/repos/ |
建立http库
一般来说,我们都不止一台机器需要用软件库,所以建在本地是不常用的,一般会搭建一个http服务提供下载。
当然建立http服务的方式有很多种,这里只是简单的静态资源转发服务,介绍nginx和httpd两种实现。
nginx
安装nginx就不说了
修改配置,增加repo.conf:
1
2
3
4
5
6
7
8
9server {
listen 80;
server_name ip/hostname;
root /var/www/html/repos;
location / {
index index.php index.html index.htm;
autoindex on; #enable listing of directory index
}
}重新加载nginx配置:
# nginx -s reload
httpd
安装httpd服务:
1
2
3
4yum install httpd
systemctl status httpd
systemctl start httpd
chkconfig httpd on修改配置: httpd默认的静态资源存放在
/var/www/html
下,所以如果懒得修改,也可以直接使用,如果要修改,如下修改:1
2
3
4
5
6
7
8# vi /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html/repo"
<Directory "/var/www/html/repo">
AllowOverride None
Require all granted
</Directory>重启服务:
1
systemctl restart httpd
访问ip即可