Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >如何在Mac OS X 10.8上安装hg convert所需的python subversion绑定?

如何在Mac OS X 10.8上安装hg convert所需的python subversion绑定?
EN

Stack Overflow用户
提问于 2013-01-26 15:40:07
回答 4查看 3.1K关注 0票数 5

我正在寻找一种解决方案,最好是干净和简单,使hg convert能够在带有SVN存储库的OSX10.8上工作。

目前,如果你尝试转换一个SVN仓库,你会得到一个could not load Subversion python bindings错误。

注: Alex Martelli在另一个答案中建议为OS X安装CollabNet subversion发行版,但似乎最新的CollabNet版本不能安装在OS X 10.8上(安装程序锁定)。

EN

回答 4

Stack Overflow用户

发布于 2013-06-05 22:12:04

使用自制软件

最简单的方法是使用homebrew--with-python标志从源代码安装subversion

首先,确保安装了命令行工具。在Mavericks和Xcode5中,即使命令行工具没有完全安装,像cc这样的大多数命令也能正常工作。如果没有/usr/include目录,那么首先需要运行

代码语言:javascript
代码运行次数:0
复制
$ xcode-select --install

安装命令行工具后,运行:

代码语言:javascript
代码运行次数:0
复制
$ brew install subversion --with-python
$ mkdir -p ~/Library/Python/2.7/lib/python/site-packages
$ echo $(brew --cellar)/subversion/1.8.5/lib/svn-python \
    > ~/Library/Python/2.7/lib/python/site-packages/svn.pth

您可以通过运行单元测试来测试绑定:

代码语言:javascript
代码运行次数:0
复制
$ svn co http://svn.apache.org/repos/asf/subversion/tags/1.8.5/subversion/bindings/swig/python/tests
$ cd tests && python run_all.py

使用Apple的源代码

这适用于Mountain Lion,但需要对Mavericks进行调整,并导致单元测试失败;请参阅Simon Wright’s answer to this question

可以使用Apple版本的subversion源代码构建Python的subversion绑定。生成的模块将完全兼容并链接到所有系统库。然后hg convert就能正常工作了。

下面是如何做的:

opensource.apple.com

  • Unpack
  1. 下载subversion tarball并对其进行配置:

cd subversion-52/subversion && ./configure

  • In subversion/bindings/swig/python,添加此Makefile,确保将前导空格更改为制表符:

SHELL = /bin/bash -eu CC = gcc -g -O2 CFLAGS = -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK \ -I ../proxy \ -I ../../..\lib../include\ -I /usr/include/apr-1 \ -I libsvn_swig_py \ -I lib\ LDFLAGS =\ /System/Library/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib \ /usr/lib/libsvn_*-1.0.dylib \/usr/lib/libapr-1.dylib \ .PHONY:构建DESTDIR=$(HOME)/Library/Python/2.7/lib/python/site-packages测试干净安装测试: egg mkdir -p tmp && cd tmp \ && PYTHONPATH=../egg python -S -m svn.tests.run_all 1.dylib安装: egg mkdir -p "${DESTDIR}“rm -rf "$(DESTDIR)/svn.egg”cp -R egg "$(DESTDIR)/svn.egg“echo './svn.egg‘> "$(DESTDIR)/svn.pth”egg: build rm -rf egg mkdir egg cp -R svn egg cp -R测试egg/svn touch egg/svn/-R/__init__.py mkdir egg/libsvn cp *.py egg/libsvn cp *.so *.dylib egg/libsvn # https://blogs.oracle.com/dipol/entry/dynamic_libraries_rpath_and_mac for F in egg/libsvn/*.so;do \ install_name_tool -change libsvn_swig_py.dylib \ '@loader_path/libsvn_swig_py.dylib‘"$$F";\ done strip -x egg/libsvn/*.so touch egg/libsvn/__init__.py mkdir -p egg/EGG-INFO‘版本: 1.6.8’>EGG/EGG-INFO build: libsvn_swig_py.dylib _client.so _core.so _delta.so _diff.so _fs.so _ra.so _repos.so _wc.so libsvn_swig_py.dylib:$(CC) $(文件标签) -shared -dynamic libsvn_swigutil_py/swigutil_py.c -o $@ $(LDFLAGS) _client.so: svn_client.c _core.so: core.c _delta.so: svn_delta.c _diff.so: svn_diff.c _fs.so: svn_fs.c _repos.so: svn_repos.c _wc.so: svn_wc.c _%.so: svn_%.c $(CC) $(CFLAGS) -bundle $^ -o $@ $(LDFLAGS) _%.so:%.c libsvn_swig_py.dylib $(CC) $(CFLAGS) -bundle $^ -o $@ $(LDFLAGS) clean: rm -rf *.o *.so *.dylib *.dSYM

