2012-03-13 21 views
12

XML :: Trình phân tích cú pháp không xây dựng được trên một hộp Debian 64-bit khá mới. Sau khi ra cpan XML::Parser, CPAN không thành công với rất nhiều lỗi về Expat.c và Expat.xs:Làm thế nào để cài đặt XML :: Trình phân tích cú pháp mà không có expat-devel?

[...] 
Expat.xs:2182: error: ‘CallbackVector’ has no member named ‘skip_until’ 
Expat.c: In function ‘XS_XML__Parser__Expat_Do_External_Parse’: 
Expat.c:2904: error: ‘XML_Parser’ undeclared (first use in this function) 
Expat.c:2904: error: expected ‘;’ before ‘parser’ 
Expat.xs:2194: error: ‘parser’ undeclared (first use in this function) 
make[1]: *** [Expat.o] Error 1 
make[1]: Leaving directory `/root/.cpan/build/XML-Parser-2.41-rpV6ok/Expat' 
make: *** [subdirs] Error 2 
    TODDR/XML-Parser-2.41.tar.gz 
    /usr/bin/make -- NOT OK 
Running make test 
    Can't test without successful make 
Running make install 
    Make had returned bad status, install seems impossible 

tin nhắn vào lúc bắt đầu của kết quả giải thích rằng người nước ngoài-devel là cần thiết cho việc xây dựng.

Expat phải được cài đặt trước khi tạo XML :: Parser và tôi không thể tìm thấy trong thư mục chuẩn của thư viện. Cài đặt gói 'expat-devel' với trình quản lý gói hệ điều hành của bạn. Xem 'README'.

Nhưng expat-devel không có trong kho Debian.

Có thể vượt qua điều này mà không cần phải xây dựng/cài đặt người nước ngoài từ nguồn không?

Trả lời

42

Các gói phần mềm bạn muốn cài đặt được đặt tên libexpat1-dev. Bạn cũng có thể chỉ cần cài đặt libxml-parser-perl qua apt-get. Hoặc nếu bạn thực sự muốn cài đặt qua CPAN, hãy thử cài đặt các gói phụ thuộc Debian trước tiên thông qua apt-get build-dep libxml-parser-perl.

9

libexpat1-dev chứa cả libexpat và expat.h, mà đều được đề cập trong thông điệp cũng như:

Nếu người nước ngoài đã được cài đặt, nhưng trong một thư mục phi tiêu chuẩn, sau đó sử dụng tùy chọn sau để Makefile .pl:

EXPATLIBPATH = ... để thiết lập các thư mục trong đó để tìm libexpat

EXPATINCPATH = ... để thiết lập các thư mục trong đó để tìm expat.h

Cài đặt libexpat1-dev dường như giải quyết vấn đề:

$ aptitude install libexpat1-dev 
5

Luôn có phương pháp thủ công - để xây dựng/cài đặt người nước ngoài từ nguồn. (Ví dụ này cho thấy cài đặt đến một vị trí thay thế cho XAMPP | lampp)

Tải về từ: http://sourceforge.net/projects/expat/files/expat/

tar zxf /[where-ever]/expat-2.1.0.tar.gz -C /tmp 
cd /tmp/expat-2.1.0 
/opt/lampp/bin/perl ./configure --prefix=/opt/lampp LDFLAGS=-L/opt/lampp/lib 
make 
make install 

http://search.cpan.org - tìm kiếm và tải về - XML ​​Parser ::

tar zxf /[where-ever]/XML-Parser-2.41.tar.gz -C /tmp 
cd /tmp/XML-Parser-2.41 
/opt/lampp/bin/perl ./Makefile.PL EXPATLIBPATH=/opt/lampp/lib EXPATINCPATH=/opt/lampp/include 
make 
make test 
make install 
3

Làm việc như một nét duyên dáng trong Ubuntu 15.04. Điều duy nhất mà tôi cần là cài đặt Perl XML Parser với:

sudo apt-get install libxml-parser-perl 

Và theo các hướng dẫn ở đây, tôi đã có thể nhập thành công tất cả các xếp hạng của tôi vào Rhythmbox. Bây giờ, công việc duy nhất mà tôi cần làm là tạo ra một lần nữa danh sách chơi thông minh, đó là không có gì so với toàn bộ xếp hạng libray của tôi.

2

Hôm nay tôi có cùng một vấn đề muốn tuân thủ GIMP mới 2.9.4 beta trên OSX 10.8 và sự trợ giúp của homebrew.

Đầu tiên cài đặt perl

brew install perl 

Sau đó các module XML Parser :: bởi đi sâu vào vỏ perl với

perl -MCPAN -e shell 

Và bên trong vỏ cài đặt XML Parser :: bằng cách gõ

install XML::Parser 

Thoát khỏi vỏ

exit 

Bây giờ, hãy xác minh rằng nó đã được cài đặt thành công. Nếu mọi thứ đều ổn, bạn sẽ không thấy lỗi.

perl -e "require XML::Parser" 

Nếu ./configure vẫn không thiếu XML :: Parser, thì intltools không sử dụng perl bạn đã cài đặt. Nhìn vào kịch bản cho tôi biết nó thực hiện bài kiểm tra với $INTLTOOL_PERL -e "require XML::Parser". Việc thử một số echo $INTLTOOL_PERL không đưa ra gì cả, do đó, hãy đặt nó bằng

export $INTLTOOL_PERL=perl 

Bây giờ chạy ./configure một lần nữa.

0

Không có phương pháp nào ở trên phù hợp với tôi. Tôi đã có các thiết lập biến môi trường phù hợp nhưng chúng bằng cách nào đó không được chọn bởi cpanm mà tôi sử dụng để cài đặt các mô-đun perl. Expat cũng đã được cài đặt.

Đây là những gì tôi đã làm để khắc phục cùng một vấn đề mà OP đang báo cáo. Điều này rất gần với những gì @LadyBuzz đề xuất.

  1. Tải XML::Parser từ cpan.org
  2. Giải nén tarball vào thư mục và xuống với nó.
  3. Mở Makefile.pl và chỉnh sửa dòng đầu tiên để thực sự có một đường dẫn tuyệt đối cho cả hai: EXPATLIBPATHEXPATINCPATH
  4. Save the Makefile.pl, đi lên một cấp và tạo ra một tarball mới với Makefile.pl mà bạn vừa chỉnh sửa.
  5. Thực hiện cpanm trên tarball mới được tạo.

Điều này dẫn đến cài đặt thành công mô-đun.

Các vấn đề liên quan