[Linux]CentOS7搭建/配置:YUM仓库/源[本地源/Web源(Apache HTTP(D))/自建源仓库]
若想搞懂整个配置过程和原理,就按照章节(1 / 2
)一步一步地来。
若想直接一步到位,不想花过多时间,尽快配好,就直接看附件
章节。
什么是yum源?
Yum(全称为 Yellow dog Updater
, Modified)是一个在Fedora、RedHat/RHEL、SUSE以及CentOS等Linux发行版的/repo/【Shell】前端【软件包管理器】。
yum源 := yum仓库 := yum管理下的软件源/软件仓库
怎么生动地理解这一点呢?
yum 类同于 CENTOS操作系统的 软件管理器;Web前端开发的 npm 包(依赖)管理软件;Java后端开发的 maven 包(依赖)管理软件。
值得注意的是,CENTOS 8新增了 DNF 包管理器,以取代之前OS版本的 YUM。
1 本地YUM源
1.1 [YUM仓库/服务端] 获取:软件包资源
Eg: 操作系统的镜像iso文件
1.2 [YUM仓库/服务端] 挂载/搭建:yum仓库(资源)
即 搭建yum仓库
将操作系统镜像(CentOS-....-.iso)挂载在本地目录中;
此次【挂载】目录为/var/www/html/repo/(此目录本身不存在,需要创建);
为什么是/var/www/html
目录?
因为以便以后发布http(d)
服务,http(d)
服务中配置文件/etc/httpd/conf/httpd.conf
的默认发布Web资源目录正是"DocumentRoot "/var/www/html"
可参见此博文: CentOS7搭建httpd服务 - CSDN
mkdir /var/www/
mkdir /var/www/html
mkdir /var/www/html/repo
mkdir /iso
(上传iso镜像到目录/iso/下)
mount /iso/CentOS7-1804.iso /var/www/html/repo/
- 特别说明
- 1.
vmware
下的centos虚拟机
一般重启后,此mount
命令就失效了,重启后需要重新执行mount
命令进行挂载 - 2.基于1,若不想每次重启后都重新挂载,可配置开机自启shell,具体操作如下:
- 1.
sudo chmod +x /etc/rc.d/rc.local
sudo echo "mount /iso/CentOS7-1804.iso /var/www/html/repo/" >> /etc/rc.d/rc.local
source /etc/profile
- 【查看/核验】
df -h /iso/CentOS7-1804.iso # 查看指定文件(or目录)所属的磁盘/文件系统及其挂载路径
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 15T 38G 15T 1% /
df –h # 查看已挂载设备的信息
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 15T 14G 15T 1% /
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 9.4M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda2 1016M 131M 886M 13% /boot
/dev/sda1 200M 9.5M 191M 5% /boot/efi
tmpfs 6.3G 0 6.3G 0% /run/user/0
/dev/loop0 4.1G 4.1G 0 100% /var/www/html/repo
ll /var/www/html/repo # 查看挂载的目录中是否有内容
total 654
-rw-r--r--. 1 root root 14 Dec 5 2016 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Dec 5 2016 EFI
-rw-r--r--. 1 root root 215 Dec 10 2015 EULA
-rw-r--r--. 1 root root 18009 Dec 10 2015 GPL
drwxr-xr-x. 3 root root 2048 Dec 5 2016 images
drwxr-xr-x. 2 root root 2048 Dec 5 2016 isolinux
drwxr-xr-x. 2 root root 2048 Dec 5 2016 LiveOS
drwxrwxr-x. 2 root root 630784 Dec 5 2016 Packages
drwxrwxr-x. 2 root root 4096 Dec 5 2016 repodata
-rw-r--r--. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-7
-rw-r--r--. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 Dec 5 2016 TRANS.TBL
1.3 [客户端/本地] 配置:yumRepoName.repo文件
即 配置yum源
在默认配置文件目录中添加编辑配置文件;此次添加的配置文件为repo_local.repo
【本地主机 配置 本地的YUM源仓库】
cd /etc/yum.repos.d/
touch repo_local.repo # 后缀必须为repo
vi repo_local.repo
[repo_local] # yum仓库名,必须与文件名【repo_local.repo】的前半部分一致
name=repo for local # yum仓库的描述信息
baseurl=file:///var/www/html/repo/ # yum源的访问地址(目录内,一般含: /Packages、/repodata等子目录)。file://+本地yum源目录是本地yum源访问地址的固定格式
enabled=1 # 启用仓库
gpgcheck=0 # 不进行红帽标签检查
【本地主机 屏蔽 其他YUM仓库(repo)】
ll /etc/yum.repos.d/
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Media.repo CentOS-Media.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
1.4 检验:搭建yum成功与否
yum repolist # 查看yum源中是否有软件包/软件包个数
2 网络YUM源
即 通过发布http服务来搭建、共享yum仓库
安装httpd软件,启动httpd服务,并设置httpd为开机启动,以http链接地址来访问yum源/仓库
2.1 [服务端] 搭建: 本地YUM仓库
详见本博文:
- 1.1 [YUM仓库/服务端] 获取:软件包资源
- 1.2 [YUM仓库/服务端] 挂载/搭建:yum仓库(资源)
- 1.3 [客户端/本地] 配置:yumRepoName.repo文件<repo_local.repo>
2.2 [服务端] 安装/重启/设置开机启动:httpd软件 --> 发布HTTP服务
httpd
服务的默认Web资源目录 即 /var/www/html/
可参见此博文:
- [Linux/Apache Http]Apache Http(d)服务访问时报: You don't have permission to access /cdh/ on this server. - 博客园/千千寰宇
- 【推荐: 安装 apache httpd的web容器后,若请求其资源,出现403问题时】
- CentOS7搭建httpd服务 - CSDN
yum -y install httpd
systemctl restart httpd
systemctl enable httpd # 开机启动
[防火墙:开启HTTPD服务的80端口]
systemctl start firewalld
firewall-cmd --permanent --zone=public --add-port=80/tcp # 防火墙开启80端口
补充: [可选项]
firewall-cmd --list-all # 查看防火墙信息
firewall-cmd --query-port=80/tcp # 查看防火墙的指定端口是否开启HTTPD服务的80端口
systemctl restart firewalld
【查看/核验】查看httpd是否安装成功,httpd服务是否启动
ps -ef | grep httpd
或
ss -lntp | grep httpd
2.3 [客户端] 配置:yumRepoName.repo文件
在默认配置文件目录中添加编辑配置文件。此次添加的配置文件为repo_http.repo.
【本机 配置 指定远程主机的YUM源仓库】
cd /etc/yum.repos.d/
touch repo_http.repo # 后缀必须为repo
vi repo_http.repo
[repo_http] # yum仓库名,必须与文件名【repo_local.repo】的前半部分一致
name=repo for http # yum仓库的描述信息
baseurl=http://176.130.2.72/repo/ # yum源的网络访问地址(目录内,一般含: /Packages、/repodata等子目录)。
enabled=1 # 启用仓库
# 通过 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 选项,或者通过 PackageKit 的"添加/删除软件"工具,也能够方便地启用和禁用指定的软件仓库 # Eg: yum --enablerepo=epel -y install xrdp
gpgcheck=0 # 不进行红帽标签检查
【本机 屏蔽 其他YUM仓库(repo)】
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Media.repo CentOS-Media.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
2.4 [客户端/服务端] 检验:搭建yum成功与否
详见本文: 1.4 检验:搭建yum成功与否
yum repolist
3 自建yum源仓库
即 使用自行下载的rpm制作yum仓库,以httpd或Nginx发布Web共享yum源服务
3.1 创建统一归档/存放RPM包的目录
mkdir -p /app/yum/centos7/x86_64/
3.2 下载所需的RPM软件包,并放在同一个目录中
查找、下载RPM等软件包的推荐网站
3.3 createrepo : 创建可用的yum源文件
createrepo命令:用于创建yum源(软件仓库),即为存放于本地的rpm包目录建立索引,描述各包所需依赖的信息,生成元数据信息。可生成yum软件包清单文件。
yum -y install createrepo
createrepo --version
createrepo -pdo /app/yum/centos7/x86_64/ /app/yum/centos7/x86_64/
createrepo --update -v /app/yum/centos7/x86_64/ # 若归档目录添加或删除了rpm包,可update更新索引,不必重新生成,节省时间
[补充: 备注/可选项]
[root@CENTOS7-20200707 ~]# createrepo -v /app/yum/centos7/x86_64
Spawning worker 0 with 1 pkgs
Worker 0: reading nano-2.3.1-10.el7.x86_64.rpm
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Starting other db creation: Mon Jul 27 16:58:18 2020
Ending other db creation: Mon Jul 27 16:58:18 2020
Starting filelists db creation: Mon Jul 27 16:58:18 2020
Ending filelists db creation: Mon Jul 27 16:58:18 2020
Starting primary db creation: Mon Jul 27 16:58:18 2020
Ending primary db creation: Mon Jul 27 16:58:18 2020
Sqlite DBs complete
[root@CENTOS7-20200707 ~]# ls /app/yum/centos7/x86_64/repodata
095096a77a0e87e74a7f0643be9dac988673d6b6d7663955620ff337cd6ab56d-filelists.xml.gz
0bd7f5f95ba7827f903a03bc8dfaf69ac6e286f30872af854de450746392fbe7-primary.xml.gz
8219a3fe4e77eab1c0dde4cbbd0a3893dae31fbe5b19aaf084deb36e7dc3016d-filelists.sqlite.bz2
9505d2b881f676b5c7ea72b1ac40e66ec48e3b79cf1dae55eff6e47155626e3b-other.sqlite.bz2
a2de74407d710f8f310a54d4ae166de3423c58f02f0827d63b8177e4b48afe00-other.xml.gz
b80638e29d421f080b67b51db0a9a65490bb2473ba95dba946c3cbb06a8e2552-primary.sqlite.bz2
repomd.xml
3.4 配置:Web共享服务(httpd)
【2 配置/发布 Apache HTTP(D)服务】
mkdir -p /var/www/html
vi /etc/selinux/config
SELINUX=disabled (避免出现权限不足,访问不了WEB资源的情况)
yum -y install httpd
systemctl restart httpd
systemctl enable httpd # 设置开机启动
firewall-cmd --permanent --zone=public --add-port=80/tcp
ss -lntp
"httpd"
关闭端口 firewall-cmd --permanent --zone=public --remove-port=80/tcp
ps -ef | grep httpd
systemctl restart firewalld
3.5 将该目录复制到/var/www/html/中
cp -a /app/yum/centos7/x86_64/ /var/www/html/
或
ln -s /app/yum/centos7/x86_64/ /var/www/html/x86_64
删除软链接: rm /var/www/html/x86_64
访问: http://ip/x86_64
3.6 [客户端] 配置:yumRepoName.repo文件
在默认配置文件目录中添加编辑配置文件。此次添加的配置文件为repo_self.repo.
cd /etc/yum.repos.d/
touch repo_self.repo # 后缀必须为repo
vi repo_self.repo
[repo_self] # yum仓库名,必须与文件名【repo_local.repo】的前半部分一致
name=repo for self
baseurl=http://176.130.2.72/x86_64/ # yum源的访问地址
enabled=1 # 启用仓库
gpgcheck=0 # 不进行红帽标签检查
3.7 检验:搭建yum成功与否
详见本文: 1.4 检验:搭建yum成功与否
yum repolist
4 附件/福利: 搭建基于HTTP服务发布的YUM源仓库
源自一实际项目的实操全过程
4.1 [服务端] 制作本地YUM源仓库
【1 制作本地YUM】
mkdir -p /var/www/html/repo
mkdir /iso
(FTP上传镜像到/iso/CentOS-7-x86_64-DVD-1611.iso )
mount /iso/CentOS-7-x86_64-DVD-1611.iso /var/www/html/repo
ll /var/www/html/repo/
若iso镜像挂载到文件系统目标目录下成功,则:改文件系统目录下会出现iso镜像内的各类文件资源
若 mount 时出现:
mount: /iso/CentOS-7-x86_64-DVD-1611.iso is not a block device (maybe try
-o loop'?)解决方法:
mount后加参数
-o loop(使用 loop 模式用来将一个文件/档案当成硬盘分割挂上系统;网上有人说,
iso文件镜像都是需要添加
-o loop`)
mount -o loop /iso/CentOS-7-x86_64-DVD-1611.iso /var/www/html/repo
【2 配置/发布 HTTPD服务】
yum -y install httpd
systemctl restart httpd
systemctl enable httpd
firewall-cmd --permanent --zone=public --add-port=25/tcp
ss -lntp
"master"
关闭端口
firewall-cmd --permanent --zone=public --remove-port=25/tcp
firewall-cmd --permanent --zone=public --add-port=80/tcp
ss -lntp
"httpd"
ps -ef | grep httpd
systemctl restart firewalld
【3 配置制作的本地YUM源仓库】
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Media.repo CentOS-Media.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
touch repo_local.repo
vi repo_local.repo
[repo_local]
name=repo for local
baseurl=file:///var/www/html/repo/
enabled=1
gpgcheck=0
【4 查看/核验 YUM源】
df -h 【查看ISO镜像挂载情况】
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 15T 14G 15T 1% /
devtmpfs 32G 0 32G 0% /dev
tmpfs 32G 0 32G 0% /dev/shm
tmpfs 32G 9.4M 32G 1% /run
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/sda2 1016M 131M 886M 13% /boot
/dev/sda1 200M 9.5M 191M 5% /boot/efi
tmpfs 6.3G 0 6.3G 0% /run/user/0
/dev/loop0 4.1G 4.1G 0 100% /var/www/html/repo
ll /var/www/html/repo 【查看挂载目录文件】
total 654
-rw-r--r--. 1 root root 14 Dec 5 2016 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Dec 5 2016 EFI
-rw-r--r--. 1 root root 215 Dec 10 2015 EULA
-rw-r--r--. 1 root root 18009 Dec 10 2015 GPL
drwxr-xr-x. 3 root root 2048 Dec 5 2016 images
drwxr-xr-x. 2 root root 2048 Dec 5 2016 isolinux
drwxr-xr-x. 2 root root 2048 Dec 5 2016 LiveOS
drwxrwxr-x. 2 root root 630784 Dec 5 2016 Packages
drwxrwxr-x. 2 root root 4096 Dec 5 2016 repodata
-rw-r--r--. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-7
-rw-r--r--. 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 Dec 5 2016 TRANS.TBL
yum repolist 【检验yum源】
...
repo_local repo for local
...
4.2 [客户端] 其他主机 配置 远程/网络yum源
cd /etc/yum.repos.d/
touch repo_http.repo
vi repo_http.repo
[repo_http]
name=repo for http
baseurl=http://xx.xx.xx.xx/repo/
enabled=1
gpgcheck=0
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-CR.repo CentOS-CR.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-fasttrack.repo CentOS-fasttrack.repo.bak
mv CentOS-Media.repo CentOS-Media.repo.bak
mv CentOS-Sources.repo CentOS-Sources.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak
systemctl start firewalld
systemctl status firewalld
firewall-cmd --permanent --zone=public --add-port=80/tcp
systemctl restart firewalld
iptables -L -n | grep 已添加的端口
firewall-cmd --state
firewall-cmd --list-all
[验证是否yum生效]
yum repolist
Y yum
仓库管理
Y.1 yum-config-manager
yum-config-manager
是yum
仓库管理命令
yum-config-manager
命令的本质是对 /etc/yum.repos.d/
(库数据的储存位置)文件夹下文件的增删查改,推荐使用 yum-config-manager
命令进行改动。
yum-config-manager
命令对资源库进行管理。
- 查询仓库内容
# yum repolist all # 显示所有资源库
# yum repolist enabled # 显示所有已启动的资源库
# yum repolist disabled # 显示所有被禁用的资源库
搭配grep使用,例如:
# yum repolist all | grep php
- 添加
repository
$ yum-config-manager --add-repo repository_url
- 切换库中资源 : 禁用 + 启用
# yum-config-manager --disable itemName
# yum-config-manager --enable itemName
或者直接编辑 /etc/yum.repos.d/
下的对应资源库文件
enabled=0 # 禁用
enabled=1 # 启用
如果同时启用了多个版本,安装时会自动选择新版本
- 删除仓库
在
/etc/yum.repos.d/
下手动删除对应.repo
文件即可。但要注意,这会使得该库中所有信息被删除。
X 参考文献
- yum源仓库的三种搭建方式 - 博客园
- 自建yum源(rpm包仓库) - 大专栏
- Linux yum是什么,yum源配置(网络yum源和本地yum源) - C语言中文网
- 使用yum查看安装了哪些软件包、某软件包是否已经安装? - CSDN
- Linux之httpd(Apache Http)服务 - CSDN
- CentOS7搭建httpd服务 - CSDN
- 银河麒麟 V10 高级版(基于CENTOS)的YUM源
- Centos设置开机自动启动 - CSDN 【推荐】
[Linux]CentOS7搭建/配置:YUM仓库/源[本地源/Web源(Apache HTTP(D))/自建源仓库]的更多相关文章
- centos7如何配置yum仓库
centos7如何配置yum仓库 一.总结 一句话总结: 备份原仓库配置原件,接来下按需求 百度 是指定本地光盘作为yum仓库,还是使用网络源作为yum仓库 二.centos7如何配置yum仓库 1. ...
- Linux(CentOS7)下配置多个tomcat
记录 Linux(CentOS7) 下配置多个 tomcat 的操作过程. 一.下载tomcat 前提:安装配置好jdk环境,未配置可参考Linux(CentOS7)下安装jdk1.8. 从 tomc ...
- Centos7搭建在线yum源
1: 首先关闭防护墙或者设置规则通过且关闭selinux Systemctl diablefirewalld 永久关闭防火墙 vim/etc/sysconfig/selinux 并修改SELINUX ...
- CentOS7.1 JDK安装 和 CentOS7.1配置yum源
1.卸载自带OPENJDK #查看自身jdk java -verson #查看自身安装的java rpm -qa | grep java #显示如下 python-javapackages-3.4. ...
- linux下如何配置yum源
first:挂载本地镜像文件(挂载:意为将某个文件放置在系统的一个目录下) mkdir /media/cdrom #新建镜像文件挂载目录 cd /usr/local/src ...
- Linux 6.2配置yum本地
yum 1.挂在iso文件 [root@localhostmedia]# mount /dev/cdrom /media 2.安装createrepo createrepo是配置YUM源的配置工具,检 ...
- Linux(CentOS7)修改默认yum源为国内的阿里云、网易yum源
修改方式: echo 备份当前的yum源 mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex echo 新建空的yum源设置目录 mkdir /etc/ ...
- Linux(Centos7)搭建LAMP(Apache+PHP+Mysql环境)
目录 Linux搭建LAMP(Apache+PHP+Mysql环境)Centos7 一. 检查系统环境 1.确认centos版本 2.检查是否安装过apache 3.检查是否安装过Mysql 4.清理 ...
- Linux CentOS7 安装配置 IPtables
2021-08-11 1. 前言 防火墙其实就是实现 Linux 下访问控制功能的,分为硬件和软件的防火墙两种类型.无论在何网络中,防火墙工作的地方一定是网络的边缘.防火墙的策略.规则就是去定义防火墙 ...
- [Linux]CentOS7搭建Nginx + MySQL + PHP
------------------------------------------------------------------------------------- Nginx安装参考地址:ht ...
随机推荐
- 【C++小程序】《我要抽签》b1.0做好了~
也许是的,得横空出世了 如你所见 这款基于\(C++\)能模仿Mrs. Yao抽签系统的cpp终于做完了啦~ 初期功能很少.\(BUG\)极多. 所以为了您的体验:) 请遵守格式 代码: #inclu ...
- 微信端手机跨域上传图片偶尔跑进error
如题.我这两天被这个问题搞得焦头烂额.其他端都没问题,就微信端的有问题,就是因为通过ajax上传图片的时候,设置了 async: false,然后客户用了测试总是跑进error,客户问什么情况,我也找 ...
- 解决Pycharm不能识别selenium的部分提示代码
这是解决前,pycharm没有提示相关的webelement的代码,例如:send_keys, click 之类的 把鼠标指针放在 selenium 这个单词上就能看到这一串路径 然后找到这个路径的文 ...
- css scoped和moudle
scoped css 官方文档 缺点 一.如果用户在别处定义了相同的类名,也许还是会影响到组件的样式. 二.根据css样式优先级的特性,scoped这种处理会造成每个样式的权重加重了: 即理论上我们要 ...
- 电脑日常维护技巧(windows系统)
一.磁盘检测 cmd-->chkdsk 二.磁盘修复 cmd-->sfc/scannow 三.删除缓存文件 运行-->%temp%
- idea中新建java类
project是项目,一个大目录,里面可以放多个module project里面存放: .idea文件(project相当于workplace) module(模块) out(编译生成的.class文 ...
- 实验二 c语言中的表达式及输入输出函数编程应用
1. 格式符%04d的作用是:在左边填充数字0,输出变量的所有数字且左对齐 #include <stdio.h>int main() { int num; scanf("% ...
- keshe
keshe 发送方a 代码: package org.example; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.ut ...
- NX二次开发 版本通用方法
对于用C++做NX二次开发,随着NX的版本变更,二开所用的函数也会有相应的更新调整,生成的DLL不能跨版本运行,报错率极高,甚至不能加载.折腾了好久找到三种方法: 1.纯使用C++的代码开发或者尽可能 ...
- ASM1117脚位图