diff --git a/README.md b/README.md
index 61417f3..818ca03 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,28 @@
+相关文章:
+
+1、[(34条消息) 非常全面的数字人解决方案_郭泽斌之心的博客-CSDN博客_数字人算法](https://blog.csdn.net/aa84758481/article/details/124758727)
+
+2、[(34条消息) Fay数字人开源项目在mac 上的安装办法_郭泽斌之心的博客-CSDN博客](https://blog.csdn.net/aa84758481/article/details/127551258)
+
+
+
+最近更新:
+
+2022.10.27
+
+1、更新mac上的麦克风参数;
+2、解决mac上无法重启问题;
+3、上传brew安装脚本。
+
+2022.10.17
+
+1、更新语音指令;
+
+2、补充人设语法;
+
## 语音指令
- **关闭核心**
@@ -208,5 +230,5 @@ python main.py
技术交流群
-
+
diff --git a/core/recorder.py b/core/recorder.py
index bf78cc8..0eca3ff 100644
--- a/core/recorder.py
+++ b/core/recorder.py
@@ -95,13 +95,13 @@ def __record(self):
device_id = self.__findInternalRecordingDevice(p)
if device_id < 0:
return
- stream = p.open(input_device_index=device_id, rate=self.__RATE, format=self.__FORMAT, channels=self.__CHANNELS, input=True)
+ stream = p.open(input_device_index=device_id, rate=self.__RATE, format=self.__FORMAT, channels=self.__CHANNELS, input=True, frames_per_buffer=1024)
isSpeaking = False
last_mute_time = time.time()
last_speaking_time = time.time()
while self.__running:
- data = stream.read(1024)
+ data = stream.read(1024, exception_on_overflow=False)
level = audioop.rms(data, 2)
if len(self.__history_data) >= 5:
self.__history_data.pop(0)
diff --git a/fay_booter.py b/fay_booter.py
index 4b11c95..ad2796f 100644
--- a/fay_booter.py
+++ b/fay_booter.py
@@ -154,12 +154,12 @@ def start():
util.log(1, '开启录音服务...')
recorderListener = RecorderListener(record['device'], feiFei) # 监听麦克风
recorderListener.start()
-
- util.log(1, '注册命令...')
- MyThread(target=console_listener).start() # 监听控制台
+# mac下启动经常获取了不明内容,导致关闭再开启时等待输入
+# util.log(1, '注册命令...')
+# MyThread(target=console_listener).start() # 监听控制台
util.log(1, '完成!')
- util.log(1, '使用 \'help\' 获取帮助.')
+# util.log(1, '使用 \'help\' 获取帮助.')
# if __name__ == '__main__':
# ws_server: MyServer = None
diff --git a/images/37.jpg b/images/37.jpg
deleted file mode 100644
index 8f70991..0000000
Binary files a/images/37.jpg and /dev/null differ
diff --git a/images/37.png b/images/37.png
new file mode 100644
index 0000000..a8b4071
Binary files /dev/null and b/images/37.png differ
diff --git a/shell/brew.sh b/shell/brew.sh
new file mode 100644
index 0000000..c529c5e
--- /dev/null
+++ b/shell/brew.sh
@@ -0,0 +1,816 @@
+#HomeBrew自动安装脚本
+#qq 467665317
+#brew brew brew brew
+
+#获取硬件信息 判断inter还是苹果M
+UNAME_MACHINE="$(uname -m)"
+#在X86电脑上测试arm电脑
+# UNAME_MACHINE="arm64"
+
+# 判断是Linux还是Mac os
+OS="$(uname)"
+if [[ "$OS" == "Linux" ]]; then
+ HOMEBREW_ON_LINUX=1
+elif [[ "$OS" != "Darwin" ]]; then
+ echo "Homebrew 只运行在 Mac OS 或 Linux."
+fi
+
+# 字符串染色程序
+if [[ -t 1 ]]; then
+ tty_escape() { printf "\033[%sm" "$1"; }
+else
+ tty_escape() { :; }
+fi
+tty_universal() { tty_escape "0;$1"; } #正常显示
+tty_mkbold() { tty_escape "1;$1"; } #设置高亮
+tty_underline="$(tty_escape "4;39")" #下划线
+tty_blue="$(tty_universal 34)" #蓝色
+tty_red="$(tty_universal 31)" #红色
+tty_green="$(tty_universal 32)" #绿色
+tty_yellow="$(tty_universal 33)" #黄色
+tty_bold="$(tty_universal 39)" #加黑
+tty_cyan="$(tty_universal 36)" #青色
+tty_reset="$(tty_escape 0)" #去除颜色
+
+#用户输入极速安装speed,git克隆只取最近新版本
+#但是update会出错,提示需要下载全部数据
+GIT_SPEED=""
+
+if [[ $0 == "speed" ]]; then
+ GIT_SPEED="--depth=1"
+else
+ for dir in $@; do
+ echo $dir
+ if [[ $dir == "speed" ]]; then
+ GIT_SPEED="--depth=1"
+ fi
+ done
+fi
+
+if [[ $GIT_SPEED != "" ]]; then
+echo "${tty_red}
+ 检测到参数speed,只拉取最新数据,可以正常install使用!
+ 腾讯和阿里不支持speed拉取,需要腾讯阿里需要完全模式。
+ 但是以后brew update的时候会报错,运行报错提示的两句命令即可修复
+ ${tty_reset}"
+fi
+
+#获取前面两个.的数据
+major_minor() {
+ echo "${1%%.*}.$(x="${1#*.}"; echo "${x%%.*}")"
+}
+
+#设置一些平台地址
+if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then
+ #Mac
+ if [[ "$UNAME_MACHINE" == "arm64" ]]; then
+ #M1
+ HOMEBREW_PREFIX="/opt/homebrew"
+ HOMEBREW_REPOSITORY="${HOMEBREW_PREFIX}"
+ else
+ #Inter
+ HOMEBREW_PREFIX="/usr/local"
+ HOMEBREW_REPOSITORY="${HOMEBREW_PREFIX}/Homebrew"
+ fi
+
+ HOMEBREW_CACHE="${HOME}/Library/Caches/Homebrew"
+ HOMEBREW_LOGS="${HOME}/Library/Logs/Homebrew"
+
+ #国内没有homebrew-services,手动在gitee创建了一个,有少数人用到。
+ USER_SERVICES_GIT=https://gitee.com/cunkai/homebrew-services.git
+
+ STAT="stat -f"
+ CHOWN="/usr/sbin/chown"
+ CHGRP="/usr/bin/chgrp"
+ GROUP="admin"
+ TOUCH="/usr/bin/touch"
+
+ #获取Mac系统版本
+ macos_version="$(major_minor "$(/usr/bin/sw_vers -productVersion)")"
+else
+ #Linux
+ UNAME_MACHINE="$(uname -m)"
+
+ HOMEBREW_PREFIX="/home/linuxbrew/.linuxbrew"
+ HOMEBREW_REPOSITORY="${HOMEBREW_PREFIX}/Homebrew"
+
+ HOMEBREW_CACHE="${HOME}/.cache/Homebrew"
+ HOMEBREW_LOGS="${HOME}/.logs/Homebrew"
+
+ STAT="stat --printf"
+ CHOWN="/bin/chown"
+ CHGRP="/bin/chgrp"
+ GROUP="$(id -gn)"
+ TOUCH="/bin/touch"
+fi
+
+
+
+#获取系统时间
+TIME=$(date "+%Y-%m-%d %H:%M:%S")
+
+JudgeSuccess()
+{
+ if [ $? -ne 0 ];then
+ echo "${tty_red}此步骤失败 '$1'${tty_reset}"
+ if [[ "$2" == 'out' ]]; then
+ exit 0
+ fi
+ else
+ echo "${tty_green}此步骤成功${tty_reset}"
+
+ fi
+}
+# 判断是否有系统权限
+have_sudo_access() {
+ if [[ -z "${HAVE_SUDO_ACCESS-}" ]]; then
+ /usr/bin/sudo -l mkdir &>/dev/null
+ HAVE_SUDO_ACCESS="$?"
+ fi
+
+ if [[ "$HAVE_SUDO_ACCESS" -ne 0 ]]; then
+ echo "${tty_red}开机密码输入错误,获取权限失败!${tty_reset}"
+ fi
+
+ return "$HAVE_SUDO_ACCESS"
+}
+
+
+abort() {
+ printf "%s\n" "$1"
+ # exit 1
+}
+
+shell_join() {
+ local arg
+ printf "%s" "$1"
+ shift
+ for arg in "$@"; do
+ printf " "
+ printf "%s" "${arg// /\ }"
+ done
+}
+
+execute() {
+ if ! "$@"; then
+ abort "$(printf "${tty_red}此命令运行失败: %s${tty_reset}" "$(shell_join "$@")")"
+ fi
+}
+
+
+
+ohai() {
+ printf "${tty_blue}运行代码 ==>${tty_bold} %s${tty_reset}\n" "$(shell_join "$@")"
+}
+
+# 管理员运行
+execute_sudo()
+{
+
+ local -a args=("$@")
+ if have_sudo_access; then
+ if [[ -n "${SUDO_ASKPASS-}" ]]; then
+ args=("-A" "${args[@]}")
+ fi
+ ohai "/usr/bin/sudo" "${args[@]}"
+ execute "/usr/bin/sudo" "${args[@]}"
+ else
+ ohai "${args[@]}"
+ execute "${args[@]}"
+ fi
+}
+#添加文件夹权限
+AddPermission()
+{
+ execute_sudo "/bin/chmod" "-R" "a+rwx" "$1"
+ execute_sudo "$CHOWN" "$USER" "$1"
+ execute_sudo "$CHGRP" "$GROUP" "$1"
+}
+#创建文件夹
+CreateFolder()
+{
+ echo '-> 创建文件夹' $1
+ execute_sudo "/bin/mkdir" "-p" "$1"
+ JudgeSuccess
+ AddPermission $1
+}
+
+RmAndCopy()
+{
+ if [[ -d $1 ]]; then
+ echo " ---备份要删除的$1到系统桌面...."
+ if ! [[ -d $HOME/Desktop/Old_Homebrew/$TIME/$1 ]]; then
+ sudo mkdir -p "$HOME/Desktop/Old_Homebrew/$TIME/$1"
+ fi
+ sudo cp -rf $1 "$HOME/Desktop/Old_Homebrew/$TIME/$1"
+ echo " ---$1 备份完成"
+ fi
+ sudo rm -rf $1
+}
+
+RmCreate()
+{
+ RmAndCopy $1
+ CreateFolder $1
+}
+
+#判断文件夹存在但不可写
+exists_but_not_writable() {
+ [[ -e "$1" ]] && ! [[ -r "$1" && -w "$1" && -x "$1" ]]
+}
+#文件所有者
+get_owner() {
+ $(shell_join "$STAT %u $1" )
+}
+#文件本人无权限
+file_not_owned() {
+ [[ "$(get_owner "$1")" != "$(id -u)" ]]
+}
+#获取所属的组
+get_group() {
+ $(shell_join "$STAT %g $1" )
+}
+#不在所属组
+file_not_grpowned() {
+ [[ " $(id -G "$USER") " != *" $(get_group "$1") "* ]]
+}
+#获得当前文件夹权限 例如777
+get_permission() {
+ $(shell_join "$STAT %A $1" )
+}
+#授权当前用户权限
+user_only_chmod() {
+ [[ -d "$1" ]] && [[ "$(get_permission "$1")" != "755" ]]
+}
+
+
+#创建brew需要的目录 直接复制于国外版本,同步
+CreateBrewLinkFolder()
+{
+ echo "--创建Brew所需要的目录"
+ directories=(bin etc include lib sbin share opt var
+ Frameworks
+ etc/bash_completion.d lib/pkgconfig
+ share/aclocal share/doc share/info share/locale share/man
+ share/man/man1 share/man/man2 share/man/man3 share/man/man4
+ share/man/man5 share/man/man6 share/man/man7 share/man/man8
+ var/log var/homebrew var/homebrew/linked
+ bin/brew)
+ group_chmods=()
+ for dir in "${directories[@]}"; do
+ if exists_but_not_writable "${HOMEBREW_PREFIX}/${dir}"; then
+ group_chmods+=("${HOMEBREW_PREFIX}/${dir}")
+ fi
+ done
+
+ directories=(share/zsh share/zsh/site-functions)
+ zsh_dirs=()
+ for dir in "${directories[@]}"; do
+ zsh_dirs+=("${HOMEBREW_PREFIX}/${dir}")
+ done
+
+ directories=(bin etc include lib sbin share var opt
+ share/zsh share/zsh/site-functions
+ var/homebrew var/homebrew/linked
+ Cellar Caskroom Frameworks)
+ mkdirs=()
+ for dir in "${directories[@]}"; do
+ if ! [[ -d "${HOMEBREW_PREFIX}/${dir}" ]]; then
+ mkdirs+=("${HOMEBREW_PREFIX}/${dir}")
+ fi
+ done
+
+ user_chmods=()
+ if [[ "${#zsh_dirs[@]}" -gt 0 ]]; then
+ for dir in "${zsh_dirs[@]}"; do
+ if user_only_chmod "${dir}"; then
+ user_chmods+=("${dir}")
+ fi
+ done
+ fi
+
+ chmods=()
+ if [[ "${#group_chmods[@]}" -gt 0 ]]; then
+ chmods+=("${group_chmods[@]}")
+ fi
+ if [[ "${#user_chmods[@]}" -gt 0 ]]; then
+ chmods+=("${user_chmods[@]}")
+ fi
+
+ chowns=()
+ chgrps=()
+ if [[ "${#chmods[@]}" -gt 0 ]]; then
+ for dir in "${chmods[@]}"; do
+ if file_not_owned "${dir}"; then
+ chowns+=("${dir}")
+ fi
+ if file_not_grpowned "${dir}"; then
+ chgrps+=("${dir}")
+ fi
+ done
+ fi
+
+ if [[ -d "${HOMEBREW_PREFIX}" ]]; then
+ if [[ "${#chmods[@]}" -gt 0 ]]; then
+ execute_sudo "/bin/chmod" "u+rwx" "${chmods[@]}"
+ fi
+ if [[ "${#group_chmods[@]}" -gt 0 ]]; then
+ execute_sudo "/bin/chmod" "g+rwx" "${group_chmods[@]}"
+ fi
+ if [[ "${#user_chmods[@]}" -gt 0 ]]; then
+ execute_sudo "/bin/chmod" "755" "${user_chmods[@]}"
+ fi
+ if [[ "${#chowns[@]}" -gt 0 ]]; then
+ execute_sudo "$CHOWN" "$USER" "${chowns[@]}"
+ fi
+ if [[ "${#chgrps[@]}" -gt 0 ]]; then
+ execute_sudo "$CHGRP" "$GROUP" "${chgrps[@]}"
+ fi
+ else
+ execute_sudo "/bin/mkdir" "-p" "${HOMEBREW_PREFIX}"
+ if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then
+ execute_sudo "$CHOWN" "root:wheel" "${HOMEBREW_PREFIX}"
+ else
+ execute_sudo "$CHOWN" "$USER:$GROUP" "${HOMEBREW_PREFIX}"
+ fi
+ fi
+
+ if [[ "${#mkdirs[@]}" -gt 0 ]]; then
+ execute_sudo "/bin/mkdir" "-p" "${mkdirs[@]}"
+ execute_sudo "/bin/chmod" "g+rwx" "${mkdirs[@]}"
+ execute_sudo "$CHOWN" "$USER" "${mkdirs[@]}"
+ execute_sudo "$CHGRP" "$GROUP" "${mkdirs[@]}"
+ fi
+
+ if ! [[ -d "${HOMEBREW_REPOSITORY}" ]]; then
+ execute_sudo "/bin/mkdir" "-p" "${HOMEBREW_REPOSITORY}"
+ fi
+ execute_sudo "$CHOWN" "-R" "$USER:$GROUP" "${HOMEBREW_REPOSITORY}"
+
+ if ! [[ -d "${HOMEBREW_CACHE}" ]]; then
+ if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then
+ execute_sudo "/bin/mkdir" "-p" "${HOMEBREW_CACHE}"
+ else
+ execute "/bin/mkdir" "-p" "${HOMEBREW_CACHE}"
+ fi
+ fi
+ if exists_but_not_writable "${HOMEBREW_CACHE}"; then
+ execute_sudo "/bin/chmod" "g+rwx" "${HOMEBREW_CACHE}"
+ fi
+ if file_not_owned "${HOMEBREW_CACHE}"; then
+ execute_sudo "$CHOWN" "-R" "$USER" "${HOMEBREW_CACHE}"
+ fi
+ if file_not_grpowned "${HOMEBREW_CACHE}"; then
+ execute_sudo "$CHGRP" "-R" "$GROUP" "${HOMEBREW_CACHE}"
+ fi
+ if [[ -d "${HOMEBREW_CACHE}" ]]; then
+ execute "$TOUCH" "${HOMEBREW_CACHE}/.cleaned"
+ fi
+ echo "--依赖目录脚本运行完成"
+}
+
+#git提交
+git_commit(){
+ git add .
+ git commit -m "your del"
+}
+
+#version_gt 判断$1是否大于$2
+version_gt() {
+ [[ "${1%.*}" -gt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -gt "${2#*.}" ]]
+}
+#version_ge 判断$1是否大于等于$2
+version_ge() {
+ [[ "${1%.*}" -gt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -ge "${2#*.}" ]]
+}
+#version_lt 判断$1是否小于$2
+version_lt() {
+ [[ "${1%.*}" -lt "${2%.*}" ]] || [[ "${1%.*}" -eq "${2%.*}" && "${1#*.}" -lt "${2#*.}" ]]
+}
+
+#发现错误 关闭脚本 提示如何解决
+error_game_over(){
+ echo "
+ ${tty_red}失败$MY_DOWN_NUM 右键下面地址查看常见错误解决办法
+ https://github.com/TheRamU/Fay
+ 如果没有解决,把全部运行过程截图发到 467665317@qq.com ${tty_reset}
+ "
+
+ exit 0
+}
+
+#一些警告判断
+warning_if(){
+ git_https_proxy=$(git config --global https.proxy)
+ git_http_proxy=$(git config --global http.proxy)
+ if [[ -z "$git_https_proxy" && -z "$git_http_proxy" ]]; then
+ echo "未发现Git代理(属于正常状态)"
+ else
+ echo "${tty_yellow}
+ 提示:发现你电脑设置了Git代理,如果Git报错,请运行下面两句话:
+
+ git config --global --unset https.proxy
+
+ git config --global --unset http.proxy${tty_reset}
+ "
+ fi
+}
+
+echo "
+ ${tty_green} 开始执行Brew自动安装程序 ${tty_reset}
+ ${tty_cyan} [467665317@qq.com] ${tty_reset}
+ ['$TIME']['$macos_version']
+ ${tty_cyan} https://github.com/TheRamU/Fay${tty_reset}
+"
+#选择一个brew下载源
+echo -n "${tty_green}
+请选择一个下载brew本体的序号,例如中科大,输入1回车。
+源有时候不稳定,如果git克隆报错重新运行脚本选择源。
+1、中科大下载源
+2、清华大学下载源
+3、北京外国语大学下载源 ${tty_reset}"
+if [[ $GIT_SPEED == "" ]]; then
+ echo -n "${tty_green}
+4、腾讯下载源
+5、阿里巴巴下载源 ${tty_reset}"
+fi
+echo -n "
+${tty_blue}请输入序号: "
+read MY_DOWN_NUM
+echo "${tty_reset}"
+case $MY_DOWN_NUM in
+"2")
+ echo "
+ 你选择了清华大学brew本体下载源
+ "
+ USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/
+ #HomeBrew基础框架
+ USER_BREW_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
+ #HomeBrew Core
+ USER_CORE_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
+ #HomeBrew Cask
+ USER_CASK_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask.git
+ USER_CASK_FONTS_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-fonts.git
+ USER_CASK_DRIVERS_GIT=https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-cask-drivers.git
+;;
+"3")
+ echo "
+ 北京外国语大学brew本体下载源
+ "
+ USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.bfsu.edu.cn/homebrew-bottles
+ #HomeBrew基础框架
+ USER_BREW_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/brew.git
+ #HomeBrew Core
+ USER_CORE_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-core.git
+ #HomeBrew Cask
+ USER_CASK_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-cask.git
+ USER_CASK_FONTS_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-cask-fonts.git
+ USER_CASK_DRIVERS_GIT=https://mirrors.bfsu.edu.cn/git/homebrew/homebrew-cask-drivers.git
+;;
+"4")
+ echo "
+ 你选择了腾讯brew本体下载源
+ "
+ USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.cloud.tencent.com/homebrew-bottles
+ #HomeBrew基础框架
+ USER_BREW_GIT=https://mirrors.cloud.tencent.com/homebrew/brew.git
+ #HomeBrew Core
+ USER_CORE_GIT=https://mirrors.cloud.tencent.com/homebrew/homebrew-core.git
+ #HomeBrew Cask
+ USER_CASK_GIT=https://mirrors.cloud.tencent.com/homebrew/homebrew-cask.git
+;;
+"5")
+ echo "
+ 你选择了阿里巴巴brew本体下载源
+ "
+ USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles
+ #HomeBrew基础框架
+ USER_BREW_GIT=https://mirrors.aliyun.com/homebrew/brew.git
+ #HomeBrew Core
+ USER_CORE_GIT=https://mirrors.aliyun.com/homebrew/homebrew-core.git
+ #HomeBrew Cask
+ USER_CASK_GIT=https://mirrors.aliyun.com/homebrew/homebrew-cask.git
+;;
+*)
+ echo "
+ 你选择了中国科学技术大学brew本体下载源
+ "
+ #HomeBrew 下载源 install
+ USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
+ #HomeBrew基础框架
+ USER_BREW_GIT=https://mirrors.ustc.edu.cn/brew.git
+ #HomeBrew Core
+ USER_CORE_GIT=https://mirrors.ustc.edu.cn/homebrew-core.git
+ #HomeBrew Cask
+ USER_CASK_GIT=https://mirrors.ustc.edu.cn/homebrew-cask.git
+;;
+esac
+echo -n "${tty_green}!!!此脚本将要删除之前的brew(包括它下载的软件),请自行备份。
+->是否现在开始执行脚本(N/Y) "
+read MY_Del_Old
+echo "${tty_reset}"
+case $MY_Del_Old in
+"y")
+echo "--> 脚本开始执行"
+;;
+"Y")
+echo "--> 脚本开始执行"
+;;
+*)
+echo "你输入了 $MY_Del_Old ,自行备份老版brew和它下载的软件, 如果继续运行脚本应该输入Y或者y
+"
+exit 0
+;;
+esac
+
+
+if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then
+#MAC
+ echo "${tty_yellow} Mac os设置开机密码方法:
+ (设置开机密码:在左上角苹果图标->系统偏好设置->"用户与群组"->更改密码)
+ (如果提示This incident will be reported. 在"用户与群组"中查看是否管理员) ${tty_reset}"
+fi
+
+echo "==> 通过命令删除之前的brew、创建一个新的Homebrew文件夹
+${tty_cyan}请输入开机密码,输入过程不显示,输入完后回车${tty_reset}"
+
+sudo echo '开始执行'
+#删除以前的Homebrew
+RmCreate ${HOMEBREW_REPOSITORY}
+RmAndCopy $HOMEBREW_CACHE
+RmAndCopy $HOMEBREW_LOGS
+
+# 让环境暂时纯粹,脚本运行结束后恢复
+if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then
+ export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:${HOMEBREW_REPOSITORY}/bin
+fi
+git --version
+if [ $? -ne 0 ];then
+
+ if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then
+ sudo rm -rf "/Library/Developer/CommandLineTools/"
+ echo "${tty_cyan}安装Git${tty_reset}后再运行此脚本,${tty_red}在系统弹窗中点击“安装”按钮
+ 如果没有弹窗的老系统,需要自己下载安装:https://sourceforge.net/projects/git-osx-installer/ ${tty_reset}"
+ xcode-select --install
+ exit 0
+ else
+ echo "${tty_red} 发现缺少git,开始安装,请输入Y ${tty_reset}"
+ sudo apt install git
+ fi
+fi
+
+echo "
+${tty_cyan}下载速度觉得慢可以ctrl+c或control+c重新运行脚本选择下载源${tty_reset}
+==> 从 $USER_BREW_GIT 克隆Homebrew基本文件
+"
+warning_if
+sudo git clone ${GIT_SPEED} $USER_BREW_GIT ${HOMEBREW_REPOSITORY}
+JudgeSuccess 尝试再次运行自动脚本选择其他下载源或者切换网络 out
+
+#依赖目录创建 授权等等
+CreateBrewLinkFolder
+
+echo '==> 创建brew的替身'
+if [[ "${HOMEBREW_REPOSITORY}" != "${HOMEBREW_PREFIX}" ]]; then
+ find ${HOMEBREW_PREFIX}/bin -name brew -exec sudo rm -f {} \;
+ execute "ln" "-sf" "${HOMEBREW_REPOSITORY}/bin/brew" "${HOMEBREW_PREFIX}/bin/brew"
+fi
+
+echo "==> 从 $USER_CORE_GIT 克隆Homebrew Core
+${tty_cyan}此处如果显示Password表示需要再次输入开机密码,输入完后回车${tty_reset}"
+sudo mkdir -p ${HOMEBREW_REPOSITORY}/Library/Taps/homebrew/homebrew-core
+sudo git clone ${GIT_SPEED} $USER_CORE_GIT ${HOMEBREW_REPOSITORY}/Library/Taps/homebrew/homebrew-core/
+JudgeSuccess 尝试再次运行自动脚本选择其他下载源或者切换网络 out
+
+if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then
+#MAC
+ echo "==> 从 $USER_CASK_GIT 克隆Homebrew Cask 图形化软件
+ ${tty_cyan}此处如果显示Password表示需要再次输入开机密码,输入完后回车${tty_reset}"
+ sudo mkdir -p ${HOMEBREW_REPOSITORY}/Library/Taps/homebrew/homebrew-cask
+ sudo git clone ${GIT_SPEED} $USER_CASK_GIT ${HOMEBREW_REPOSITORY}/Library/Taps/homebrew/homebrew-cask/
+ if [ $? -ne 0 ];then
+ sudo rm -rf ${HOMEBREW_REPOSITORY}/Library/Taps/homebrew/homebrew-cask
+ echo "${tty_red}尝试切换下载源或者切换网络,不过Cask组件非必须模块。可以忽略${tty_reset}"
+ else
+ echo "${tty_green}此步骤成功${tty_reset}"
+
+ fi
+
+ echo "==> 从 $USER_SERVICES_GIT 克隆Homebrew services 管理服务的启停
+ "
+ sudo mkdir -p ${HOMEBREW_REPOSITORY}/Library/Taps/homebrew/homebrew-cask
+ sudo git clone ${GIT_SPEED} $USER_SERVICES_GIT ${HOMEBREW_REPOSITORY}/Library/Taps/homebrew/homebrew-services/
+ JudgeSuccess
+else
+#Linux
+ echo "${tty_yellow} Linux 不支持Cask图形化软件下载 此步骤跳过${tty_reset}"
+fi
+echo '==> 配置国内镜像源HOMEBREW BOTTLE'
+
+#判断下mac os终端是Bash还是zsh
+case "$SHELL" in
+ */bash*)
+ if [[ -r "$HOME/.bash_profile" ]]; then
+ shell_profile="${HOME}/.bash_profile"
+ else
+ shell_profile="${HOME}/.profile"
+ fi
+ ;;
+ */zsh*)
+ shell_profile="${HOME}/.zprofile"
+ ;;
+ *)
+ shell_profile="${HOME}/.profile"
+ ;;
+esac
+
+if [[ -n "${HOMEBREW_ON_LINUX-}" ]]; then
+ #Linux
+ shell_profile="/etc/profile"
+fi
+
+if [[ -f ${shell_profile} ]]; then
+ AddPermission ${shell_profile}
+fi
+#删除之前的环境变量
+if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then
+ #Mac
+ sed -i "" "/ckbrew/d" ${shell_profile}
+else
+ #Linux
+ sed -i "/ckbrew/d" ${shell_profile}
+fi
+
+#选择一个homebrew-bottles下载源
+echo -n "${tty_green}
+
+ Brew本体已经安装成功,接下来配置国内源。
+
+请选择今后brew install的时候访问那个国内镜像,例如阿里巴巴,输入5回车。
+
+1、中科大国内源
+2、清华大学国内源
+3、北京外国语大学国内源
+4、腾讯国内源
+5、阿里巴巴国内源 ${tty_reset}"
+
+echo -n "
+${tty_blue}请输入序号: "
+read MY_DOWN_NUM
+echo "${tty_reset}"
+case $MY_DOWN_NUM in
+"2")
+ echo "
+ 你选择了清华大学国内源
+ "
+ USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/
+;;
+"3")
+ echo "
+ 北京外国语大学国内源
+ "
+ USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.bfsu.edu.cn/homebrew-bottles
+;;
+"4")
+ echo "
+ 你选择了腾讯国内源
+ "
+ USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.cloud.tencent.com/homebrew-bottles
+;;
+"5")
+ echo "
+ 你选择了阿里巴巴国内源
+ "
+ USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles
+;;
+*)
+ echo "
+ 你选择了中国科学技术大学国内源
+ "
+ #HomeBrew 下载源 install
+ USER_HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
+;;
+esac
+
+#写入环境变量到文件
+echo "
+
+ 环境变量写入->${shell_profile}
+
+"
+
+echo "
+ export HOMEBREW_BOTTLE_DOMAIN=${USER_HOMEBREW_BOTTLE_DOMAIN} #ckbrew
+ eval \$(${HOMEBREW_REPOSITORY}/bin/brew shellenv) #ckbrew
+" >> ${shell_profile}
+JudgeSuccess
+source "${shell_profile}"
+if [ $? -ne 0 ];then
+ echo "${tty_red}发现错误,${shell_profile} 文件中有错误,建议根据上一句提示修改;
+ 否则会导致提示 permission denied: brew${tty_reset}"
+fi
+
+AddPermission ${HOMEBREW_REPOSITORY}
+
+if [[ -n "${HOMEBREW_ON_LINUX-}" ]]; then
+ #检测linux curl是否有安装
+ echo "${tty_red}-检测curl是否安装 留意是否需要输入Y${tty_reset}"
+ curl -V
+ if [ $? -ne 0 ];then
+ sudo apt-get install curl
+ if [ $? -ne 0 ];then
+ sudo yum install curl
+ if [ $? -ne 0 ];then
+ echo '失败 请自行安装curl 可以参考https://www.howtoing.com/install-curl-in-linux'
+ error_game_over
+ fi
+ fi
+ fi
+fi
+
+echo '
+==> 安装完成,brew版本
+'
+brew -v
+if [ $? -ne 0 ];then
+ echo '发现错误,自动修复一次!'
+ rm -rf $HOMEBREW_CACHE
+ export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:${HOMEBREW_REPOSITORY}/bin
+ brew update-reset
+ brew -v
+ if [ $? -ne 0 ];then
+ error_game_over
+ fi
+else
+ echo "${tty_green}Brew前期配置成功${tty_reset}"
+fi
+
+#brew 3.1.2版本 修改了很多地址,都写死在了代码中,没有调用环境变量。。额。。
+#ruby下载需要改官方文件
+ruby_URL_file=$HOMEBREW_REPOSITORY/Library/Homebrew/cmd/vendor-install.sh
+
+#判断Mac系统版本
+if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then
+ if version_gt "$macos_version" "10.14"; then
+ echo "电脑系统版本:$macos_version"
+ else
+ echo "${tty_red}检测到你不是最新系统,会有一些报错,请稍等Ruby下载安装;${tty_reset}
+ "
+ fi
+
+ if [[ -f ${ruby_URL_file} ]]; then
+ sed -i "" "s/ruby_URL=/ruby_URL=\"https:\/\/mirrors.tuna.tsinghua.edu.cn\/homebrew-bottles\/bottles-portable-ruby\/\$ruby_FILENAME\" \#/g" $ruby_URL_file
+ fi
+else
+ if [[ -f ${ruby_URL_file} ]]; then
+ sed -i "s/ruby_URL=/ruby_URL=\"https:\/\/mirrors.tuna.tsinghua.edu.cn\/linuxbrew-bottles\/bottles-portable-ruby\/\$ruby_FILENAME\" \#/g" $ruby_URL_file
+ fi
+fi
+
+brew services cleanup
+
+if [[ $GIT_SPEED == "" ]];then
+ echo '
+ ==> brew update-reset
+ '
+ brew update-reset
+ if [[ $? -ne 0 ]];then
+ brew config
+ error_game_over
+ exit 0
+ fi
+else
+ #极速模式提示Update修复方法
+ echo "
+${tty_red} 极速版本安装完成,${tty_reset} install功能正常,如果需要update功能请自行运行下面三句命令
+git -C ${HOMEBREW_REPOSITORY}/Library/Taps/homebrew/homebrew-core fetch --unshallow
+git -C ${HOMEBREW_REPOSITORY}/Library/Taps/homebrew/homebrew-cask fetch --unshallow
+brew update-reset
+ "
+fi
+
+echo "
+ ${tty_green}Brew自动安装程序运行完成${tty_reset}
+ ${tty_green}国内地址已经配置完成${tty_reset}
+
+ 桌面的Old_Homebrew文件夹,大致看看没有你需要的可以删除。
+
+ 初步介绍几个brew命令
+本地软件库列表:brew ls
+查找软件:brew search google(其中google替换为要查找的关键字)
+查看brew版本:brew -v 更新brew版本:brew update
+安装cask软件:brew install --cask firefox 把firefox换成你要安装的
+ ${tty_green}
+ 欢迎右键点击下方地址-打开URL 来给个星${tty_reset}
+ ${tty_underline} https://github.com/TheRamU/Fay ${tty_reset}
+"
+
+if [[ -z "${HOMEBREW_ON_LINUX-}" ]]; then
+ #Mac
+ echo "${tty_red} 安装成功 但还需要重启终端 或者 运行${tty_bold} source ${shell_profile} ${tty_reset} ${tty_red}否则可能无法使用${tty_reset}
+ "
+else
+ #Linux
+ echo "${tty_red} Linux需要重启电脑 或者暂时运行${tty_bold} source ${shell_profile} ${tty_reset} ${tty_red}否则可能无法使用${tty_reset}
+ "
+fi