2012-02-07 18 views
8

Tôi đang làm việc để đóng gói một số thư viện trong một deb với các mâu thuẫn.Triển khai các mô-đun Python trong một hệ thống Ubuntu có các dấu rãnh và deb

Có lẽ, tôi cần phải có cấu hình setup.py đúng, cũng như các tệp /debian thích hợp cho deb.

Ngay bây giờ, kho trông giống như sau:

library_name/ 
__init__.py 
liba.py 
libb.py 
... 

Nó đang được thêm vào như là một phụ thuộc vào các chương trình khác để họ có thể thực hiện from library_name import liba.

Googling tiết lộ điều gì đó giữa 3 và 5 phương pháp triển khai khác nhau trên Ubuntu, không bao gồm cách tiếp cận easy_install; tài liệu dường như phần lớn là từng phần và lỗi thời.

Tôi đặc biệt muốn đảm bảo rằng bất kể phiên bản Python, thư viện được đặt trong thư mục hệ thống chính xác. Ngoài ra, tất nhiên, nó có thể được gỡ cài đặt hoặc nâng cấp liên tục.

Kết thúc trò chơi là có deb trên máy chủ cục bộ được thêm dưới dạng phụ thuộc gói cho các chương trình khác của chúng tôi.

Cách kinh điển "dễ dàng và đơn giản" để thực hiện việc này là gì?

+0

là gói của bạn tương thích với cả 2.x và 3.x? Đó là, bạn đang nhắm mục tiêu cả hai? – nfirvine

+0

@nfirvine: 2,6 + 2,7 –

Trả lời

2

Bạn có thể sử dụng pkgme để tạo các tệp debian khá nhanh. Theo như tôi biết, không giống như các công cụ tương tự khác như dh-make, thiết kế pkgme dựa trên các plugin có nghĩa là khi python được phát hiện, thông tin từ tệp setup.py của bạn được trích xuất chính xác.

Để biết thêm thông tin, bạn có thể xem số recent talk này tại sự kiện Ubuntu Developer Week.

2

Tôi đã chiến đấu với gói Python cho Ubuntu/Debian trước đó, và tôi đồng ý, tài liệu là một mớ hỗn độn/không tồn tại/gây hiểu lầm: chúng thực sự cần hướng dẫn nhanh cho tình huống đơn giản nhất có thể.

Vâng, đây rồi!

Cài đặt công cụ của bạn. Đây có thể là quá mức cần thiết, mặc dù:

sudo apt-get install build-essential python-all dh-make devscripts fakeroot 

Bắt đầu với mã của bạn kiểm tra ra vào một thư mục có tên $packagename-$version, như library_name-0.6.0/, và cd vào thư mục đó. Chạy một cái gì đó như dh_make -i -c gpl3 -e [email protected] (xem dh_make --help để biết các tùy chọn khác). Nếu mọi thứ suôn sẻ, bạn sẽ không nhận được lỗi nào và nó sẽ tạo ra một tải các tệp trong ./debian. Bạn có thể bỏ qua hoặc xóa ./debian/*.{ex,EX}; đó chỉ là những ví dụ.

Bạn có lẽ nên kiểm tra tất cả các tệp này tại một số thời điểm, nhưng ít nhất, bạn cần cần để chỉnh sửa ./debian/control./debian/rules. Bạn nên điền vào tất cả các lĩnh vực templately trong kiểm soát, cụ thể là DescriptionHomepage.Thay đổi dòng Package-python-$libname thay đổi dòng Depends của bạn trong control này:

Depends: ${misc:Depends}, ${python:Depends} 

Nó đảm bảo rằng chúng tôi nhị phân gói python-$libname phụ thuộc vào phiên bản của Python nó cần. (${python:Depends} is a "substvar"; they're created when we build; you can inspect their values after your first build in./Debian/$ packagename.substvars`.)

Thay đổi dòng trong rules từ dh [email protected] để dh [email protected] --with python2, bảo tồn các tab ở phía trước (đó là một Makefile). Điều này gây ra debhelper để sử dụng addon python2 của nó; mặc định là vẫn sử dụng pysupport (không được dùng nữa, nhớ không?).

Sau đó, chạy lệnh sau đây trong thư mục gốc nguồn:

debuild -us -uc 

này được xây dựng gói, mà không cần đăng nó (cái gì đó bạn nên học cách làm sau!). Bạn sẽ thấy một số dòng thiết lập quen thuộc (hai lần: một lần cho 2.6, một lần cho 2.7), đống dh_ addons, và xây dựng cruft khác. Cuối cùng là đầu ra của lintian, có thể phát hiện một số vấn đề bao bì phổ biến; bạn nên sửa chúng. Rất nhiều thứ mà lintian và bạn bè phàn nàn chỉ là tuân thủ các quy tắc đóng gói và nếu lib của bạn chỉ là nội bộ, hãy thoải mái chơi nó.

Bằng cách này, This page talks about the deprecation of python-support and python-central

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