Linux技术分享
type: channel
link: https://www.ecsy.top/
description: Your description here.
items: Windows 安装 Claude Code 完全指南
items: wheelnext 包的构建原理、结构分析与安装流程
items: 如何移除 openEuler 的 grub2 密码
items: openEuler 操作系统 repo 源汇总（长期更新）
items: openEuler 操作系统常用操作
items: 使用 Ollama + Dify 本地部署 DeepSeek 构建个人知识库
items: 基于 openEuler 24.03 LTS 操作系统源码部署 Kubernetes 开发版本
items: 深秋北京游记
items: 基于 openEuler 22.03 LTS SP4 编译 docker 20.10.13
items: openEuler 常用磁盘管理命令汇总

Windows 安装 Claude Code 完全指南
type: item
date: 2026-03-23T11:17:00+00:00
description: 本文由 Anthropic Claude Opus 4.6 模型自动生成。Claude Code 是 Anthropic 官方推出的 AI 编程助手命令行工具（CLI），可在终端中以自然语言驱动代码编写、调试与重构。本文将详细介绍如何在 Windows 系统上完成安装与配置，并涵盖 VS Code 集成使用。1. 环境要求项目最低要求操作系统Windows 10 / 11GitGit for Windows（详见第 2 节）Node.js（仅 npm 方式需要）≥ 18.0VS Code（如需扩展）≥ 1.98.0内存≥ 4 GB（推荐 8 GB）订阅计划Claude Pro / Max / Teams / Enterprise，或 API Key（按量付费）网络需要稳定的互联网连接2. 前置准备：安装 GitClaude Code 依赖 Git，所有安装方式均需要预先安装 Git for Windows。访问 Git 官网：https://git-scm.com/downloads/win下载并安装 Git for Windows，安装过程中建议勾选 "Git Bash Here" 上下文菜单选项。验证安装：git --version3. 安装 Claude Code CLI提供三种安装方式，推荐程度由高到低排列。方式一：PowerShell 一键安装（推荐）这是官方推荐的 Windows 原生安装方式，无需预装 Node.js，且支持后台自动更新。安装脚本会将 Claude Code 独立二进制文件下载至 C:\Users\<用户名>\.local\bin 目录，并自动将其添加到用户 PATH。打开 PowerShell（无需管理员权限）。执行以下命令：irm https://claude.ai/install.ps1 | iex安装完成后，关闭并重新打开终端（PATH 更新需要新会话生效），然后验证安装：claude --version方式二：WinGet 安装如果你的系统已内置 WinGet（Windows 10 1709+ / Windows 11 默认包含），可执行：winget install Anthropic.ClaudeCode与 PowerShell 一键安装类似，此方式同样无需 Node.js，支持自动更新。方式三：npm 全局安装适合已有 Node.js 开发环境、或需要精确锁定特定版本的用户。前置步骤：安装 Node.js访问 Node.js 官网：https://nodejs.org/下载 LTS（长期支持版） 安装包（≥ 18.0）。运行安装程序，保持默认选项即可（建议勾选 "Add to PATH"）。验证安装：node -v # 应输出 v18.x.x 或更高版本 npm -v # 应输出 npm 版本号安装 Claude Code打开 Git Bash 或 PowerShell，执行：npm install -g @anthropic-ai/claude-code注意：请勿使用 sudo。如遇权限错误（EACCES），应修复 npm 全局目录权限，而非提权安装。npm 方式不支持自动更新，需手动执行 npm update -g @anthropic-ai/claude-code 升级。验证安装成功：claude --version三种安装方式对比对比项PowerShell 一键安装WinGetnpm 全局安装是否需要 Node.js否否是（≥ 18）自动更新支持支持不支持（需手动）安装位置~\.local\bin系统管理npm 全局目录版本锁定支持支持支持需要管理员权限否否否4. 身份认证安装完成后，需要进行身份认证才能使用。方式一：OAuth 浏览器登录（推荐）适用于 Claude Pro / Max / Teams / Enterprise 订阅用户。在终端中启动 Claude Code：claude首次运行时会自动打开默认浏览器，跳转至 Anthropic 授权页面。使用你的 Claude 账号登录并授权即可。方式二：API Key 认证适用于按量付费用户。前往 Anthropic Console 获取 API Key：https://console.anthropic.com/在「API Keys」页面创建新的密钥并妥善保存。设置环境变量（PowerShell）：# 临时设置（仅当前会话有效） $env:ANTHROPIC_API_KEY = "sk-ant-xxxxx" # 永久设置（写入用户环境变量） [System.Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "sk-ant-xxxxx", "User")…

