Sometimes do projects, the party to the server security management is more stringent, the server environment are all no Internet network, sometimes through the Fortress upload or download operations from the project server, but also to go through the application review before releasing the rights, so often in the deployment of the project will be very inconvenient, and sometimes due to regular vulnerability scanning, the need to update the patch package, so according to the absence of an Internet network environmentThere are three common ways to install packages.

  • Upload the system DVD ISO image to the specified server for mounting and configure the local yum source.
  • Deploy the project system and environment locally, compile and install software or libraries, and then package and upload them to the project server.
  • 根据第一种方式通过Nginx反代,再把内网其他yum源配置改成内网URL,让内网其他服务器无Internet网络也能快速安装软件。

So this operation is configuring the local offline yum source as per the first method.

1、Creating ISO image storage and mounting directories

Terminal window
mkdir -pv /mnt/{iso,cdrom}

The iso directory is the directory where the ISO image of the system is stored. The cdrom directory is the mount directory

  1. Mount the ISO image
Terminal window
mount -o loop /mnt/iso/CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom
df -Th # Check if the mount was successful

ls -l to view cdrom mount directory information

Terminal window
-rw-r--r--. 3 root root 14 Oct 30 2020 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Oct 27 2020 EFI
-rw-rw-r--. 21 root root 227 Aug 30 2017 EULA
-rw-rw-r--. 21 root root 18009 Dec 10 2015 GPL
drwxr-xr-x. 3 root root 2048 Oct 27 2020 images
drwxr-xr-x. 2 root root 2048 Nov 3 2020 isolinux
drwxr-xr-x. 2 root root 2048 Oct 27 2020 LiveOS
drwxr-xr-x. 2 root root 673792 Nov 4 2020 Packages
drwxr-xr-x. 2 root root 4096 Nov 4 2020 repodata
-rw-rw-r--. 21 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 21 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 Nov 4 2020 TRANS.TBL

3、Configuring Local Yum Sources Create a local repo file and configure

Terminal window
mkdir -pv /opt/repo_bak
mv /etc/yum.repos.d/*.repo /opt/repo_bak/
touch /etc/yum.repos.d/local.repo

local.repo文件添加如下配置

Terminal window
[local]
name=local
baseurl=file:///mnt/cdrom # /mnt/cdrom is the directory where the ISO image is mounted
gpgcheck=0
enabled=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

⚠️ 注意 All use offline Yum source, the system comes with the Yum source file (in the /etc/yum.repos.d/ directory) is backed up before deleting, otherwise the re-yum makecache operation will fail and output the following message.

Terminal window
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org"
One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
1. Contact the upstream for the repository and get them to fix the problem.
2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).
3. Run the command with the repository temporarily disabled
yum --disablerepo=<repoid> ...
4. Disable the repository permanently, so yum won't use it by default. Yum
will then just ignore the repository until you permanently enable it
again or use --enablerepo for temporary usage:
yum-config-manager --disable <repoid>
or
subscription-manager repos --disable=<repoid>
5. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:
yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
Cannot find a valid baseurl for repo: base/7/x86_64

4、Update local Yum source and verify

Terminal window
[root@localhost ~]# yum clean all # Clear all local yum caches
Loaded plugins: fastestmirror, langpacks
Cleaning repos: local
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@localhost ~]# yum makecache # Regenerate the local yum cache
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
local | 3.6 kB 00:00:00
(1/4): local/group_gz | 153 kB 00:00:00
(2/4): local/filelists_db | 3.3 MB 00:00:00
(3/4): local/primary_db | 3.3 MB 00:00:00
(4/4): local/other_db | 1.3 MB 00:00:00
Metadata Cache Created
[root@localhost ~]# yum search openssl # Verifying local yum sources
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
================================================= N/S matched: openssl =================================================
apr-util-openssl.x86_64 : APR utility library OpenSSL crytpo support
openssl-devel.x86_64 : Files for development of applications which will use OpenSSL
perl-Crypt-OpenSSL-Bignum.x86_64 : Perl interface to OpenSSL for Bignum
perl-Crypt-OpenSSL-RSA.x86_64 : Perl interface to OpenSSL for RSA
perl-Crypt-OpenSSL-Random.x86_64 : Perl interface to OpenSSL for Random
pyOpenSSL.x86_64 : Python wrapper module around the OpenSSL library
xmlsec1-openssl.x86_64 : OpenSSL crypto plugin for XML Security Library
m2crypto.x86_64 : Support for using OpenSSL in python scripts
nss_compat_ossl.x86_64 : Source-level compatibility library for OpenSSL to NSS porting
openssl.x86_64 : Utilities from the general purpose cryptography library with TLS implementation
openssl-libs.x86_64 : A general purpose cryptography library with TLS implementation
openssl098e.x86_64 : A compatibility version of a general cryptography and TLS library
perl-Crypt-SSLeay.x86_64 : Crypt::SSLeay - OpenSSL glue that provides LWP https support
perl-Net-SSLeay.x86_64 : Perl extension for using OpenSSL
qca-ossl.x86_64 : OpenSSL plugin for the Qt Cryptographic Architecture v2
Name and summary matches only, use "search all" for everything.
[root@localhost ~]#