Redhat/CentOS Add/Remove Packages 添加/删除软件

[quote]某些无法使用yum的情况,可以使用Redhat/CentOS的本地yum源,安装rpm包,或者添加/删除软件包自动解决软件包依赖关系。下文就是针对此需求进行配置,适用于Redhat 5.x,CentOS 5.x。[/quote]

Redhat/CentOS Add/Remove Packages 添加/删除软件包(自动处理依赖关系)
[b]1. 设置本地光盘yum源 vi /etc/yum.repos.d/cdrom.repo[/b]
[cdrom]
enabled = 1
name = cdrom
baseurl = file:///mnt/cdrom/Server
gpgcheck = 0
注意: 如果 baseurl 只写 file:///mnt/cdrom/ 将会报错,[color=red]要加Server[/color]: "No such file or directory: repomd.xml" "Unable to retrieve software information" 因为无法找到: repomd.xml 文件

[b]2. 配置 yum repo 配置文件 vi /usr/lib/python2.4/site-packages/yum/yumRepo.py[/b] 查找:
remote = url + '/' + relative
替换:
remote = "/mnt/cdrom" + '/' + relative

[b]3. 挂载光盘 (DVD)[/b]
mount /dev/cdrom /mnt/cdrom

[b]4. 清除 yum 缓存.更新 yum [/b]
yum clean all yum update

[b]5. 运行 system-config-packages 配置工具[/b]
system-config-packages
[root@control ansible]# ansible-playbook -i inventory k8s-deploy.yml PLAY [Deploy Kubernetes Cluster on openEuler] ************************************************************************* TASK [Gathering Facts] ************************************************************************************************ [WARNING]: Platform linux on host control is using the discovered Python interpreter at /usr/bin/python3, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. ok: [control] [WARNING]: Platform linux on host node02 is using the discovered Python interpreter at /usr/bin/python3, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. ok: [node02] [WARNING]: Platform linux on host node01 is using the discovered Python interpreter at /usr/bin/python3, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. ok: [node01] TASK [Install required packages] ************************************************************************************** fatal: [node02]: FAILED! => {"changed": false, "msg": "Failed to download metadata for repo 'docker-ce-stable': Cannot prepare internal mirrorlist: Cannot resolve path for: \"releasever/$\"", "rc": 1, "results": []} fatal: [control]: FAILED! => {"changed": false, "msg": "Failed to download metadata for repo 'docker-ce-stable': Cannot prepare internal mirrorlist: Cannot resolve path for: \"releasever/$\"", "rc": 1, "results": []} fatal: [node01]: FAILED! => {"changed": false, "msg": "Failed to download metadata for repo 'docker-ce-stable': Cannot prepare internal mirrorlist: Cannot resolve path for: \"releasever/$\"", "rc": 1, "results": []} PLAY RECAP ************************************************************************************************************ control : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0 node01 : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0 node02 : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0 [root@control ansible]# cat k8s-deploy.yml --- - name: Deploy Kubernetes Cluster on openEuler hosts: k8s_cluster become: yes vars: kubernetes_version: "1.28.0" containerd_version: "1.6.21" tasks: - name: Install required packages dnf: name: - curl - wget - vim - socat - conntrack-tools - ipvsadm - docker state: present - name: Start and enable Docker service systemd: name: docker enabled: yes state: started - name: Disable Swap command: swapoff -a ignore_errors: yes - name: Remove Swap from /etc/fstab replace: path: /etc/fstab regexp: '^([^#].*?\sswap\s+sw\s+.*)$' replace: '# \1' - name: Load Kernel Modules modprobe: name: "{{ item }}" state: present loop: - br_netfilter - overlay - name: Install containerd dnf: name: "containerd.io-{{ containerd_version }}.el7.x86_64" state: present - name: Configure containerd copy: dest: /etc/containerd/config.toml content: | version = 2 [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] runtime_type = "io.containerd.runc.v2" [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://registry-1.docker.io"] - name: Persist Kernel Modules copy: dest: /etc/modules-load.d/k8s.conf content: | br_netfilter overlay - name: Configure Sysctl copy: dest: /etc/sysctl.d/k8s.conf content: | net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 notify: Reload Sysctl - name: Add Kubernetes YUM Repo copy: dest: /etc/yum.repos.d/kubernetes.repo content: | [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg - name: Install Kubernetes components dnf: name: - kubelet-{{ kubernetes_version }} - kubeadm-{{ kubernetes_version }} - kubectl-{{ kubernetes_version }} state: present disable_gpg_check: yes - name: Enable kubelet systemd: name: kubelet state: started enabled: yes - name: Initialize Kubernetes Master (Control Node Only) command: kubeadm init --pod-network-cidr=192.168.0.0/16 when: inventory_hostname == "control" register: kubeadm_init - name: Save kubeadm join Command (Control Node Only) copy: dest: /root/kubeadm-join.sh content: | #!/bin/bash {{ kubeadm_init.stdout_lines[-1] }} mode: '0700' when: inventory_hostname == "control" - name: Get kubeadm join Command from Control Node (Worker Nodes Only) slurp: src: /root/kubeadm-join.sh register: kubeadm_join delegate_to: control when: inventory_hostname != "control" - name: Execute kubeadm join on Worker Nodes command: "{{ kubeadm_join.content | b64decode }}" when: inventory_hostname != "control" handlers: - name: Reload Sysctl command: sysctl --system [root@control ansible]#
最新发布
07-09
### 问题分析 用户在使用 Ansible Playbook 部署 Kubernetes 集群时,在任务 `Install required packages` 中遇到 Docker 仓库配置错误。具体的错误信息为: ``` Failed to download metadata for repo 'docker-ce-stable': Cannot prepare internal mirrorlist: Cannot resolve path for releasever ``` 此错误表明 YUM 源配置中存在路径解析失败的问题,主要原因是仓库配置文件中的 `$releasever` 和 `$basearch` 变量未被正确展开。在原始的 Playbook 中,`baseurl` 的值为: ```yaml https://mirrors.aliyun.com/docker-ce/linux/centos/$ releasever/$ basearch/stable ``` 其中,`$ releasever` 和 `$ basearch` 存在多余的空格,导致变量无法正确识别和替换。YUM 在尝试解析路径时会将其视为无效字符串,从而引发元数据下载失败的错误[^1]。 ### 解决方案 要解决该问题,需要将 `baseurl` 中的变量写法更正为标准格式,即移除变量前后的空格,并确保其形式为 `$releasever` 和 `$basearch`。正确的配置如下: ```yaml - name: Configure Docker CE repository (Aliyun Mirror) block: - name: Remove existing Docker repo ansible.builtin.file: path: /etc/yum.repos.d/docker-ce.repo state: absent - name: Add Aliyun Docker repo ansible.builtin.yum_repository: name: docker-ce-stable description: Docker CE Stable - Aliyun baseurl: https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable gpgcheck: yes gpgkey: https://mirrors.aliyun.com/docker-ce/linux/centos/gpg enabled: yes state: present when: ansible_os_family == "RedHat" ``` 此外,openEuler 系统虽然与 CentOS 兼容性较好,但在实际部署过程中仍需确认系统版本是否被 Docker CE 官方镜像支持。若不确定,可考虑手动验证仓库地址是否能够正常访问,或使用 `yum makecache` 命令强制刷新缓存以排查网络或本地缓存问题。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值