HEnvBox/ReadMe.md
2023-11-30 11:34:55 +08:00

13 KiB
Raw Blame History

说明

本工程主要用于快速配置本人常用的开发环境。

主要支持以下操作系统:

  • Windows 10及更新版本,架构为x86_64。
  • Ubuntu 22.04架构为x86_64。

对于Windows而言本人常用MSYS2作为开发环境。

存储空间

由于是创建开发环境,则会尽可能多地安装软件,故占用空间较大。

Windows推荐200G以上空间本工程目录Linux推荐100G以上空间本工程目录+系统软件包安装目录)。

一般情况下本工程将下载的软件放入本地程序根路径所在目录但在某些系统中如Linux将使用系统软件包管理工具安装软件此时下载的软件将占用系统空间。

工具

gitee_com_mirror

备份gitee.com的用户、组织或企业的公开仓库的工具。

可用于在线软件的实现即在gitee.com上创建一个组织放在线软件包,再使用此工具同步。

运行环境

本工具需要在已安装好HEnvBox的环境下运行。具体运行环境要求如下:

  • Bash (Linux)
  • MSYS2 UCRT64 (64位Windows)
  • MSYS2 MINGW32 32位Windows

配置

本工具通过文件进行配置,工具根目录为 本地程序根路径/gitee.com,所有文件均需放置此目录。

具体配置文件如下:

  • config.sh:配置文件,一般用于声明变量。
  • user.list:用户列表,每行表示一个用户。
  • org.list:组织列表,每行表示一个组织
  • enterprise.list:企业列表,每行表示一个企业。
config.sh

本配置文件为bash脚本文件可用于配置一些变量:

  • REPO_USE_SSH:当此变量非空时表示使用ssh备份,需要先手动配置ssh,即确保可使用git clone通过ssh备份。
  • GITEE_COM_ACCESS_TOKENgitee.com私人令牌配置好私人令牌可避免一些速率限制(尤其是多人共享一个公网IP上网时)。

使用

本工具可手动调用gitee_com_mirror启动,如需自动运行,请确保先导入了HEnvBox的配置文件。

除了通过配置用户、组织或企业的列表备份相应文件,也支持用户直接将仓库(非bare仓库,仓库目录不能含有空格)放在工具根目录下,启动工具后会自动更新仓库。

github_com_mirror

备份github.com的用户或组织的公开仓库的工具。

可用于在线软件的实现即在github.com上创建一个组织放在线软件包,再使用此工具同步。

运行环境

本工具需要在已安装好HEnvBox的环境下运行。具体运行环境要求如下:

  • Bash (Linux)
  • MSYS2 UCRT64 (64位Windows)
  • MSYS2 MINGW32 32位Windows

配置

本工具通过文件进行配置,工具根目录为 本地程序根路径/github.com,所有文件均需放置此目录。

具体配置文件如下:

  • config.sh:配置文件,一般用于声明变量。
  • user.list:用户列表,每行表示一个用户。
  • org.list:组织列表,每行表示一个组织
config.sh

本配置文件为bash脚本文件可用于配置一些变量:

  • REPO_USE_SSH:当此变量非空时表示使用ssh备份,需要先手动配置ssh,即确保可使用git clone通过ssh备份。

使用

本工具可手动调用github_com_mirror启动,如需自动运行,请确保先导入了HEnvBox的配置文件。

除了通过配置用户、组织的列表备份相应文件,也支持用户直接将仓库(非bare仓库,仓库目录不能含有空格)放在工具根目录下,启动工具后会自动更新仓库。

注意:由于国内github.com连接不稳定建议配置好git的代理上网与系统代理上网再使用此工具同步。

gitea_mirror

备份使用gitea自建站的用户或组织的公开仓库的工具。

可用于在线软件的实现,即在使用gitea自建的站点上创建一个组织放在线软件包,再使用此工具同步。

运行环境

本工具需要在已安装好HEnvBox的环境下运行。具体运行环境要求如下:

  • Bash (Linux)
  • MSYS2 UCRT64 (64位Windows)
  • MSYS2 MINGW32 32位Windows

配置

本工具通过文件进行配置,工具根目录为 本地程序根路径/gitea,所有文件均需放置此目录。