wheelnext 包的构建原理、结构分析与安装流程
type: item
date: 2026-03-18T03:45:00+00:00
description: 简介随着异构算力与多样化运行环境的普及，同一 Python 发行包在不同硬件、驱动与系统组合上的适配差异日益显著。传统“单一 wheel 适配全部环境”的分发模型通常面临两类问题：一是依赖运行时探测与兼容分支，导致部署链路复杂、行为不确定性上升；二是通过拆分多发行包实现适配，带来命名体系扩张、发布流程冗余与运维成本增加。wheelnext 引入的 Variant 机制，目标是在不破坏既有包名与版本语义的前提下，为同一版本提供可按平台能力精确匹配的 wheel 变体在该体系中，variantlib 与 uv-wheelnext 分别承担构建侧与安装侧职责。variantlib 负责对基础 wheel 注入变体元数据、生成带变体标识的产物，并输出用于分发侧索引的 variants.json；uv-wheelnext 负责在安装阶段解析变体索引、加载 provider 插件获取环境能力、执行候选变体过滤与排序，并确定最终安装目标。两者协同后，可形成“发布阶段声明差异、安装阶段自动匹配”的闭环流程本文以 vllm_ascend 为案例，围绕变体包生命周期展开分析：首先说明如何使用 variantlib 构建变体包；其次通过拆包比对定位原始包与变体包的结构差异及其来源；最后结合实际安装日志，复盘 uv-wheelnext 的识别、匹配与选择过程，建立从构建到安装的端到端技术认知1 使用 variantlib 生成变体包本章以原始包 vllm_ascend-0.13.0rc1-cp311-cp311-manylinux_2_24_x86_64.whl 为例，详述如何通过注入变体信息 ascend :: npu_type :: a2 生成变体包 vllm_ascend-0.13.0rc1-cp311-cp311-manylinux_2_24_x86_64-a2.whl，以便更好理解变体包内部结构的变化及产生变化的内容来源1.1 安装 uv-wheelnext参考文档：An experimental, variant-enabled build of uv# 执行以下命令安装 $ curl -LsSf https://astral.sh/uv/install.sh | INSTALLER_DOWNLOAD_URL=https://wheelnext.astral.sh sh # 执行以下命令刷新 PATH 环境变量 $ source $HOME/.local/bin/env # 查看版本号，可以发现命令仍为 uv，但版本已经带有 uv-wheelnext $ uv --version uv-wheelnext 0.8.41.2 安装 variantlib 工具# 克隆 variantlib 源代码 $ git clone https://github.com/wheelnext/variantlib.git # 进入克隆的 variantlib 源代码目录 $ cd variantlib # 创建虚拟环境 $ uv venv # 安装 variantlib $ uv pip install --system . # 查看版本号，确认安装是否成功 $ variantlib --version variantlib version: 0.0.31.3 生成变体包1.3.1 准备 pyproject.toml 文件编写 pyproject.toml 文件（必须）：[variant.default-priorities] namespace = ["ascend"] [variant.providers.ascend] enable-if = "platform_system == 'Linux'" plugin-api = "huawei_ascend_variant_provider.plugin:AscendVariantPlugin" requires = ["huawei-ascend-variant-provider>=0.0.1,<1.0.0"]关于 pyproject.toml 文件，有以下几点注意：文件名称可以随意命名，不必须为 pyproject.tomlvariantlib 在注入变体信息过程中，只是读取 pyproject.toml，并不会对其修改该 pyproject.toml 文件与 vllm_ascend 项目本身的 pyproject.toml 并无关联，因此有两种用法：新建 pyproject.toml（可任意命名），只需写入以上的 variant 信息即可在 vllm_ascend 项目原有的 pyproject.toml 中追加 variant 信息1.3.2 生成变体包执行以下命令，注入变体信息，生成变体包：$…

