http://keepass.info/help/v2/setup.html#mono中的KeePass文档(虽然没有特别提到OS X)描述了您的问题:
剪贴板:
在某些系统上,Mono的剪贴板例程无法正常工作。在这种情况下,请安装xsel软件包。如果xsel
已安装,则KeePass≥2.20使用此实用程序进行剪贴板操作。
因此xsel
应该有所帮助。(xsel
可从MacPorts(http://www.macports.org/ports.php?by=all&substr=&page=316&pagesize=50)获得。该资源可从此处获得:http : //www.vergenet.net/~conrad/软件/ xsel /#download)
编辑:但事实并非如此。我很好奇,所以我xsel
在Mac上编译。我不得不说,它不能解决复制/粘贴(通过Portable KeePass 2.20.1测试)的问题。为什么?因为如此处所述,http://www.kfish.org/software/xsel/ xsel
是用于操纵X11应用程序剪贴板内容的工具。X11提供了适用于Linux和UNIX的图形用户界面,但是OS X使用Quartz,而Mono也是如此,正如我意识到的那样(请参阅http://www.mono-project.com/WinForms#About_System.Windows.Forms)。
有一种将用户名和密码复制到剪贴板的解决方法,如以下线程中所述:http : //sourceforge.net/projects/keepass/forums/forum/329221/topic/5106260:
乌雷卡(原文如此)。您的2.19即将通过Mono复制在MAC上工作的粘贴!您现在可以使用复制用户名的按钮,也可以复制密码的按钮!!!
上面的海报提到了这些按钮(显示为在Windows上运行的便携式KeePass 2.20.1(对不起,附近没有Mac)):
复制用户名:
复制密码:
编辑:
我想分享一下我的编译方式xsel
,以防有人在OS X上需要它:
从http://support.apple.com/kb/HT5293安装X11 (这仅适用于OS X 10.8“ Mountain Lion”用户)。
符号连接头和库文件/opt/X11/include/X11
,以/usr/local/include/X11
从/opt/X11/lib
到/usr/local/lib
(或者你可以符号链接到/usr/include
和/usr/lib
):
$ sudo ln -s /opt/X11/include/X11 /usr/local/include/X11
$ for lib in $(ls /opt/X11/lib/lib*); do sudo ln -sf $lib /usr/local/lib; done
否则,您会遇到很多关于找不到文件或缺少符号的错误。我尝试传递非标准的X11目录作为选项,./configure
但没有成功。
从http://www.vergenet.net/~conrad/software/xsel/#download下载并解压缩到例如您的桌面。
您需要gcc
加上库。安装Xcode,然后从Xcode> Preferences> Downloads> Components安装命令行工具。
更改目录,配置和编译:
$ cd xsel-1.2.0
$ ./configure --prefix /usr/local
$ make
make all-am
if gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -fno-strict-aliasing -Wall -Werror -g -std=gnu99 -Wdeclaration-after-statement -Wno-unused -MT xsel.o -MD -MP -MF ".deps/xsel.Tpo" -c -o xsel.o xsel.c; \
then mv -f ".deps/xsel.Tpo" ".deps/xsel.Po"; else rm -f ".deps/xsel.Tpo"; exit 1; fi
gcc -g -O2 -fno-strict-aliasing -Wall -Werror -g -std=gnu99 -Wdeclaration-after-statement -Wno-unused -o xsel xsel.o -lX11
$ make install
您也可以xsel
使用命令在MacPorts中进行安装sudo port install xsel
。在我的设置还需要对X11库和头文件的符号链接,需要多少编译时间。
在Mac上使用KeePass时,我也想分享一些警告:
KeePass 2.18(来自http://keepass2.openix.be)在区分大小写的HFS +时遇到问题。KeePass.exe
键入Keepass.exe
(注意小写字母“ p”)KeePass2.18.app/Contents/MacOS/startkeepass.sh
(以使其静默失败)。我必须使用不区分大小写的HFS +格式化的USB闪存驱动器,然后从那里运行KeePass。
让KeePass 2.20.1在OS X 10.8“ Mountain Lion”上运行非常麻烦。它无法摆脱错误消息:
System.ArgumentException: Directory does not exists
Parameter name: path
at System.IO.FileSystemWatcher..ctor (System.String path, System.String filter) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.IO.FileSystemWatcher:.ctor (string,string)
at KeePass.Util.IpcBroadcast.FswStartServer () [0x00000] in <filename unknown>:0
at KeePass.Util.IpcBroadcast.StartServer () [0x00000] in <filename unknown>:0
at KeePass.Forms.MainForm.OnFormLoad (System.Object sender, System.EventArgs e) [0x00000] in <filename unknown>:0
at System.Windows.Forms.Form.OnLoad (System.EventArgs e) [0x00000] in <filename unknown>:0
at System.Windows.Forms.Form.OnLoadInternal (System.EventArgs e) [0x00000] in <filename unknown>:0
我终于找到了罪魁祸首:2.20.1版的发行说明状态(http://keepass.info/news/n121004_2.20.1.html):
从2.20更改为2.20.1:在类似Unix的系统上,KeePass现在将其大部分临时文件存储在私有临时目录中(最好在中$XDG_RUNTIME_DIR
)。
根据http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html:
$XDG_RUNTIME_DIR
定义基本目录,相对于该基本目录,应存储用户特定的非必需运行时文件和其他文件对象(例如套接字,命名管道等)。目录必须归用户所有...
XDG_RUNTIME_DIR
没有设置。我将其设置为我拥有的目录,KeePass就像一个超级按钮一样工作:
$ echo $XDG_RUNTIME_DIR
$ mkdir ~/.mono
$ export XDG_RUNTIME_DIR=~/.mono/; mono --desktop /Volumes/USB_Flash_Drive/KeePass-2.20.1/KeePass.exe