答案1
根据CrashPlan:
自动更新至最新版本。安装后无需再次下载。
如果您运行的是 2.6.13 系列内核或更高版本的 1GHZ+ x86-64 CPU、1GB+ 内存、250MB+ 可用驱动器空间、Oracle (Sun) Java 版本 1.6+、Glibc 2.4+、GTK、Xorg,那么它将适合您。
CrashPlan 安装后会自动启动并提示您创建新帐户。输入信息并点击创建帐户。CrashPlan 会将备份报告和通知发送到您输入的电子邮件地址。
重要细节:您需要使用此命令启动安装脚本以避免出现错误消息:
sudo ./install.sh
这很简单。阅读“自述文件和安装信息”以获取安装说明。
答案2
正常情况下bash install.sh
或者sudo bash install.sh
应该可以工作,但是使用 CrashPlan 的脚本时,一些内部命令最终在 fish 下运行并由于语法差异而失败。
发生这种情况的一个常见原因是 $SHELL 环境变量仍然指向 /usr/bin/fish - 许多程序使用 $SHELL 执行子命令。所以我试过了env SHELL=/bin/bash sudo bash install.sh
=> 仍然是同样的 fish 错误!
fish: Expected a command name, got token of type “Run job in background”. Did you mean “COMMAND; and COMMAND”? See the help section for the “and” builtin command by typing “help and”.
Standard input: sed -imod "s|Exec=.*|Exec=/usr/local/crashplan/bin/CrashPlanDesktop|" /home/anat/Desktop/CrashPlan.desktop && rm -rf /home/anat/Desktop/CrashPlan.desktopmod
^
嗯。让我们再努力一点——从真正的根源入手登录外壳,进行更彻底的重置(环境变量、目录等):
~/CrashPlan-install $ sudo su -
root@overgrad:~# echo $SHELL # that wasn't the problem anyway
/bin/bash
root@overgrad:~# cd /home/anat/CrashPlan-install/
root@overgrad:/home/anat/CrashPlan-install# bash install.sh
...
Would you like to start CrashPlanDesktop? (y/n) [n]
To start the Desktop UI:
/usr/local/bin/CrashPlanDesktop
Installation is complete. Thank you for installing CrashPlan for Linux.
root@overgrad:~# exit
logout
~/CrashPlan-install $ CrashPlanDesktop
注意:当它询问您是否要启动 CrashPlanDesktop 时,请回答“否”。 相反,退出 root shell 并以您自己的身份运行它,如上例所示。(如果您以 root 身份运行它,您稍后可能会遇到启动问题,因为日志文件只能由 root 写入 - 您必须写入sudo rm
它们,然后它才会启动;此外,它将默认仅备份 /root/,因此请确保您配置了正确的目录。)
su -
足以获得登录 shell,但su
要求输入 root 密码,而在 ubuntu 中我们习惯sudo
只要求我们的密码我们甚至不记得root的密码。 但是如果您已经是 root 身份,su
则不会询问任何内容,因此sudo su -
可以正常工作。
我感觉使用这种冗余组合有点傻sudo su
,因为su -
我记得语法,所以快速的 --help 告诉我sudo --login
应该就足够了。
令人惊讶的是sudo --login
失败并出现相同的错误!
这让我很好奇。阅读 install.sh 后我发现:
SRC_USER=${SUDO_USER}
if [ "x${SRC_USER}" == "x" ] ; then
SRC_USER=${USER}
fi
/home/${SRC_USER}/Desktop/${APP_BASENAME}.desktop
(稍后通过一系列命令来创建su ${SRC_USER} -c "..."
)。
=> 啊哈!所以问题是sudo 通过导出 $SUDO_USER 告发我们,甚至对于登录 shell 也是如此。 sudo su -
之所以能够工作是因为su -
在单独的步骤中丢弃了所有环境变量(包括 SUDO_USER)。