Mac OS X 上的 Unix 实用程序使用起来非常痛苦。port install coreutils +with_default_names和其他几个这样的替代解决大部分,但它留下一些破碎的Mac OS X默认-最令人讨厌top和netstat,但我敢肯定我能想到几个的。
我猜想像top和这样的命令netstat都是特定于操作系统的,所以仅仅获取它们的 Linux 等价物的源代码并重新编译是行不通的。
在 Mac OS X 上运行的这些和其他此类命令的最佳等效项是什么?
删除 Macports 后,我有一些奇怪的行为。当我尝试通过 CLI 运行 PostgreSQL 时,我得到:
pawel:~ pawel$ psql
dyld: Library not loaded: /opt/local/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/bin/psql
Reason: image not found
Trace/BPT trap
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我已经通过 Homebrew 安装了 Postgresql 并运行brew list确认它在那里。我如何让 psql 再次工作?
此外,由于错误,尝试安装pg gem失败file not found: /opt/local/lib/libssl.1.0.0.dylib。我需要让 Postgres 不在 /opt/local/ 目录中查找此文件。
我想在我的 mac 上安装 Gparted,我想我可以使用 Homebrew 或 Macports 来帮助解决这个问题,但我似乎无法弄清楚。我尝试使用 Homebrew,因为我还没有真正听说过 Macports 的好消息。
尝试tmux从命令行(Terminal.app),内部(通过 MacPorts 安装,版本 1.9a)打开应用程序,并得到以下结果:
$ open /Applications/Adobe\ Reader.app/
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Adobe Reader.app.
Run Code Online (Sandbox Code Playgroud)
如果在 tmux 之外执行,则相同的命令在同一个终端中可以正常工作。
应从主机读取环境;以下是 tmux.conf :set -g update-environment -r
当重新启动或terminal.app TMUX,它有时错误出与不同的消息,首先,(见下文),并试图再次时,上述错误-10810中给出代替。
$ open /Applications/Adobe\ Reader.app/
The window server could not be contacted. open must be run with a user logged in at the console, either as that user or as root.
Run Code Online (Sandbox Code Playgroud)
我已经尝试过 Apple 自己的应用程序(预览、字体簿、联系人)和第三方(Adobe、Evernote 等)。没有不同。一个似乎有效的应用程序是 finder。(open [dirname]例如。)
我在 OS X 10.7 (Lion) 上工作。我已经从 macports 安装了 gcc 4.7:
sudo port install gcc47
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常:
$ /opt/local/bin/gcc-mp-4.7 -v
(...)
gcc version 4.7.0 (GCC)
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试使用端口选择来更改默认编译器:
$ sudo port select gcc mp-gcc47
Selecting 'mp-gcc47' for 'gcc' succeeded. 'mp-gcc47' is now active.
Run Code Online (Sandbox Code Playgroud)
它将 gcc 二进制文件复制到 /opt/local/bin/gcc,它可以正常工作:
$ /opt/local/bin/gcc -v
(...)
gcc version 4.7.0 (GCC)
Run Code Online (Sandbox Code Playgroud)
它还更改了默认的 gcc:
$ which gcc
/opt/local/bin/gcc
Run Code Online (Sandbox Code Playgroud)
但是运行这个默认的不起作用:
$ gcc -v
gcc-mp-4.7: error trying to exec '/opt/local/bin/i686-apple-darwin11-llvm-gcc-4.2': execvp: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这个二进制文件“i686-apple-darwin11-llvm-gcc-4.2”是苹果提供的原始gcc版本;我不知道为什么它试图在 /opt/local/bin 中查看它,甚至不知道它为什么试图运行它。如果我创建符号链接,它只是调用这个二进制文件,这不是我想要的:
$ sudo ln -s …Run Code Online (Sandbox Code Playgroud) 有没有办法找出哪个应用程序/包拥有或创建特定文件?例如,在 Linux 中,这些命令将显示包所有者
apt-file /bin/progname
rpm -qf /bin/progname
yum whatprovides /bin/progname
Run Code Online (Sandbox Code Playgroud)
在 OS X 中,文件可以是本地 OS X 应用程序的一部分,或者由 Macports 或 Homebrew 安装。这些是完全不同的环境。是否有针对每个环境的命令来检查哪个应用程序/包拥有特定文件?
我最近升级到雪豹。我注意到一些由 MacPorts 编写的文件安装时权限错误——它们的 umask 为 0077。我想我已经缩小了问题的范围:
port命令通过调用sudo。.bashrc文件指定了 0077 的 umask。反正有没有sudo使用旧的行为?现在,它是一种烦人,因为我必须使用sudo运行像简单的命令port installed,port outdated等等。
(此问题在此MacPorts 票证中有更详细的描述。)
我发现了umasksudo的选项,并在其中/etc/sudoers添加了以下行:
Defaults umask=0022
Run Code Online (Sandbox Code Playgroud)
然而,这并没有起到期望的,因为实际所用的umasksudo是工会与此默认掩码用户掩码的。为了重写的行为sudo的umask的,直接使用默认的(即不是工会的用户和默认sudo的面膜),可以添加以下内容:
Defaults umask_override
Run Code Online (Sandbox Code Playgroud) 我有一个已经使用了很多年的 MacOSX 系统,在此期间,我通过 Macports 安装了很多软件包。
我现在想尝试 Homebrew,但从我在这里和其他地方读到的内容很明显,Homebrew 和 Macports 的默认安装不能轻易共存。
卸载 Macports 对我来说不是一个可行的选择,因为我的日常 MacOSX 工作涉及使用各种 Macports 安装的实用程序。此外,我自己开发的许多实用程序现在都与 Macports 相互依赖。最后,我经常使用的许多可执行文件和共享库现在都安装在 /usr/local 下,如果我清除该目录树,我的系统将很快变得无法使用。
所以我的问题是:有没有人想出另一种安装 Homebrew 的方法,它可以与 Macports 共存?具体来说,有没有人想出如何让 Homebrew 使用目录树,例如 /usr/local/homebrew 而不是 /usr/local?
在此先感谢您对文档的任何建议或指示。
当我安装 coreutils port 时,Macports 在哪里安装 GNU sed?我想在 Mac OS X 上使用 GNU sed 而不是 BSD sed。
我想使用“端口安装软件名称”在 Mac 上安装一些软件,但有些软件带有非常大的软件包,而且我没有稳定的连接。我想使用下载管理器下载端口文件,然后使用下载的文件让端口安装软件。是否可以?如何?
macports ×10
macos ×6
homebrew ×4
command-line ×2
mac ×2
gcc ×1
gparted ×1
partitioning ×1
permissions ×1
postgresql ×1
sed ×1
selection ×1
sudo ×1
terminal ×1
tmux ×1
unix ×1