RHEL 7创建本地安装源
声明
受限于网络环境和网络速度的影响,我们很多时候需要更加便捷的下载软件包的方式,那么创建一个不受网络因素影响的本地安装源就很有必要。本文档所有使用的账号为个人红帽开发者账号,所有安装的包以及工具或是红帽提供的安装包,或是GIT HUB上的开源项目,请大家在能力范围内积极支持正版。
安装操作系统
1、加载镜像后选择 Install Red Hat Enterprise Linux 7.9
2、语言选择中文(看个人习惯,安装数据库最好默认选英文)
3、总览需要配置的项
4、时区选择亚洲-上海
5、软件选择 最小安装
6、分区选择 先选择磁盘后再选择我要配置分区
一般情况下,没特殊要求可以选择自动分区,如果有需求知道数据具体存放在哪里,可以指定特定的分区,比如下面的/repos就是手动创建的
7、配置网络和主机名,选择一定连接的网卡,点击右下角的配置,选择IPv4设置,手动配置网络后,打开网卡,修改主机名
8、上述都配置好后,点击开始安装开始安装操作系统
9、配置root用户密码并创建新用户
10、等待系统安装完成后,重启操作系统
注册开发者账号
1、登录红帽开发者网站注册账号 https://developers.redhat.com/
后即可成为红帽开发者一员,可以获得红帽操作系统1年的临时使用权限。
2、注册成功后,在已经安装好的红帽操作系统中使用subscription-manager register --username=username --password=password --auto-attach
即可将当前系统资源添加至红帽账户。
3、注册成功后可以通过subscription-manager list
查看系统的激活信息
[root@rhel ~]# subscription-manager list
+-------------------------------------------+
Installed Product Status
+-------------------------------------------+
Product Name: Red Hat Enterprise Linux Server
Product ID: 69
Version: 7.9
Arch: x86_64
Status: Subscribed
Status Details:
Starts: 03/05/2024
Ends: 03/05/2025
安装依赖包
安装工具包
reposync -- 同步rpm包工具
该命令用于rpm的同步,其中RHEL 6和7 版本需要的reposync
命令需要单独安装rpm包: yum-utils
,RHEL 8 版本则是集成在dnf
命令中。
createrepo --创建软件仓库工具
该包用于同步完软件包后,创建本地源用。
nginx -- web服务
通过nginx可以使本地的源文件供内网中可以和本机通信的机器使用。
-
创建nginx安装源
[root@rhel ~]# cat >> /etc/yum.repos.d/nginx.repo << EOF [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/rhel/\$releasever/\$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true EOF
-
安装nginx最新版本
[root@rhel ~]# yum install nginx Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager nginx-stable | 2.9 kB 00:00:00 nginx-stable/7Server/x86_64/primary_db | 87 kB 00:00:00 Resolving Dependencies --> Running transaction check ---> Package nginx.x86_64 1:1.24.0-1.el7.ngx will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================================= Package Arch Version Repository Size ============================================================================================================================================================================================= Installing: nginx x86_64 1:1.24.0-1.el7.ngx nginx-stable 804 k Transaction Summary ============================================================================================================================================================================================= Install 1 Package Total download size: 804 k Installed size: 2.8 M Is this ok [y/d/N]: y Downloading packages: warning: /var/cache/yum/x86_64/7Server/nginx-stable/packages/nginx-1.24.0-1.el7.ngx.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 7bd9bf62: NOKEY- ] 137 kB/s | 756 kB 00:00:00 ETA Public key for nginx-1.24.0-1.el7.ngx.x86_64.rpm is not installed nginx-1.24.0-1.el7.ngx.x86_64.rpm | 804 kB 00:00:04 Retrieving key from https://nginx.org/keys/nginx_signing.key Importing GPG key 0x7BD9BF62: Userid : "nginx signing key <signing-key@nginx.com>" Fingerprint: 573b fd6b 3d8f bc64 1079 a6ab abf5 bd82 7bd9 bf62 From : https://nginx.org/keys/nginx_signing.key Is this ok [y/N]: y Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 1:nginx-1.24.0-1.el7.ngx.x86_64 1/1 ---------------------------------------------------------------------- Thanks for using nginx! Please find the official documentation for nginx here: * https://nginx.org/en/docs/ Please subscribe to nginx-announce mailing list to get the most important news about nginx: * https://nginx.org/en/support.html Commercial subscriptions for nginx are available on: * https://nginx.com/products/ ---------------------------------------------------------------------- Verifying : 1:nginx-1.24.0-1.el7.ngx.x86_64 1/1 Installed: nginx.x86_64 1:1.24.0-1.el7.ngx Complete!
同步软件包
查看所有可用的软件仓库
使用yum repolist all
可以查看当前账户可以使用的软件仓库,默认情况下只会启用rhel-7-server-rpms/7Server/x86_64这一个软件仓库。
下面是展示出来的部分内容。可以在实际操作中选择其他臁仓库启用。
[root@rhel ~]# yum repolist all
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
repo id status
a-mq-clients-1-for-rhel-7-server-debug-rpms/7Server/x86_64 disabled
a-mq-clients-1-for-rhel-7-server-rpms/7Server/x86_64 disabled
a-mq-clients-1-for-rhel-7-server-source-rpms/7Server/x86_64 disabled
rhel-ha-for-rhel-7-server-rpms/7Server/x86_64 disabled
rhel-7-server-extras-rpms/x86_64 enabled: 1,468
...
rhel-7-server-rpms/7Server/x86_64 enabled: 34,270
...
repolist: 36,603
启用停用软件仓库
[root@repos ~]# subscription-manager repos --enable=rhel-7-server-extras-rpms
为这个系统启用软件仓库 'rhel-7-server-extras-rpms'。
[root@repos ~]# subscription-manager repos --disable=rhel-7-server-extras-rpms
为这个系统停用软件仓库 'rhel-7-server-extras-rpms'。
同步软件包到本地
使用命令reposync --plugins --newest-only --delete --download_path=$download_path --repoid=rhel-7-server-rpms
可以同步单个软件源到本地,如果需要同步多个软件源,可以创建一个shell脚本如下:
#!/bin/bash
#定义下载回来的包存放的目录
download_path="/repos"
reposync --plugins --newest-only --delete --download_path=$download_path --downloadcomps --repoid=rhel-7-server-rpms
reposync --plugins --newest-only --delete --download_path=$download_path --downloadcomps --repoid=rhel-7-server-extras-rpms
reposync --plugins --newest-only --delete --download_path=$download_path --downloadcomps --repoid=rhel-ha-for-rhel-7-server-rpms
#--plugins 启用yum插件支持
#--newest-only 每次回购仅下载最新的软件包。
#--download_path 软件包存放地址
#--repoid 需要下载的仓库ID
同步成功后会在指定的目录下生成如下的目录结构,一个comps.xml的文件,一个包含下载的所有包的Packahes目录。
[root@rheloracle home]# tree /repos/
repos
└── rhel-7-server-rpms
├── comps.xml
└── Packages
├── 3
│ ├──···.rpm
├── a
│ ├──···.rpm
...
└── z
│ ├──···.rpm
29 directories 5515 files
创建本地仓库
进入到下载本地的repo id的目录下,使用createrepo命令将下载到本地的软件包创建成软件仓库
[root@rhel ~]# cd /repos/rhel-7-server-rpms/
[root@rhel rhel-7-server-rpms]# ls
comps.xml Packages
[root@rhel rhel-7-server-rpms]# createrepo -g comps.xml .
Spawning worker 0 with 2757 pkgs
Spawning worker 1 with 2757 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
创建本地安装源
[root@rhel ~]# cat >> /etc/yum.repos.d/rhel7-local.repo << EOF
[rhel7-local]
name=rhel7-local
baseurl=file:///repos/rhel-7-server-rpms/ # 按照实际本地存储路径填写
enabled=1
gpgcheck=0
EOF
查看当前可用的安装源
[root@rhel ~]# yum repolist
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
repo id repo name status
nginx-stable/7Server/x86_64 nginx stable repo 324
rhel-7-server-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server (RPMs) 34,270
rhel-ha-for-rhel-7-server-rpms/7Server/x86_64 Red Hat Enterprise Linux High Availability (for RHEL 7 Server) (RPMs) 865
repolist: 35,459
禁用网络源
[root@rhel ~]# subscription-manager repos --disable=rhel-7-server-rpms
Repository 'rhel-7-server-rpms' is disabled for this system.
[root@rhel ~]# subscription-manager repos --disable=rhel-ha-for-rhel-7-server-rpms
Repository 'rhel-ha-for-rhel-7-server-rpms' is disabled for this system.
清理旧缓存并创建新缓存
[root@rhel ~]# yum clean all
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
Cleaning repos: nginx-stable rhel7-local
Other repos take up 1.3 G of disk space (use --verbose for details)
[root@rhel ~]# yum makecache
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
nginx-stable | 2.9 kB 00:00:00
rhel7-local | 3.6 kB 00:00:00
(1/7): nginx-stable/7Server/x86_64/primary_db | 87 kB 00:00:00
(2/7): nginx-stable/7Server/x86_64/filelists_db | 112 kB 00:00:00
(3/7): rhel7-local/group_gz | 138 kB 00:00:00
(4/7): rhel7-local/primary_db | 4.5 MB 00:00:00
(5/7): rhel7-local/filelists_db | 3.7 MB 00:00:00
(6/7): rhel7-local/other_db | 1.6 MB 00:00:00
(7/7): nginx-stable/7Server/x86_64/other_db | 53 kB 00:00:00
Metadata Cache Created
以上,本地源可以使用,如果只需要本地使用上面的部分就够了
如果需要通过局域网内使用,则需要继续下面的操作。
firewalld防火墙放行与禁用
由于启用了防火墙需要放行80端口或http服务,或者停用防火墙,一般为了安全考虑放行端口和服务比较好
[root@repos ~]# firewall-cmd --permanent --add-port=80/tcp
success
[root@repos ~]# firewall-cmd --permanent --add-service=http
success
禁用端口或服务
[root@repos ~]# firewall-cmd --permanent --remove-port=80/tcp
success
[root@repos ~]# firewall-cmd --permanent --remove-service=http
success
修改需要重新加载才能生效
[root@repos ~]# firewall-cmd --reload
success
启用nginx代理
编辑/etc/nginx/conf.d/default.conf
文件,将下面的部分按照实际情况进行修改
location / {
root /repos/; //指定实际目录绝对路径;
autoindex on; //开启目录浏览功能;
autoindex_exact_size off; //关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b;
autoindex_localtime on; //开启以服务器本地时区显示文件修改日期!
charset utf-8,gbk; // 开启中文文件名称展示
index index.html index.htm;
}
启用nginx服务:systemctl start nginx
配置nginx服务开机启动:systemctl enable nginx
访问http://本机IP地址
创建网络安装源并测试
创建网络安装源
[root@rhel ~]# cat >> /etc/yum.repos.d/rhel7-net.repo << EOF
[rhel7-net]
name=rhel7-net
baseurl=http://10.60.99.46/rhel-7-server-rpms/ # 按实际数据填写
enabled=1
gpgcheck=0
EOF
[root@rhel ~]# yum makecache
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
nginx-stable | 2.9 kB 00:00:00
rhel7-net | 3.6 kB 00:00:00
(1/7): nginx-stable/7Server/x86_64/primary_db | 87 kB 00:00:00
(2/7): rhel7-net/group_gz | 138 kB 00:00:00
(3/7): rhel7-net/primary_db | 4.5 MB 00:00:00
(4/7): rhel7-net/filelists_db | 3.7 MB 00:00:00
(5/7): rhel7-net/other_db | 1.6 MB 00:00:00
(6/7): nginx-stable/7Server/x86_64/other_db | 53 kB 00:00:00
(7/7): nginx-stable/7Server/x86_64/filelists_db | 112 kB 00:00:01
Metadata Cache Created
在其他网络可通信的主机上,创建上述中rhel7-net.repo文件并建立缓存测试,是否可用