如何移除 openEuler 的 grub2 密码
type: item
date: 2025-12-05T08:56:00+00:00
description: 1 问题现状在讨论问题之前，先假设这样的场景：某服务器管理员忘记了 root 用户的密码，不能登录服务器，此时需要进行怎样的操作来重置 root 用户的密码呢？一般的操作流程如下：重启服务器进入 grub2 界面（选择内核的界面）按 “e” 进入 grub2 配置界面，找到 linux 开头的行，将该行中的 ro 修改为 rw，并在该行的末尾加上 init=/bin/sh使用组合键 “ctrl+x” 进入单用户模式，获得 shell 操作界面，执行 passwd root 命令为 root 用户设置密码若 SELinux 为 Enforcing 状态，则还需要执行 touch /.autorelabel 命令以使系统重新打标签退出单用户，重启服务器，使用新的 root 用户密码登录系统从以上处理流程可以看到，即使在不知道服务器 root 用户密码的情况下，只要能接触到物理服务器，也能通过一系列操作进入系统。因此，出于安全考虑，对 grub2 加密是有必要的。以下内容摘自官方文档：GRUB (GRand UnifiedBootloader) 是操作系统启动管理器，用来引导不同系统（如Windows、Linux）。GRUB2 是 GRUB 的升级版。系统启动时，可以通过 GRUB2 界面修改启动参数。为了确保系统的启动参数不被任意修改，需要对 GRUB2 界面进行加密，仅在输入正确的 GRUB2 口令时才能修改openEuler 操作系统默认为 grub2 进行了加密并设置了密码，登录 grub2 的用户名为 root，登陆密码为 openEuler#12。官方文档也进行了说明，详见：帐号清单虽然对 grub2 设置密码比较安全，但是机房重地，并非人人都能接触到物理服务器。因此在某些场景下为 grub2 加密反而使操作变得繁琐，在实际生产中，也遇到很多想要取消 grub2 加密的需求，以下就该问题提出完整的解决方案2 如何取消 grub2 加密2.1 临时方案直接修改 /boot/efi/EFI/openEuler/grub.cfg 或 /boot/grub2/grub.cfg 文件，当然也可以修改 /etc/grub2-efi.cfg 文件（与前述文件是软链接关系），将如下代码删除：set superusers=root password_pbkdf2 root grub.pbkdf2.sha512.10000.5A45748D892672FDA02DD3B6F7AE390AC6E6D532A600D4AC477D25C7D087644697D8A0894DFED9D86DC2A27F4E01D925C46417A225FC099C12DBD3D7D49A7425.2BD2F5BF4907DCC389CC5D165DB85CC3E2C94C8F9A30B01DACAA9CD552B731BA1DD3B7CC2C765704D55B8CD962D2AEF19A753CBE9B8464E2B1EB39A3BB4EAB08删除上述代码后，再次重启系统进入 grub2 就不再需要输入密码。然而作为临时方案，这种操作是不能永久生效的当执行了 grub2-mkconfig -o /path/to/grub.cfg 命令或执行了能触发该命令的操作时，都会重新生成 grub.cfg 文件，使得被删除的代码又重新写入2.2 永久方案只要删除 /etc/grub.d/00_header 文件末尾 cat <<EOF ... EOF 部分的代码，即可实现永久取消 grub2 加密在临时方案中修改 grub.cfg 文件时，注意到删除的代码位于以下两行注释中：### BEGIN /etc/grub.d/00_header ### ...... set superusers=root password_pbkdf2 root grub.pbkdf2.sha512.10000.5A45748D892672FDA02DD3B6F7AE390AC6E6D532A600D4AC477D25C7D087644697D8A0894DFED9D86DC2A27F4E01D925C46417A225FC099C12DBD3D7D49A7425.2BD2F5BF4907DCC389CC5D165DB85CC3E2C94C8F9A30B01DACAA9CD552B731BA1DD3B7CC2C765704D55B8CD962D2AEF19A753CBE9B8464E2B1EB39A3BB4EAB08 ### END /etc/grub.d/00_header ###可见这两行用于加密的代码来自于 /etc/grub.d/00_header 文件，那么接下来修改这个文件。该文…

