目 录CONTENT

文章目录

如何利用Linux(centos)制作本地的yum源,并支持迁移到离线服务器上?

逝去的轻风
2023-05-07 / 0 评论 / 0 点赞 / 390 阅读 / 3,117 字

一、一般Linux系统本身自带了yum源,为何需要创建本地的yum源?

创建本地yum源的主要原因包括

  1. 版本控制:默认的Linux发行版的官方yum源提供了大量的软件包和更新。但是,有时你可能需要使用特定版本的软件包,特别是在进行软件开发、测试或特定环境部署时。通过创建本地yum源,你可以控制软件包的版本,并确保使用特定版本进行安装和部署。

  2. 离线部署:在没有互联网连接的环境中,例如在内网或无网络访问的服务器中,无法直接从公共yum源安装软件包。通过创建本地yum源,你可以将所需的软件包下载到本地并在离线环境中进行安装,从而实现离线部署。

  3. 空间管理:CentOS默认的yum源包含大量软件包和依赖项,因此占用的空间较大。具体的大小会因为不同版本的CentOS而有所差异,但通常会超过几十GB。如果你只需要封装Docker和JDK等软件包并进行迁移,而不需要其他内容,你可以使用自定义的本地yum源,只包含所需的软件包,而无需整个官方的yum源,从而减小空间占用。

除了版本控制、离线部署和空间管理之外,还有其他一些原因可以创建本地yum源:

  1. 安全性:通过创建本地yum源,你可以实现更好的安全性控制。你可以选择从可信任的源下载软件包,并通过验证软件包的完整性和数字签名来确保软件的安全性。这对于确保系统的安全性和防止恶意软件的入侵非常重要。

  2. 性能优化:使用本地yum源可以提高软件包的安装速度和系统性能。在本地网络中,通过本地源进行软件包的下载和安装通常比从远程互联网源下载更快,因为本地源可以提供更快的下载速度和更低的延迟。

  3. 自定义配置:创建本地yum源使你能够根据自己的需求进行自定义配置。你可以添加自己的软件包,创建个性化的软件包组合,甚至进行定制化的软件包修改。这样,你可以根据特定的应用场景或要求来管理和部署软件包,满足个性化的需求。

综上所述,创建本地yum源可以提供更好的安全性、性能优化、自定义配置和克服网络限制等优势。它为系统管理员和开发人员提供了更多的灵活性和控制权,以满足特定的需求,并为部署和管理软件包提供更好的体验。

二、如何制作本地yum源,并迁移到没有网络连接的目标机器上,以供离线安装?

