Stata 16 for Mac

Stata 16 for Mac

Windows 版本的解决办法网上已经很多了,所以本文不再赘述,本文所述的方法仅限 Mac 用户(不过后面的更新检查方法也试用于 Windows 版本的 Stata)。

Stata16 for Mac 试用到期了还是没钱买怎么办,每次启动前修改系统时间又好麻烦?说不定本文的方法可以帮助到你。

首先我们需要在电脑上安装试用版的 Stata16 for Mac(注意安装的时候把系统时间调到过去,完成下面的设置之后再恢复回来),进入它的安装位置然后右键 -> 显示包内容:

然后你可以大概在这个位置找到一个叫 StataMP 的文件(因为我装的是MP版):
/Applications/Stata16/StataMP.app/Contents/MacOS/

双击这个 StataMP 你会发现可以启动 Stata16,但是不建议立即尝试,因为你的试用序列号已经过期了。

打开终端,输入下面的命令安装 libfaketime 和 coreutils:

1
brew install libfaketime coreutils

如果你的电脑没有安装 brew,你可以阅读这篇推文了解如何安装:R 和 RStudio 的安装及 R Profile 的配置 & 初识 R 语言数据爬取,里面有讲解如何安装 homebrew。

libfaketime 是个非常神奇的命令行工具,你可以通过它在一个特定的日期环境启动一个软件。GitHub 地址为:wolfcw/libfaketime: libfaketime modifies the system time for a single application

所以我们就可以使用这个命令行工具以特定的日期环境启动 Stata16 了:

1
faketime -f '@2007-01-01 00:00:00' /Applications/Stata16/StataMP.app/Contents/MacOS/StataMP &

我这里指定的是以 2007-01-01 00:00:00 的时间启动 Stata16,实际上这个日期只要早于 2019 年 8 月 20 号 即可,因为我的试用许可证这天到期。

不过如果直接用上面的命令的运行,faketime 的 CPU 占用会非常大,让电脑一直发热。我们可以设置 FAKETIME_STOP_AFTER_SECONDS=10,就让它运行 10s 后自动关闭,因为软件只是在启动的时候检测一下时间,运行后退出 libfaketime 节省CPU。

1
FAKETIME_STOP_AFTER_SECONDS=10 faketime -f '@2007-01-01 00:00:00' /Applications/Stata16/StataMP.app/Contents/MacOS/StataMP &

不过每次启动都用这么长的语句不也是非常麻烦的么?下面我们制作一个脚本解决这个麻烦的事情,继续在终端操作:

1
2
3
4
cd /usr/local/bin/
touch stata16
chmod a+x stata16
vi stata16

这个时候就进入了 vim 环境,按 i 键进入输入模式,把下面的代码复制上去:

1
2
#!/bin/bash
FAKETIME_STOP_AFTER_SECONDS=10 faketime -f '@2007-01-01 00:00:00' /Applications/Stata16/StataMP.app/Contents/MacOS/StataMP &

粘贴完后按 esc 退出编辑模式,再输入 :wq 保存退出。接下来再在终端输入 stata16 就可以启动 Stata16 了!

1
stata16

需要注意的是,永远不要双击 Stata16 的图标打开 Stata16!

另外你还可以从官网下载离线升级包对你的 Stata16 进行升级。为了方便判断你的 Stata 是否需要升级,我写了一个简单的 ado 命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
*!cupdateCheck
*!version 0.0.0.9000
*!TidyFriday
*!功能:Stata 更新检查
prog drop _all
prog define cupdatecheck
if "`path'" ~= "" {
capture mkdir `path'
cd `path'
}
else {
local path `c(pwd)'
}
update
qui{
local version = int(c(stata_version))
copy "https://www.stata.com/support/updates/stata`version'.html" temp.txt, replace
cap unicode encoding set gb18030
cap unicode translate temp.txt
cap unicode erasebackups, badidea
infix strL v 1-20000 using temp.txt, clear
keep if index(v, "date earlier than")
replace v = ustrregexs(1) if ustrregexm(v, `"\"(.*)\""')
local date = v[1]
}
di as text "{bf: 1.} 最近版本更新发布时间为: {bf: `date'}"
di as yellow `"{bf: 2.} 你也可以从{bf:{browse "https://www.stata.com/support/updates/stata`version'.html": Stata官网}}上下载离线更新包解压后运行{stata db update:db update}然后选择解压后的文件夹进行更新。"'
cap erase temp.txt
clear
end

使用:

1
2
3
4
5
6
7
8
9
10
11
12
. cupdatecheck

Update status
Last check for updates: 19 May 2019
New update available: none (as of 19 May 2019)
Current update level: 28 Apr 2020 (what's new)

Possible actions

Check for available updates (or type -update query-)
1. 最近版本更新发布时间为: 28 Apr 2020
2. 你也可以从 Stata 官网上下载离线更新包解压后运行db update然后选择解压后的文件夹进行更新。

可以看到,当前我的 Stata 的 level 是 28 Apr 2020,而最新版本的是 28 Apr 2020,所以我不需要升级,如果你的 level 早于最新版本,那你就可以从官网下载离线更新包进行更新。

下面就是 Stata16.1MP 了:

百度网盘链接可以添加我的微信获取。

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×