2012-04-11 5 views
1

Ich habe nicht viel Erfolg beim Versuch pgmagick auf CentOS 5.6 zu bauen.Wie erstellt man pgmagick auf Linux (CentOS)?

ich installiert habe folgende über yum:

boost-1.33.1 
boost-devel-1.33.1 
GraphicsMagick-1.3.14 
GraphicsMagick-c++-1.3.14 
GraphicsMagick-devel-1.3.14 
GraphicsMagick-c++-devel-1.3.14 
python-2.6.5 
python-devel-2.6.5 

Jedes Mal, wenn ich versuche, pgmagick ich folgende Fehlermeldung erhalten zu bauen:

/usr/include/boost/python/converter/registered.hpp: In instantiation of ‘const boost::python::converter::registration& boost::python::converter::detail::registered_base<const volatile void>::converters’: 
/usr/include/boost/python/converter/arg_from_python.hpp:269: instantiated from ‘boost::python::converter::pointer_arg_from_python<T>::pointer_arg_from_python(PyObject*) [with T = void*]’ 
/usr/include/boost/python/arg_from_python.hpp:70: instantiated from ‘boost::python::arg_from_python<T>::arg_from_python(PyObject*) [with T = void*]’ 
/usr/include/boost/preprocessor/iteration/detail/local.hpp:37: instantiated from ‘PyObject* boost::python::detail::caller_arity<3u>::impl<F, Policies, Sig>::operator()(PyObject*, PyObject*) [with F = void (*)(Magick::Blob&, void*, long unsigned int), Policies = boost::python::default_call_policies, Sig = boost::mpl::vector4<void, Magick::Blob&, void*, long unsigned int>]’ 
/usr/include/boost/python/object/py_function.hpp:38: instantiated from ‘PyObject* boost::python::objects::caller_py_function_impl<Caller>::operator()(PyObject*, PyObject*) [with Caller = boost::python::detail::caller<void (*)(Magick::Blob&, void*, long unsigned int), boost::python::default_call_policies, boost::mpl::vector4<void, Magick::Blob&, void*, long unsigned int> >]’ 
./src/_Blob.cpp:43: instantiated from here 
/usr/include/boost/python/converter/registered.hpp:88: error: no matching function for call to ‘registry_lookup(const volatile void (*)())’ 
error: command 'gcc' failed with exit status 1 

ich auch boost141 habe versucht zu installieren, boost141-devel und boost141-python aber pgmagick wird nicht gegen diese Bibliotheken bauen.

Irgendwelche Vorschläge, wie ich das Problem beheben oder das Problem weiter diagnostizieren kann?

+0

keine direkte Antwort, aber haben Sie an dem Python Imaging Library geschaut? http://www.pythonware.com/products/pil/ Oder das 'subprocess' Modul zu benutzen, um GraphicsMagick direkt auszuführen? –

+0

@RolandSmith leider PIL hat nicht die Funktionen, die wir benötigen. Die Verwendung von "Subprozess" ist eine Option, aber es ist auch ziemlich schmerzhaft, da die App direkt mit pgmagick entwickelt wurde - viel Code müsste überarbeitet werden. –

+0

Sehen Sie sich an, wie andere Distributionen Pakete für pgmagick erstellen. Vielleicht sind bestimmte Patches erforderlich? Die Homepage von pgmagick erwähnt die Verwendung von 'libboost-python1.40-dev' auf Ubuntu. –

Antwort

1

der einzige Weg, stellte sich heraus, war diese Arbeit bekommen zu:

  • entfernen Sie alle vorkompilierte boost RPMs aus dem System
  • entfernen Sie alle vorkompilierte GraphicsMagick RPMs aus dem System
  • kompilieren boost-1.49.0 manuell, unter Verwendung von ./configure --prefix=/usr --enable-shared=yes
  • installieren GraphicsMagick-1.3.14, GraphicsMagick-c++-1.3.14, GraphicsMagick-devel-1.3.14 und GraphicsMagick-c++-devel-1.3.14 über yum
  • Klon die pgmagick Repository von bitbucket
  • Laufe python setup.py install wieder im pgmagick Verzeichnis
1

Es ist wie Versionen Kompatibilitätsproblem sieht, versuchen Boost-1,34

+0

CentOS scheint Boost-1.34 nicht verfügbar zu haben. Wäre es am besten, dies manuell zu installieren? –

+0

Ich würde nur ein nicht-offizielles Repo wie dieses verwenden: http://rpm.pbone.net/index.php3/stat/4/idpl/8359010/dir/centos_5/com/boost-1.34.1-11.1 .x86_64.rpm.html –

+0

Im Allgemeinen empfehle ich nicht, Pakete von nicht-offiziellen Repos zu installieren. Sie sollten das nur tun, wenn Sie bereit sind, die damit verbundenen Risiken einzugehen. Gemäß den pgmagick-Dokumenten sollten boost141 und Ihre GraphicsMagick-Bibliotheken unterstützt werden: http://packages.python.org/pgmagick/tutorial.HTML # Anforderungen –

1

Verwendung Wenn Sie lief konfigurieren, ich nehme an, Sie es als ./configure --enable-shared=yes (beachten Sie die Parameter) ausgeführt. Wenn Sie das getan haben (wie das Tutorial sagt), sehe ich keinen Grund, warum es nicht funktionieren sollte. Wenn Sie dies nicht tun, kann dies helfen.