搭建本地Yum源, 以及远程yum的访问

搭建本地Yum源, 以及远程yum的访问

在客户开发中, 经常遇到不能连接外网的情况, 然后各种资料必须通过光盘, U盘来传输, 记录一次本都yum搭建, 只是自己做个备份, 但是这么做后, 包的版本关系就出来了, 毕竟即使是everything也不会提供不同版本的依赖的.

(English version translate by GPT-3.5)

环境

使用CentOS 7.4 Everything系统.

基于MacOS Parallels虚拟机的CentOS虚拟系统做演示

搭建CentOS 7本地yum环境

首先, 将Everything的光盘完整的复制到CentOS的某个目录中, 这个来源可以通过光盘(需要2张DVD), U盘拷上去的, 并且将内容复制到自己喜欢的目录中, 这里使用/home/centosiso

建立一个目录, 以及一个挂载目录 mkdir /home/centosiso && mkdir /mnt/cdrom

挂载cdrom mount /dev/cdrom /mnt/cdrom/

复制光盘中所有的内容 cp -rf /mnt/cdrom/* /home/centosiso

我们使用 du -sh /home/centosiso 可以看到我这次用的这个镜像有8.2G的占用

123[root@localhost cdrom]# cd /home/centosiso/[root@localhost centosiso]# du -sh .8.2G .

进入目录 /etc/yum.repos.d/

1cd /etc/yum.repos.d/

默认官方安装的镜像有这些, 可能更多, 可能更少, 都没关系

1234[root@localhost yum.repos.d]# lsCentOS-Base.repo CentOS-Media.repo CentOS-fasttrack.repoCentOS-CR.repo CentOS-Sources.repoCentOS-Debuginfo.repo CentOS-Vault.repo

删除或备份这些资源, 因为内网环境下, 这些库也用不到

12cp -rf /etc/yum.repos.d /etc/yum.repos.d.backuprm -rf /etc/yum.repos.d/* # 我这里是做备份加删除了

在yum.repos.d中, 创建一个文件, 名字随便, 后缀以repo即可, 这里创建的是CentOS-Local.repo, 内容如下所示

123456[c7-media]name=CentOS-$releasever - Mediabaseurl=file:///home/centosisogpgcheck=1enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

上面的baseurl填写本地的路径, 然后其他地方照抄即可, 其实也可以参考原来被删除前的CentOS-Media.repo这个文件, 配置与这个文件基本一致的. 也附上 CentOS-Media.repo的内容

123456789101112131415161718192021# CentOS-Media.repo## This repo can be used with mounted DVD media, verify the mount point for# CentOS-7. You can use this repo and yum to install items directly off the# DVD ISO that we release.## To use this repo, put in your DVD and use it with the other repos too:# yum --enablerepo=c7-media [command]## or for ONLY the media repo, do this:## yum --disablerepo=\* --enablerepo=c7-media [command][c7-media]name=CentOS-$releasever - Mediabaseurl=file:///media/CentOS/ file:///media/cdrom/ file:///media/cdrecorder/gpgcheck=1enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

这里已经完成了, 运行下 yum makecache, 会提示如下的输出, 这就好了, 剩下就是可以使用yum进行安装任何包了, CentOS-Everything里面包含了大部分常见的依赖包, 只要不要这种很偏的都是包含的.

12345678910[root@localhost yum.repos.d]# yum makecacheFailed to set locale, defaulting to CLoaded plugins: fastestmirrorc7-media | 3.6 kB 00:00 (1/4): c7-media/group_gz | 156 kB 00:00 (2/4): c7-media/primary_db | 5.7 MB 00:00 (3/4): c7-media/filelists_db | 6.7 MB 00:00 (4/4): c7-media/other_db | 2.5 MB 00:00 Loading mirror speeds from cached hostfileMetadata Cache Created

使用Http构建CentOS远程yum环境上面是构建本地环境, 这里记录下如果使用http来使用有yum本地环境的机器, 进行依赖的安装, 当然, 这2台服务器之间的网络是通的.

使用上面配置的133服务器作为yum源

假设这台Linux什么都没有, 没有tomcat, 没有nginx, 反正就是一个很新的环境, 但是还有一个 python的SimpleHTTPServer服务, 这个组件默认都会安装, 可以用这个来测试端口是否通了啥的非常合适. 开启后, 会在本地打开一个监听端口, 访问这个端口后python可以提供基本的文件服务.

1python -m SimpleHTTPServer 9000

当然, 如果服务器环境允许, 可以在有yum本地环境的服务器上安装nginx, nginx的所有基本依赖, Everything都提供了的(下面也提供了nginx的安装).

这里先用python来构建临时的远程yum环境, 别忘了CentOS默认开启防火墙的.

1python -m SimpleHTTPServer 9000

很好记的一行命令

12python -m(odule) SimpleHTTPServer, python执行一个模块, 简单的HTTP服务.

如果不输入后面的9000, 就会默认监听8000端口, 开启后浏览器打开如图

可以看到这就是一个文件的列出服务

在新的服务器上, 进入/etc/yum.repos.d, 新建一个repo, 随便什么名字, 后面是repo即可, 内容只是将baseurl的地址改成一个http

123456[CentOS-Remote-HTTP]name=CentOS-$releasever - Mediabaseurl=http://10.211.55.133:9000gpgcheck=1enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

执行 yum makecache 可以看到可以使用了, 且此时yum源服务器会打印如图的信息

整个过程其实很简单的. 如果用完的了, 就按下Ctrl-Z取消就行了, 下次用的时候再 python -m SimpleHTTPServer 9000 就行了

警告: 注意依赖的版本的问题, everything很多情况下遇到的问题是服务器安装了更高版本的依赖, 然后everything提供的依赖比较低, 此时就要慎重操作.

附Nginx编译安装, 并代理本地目录提供文件服务SimpleHTTPServer毕竟是临时方案, 如果希望一直可用, 可以使用nginx来实现.

从官网下载nginx 下载地址.

上传到服务器, 假设目录是 /root

解压并进入目录

123cd /roottar -zxvf nginx-1.16.0.tar.gzcd cd nginx-1.16.0

安装依赖并执行编译命令

1yum install pcre-devel zlib-devel openssl-devel gcc make -y

1234567891011121314151617./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_ssl_module \--with-http_flv_module \--with-http_gzip_static_module \--with-http_stub_status_module \--with-stream等ready后, 执行make等make后, 执行make install

创建nginx组和用户

12[root@localhost nginx-1.16.0]# groupadd nginx[root@localhost nginx-1.16.0]# useradd -g nginx -s /sbin/nologin nginx

启动nginx, 没有任何提示, 打开浏览器访问, 如图所示

1/usr/local/nginx/sbin/nginx

编辑 vi /usr/local/nginx/conf/nginx.conf, 并在location / {上面(或下面)添加如下一行

123location /centosyum { alias /home/centosiso; }

整个配置如下

执行nginx配置重载

1/usr/local/nginx/sbin/nginx -s reload

因为监听的是80端口, 所以这个访问地址就是 http://10.211.55.133/centosyum 这个地址, 如上面的在/etc/yum.repos.d创建新的文本, 后缀名repo, 然后内容如下

123456[CentOS-Remote-HTTP]name=CentOS-$releasever - Mediabaseurl=http://10.211.55.133/centosyum #就是这里的地址换了下而已gpgcheck=1enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

此时浏览器访问 http://10.211.55.133/centosyum 是会提示403 Forbidden的, 如果想要像SimpleHTTPServer一样能看文件, 则刚刚的location /centosyum配置增加如下:

1234location /centosyum { alias /home/centosiso; autoindex on; # 增加了这么一行}

效果

剩下的按照上面使用Http构建CentOS远程yum环境 - 第3步继续操作即可.

相关

手机能放冰箱里吗?放了会发生什么情况?
体育在线365下载

手机能放冰箱里吗?放了会发生什么情况?

📅 07-02 👁️ 5606
银行系统漏洞曝光:敏感数据泄露与权限提升风险分析
一千牛有多重?揭秘力的单位与重量的转换
体育在线365下载

一千牛有多重?揭秘力的单位与重量的转换

📅 08-29 👁️ 7391