具体配置文件如下:

  • config.sh:配置文件,一般用于声明变量。
  • site.list:站点列表每行一个站点每个站点的站点目录为站点URL去掉/并使用_替换:后的字符串,如http://gitea.hyhsystem.cn:3000/的站点目录为http_gitea.hyhsystem.cn_3000。
  • [站点目录]/user.list:用户列表,每行表示一个用户。
  • [站点目录]/org.list:组织列表,每行表示一个组织
config.sh

本配置文件为bash脚本文件可用于配置一些变量:

  • REPO_USE_SSH:当此变量非空时表示使用ssh备份,需要先手动配置ssh,即确保可使用git clone通过ssh备份。

使用

本工具可手动调用gitea_mirror启动,如需自动运行,请确保先导入了HEnvBox的配置文件。

除了通过配置用户、组织或企业的列表备份相应文件,也支持用户直接将仓库(非bare仓库,仓库目录不能含有空格)放在工具根目录下,启动工具后会自动更新仓库。

ftp_gnu_org_mirror

下载(镜像)ftp.gnu.org的软件。将其下载到本地目录。

运行环境

本工具需要在已安装好HEnvBox的环境下运行。具体运行环境要求如下:

  • Bash (Linux)
  • MSYS2 UCRT64 (64位Windows)
  • MSYS2 MINGW32 32位Windows

配置

本工具通过文件进行配置,工具根目录为 本地程序根路径/ftp.gnu.org,所有文件均需放置此目录。

具体配置文件如下:

  • config.sh:配置文件,一般用于声明变量。
  • dir.list:需要镜像的目录,每行表示一个,如下载nettle目录则为nettle。
  • file.list:需要镜像的文件,每行表示一个,如下载gcc-13.2.0.tar.gz则为gcc/gcc-13.2.0/gcc-13.2.0.tar.gz。
config.sh

本配置文件为bash脚本文件可用于配置一些变量:

  • RSYNC_URL:rsync网络镜像URL。

RSYNC_URL一般可选择以下选项:

  • rsync://ftp.gnu.org/gnu/
  • rsync://rsync.mirrors.ustc.edu.cn/gnu/
  • rsync://mirrors.tuna.tsinghua.edu.cn/gnu/

使用

本工具可手动调用ftp_gnu_org_mirror启动,如需自动运行,请确保先导入了HEnvBox的配置文件。

kernel_org_mirror

下载(镜像)kernel.org的软件。将其下载到本地目录。

运行环境

本工具需要在已安装好HEnvBox的环境下运行。具体运行环境要求如下:

  • Bash (Linux)
  • MSYS2 UCRT64 (64位Windows)
  • MSYS2 MINGW32 32位Windows

配置

本工具通过文件进行配置,工具根目录为 本地程序根路径/kernel.org,所有文件均需放置此目录。

具体配置文件如下:

  • config.sh:配置文件,一般用于声明变量。
  • dir.list:需要镜像的目录,每行表示一个,如下载software目录则为software。
  • file.list:需要镜像的文件,每行表示一个,如下载linux-6.5.tar.xz则为linux/kernel/v6.x/linux-6.5.tar.xz。
config.sh

本配置文件为bash脚本文件可用于配置一些变量:

  • RSYNC_URL:rsync网络镜像URL。

RSYNC_URL一般可选择以下选项:

  • rsync://rsync.kernel.org/pub/
  • rsync://rsync.mirrors.ustc.edu.cn/kernel.org/

使用

本工具可手动调用kernel_org_mirror启动,如需自动运行,请确保先导入了HEnvBox的配置文件。

crosstool-ng

crosstool-ng是一款交叉编译工具链创建工具

对于比较流行的编译目标(如arm-none-eabi)的交叉编译工具链,各个系统厂商或者MSYS2官方可能会收录相关软件包。

若官方未收录或者期待使用较新的交叉编译工具链,可采用crosstool-ng编译。

运行环境

本工具需要在已安装好HEnvBox的环境下运行。具体运行环境要求如下:

  • Bash (Linux)
  • MSYS2 MSYS2 (Windows)

准备工作

  • 必须有较为良好的网络链接,如有条件可配置代理上网。
  • 对于Windows(Windows 10及更新版本)用户而言,MSYS2的crosstool-ng需要目录支持大小写可在创建目录后使用fsutil file setCaseSensitiveInfo 新创建的目录创建一个支持大小写的NTFS目录后使用该目录编译。