openEuler 操作系统 repo 源汇总（长期更新）
type: item
date: 2025-07-25T09:02:00+00:00
description: openEuler-20.03-LTSx86_华为云[openEuler-everything] name=openEuler-everything baseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/x86_64/ enabled=1 gpgcheck=0 [openEuler-EPOL] name=openEuler-epol baseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/EPOL/x86_64/ enabled=1 gpgcheck=0 [openEuler-update] name=openEuler-update baseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/update/x86_64/ enabled=1 gpgcheck=0x86_openEuler[openEuler-everything] name=openEuler-everything baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/everything/x86_64/ enabled=1 gpgcheck=0 [openEuler-EPOL] name=openEuler-epol baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/x86_64/ enabled=1 gpgcheck=0 [openEuler-update] name=openEuler-update baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/update/x86_64/ enabled=1 gpgcheck=0aarch64_华为云[openEuler-everything] name=openEuler-everything baseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/everything/aarch64/ enabled=1 gpgcheck=0 [openEuler-EPOL] name=openEuler-epol baseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/EPOL/aarch64/ enabled=1 gpgcheck=0 [openEuler-update] name=openEuler-update baseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/update/aarch64/ enabled=1 gpgcheck=0aarch64_openEuler[openEuler-everything] name=openEuler-everything baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/everything/aarch64/ enabled=1 gpgcheck=0 [openEuler-EPOL] name=openEuler-epol baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/aarch64/ enabled=1 gpgcheck=0 [openEuler-update] name=openEuler-update baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/update/aarch64/ enabled=1 gpgcheck=0openEuler-20.03-LTS-SP1x86_华为云[openEuler-everything] name=openEuler-everything baseurl=http://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS-SP1/everything/x86_64/ enabled=1 gpgcheck=0 [openEuler-EPOL] name=openEuler-epol baseurl=http://repo.huaweicloud.com/o…

openEuler 操作系统常用操作
type: item
date: 2025-07-06T01:21:00+00:00
description: 1 配置全局代理1.1 Shell配置代理PROXY_IP=192.168.230.1 PROXY_PORT=10808 export http_proxy=http://${PROXY_IP}:${PROXY_PORT} export https_proxy=http://${PROXY_IP}:${PROXY_PORT} export ALL_PROXY=http://${PROXY_IP}:${PROXY_PORT} export all_proxy=http://${PROXY_IP}:${PROXY_PORT}取消代理unset http_proxy https_proxy ALL_PROXY all_proxy1.2 PowerShell配置代理$env:HTTP_PROXY = "http://127.0.0.1:10808" $env:HTTPS_PROXY = "http://127.0.0.1:10808"取消代理$env:HTTP_PROXY = $null $env:HTTPS_PROXY = $null2 系统环境配置2.1 修改 repo 源2.1 将官方源修改为华为源\cp -a /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.origin sed -i \ -e '/^metalink/ s/^\(.*\)$/#\1/g' \ -e 's/repo.openeuler.org/repo.huaweicloud.com\/openeuler/g' \ /etc/yum.repos.d/openEuler.repo dnf clean all && dnf makecache2.2 将华为源修改为官方源\cp -a /etc/yum.repos.d/openEuler.repo /etc/yum.repos.d/openEuler.repo.hauwei sed -i \ -e '/^meta/ s/^\(.*\)$/#\1/g' \ -e 's/repo.huaweicloud.com\/openeuler/repo.openeuler.org/g' \ /etc/yum.repos.d/openEuler.repo dnf clean all && dnf makecache2.3 修改源中的系统版本curr_version=$(grep -o 'openEuler-[^/]*' openEuler.repo | sort -u) && echo ${curr_version} dest_version=openEuler-24.03-LTS-SP2 sed -i \ -e '/^meta/ s/^\(.*\)$/#\1/g' \ -e "s/${curr_version}/${dest_version}/g" \ /etc/yum.repos.d/openEuler.repo dnf clean all && dnf makecache2.2 开启系统 debug 日志# 开启 systemd 的 debug 日志 $ sed -i '/LogLevel=.*/c LogLevel=debug' /etc/systemd/system.conf # 开启 journal 的 debug 日志 $ sed -i -e '/^\[Journal\]/a LogLevel=debug' \ -e '/^\[Journal\]/a LogTarget=journald' \ /etc/systemd/journald.conf # 开启内核 debug 日志 $ sed -i '/^GRUB_CMDLINE_LINUX=.*/ s/\"$/ rd.debug\"/' /etc/default/grub $ [ -d "/sys/firmware/efi" ] && grub2-mkconfig -o /boot/efi/EFI/$(cat /etc/os-release | grep -w ID | awk -F '"' '{print$2}')/grub.cfg || grub2-mkconfig -o /boot/grub2/grub.cfg2.3 修改 cgroup v1 为 cgroup v2sed -i \ -e '/^GRUB_CMDLINE_LINUX=/ s/cgroup_disable=files //' \ -e '/^GRUB_CMDLINE_LINUX=/ s/"$/ systemd.unified_cgroup_hierarchy=1"/ \ /etc/default/grub if [ -d /…

