Skip to main content
 首页 » 编程设计

python之vagrant pip 安装 svn+https ://. 。身份验证失败,交互式提示被禁用

2025年05月04日16kenshinobiy

如何使用 Vagrant + pip & svn 制作自动脚本?

不带 vagrant 进行安装(svn 通过 promt 控制台询问凭据)[确定]:

# file:system/vagrant_setup.sh 
sudo pip install --upgrade pip virtualenv 
sudo mkdir -p /opt/python-env2/ 
sudo chown vagrant:vagrant /opt/python-env2/ 
cd /opt/python-env2 
virtualenv env-appserver 
 
# requirements-stable.txt contains 
# svn+https://svn.company.ch/svn/integration-2014-sep-24@1886#egg=integration 
/opt/python-env2/env-appserver/bin/pip install -r /vagrant/requirements/requirements-stable.txt 

使用 vagrant 安装(svn 不询问凭据)[FAIL]:

# file Vagrant 
Vagrant.configure("2") do |o| 
    #o.vm.box = "Official Ubuntu 11.10 Server amd64" 
    o.vm.box = "trusty-server-cloudimg-amd64-vagrant-disk1" 
    o.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box" 
    o.vm.synced_folder "./opt/proj", "/opt/proj", create:true 
    # this did not helped o.vm.synced_folder "~/.subversion", "/home/vagrant/.subversion", create:true 
    o.vm.network :private_network, ip: "192.168.55.55" 
    o.vm.provision :shell, :path => "system/vagrant_setup.sh" 
end 

错误日志如下:

# file:log 
==> default: Downloading/unpacking integration from svn+https://svn.company.ch/svn/integration-2014-sep-24@1886 (from -r /vagrant/requirements/requirements-stable.txt (line 4)) 
==> default:   Checking out https://svn.company.ch/svn/integration-2014-sep-24 (to revision 1886) to ./env-appserver/build/integration 
==> default: svn: E215004: Authentication failed and interactive prompting is disabled; see the --force-interactive option 
==> default: svn: E215004: Unable to connect to a repository at URL 'svn.company.ch/svn/integration-2014-sep-24' 
==> default: svn: E215004: No more credentials or we tried too many times. 
==> default: Authentication failed 
==> default:   Complete output from command /usr/bin/svn checkout -q -r 1886 svn.company.ch/svn/integration-2014-sep-24 /opt/python-env2/env-appserver/build/integration: 
==> default:    
==> default: ---------------------------------------- 
==> default: Cleaning up... 
==> default: Command /usr/bin/svn checkout -q -r 1886 svn.company.ch/svn/integration-2014-sep-24 /opt/python-env2/env-appserver/build/integration failed with error code 1 in None 
==> default: Storing debug log for failure in /root/.pip/pip.log 
The SSH command responded with a non-zero exit status. Vagrant 
assumes that this means the command failed. The output for this command 
should be in the log above. Please read the output to determine what 
went wrong. 

请您参考如下方法:

我假设您的配置脚本 system/vagrant_setup.sh 正在尝试执行 svn checkout 并且身份验证失败。您必须使用 --username 和 --password 选项将凭据传递给 svn 服务器以进行 svn checkout。查看 svn help checkout 了解更多信息。

您的下一个障碍是让 svn 对其所有确认保持沉默。例如,要阻止它在每次尝试对服务器进行身份验证时询问您是否要将密码存储在自由文本中,您可能需要添加

echo "store-plaintext-passwords = no" >> /home/vagrant/.subversion/servers 

到你的 system/vagrant_setup.sh 脚本。当然这个文件必须首先存在,所以你可以复制它的完整版本或者尝试让 subversion 以 svn help sudo 自动创建它作为 vagrant 用户首先。 (否则 .subversion 文件夹将位于/root/文件夹中。)请注意,subversion 会在用户第一次运行时创建 ~/.subversion 文件夹及其所有内容。

设置这一切有 pip 棘手,但我认为在大规模生产开发人员沙箱方面的返回将是巨大的。