(本方法需要本机有可用的yum源,且当前yum源中如无指定的软件包,需要安装指定的软件包, 详见第三点

要制作本地的yum源并将Docker、JDK等软件包封装到其中,以供离线安装,可以按照以下步骤进行操作:

1. 在一台有网络连接的机器上,创建一个目录来存储你的本地yum源。例如,你可以在/opt/local-yum目录下创建一个新的目录:

sudo mkdir -p /opt/local-yum

2. 将Docker、JDK等软件包及其依赖项从网络上下载到本地。你可以使用yumdownloader命令来下载软件包及其依赖项。例如,下载Docker软件包及其依赖项:
(使用yum list <package-name> --showduplicates命令列出可用的JDK软件包版本)

sudo yumdownloader --resolve docker-ce

这将下载Docker软件包及其依赖项到当前目录。

或者同时下载Docker以及JDK软件包:

sudo yumdownloader --resolve --destdir=packages java-1.8.0-openjdk docker-ce

3. 将下载的软件包及其依赖项移动到本地yum源的目录(/opt/local-yum)中:

sudo mv *.rpm /opt/local-yum

4. 生成本地yum源的元数据。进入/opt/local-yum目录,并使用createrepo命令生成本地yum源的元数据:

sudo createrepo /opt/local-yum

这将在目录中生成repodata子目录,其中包含本地yum源的元数据。

5. 创建一个新的repo文件来指向本地yum源。在/etc/yum.repos.d目录下创建一个新的repo文件,例如local.repo

sudo vi /etc/yum.repos.d/local.repo

在编辑器中添加以下内容:

[local]
name=Local YUM Repository
baseurl=file:///opt/local-yum
enabled=1
gpgcheck=0
  • [local] 是存储库的名称,可以根据你的喜好进行修改。
  • name 是存储库的描述名称,可以根据你的喜好进行修改。
  • baseurl 指定了本地yum源的路径,这里使用了file:///opt/local-yum来表示本地文件系统位置。确保该路径与你实际创建的目录路径一致。
  • enabled 设置为1表示启用该存储库。
  • gpgcheck 设置为0表示禁用GPG检查。

保存并关闭文件。

通过以上配置,yum将会通过/etc/yum.repos.d/local.repo文件识别并使用/opt/local-yum目录作为本地yum源。

现在,你已经制作了本地的yum源,并将Docker、JDK等软件包封装到其中。你可以将包含本地yum源的整个目录(/opt/local-yum)复制到没有网络连接的目标机器上,并在目标机器上配置相同的repo文件(如对迁移有疑问,详见第五点)。然后,你可以使用yum命令在目标机器上进行离线安装,yum将会识别并使用新创建的repo文件中定义的本地yum源。例如:

sudo yum install docker-ce
sudo yum install jdk-package-name

三、本地yum中如何封装指定版本的软件?

如果默认的yum源中没有你需要的特定版本的JDK,你可以手动下载所需版本的JDK二进制文件,并将其封装到你自己的yum仓库中。

以下是封装特定版本JDK的一般步骤:

1. 下载所需版本的JDK二进制文件。可以从Oracle官方网站上下载适合你需要的特定版本的JDK二进制文件,例如Java SE Development Kit 8u275版。

2. 将下载的JDK二进制文件复制到你自己的yum仓库中,通常在/var/www/html/目录下。如果这个目录不存在,请先创建它

sudo mkdir -p /var/www/html/

3. 解压JDK二进制文件到/var/www/html/目录下:

sudo tar -xvf jdk-8u275-linux-x64.tar.gz -C /var/www/html/

将上面的命令中的jdk-8u275-linux-x64.tar.gz替换为你下载的JDK二进制文件的名称。

4. 然后,创建一个名为jdk.repo的文件,这将是将你的yum源添加到你的CentOS系统中的配置文件

sudo vi /etc/yum.repos.d/jdk.repo

5. 将以下内容添加到jdk.repo文件中:

[jdk]
name=JDK Repository
baseurl=file:///var/www/html/
enabled=1
gpgcheck=0

这将添加一个名为jdk的yum仓库,并将其指向你的/var/www/html/目录。请注意,这里的gpgcheck选项被禁用,这是因为我们没有GPG密钥来验证软件包的完整性。因此,在使用自己的yum仓库时,请确保从可信的源下载软件包。

6. 最后,运行以下命令更新yum缓存:

sudo yum clean all
sudo yum makecache

现在,你应该能够使用yum安装你封装到你的yum仓库中的特定版本的JDK。你可以使用命令yum list java-*来列出所有可用的JDK软件包,然后使用yum install <package-name>安装所需的软件包。例如,如果你封装了Java 8的版本号为1.8.0_275的JDK,则可以使用以下命令进行安装:

sudo yum install java-1.8.0-openjdk-1.8.0.275

四、如何从yum源中安装指定版本的软件?

还是以安装JDK为例,以下是从yum源安装已有软件的步骤:
1. 确定可用的JDK版本:

使用yum list <package-name> --showduplicates命令列出可用的JDK软件包版本。例如,要查看Java 8的可用版本:

yum list java-1.8.0-openjdk --showduplicates

这将显示可用的Java 8软件包及其版本列表。

2. 选择并安装指定版本的JDK:

使用yum install <package-name>-<version>命令安装指定版本的JDK。例如,要安装Java 8的特定版本:

yum install java-1.8.0-openjdk-<version>

<version>替换为你要安装的具体版本号。

例如,如果要安装Java 8的版本号为1.8.0_275的JDK,可以运行以下命令:

yum install java-1.8.0-openjdk-1.8.0.275

确保使用准确的软件包名称和版本号。

五、如何迁移制作好的yum源

如果你需要将制作好的yum源迁移到没有网络的机器上进行使用,你可以按照以下步骤进行操作:

1. 在有网络的机器上,制作好你的本地yum源,并将所需的软件包和元数据保存到一个目录中,例如 /opt/local-yum

2. 在有网络的机器上,将整个 /opt/local-yum 目录打包为一个tar文件,并将其复制到没有网络的机器上。

sudo tar -czvf local-yum.tar.gz /opt/local-yum

3. 在没有网络的机器上,解压缩 tar 文件并将其移动到 /var/www/html/ 目录中。

sudo mkdir -p /var/www/html/
sudo tar -xzvf local-yum.tar.gz -C /var/www/html/

4. 在没有网络的机器上,创建一个新的 repo 文件 /etc/yum.repos.d/local.repo,并设置 baseurl 为本地文件系统位置。

sudo vi /etc/yum.repos.d/local.repo
[local]
name=Local YUM Repository
baseurl=file:///var/www/html/local-yum
enabled=1
gpgcheck=0

5. 更新 yum 缓存并安装所需的软件包。

sudo yum clean all
sudo yum install <package-name>

通过这些步骤,你可以将制作好的本地yum源迁移到没有网络的机器上,并使用 yum 命令来安装所需的软件包。

六、其他问题

  • yum源版本过旧导致无法安装软件

通常情况下,在制作本地yum源时,并不需要下载yum相关的源文件。因为CentOS系统中已经默认安装了yum,你可以直接使用系统自带的yum命令来管理本地yum源。

但是,如果你的系统中没有安装yum,或者yum版本太旧,你可能需要先手动下载并安装最新版本的yum。你可以通过以下步骤在CentOS 7系统上安装yum:

1. 确认你的系统已经安装了epel-release和centos-release-scl软件包,如果没有安装,你可以使用以下命令安装:

sudo yum install epel-release
sudo yum install centos-release-scl

2. 安装yum-utils工具:

sudo yum install yum-utils

3. 使用yum-config-manager命令启用必要的yum源,例如CentOS Base、CentOS Updates、CentOS Extras等。例如,启用CentOS Base源:

sudo yum-config-manager --enable base

4. 更新yum缓存:

sudo yum makecache

5. 安装最新版本的yum:

sudo yum install yum

通过这些步骤,你可以在CentOS 7系统上安装最新版本的yum,并使用系统自带的yum命令来管理本地yum源。

0

评论区