使用 Ollama + Dify 本地部署 DeepSeek 构建个人知识库
type: item
date: 2025-04-09T01:52:00+00:00
description: 1 环境准备本文所有环境基于 openEuler 22.03 LTS SP4 操作系统1.1 网络环境# 配置代理 PROXY_IP=192.168.230.1 PROXY_PORT=10809 export http_proxy=http://${PROXY_IP}:${PROXY_PORT} export https_proxy=http://${PROXY_IP}:${PROXY_PORT} export ALL_PROXY=http://${PROXY_IP}:${PROXY_PORT} export all_proxy=socks://${PROXY_IP}:${PROXY_PORT}1.2 安装 cuda# 安装基础工具及内核开发包 $ yum install -y gcc-c++ make dkms kernel-source-$(uname -r) kernel-devel-$(uname -r) # 下载 cuda 包 $ wget https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS-SP4/contrib/drivers/x86_64/Packages/cuda_12.4.0_550.54.14_linux.run -P /root # 安装 cuda 包 $ sh /root/cuda_12.4.0_550.54.14_linux.run ...... =========== = Summary = =========== Driver: Installed Toolkit: Installed in /usr/local/cuda-12.4/ Please make sure that - PATH includes /usr/local/cuda-12.4/bin - LD_LIBRARY_PATH includes /usr/local/cuda-12.4/lib64, or, add /usr/local/cuda-12.4/lib64 to /etc/ld.so.conf and run ldconfig as root To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.4/bin To uninstall the NVIDIA Driver, run nvidia-uninstall Logfile is /var/log/cuda-installer.log # 配置 PATH 变量 $ sed -i \ -e '$a \ ' \ -e "\$a export PATH=$PATH" \ -e '$a export PATH=$PATH:/usr/local/cuda-12.4/bin' \ /etc/profile # 刷新 /etc/profile 文件 $ source /etc/profile # 配置库文件 $ sed -i '$a /usr/local/cuda-12.4/lib64' /etc/ld.so.conf # 刷新动态链接库 $ ldconfig # 查看 Nvidia 驱动版本 $ nvidia-smi # 查看 cuda 版本 $ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2024 NVIDIA Corporation Built on Tue_Feb_27_16:19:38_PST_2024 Cuda compilation tools, release 12.4, V12.4.99 Build cuda_12.4.r12.4/compiler.33961263_01.3 安装 docker1.3.1 安装 docker# 定义要安装的 docker 版本及架构（x86_64、aarch64） $ DOCKER_VERSION=26.0.0; DOCKER_ARCH=x86_64 # 从官方仓库下载二进制 docker 压缩包 $ wget https://download.docker.com/linux/static/stable/"${DOCKER_ARCH}"/docker-"${DOCKER_VERSION}".tgz -P /root # 解压下载的压缩包 $ tar -xvf /root/docker-"${DOCKER_VERSION}".tgz -C /root # 复制解压的命令到 /usr/bin 目录 $ cp /root/docker/* /usr/bin # 创建 docke…

