为CentOS与Ubuntu制作离线本地源

简介

  • 在有网络连接的情况下, 我们常使用yumapt来安装软件, 若是在离线的局域网中, 就需要为特定软件制作本地源。
  • 可以使用Python自带的SimpleHTTPServer来实现简单局域网的源。

CentOS

  • 使用yum安装软件时,下载的*.rpm包缓存在/var/cache/yum/x86_64/7/

创建目录

  • 用于存放特定软件所需的软件包。
1
mkdir -p /opt/packages

下载软件包

1
yum install -y --downloadonly --downloaddir=/opt/packages python-openstackclient

创建软件仓库

1
yum install -y createrepo
1
createrepo /opt/packages

生成压缩包

1
tar -zcf packages.tgz packages/

配置本地源

1
2
tar -zxf packages.tgz -C /opt
vim /etc/yum.repos.d/local.repo
1
2
3
4
5
[Local]
name=Local Yum
baseurl=file:////opt/packages/
gpgcheck=0
enabled=1
  • 客户端安装软件:
1
yum install python-openstackclient

Ubuntu

简介

  • 使用apt命令安装软件时,下载的*.deb包缓存在/var/cache/apt/archives/

创建目录

  • 用于存放特定软件所需的软件包。
1
mkdir -p /opt/packages

下载软件包

  • 清除旧的缓存:
1
rm -f /var/cache/apt/archives/*.deb
  • 下载软件包:
1
apt install -d -y PACKAGE-NAME

拷贝软件包

1
cp -a /var/cache/apt/archives/*.deb /opt/packages/

生成索引包

  • Packages.gz中包含软件包信息以及其依赖关系信息。
  • 安装dpkg-dev以便使用dpkg-scanpackages命令生成Packages.gz文件。
1
apt install -y dpkg-dev

单机版本地源

  • 此处忽略一切的警告(warning)。
1
2
cd /opt/
dpkg-scanpackages packages/ /dev/null | gzip > /opt/packages/Packages.gz -r
  • 制作成压缩包,便于网络传输。
1
2
cd /opt/
tar -zcf packages.tgz packages/
  • 将压缩包拷贝到目标主机。

  • 解压压缩包并配置软件源:

1
2
tar -zxf packages.tgz -C /opt
echo 'deb [trusted=yes] file:///opt/ packages/' > /etc/apt/sources.list

临时的Web共享本地源

  • 此处忽略一切的警告(warning)。
1
2
cd /opt/packages/
dpkg-scanpackages . /dev/null | gzip > /opt/packages/Packages.gz -r
  • 使用Python自带的SimpleHTTPServer会在当前目录启动一个简易的Web服务器。
1
2
cd /opt/packages/
python -m SimpleHTTPServer PORT
  • 在目标节点上配置软件源:
1
echo 'deb [trusted=yes] http://IP:PORT/ /' > /etc/apt/sources.list

搭建Web服务共享本地源

  • 搭建主流的Web服务:Apache服务或Nginx服务。
  • 配置Web服务,根目录指向/opt/packages/
  • 在目标节点上配置软件源:
1
echo 'deb [trusted=yes] http://IP:PORT/ /' > /etc/apt/sources.list

安装软件

  • 在目标节点上安装软件:
1
2
apt-get update
apt-get install PACKAGE-NAME

请作者喝瓶肥宅快乐水