我想自动化一个构建-目前,在我的开发过程中,所以不涉及安全的东西。
从构建器(Qt Creator)运行脚本时,不会提示我输入sudo密码,但会出现错误
sudo: no tty present and no askpass program specified
Sorry, try again.
我已经找到了一些解决办法,但就是不起作用...我错过了什么?
确切代码:
in myLib.pro
#temporary to make my life easier
QMAKE_POST_LINK = /home/me/move_libs_script
in move_libs_script:
#!/bin/bash
sudo cp $HOME/myLib/myLib.so.1 /usr/local/lib/
sudo ldconfig
我按照上面回答的建议做了:编辑了visudo并添加了脚本...甚至还添加了Qmake...
sudo visudo
added at the end:
me ALL=NOPASSWD: /home/me/move_libs_script, /usr/bin/qmake-qt4
同样的错误
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
编辑:在问完这个问题后,我发现了一个类似的建议问题:https://stackoverflow.com/a/10668693/1217150
所以我尝试添加一个自定义步骤...
结果:
09:50:03: Running build steps for project myLib...
09:50:03: Could not start process "ssh-askpass Sudo Password | sudo -S bash ./move_libs_script"
Error while building project myLib (target: Desktop)
When executing build step 'Custom Process Step'
(如果我从终端运行,我会被要求输入密码)
新编辑:所以我想我可以胜过系统,调用一个调用我脚本的脚本...
myLib.pro
QMAKE_POST_LINK = /home/me/sudo_move_libs_script
sudo_move_libs_script:
#!/bin/bash
ssh-askpass Sudo Password | sudo -S bash $HOME/move_libs_script
拿到了!!!我想我会发帖作为答案
新编辑作为评论的答复:
in mainExe.pro:
QMAKE_POST_LINK = ./link_lib
in link_lib:
#!/bin/sh
LD_LIBRARY_PATH=$HOME/myLib
export LD_LIBRARY_PATH
解决方案1:
在Qt中用sudo运行我需要的命令,并被要求输入密码
mylib.pro
QMAKE_POST_LINK = /home/me/sudo_move_libs_script
#!/bin/bash
ssh-askpass Sudo Password | sudo -S bash $HOME/move_libs_script
#!/bin/bash
cp $HOME/myLib/myLib.so.1 /usr/local/lib/
ldconfig
避免使用sudo:从Qt Creator运行自定义可执行文件(就像部署project时一样)--我可以使用正确的依赖项执行程序。不幸的是,它不能用于调试。
在运行配置中,放置一个脚本“dummy_executable”来代替应用程序的可执行文件:
dummy_executable:
#!/bin/sh
LD_LIBRARY_PATH=$HOME/myLib
export LD_LIBRARY_PATH
$HOME/myExec/myExec "$@
这个方法很适合运行程序...不幸的是gdb失败了...我想它试图调试shell脚本?所以如果我试着一步一步地完成我的程序,它就不会起作用。
选择解决方案1,因为它有优点:允许我构建和调试程序,这是我真正需要的,并且通过设置依赖项,我可以在运行程序之前构建库--这是完美的。
谢谢。Etan Reisner
我已经安装了一个lemp docker容器W/Ubuntu 16.04、Nginx、Mariadb和PHP 7.0,并设置了postfix和基本的ssh功能,这些功能都能正常工作。我已经创建了一个具有sudo权限的非root用户(在sudo组中),但是当我试图使用sudo时,我得到了一个错误 Sudo:没有tty存在,也没有指定askpass程序 这种情况发生在、、等。 我使用visudo进入文件
我有一个php页面,它试图运行服务重启,使用: 我需要编辑我的sudoers文件来实现这一点。因此: 和 当失败时,作为一个测试,我运行: 我运行了一个shell_exec,没有使用sudo命令: 这返回了预期的“Apache”。于是我跑了: 返回“uid=48(apache)gid=48(apache)groups=48(apache),10(wheel)” 我对照正在做同样事情的工作系统检查了
在它遍历每一个gem之后,我在RadRails上遇到了一个错误,说“‘显示启动页’遇到了一个问题。发生了一个内部错误。”然后,当我单击OKE时,它说:“SWT错误发生了。建议您退出工作台。随后的错误可能会发生,并且可能会在没有警告的情况下终止工作台。您想退出工作台吗?”每次我重新启动RadRails时,都会发生完全相同的事情。 我在网上读到,我可以安装askpass,然后在sudoers文件中设置
我正在尝试使用Makefile编译一些源代码。在makefile中,有一堆命令需要作为运行。 当我从终端编译源代码时,一切都很好,make在第一次运行命令等待密码时暂停。一旦我键入密码,使简历和完成。 但我希望能够在NetBeans中编译源代码。因此,我启动了一个项目,并向netbeans展示在哪里可以找到源代码,但当我编译该项目时,它会出现错误: 当它第一次命中命令时。 我已经在互联网上查找了这
问题内容: 没有系统更改,每次尝试从中安装gem时,都会因该错误而开始失败,尽管我什至都看不到为什么调用sudo,因为gems安装在本地rvm目录中。 有人看过吗? 问题答案: 要让詹金斯安装gem,他需要属于rvm组: 在debian中,这意味着: 至少对我有用。