基于 openEuler 24.03 LTS 操作系统源码部署 Kubernetes 开发版本
type: item
date: 2024-12-02T11:35:00+00:00
description: 1 安装目标使用源码编译安装 Kubernetes，可以方便的切换版本，方便开发测试工作。本文以 openEuler 24.03 LTS 系统作为基础环境，演示如何操作2 环境准备2.1 网络环境由于编译 docker 所需的源代码资源都在外网，因此需要提前配置代理# 配置代理 PROXY_IP=192.168.230.1 PROXY_PORT=10809 export http_proxy=http://${PROXY_IP}:${PROXY_PORT} export https_proxy=http://${PROXY_IP}:${PROXY_PORT} export ALL_PROXY=http://${PROXY_IP}:${PROXY_PORT} export all_proxy=socks://${PROXY_IP}:${PROXY_PORT} # 测试代理 $ curl www.google.com2.2 系统环境（1）设置主机名及域名解析# 设置主机名 $ hostnamectl set-hostname k8s-master # 配置域名解析 $ cat >>/etc/hosts <<EOF 192.168.230.240 k8s-master EOF（2）关闭防火墙及 SELinux# 关闭防火墙 $ systemctl stop firewalld && systemctl disable firewalld # 关闭 SELinux $ setenforce 0 && sed -i 's/\(SELINUX=\).*/\1disabled/' /etc/selinux/config（3）关闭 Swap 分区# 关闭 Swap 分区 $ swapoff -a # 禁止开机自动挂载 Swap 分区 $ sed -i '/swap/ s/^\(.*\)$/#\1/g' /etc/fstab（4）加载 netfilter 模块# 加载 netfilter 模块 $ modprobe br_netfilter && lsmod | grep br_netfilter br_netfilter 36864 0 bridge 397312 1 br_netfilter # 设置开机自动加载 netfilter 模块 $ cat >/etc/modules-load.d/br_netfilter.conf <<EOF br_netfilter EOF（5）调整内核参数# 编写配置文件 $ cat > /etc/sysctl.d/kubernetes.conf <<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.max_map_count = 262144 EOF # 加载配置文件 $ sysctl -p /etc/sysctl.d/kubernetes.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.max_map_count = 2621442.3 工具环境（1）安装编译及其他工具# 安装编译工具 $ yum install -y gcc-c++ make rsync lxcfs # 启动 lxcfs $ systemctl start lxcfs && systemctl enable lxcfs（2）安装 cfssl 工具# 下载 cfssl 工具 $ wget https://github.com/cloudflare/cfssl/releases/download/v1.6.5/cfssl_1.6.5_linux_amd64 -P /root # 安装 cfssl 工具 $ mv /root/cfssl_1.6.5_linux_amd64 /usr/local/bin/cfssl && chmod +x /usr/local/bin/cfssl # 测试 cfssl 工具 $ cfssl version Version: 1.6.5 Runtime: go1.22.0 # 下载 cfssljson 工具 $ wget https://github.com/cloudflare/cfssl/releases/download/v1.6.5/cfssljson_1.6.5_linux_amd64 -P /root # 安装 cfssljson 工具 $ mv /root/c…