交叉编译工具链(受crosstool-ng支持的)编译流程

  • 准备一个文件夹文件夹要支持大小写。文件夹所在磁盘剩余空间根据需要编译的目标而确定推荐Windows上200G,Linux上100G。
  • 使用ct-ng list-samples列出支持的范例,选择合适的范例,如过没有完全匹配的就选择相近的范例。
  • 使用ct-ng menuconfig进行Kconfig配置此配置可修改生成的编译工具链的元组如果上一步未选择到合适的范例可在此步选择。此步配置一些路径信息。
  • 使用ct_ng_path_patch修改相关路径,这步的主要目的为将相关目录修改至HEnvBox目录并非必须。
  • 使用ct-ng build编译,期间可能遇到很多问题,如果是下载问题可尝试多次编译或者配置代理上网。

openwrt_path_patch

修改openwrt或者基于openwrt的工程的目录,有如下功能:

  • 将所有工程的dl目录指向同一个目录,共用下载目录,减少下载量。

运行环境

本工具需要在已安装好HEnvBox的环境下运行。具体运行环境要求如下:

  • Bash (Linux)

buildroot_path_patch

修改buildroot或者基于buildroot的工程的目录,有如下功能:

  • 将所有工程的dl目录指向同一个目录,共用下载目录,减少下载量。

运行环境

本工具需要在已安装好HEnvBox的环境下运行。具体运行环境要求如下:

  • Bash (Linux)

环境变量

本工程主要使用环境变量进行脚本操作:

名称 说明 备注
HENVBOX_ROOT_PATH 根路径 此路径的格式由操作系统决定
HENVBOX_TYPE 类型 对于windows而言其值固定为win32对于其它系统而言其值为uname -s返回的值。
HENVBOX_LOCAL_ROOT_PATH 本地程序根路经 此路径的格式由操作系统决定
HENVBOX_LOCAL_BINDIR_PATH 本地程序根二进制可执行文件路经 此路径的格式由操作系统决定
HENVBOX_LOCAL_ROOT_PATH_UNIX 本地程序根路经Unix格式 此路径专用于MSYS2
HENVBOX_LOCAL_BINDIR_PATH_UNIX 本地程序根二进制可执行文件路经Unix格式 此路径专用于MSYS2
HENVBOX_TOOLS_PATH tools路径 此路径的格式由操作系统决定
HENVBOX_TOOLS_TYPE tools类型 对于windows而言其值可选msys32或msys64。对于其它系统而言其值为软件包管理工具名称或者默认值common。

注1:本地程序表示需要从网络上下载到本地安装的程序tools目录为自带工具或者工具安装资源。

注2:所有环境变量在cmd中可使用set查看在Linux或者MSYS2中可使用env查看。

脚本说明

Windows

  • config.bat在cmd窗口中使用call config.bat路径 可配置环境。
  • install.bat安装或者更新软件包,可多次调用,为防止异常不要同时执行多个实例。
  • upgrade.bat更新软件包,可多次调用。
  • uninstall.bat:卸载安装,主要用于删除右键信息

Ubuntu

  • config.sh在bash中使用. config.bat路径 可配置环境。
  • install.sh安装或者更新软件包,可多次调用,为防止异常不要同时执行多个实例。
  • upgrade.sh更新软件包,可多次调用。
  • uninstall.sh:卸载安装,主要用于删除.bashrc信息。注意:为保证系统稳定性,不会删除已安装的软件包。

安装

Windows

保证目录可写可参考MSYS2对目录的要求确保安装路径中没有空格与中文。

以管理员权限执行install.bat,等待安装完成。

完成后可在目录的右键菜单中找到HEnvBox选项。在需要使用各种MSYS2中的工具时可使用右键菜单打开HEnvBox。

Ubuntu

使用具有管理员权限的账户(可使用sudo提权)执行install.sh,等待安装完成,期间可能要求输入用户密码。

使用

Windows

  • 默认情况下使用Msys2的UCRT64环境。如需编译32位应用可使用Msys2的MINGW32环境(由于较多应用停止支持32位因此此环境可能功能不全)。
  • 如需保持工具的更新请定期执行更新脚本若太长时间如几个月不更新可能因为GPG签名过期而无法更新。