然后在上一步中通过单元测试的directory.

  • If中运行make,您现在就拥有了subversion的全功能Python绑定!如果你愿意,就运行make installhg convert就会开始工作。

与通常的情况一样,从头开始重写构建系统要比弄清楚现有的构建系统更容易。

来自苹果和Subversion的所有脚本都使它变得复杂,但您真正需要做的就是复制.py文件,使用公共代码构建一个共享库,然后构建每个C语言Python模块。确定要使用哪些包含文件和库很简单:尝试在不包含任何包含或库的情况下开始构建,当构建失败时,添加对导致构建失败的缺少的包含路径或库的引用。棘手的部分是告诉像_core.so这样的C语言模块在哪里可以找到通用代码的动态库。

票数 15
EN

Stack Overflow用户

发布于 2013-06-27 04:37:54

使用来自MacPorts的hg,我需要sudo port install subversion-python27bindings

票数 1
EN

Stack Overflow用户

发布于 2014-01-25 09:13:18

这是小牛对上面andrewdotn's answer的更新。

例如,在Mavericks下,/usr/lib (标准位置)中唯一的SVN动态库是/usr/lib/libsvn_client-1.0.0.0.dylib。这个库的内部名称(使用otool -L查找)告诉动态加载器查找libsvn_client-1.0.dylib。通常情况下,这也会在/usr/lib中作为指向真实库的符号链接。

试试这个:

  1. 在andrewdotn的Makefile中,将LDFLAGS (第二行)编辑为

/Library/Developer/CommandLineTools/usr/lib/libsvn_*-1.0.dylib \

  • Set DYLD_LIBRARY_PATH

导出DYLD_LIBRARY_PATH=/Library/Developer/CommandLineTools/usr/lib

然后是make。我得到了两个错误:

