无法让 csshX 在 Mac OS Big Sur 上运行

iva*_*rov 9 macos

csshX 不适用于 Mac Big Sur。

未实现:POSIX::tmpnam():在 /System/Library/Perl/5.28/darwin-thread-multi-2level/POSIX.pm 第 185 行使用 File::Temp。未实现:POSIX::tmpnam() 在 /usr /local/bin/csshX 第 1130 行。BEGIN 失败--编译在 /usr/local/bin/csshX 第 1130 行中止。

iva*_*rov 22

我已经修复了它!

整个事情是 Apple 在 MacOS Catalina perl 5, version 18, subversion 4 (v5.18.4) 中使用作为默认值,但在 Big Sur perl 5, version 28, subversion 2 (v5.28.2) 中使用

csshX 与 5.28 不兼容,因此最简单的方法是通过以下命令更改默认值:

defaults write com.apple.versioner.perl Version -string 5.18
Run Code Online (Sandbox Code Playgroud)

由于 Apple 保留了以前的版本:

sh-3.2# ls -l /usr/bin/perl* 
-rwxr-xr-x 1 root wheel 140176 Jan 1 2020 /usr/bin/perl 
-rwxr-xr-x 1 root wheel 139184 Jan 1 2020 /usr/bin/perl5.18 
-rwxr-xr-x 1 root wheel 121472 Jan 1 2020 /usr/bin/perl5.28 
-rwxr-xr-x 1 root wheel 121472 Jan 1 2020 /usr/bin/perl5.30
Run Code Online (Sandbox Code Playgroud)

Voilà - csshX 又开始工作了!

  • /sf/answers/4919861271/ 的侵入性较小,并获得了我的投票 (3认同)
  • 用户可能需要警惕将系统默认值固定到特定版本,随着时间的推移,该版本会变得越来越过时。 (2认同)

小智 17

将 csshX 的第一行替换为 perl5.18 版本。

编辑 csshX 文件并将第一行替换#!/usr/bin/perl为#!/usr/bin/perl5.18


小智 7

在文图拉执行:

defaults write com.apple.versioner.perl Version -string 5.30
Run Code Online (Sandbox Code Playgroud)

使文件/usr/local/bin/csshx可写:

sudo chmod 755 /usr/local/bin/csshX 
Run Code Online (Sandbox Code Playgroud)

然后用 vim 或 nano 编辑它,将第 1130 行从 POSIX 更改为 File::Temp

use File::Temp   qw(tmpnam);
Run Code Online (Sandbox Code Playgroud)


小智 6

在 CsshX.iterm 中更改行创建 tmp 文件

use POSIX   qw(tmpnam);
Run Code Online (Sandbox Code Playgroud)

经过

use File::Temp  qw(tmpnam);
Run Code Online (Sandbox Code Playgroud)

  • 愚蠢的问题,但 CsshX.iterm 文件在哪里? (2认同)
  • 这不是一个愚蠢的问题。我有同样的:)所以我在我的大sur设置中找到了“use POSIX qw(tmpnam);”行的文件,它是“/usr/local/Cellar/csshx/0.74/bin/csshX” 。但是当我按照指示替换其中出现的内容时,我收到一个新错误: | File::Temp 模块不导出“uname”| 在 /usr/local/bin/csshX 第 25.0 行导入错误后无法继续 | BEGIN 失败--编译在 /usr/local/bin/csshX 第 25 行中止。(为了便于阅读,此处用 | 表示换行符) (2认同)