深秋北京游记
type: item
date: 2024-11-21T01:04:00+00:00
description: 北京到了深秋时节，最美的莫过于映衬在黄瓦红墙下金色的银杏与夹杂在绿树青山中火红的枫叶 对于有北京最美赏秋地之称的故宫、中山公园、地坛公园等白天的照片已经看的够多了 公历2024年11月16日，正好是农历的十月十六，俗话说十五的月亮十六圆，此次也毫不例外，更是本年最后的最大满月 既已月色入户，何不欣然起行？遂至景山公园 ，记录下晚上美好的瞬间 拍摄设备：佳能 EOS R6 Mark2 + RF24-105 F4 + RF16 F2.8 {dotted startColor="#1989fa" endColor="#1989fa"/}故宫西北角楼 {lamp/}从角楼远眺神武门（一） {lamp/}银杏与神武门交相辉映 {lamp/}从角楼远眺神武门（二）{lamp/}从角楼远眺神武门（三）{lamp/}故宫神武门广场 {lamp/}从景山俯瞰故宫 {lamp/}景山万春亭 {lamp/}仙人望月 {lamp/}景山富览亭 {lamp/}从景山远望中央广播电视总台大楼和中信大厦 {lamp/}华表与国徽 {lamp/}

基于 openEuler 22.03 LTS SP4 编译 docker 20.10.13
type: item
date: 2024-11-20T13:00:00+00:00
description: 1 编译目标由于 openEuler 所有版本适配的 docker 版本为 18.09，版本比较低不能满足大部分使用场景。因此本文以基于openEuler 22.03 LTS SP4 操作系统编译 docker-ce-20.10.13 为例，演示在 openEuler 操作系统上编译高版本 docker 的操作流程2 环境准备2.1 网络环境由于编译 docker 所需的源代码资源都在外网，因此需要提前配置代理# 配置代理 PROXY_IP=192.168.230.1 PROXY_PORT=1080 export http_proxy=http://${PROXY_IP}:${PROXY_PORT} export https_proxy=http://${PROXY_IP}:${PROXY_PORT} export ALL_PROXY=http://${PROXY_IP}:${PROXY_PORT} export all_proxy=socks://${PROXY_IP}:${PROXY_PORT} # 测试代理 $ curl www.google.com2.2 编译工具安装必要的编译工具$ yum install -y rpm-build rpmdevtools gcc gcc-c++ make golang2.3 编译资源软件包名下载地址docker-ce-20.10.10-3.el8.src.rpmhttps://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-20.10.10-3.el8.src.rpmdocker-ce-cli-20.10.13-3.el8.src.rpmhttps://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-cli-20.10.13-3.el8.src.rpmdocker-ce-rootless-extras-20.10.13-3.el8.src.rpmhttps://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-rootless-extras-20.10.13-3.el8.src.rpmcontainerd.io-1.4.3-3.2.src.rpmhttps://repo.openeuler.openatom.cn/openEuler-preview/sw_arch/openEuler-22.03-LTS/sources/Packages/containerd.io-1.4.3-3.2.src.rpmdocker-scan-plugin-0.12.0-3.el8.src.rpmhttps://download.docker.com/linux/centos/8/source/stable/Packages/docker-scan-plugin-0.12.0-3.el8.src.rpm3 编译流程3.1 编译 docker-ce3.1.1 编译# 定义 GOPATH 路径 $ export GOPATH=/go # 设置不使用 Go Modules 功能 $ export GO111MODULE=off # 从 docker 官方仓库下载 docker-ce-20.10.10-3.el8.src.rpm 源码包 $ wget https://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-20.10.10-3.el8.src.rpm -P /root -2024-11-09 12:39:03-- https://download.docker.com/linux/centos/8/source/stable/Packages/docker-ce-20.10.10-3.el8.src.rpm Connecting to 192.168.230.1:1080... connected. Proxy request sent, awaiting response... 200 OK Length: 11328477 (11M) [binary/octet-stream] Saving to: ‘/root/docker-ce-20.10.10-3.el8.src.rpm’ docker-ce-20.10.10-3.el8. 100%[==================>] 10.80M 1.67MB/s in 7.5s 2024-11-09 12:…

openEuler 常用磁盘管理命令汇总
type: item
date: 2024-08-17T08:44:00+00:00