代码语言:javascript
代码运行次数:0
复制
======================================================================
ERROR: test_get_pristine_copy_path (svn.tests.wc.SubversionWorkingCopyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "../egg/svn/tests/wc.py", line 192, in test_get_pristine_copy_path
    self.assertEqual(path_to_text_base, wc.get_pristine_copy_path(path_to_file))
  File "../egg/libsvn/wc.py", line 2447, in svn_wc_get_pristine_copy_path
    return apply(_wc.svn_wc_get_pristine_copy_path, args)
SubversionException: ("The node '/var/folders/_q/fvnxz46903z9hjh38fz0lyhm0000gs/T/tmp7vMRZu/foo' was not found.", 155010)

======================================================================
ERROR: test_lock (svn.tests.wc.SubversionWorkingCopyTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "../egg/svn/tests/wc.py", line 48, in test_lock
    lock = wc.add_lock(self.path, core.svn_lock_create(core.Pool()), self.wc)
  File "../egg/libsvn/wc.py", line 2601, in svn_wc_add_lock
    return apply(_wc.svn_wc_add_lock, args)
SubversionException: ('sqlite: LOCK.lock_token may not be NULL', 200035)

----------------------------------------------------------------------

但我还是安装了,hg convert运行得很好。

我怀疑您每次需要运行hg convert时都需要像上面那样设置DYLD_LIBRARY_PATH;希望不是那么频繁!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14538468

复制
相关文章
Symfony 服务容器入门
本文是依赖注入(Depeendency Injection)系列教程的第 3 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
3.4K0
撸个 symfony4(一)
最近在看symfony,发现laravel里面也引用了这个框架,国内关于symfony的资料不是很多,但是体验了以下之后,感觉还是不错的,所以记录下踩坑之旅。这是[官方文档](https://symfony.com)
仇诺伊
2020/04/24
4490
撸个 symfony4(一)
Symfony 服务容器性能优化
本文是依赖注入(Depeendency Injection)系列教程的最后一篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
3.1K0
Symfony 服务容器性能优化
撸个 symfony4(二)
目标其实是完成如下的需求,如果有想看源码的,可以看下sf官网出的一个demo。
仇诺伊
2020/04/24
2.4K0
撸个 symfony4(二)
Symfony 服务容器:使用建造者创建服务
本文是依赖注入(Depeendency Injection)系列教程的第 5 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
2.6K0
SSTI模板注入
模板引擎会提供一套生成HTML代码的程序,然后只需要获取用户的数据,然后放到渲染函数里,然后生成模板+用户数据的前端HTML页面,然后反馈给浏览器,呈现在用户面前。
Andromeda
2022/10/27
1.2K0
SSTI模板注入
代码审计 | 模板注入
这里主要学习下 FreeMarker 模板注入,FreeMarker 是一款模板引擎,FreeMarker 模板文件与 HTML 一样都是静态页面,当用户访问页面时,FreeMarker 引擎会进行解析并动态替换模板中的内容进行渲染,然后将渲染后的结果返回到浏览器中。
TeamsSix
2022/09/20
1.3K0
代码审计 | 模板注入
Symfony 服务容器:使用 XML 或 YAML 文件描述服务
本文是依赖注入(Depeendency Injection)系列教程的第 5 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
1.8K0
nginx配置Symfony
server { listen 80; server_name blog.phpfs.com; root /data/web; rewrite ^/a
苦咖啡
2018/04/28
1.7K0
Symfony是什么
众所周知前面有说到PHP的七大框架,接下来就来说说Symfony框架,希望说的对大家有所帮助。
叫我可儿呀
2019/11/26
2.1K0
Symfony是什么
ssti模板注入 命令执行_access注入绕过
前言:​SSTI(服务端模板注入),已然不再是一个新话题,近年来的CTF中还是也经常能遇到的,比如护网杯的easy_tonado、TWCTF的Shrine,19年的SCTF也出了Ruby ERB SSTI的考点;本篇对这部分总结一下,方便未来做题和复习的时候查阅!也欢迎各路大佬在评论区指正或者放出自己的WP链接互相学习!
全栈程序员站长
2022/09/27
1.1K0
ssti模板注入 命令执行_access注入绕过
浅谈Flask模板注入攻击
​ 由于最近一直在学二进制,所以web方面时间就不是很充足了,在buuoj上做了几道web,其中有一道flask(jinja2)的SSTI,之前也接触过,所以今天就来复现下flask ssti,这里推荐一个学习环境
ly0n
2020/11/04
1.7K0
浅谈Flask模板注入攻击
详解模板注入漏洞(下)
在上一篇文章中,我们为读者详细介绍了模版注入漏洞的概念,模版引擎的识别方法,以及两种模版引擎相关的注入漏洞。在本文中,我们将继续为读者介绍其他四种模版引擎相关的注入漏洞。(上一篇传送门:详解模板注入漏洞(上))
程序猿DD
2021/01/12
1.8K0
详解模板注入漏洞(下)
模板注入漏洞全汇总
在MVC的设计模式下,一般从 Model 层中读取数据,然后将数据传到 View 层渲染(渲染成 HTML 文件),而 View 层一般都会用到模板引擎。
Jayway
2019/09/29
8.4K0
模板注入漏洞全汇总
详解模板注入漏洞(上)
作者 | 原作者gosecure,翻译整理shan66 来源 | http://gosecure.github.io/ 1.简介 所谓模板注入,又称服务器端模板注入(SSTI),是2015年出现的一类安全漏洞。James Kettle在2015年黑帽大会上进行的演讲,为多个模板引擎的漏洞利用技术奠定了坚实的基础。要想利用这类安全漏洞,需要对相关的模板库或相关的语言有一定程度的了解。 首先,本文将对模板注入漏洞进行相应的介绍,帮读者深入了解各种攻击模式,以更好地识别潜在的漏洞。然后,我们将考察5种不同的模
程序猿DD
2023/04/17
1.5K0
详解模板注入漏洞(上)
ThinkCMF 前台模板注入 RCE
ThinkCMF 是一款基于 PHP+MYSQL 开发的中文内容管理框架,底层采用 ThinkPHP3.2.3 构建。
wywwzjj
2023/05/09
1.5K0
ThinkCMF 前台模板注入 RCE
SSTI模板注入到 RCE
正如你在下图中看到的,有可能在页面上放置一段 HTML 代码,看着它,我立即想起了 XSS 漏洞。
信安百科
2023/09/06
2640
SSTI模板注入到 RCE
SSTI模板注入 | No_Bypass
模板可以理解为是一段固定好格式,并等着你来填充信息的文件,模板注入就是指将一串指令代替变量传入模板中让它执行
h0cksr
2023/05/17
5300
SSTI模板注入Plus | Bypass
除了标准的python语法使用点(.)外,还可以使用中括号([])来访问变量的属性
h0cksr
2023/05/17
4380
SSTI模板注入Plus | Bypass
(精编)Python与安全(三)SSTI服务器模板注入
__mro__返回一个包含类或对象所继承的基类元组。方法在解析式按照元组的顺序解析,从自身所属类到<class'object'>。
Power7089
2020/07/27
8570
(精编)Python与安全(三)SSTI服务器模板注入

相似问题

无法在Symfony 4服务上注入模板

34

如何将Doctrine Entity Manager注入Symfony 4服务

42

Symfony 4服务注入的参数太少

10

Symfony 4依赖注入

10

将服务注入CLI Symfony 4应用程序

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档