Luôn luôn nguy hiểm khi không đồng ý với Emmet, vì vậy hãy để tôi bắt đầu bằng cách thừa nhận rằng câu trả lời của anh ấy có lẽ đúng hơn. Tuy nhiên, cá nhân tôi thấy pbuilder thân thiện với người dùng hơn và hiệu suất cao hơn.
Nếu bạn đang sử dụng Ubuntu 12.10 trở lên, hãy chắc chắn cài đặt các tập lệnh pbuilder tuyệt vời, đó là một tập hợp các trình bao bọc cực kỳ thân thiện xung quanh trình xây dựng thô.
Nếu bạn đang dùng Ubuntu 12.04, bạn có thể cài đặt tập lệnh pbuilder từ kho lưu trữ backports.
Bây giờ, hãy so sánh và đối chiếu sự thân thiện với người dùng của các hoạt động tương đương. Trong các ví dụ này, tôi sẽ chuyển qua sử dụng một chroot ARM được lưu trữ trên x86, nhưng các khái niệm vẫn áp dụng cho một chroot x86 được lưu trữ trên x86. Hãy nhớ rằng, tôi đang sử dụng các trình bao bọc pbuilder-scripts.
Một điều cần lưu ý là các tập lệnh pbuilder thực hiện một chút quy ước, tương tự như cách Ruby on Rails đưa ra một số quyết định cho bạn để bạn có thể đi nhanh chóng. Tôi sẽ thử và chỉ ra những điều này khi chúng tôi đi.
Tạo một chroot
mk-sbuild --arch=armhf quantal
đấu với
# in addition to the chroot, creates a new, empty directory named ~/Projects/quantal-armhf
pcreate -a armhf -d quantal quantal-armhf
Phán quyết: tie , cả hai dòng lệnh đều khá đơn giản và cả hai có thể có thêm tùy chọn cho các trường hợp sử dụng fancier nếu cần. Tuy nhiên, hãy lưu ý thư mục mới bổ sung được tạo bởi pcreate.
Tải xuống gói nguồn
# standard debian/ubuntu method, works in any directory
apt-get source casper
so với
# 'quantal-armhf' is the name of the chroot created earlier
# results in downloading package to: ~/Projects/quantal-armhf/casper/
pget quantal-armhf casper
Phán quyết: cạnh nhẹ cho sbuild , bởi vì bạn đang sử dụng thực tiễn tốt nhất của debian / ub Ubuntu. Quy ước được sử dụng bởi pget ban đầu có vẻ lạ, nhưng vì tôi làm việc trên nhiều gói trên nhiều bản phát hành Ubuntu, tôi thích tổ chức mà nó áp đặt. Cũng lưu ý rằng nguồn apt-get cũng trích xuất nguồn bất cứ nơi nào bạn chạy lệnh, để lại cho bạn với * .orig.tar.gz, * .debian.tar.gz, * .dsc và thư mục mở rộng mà cá nhân tôi tìm thấy lộn xộn Vẻ đẹp của tổ chức sẽ đến sớm, tôi hứa.
Nhập chroot, phiên bản phù du
schroot -c quantal-armhf
so với
ptest quantal-armhf
Phán quyết: cạnh nhẹ cho pbuild , ít ký tự để nhập là ít ký tự hơn. Lưu ý rằng trong phiên bản nhập chroot này, mọi thay đổi bạn thực hiện ở đây sẽ bị mất khi bạn thoát khỏi chroot. Cũng lưu ý rằng trong schroot, bạn sẽ vẫn là người dùng bình thường trong khi với ptest, bạn sẽ ở trong chroot với tư cách là người dùng root.
Nhập chroot, lưu phiên bản thay đổi
sudo schroot -c quantal-armhf-source -u root
so với
ptest quantal-armhf --save
Phán quyết: cạnh nhẹ cho pbuild , ít ký tự hơn và các đối số dòng lệnh trực quan hơn, theo ý kiến của tôi. Trong phiên bản nhập chroot này, mọi thay đổi bạn thực hiện trong đó sẽ được lưu lại cho các yêu cầu trong tương lai.
Xây dựng một gói trong chroot
debuild -S -sa -I -i
sbuild -A --arch armhf -d quantal-armhf /path/to/casper-1.315.dsc
so với
# must be invoked when pwd is ~/Projects/quantal-armhf/casper/casper-1.315
pbuild
Phán quyết: pbuild , bây giờ chúng ta thấy chiến thắng đáng kể đầu tiên khi sử dụng các quy ước của pbuild. Đây là một lệnh đơn giản đã chết mà không có gì khác để nhớ, so với việc chỉ định kiến trúc, tên của chroot và yêu cầu một đường dẫn đến tệp * .dsc mà sbuild yêu cầu. Ngoài ra, bạn phải nhớ tạo tệp * .dsc mới với sbuild trong khi pbuild sẽ tự động làm điều đó cho bạn.
Xây dựng gói tương tự trong chroot, lần thứ hai
Trong ví dụ trên, cả sbuild và pbuild sẽ tải xuống và cài đặt các bản dựng trong các bộ tương ứng của chúng. Tuy nhiên, pbuild lưu các tệp .deb đã tải xuống trong / var, vì vậy nếu bạn gọi pbuild lần thứ hai, bạn không phải tải xuống tất cả các bản dựng lại (mặc dù chúng vẫn phải được cài đặt trong chroot). sbuild không lưu trữ các tệp .deb (ít nhất là không theo mặc định), và do đó, bạn phải tải xuống tất cả các bản dựng lại ngoài việc chờ chúng được cài đặt trong chroot.
Phán quyết: pbuild bởi một cú sút xa. Bộ nhớ đệm xây dựng là một cài đặt mặc định tuyệt vời và pbuild đủ thông minh để phát hiện nếu có phiên bản mới hơn của bản dựng trong kho lưu trữ và sẽ kéo xuống phiên bản mới nếu được yêu cầu. Đối với một gói phức tạp có nhiều bản dựng, cài đặt đơn giản này sẽ giúp bạn tiết kiệm được vài phút trong cuộc sống.
Tóm lược
Ra khỏi hộp, tôi thấy các kịch bản pbuilder thân thiện hơn và nhanh hơn các tương đương sbuild. Tất nhiên, có nhiều cách để làm cho pbuilder nhanh hơn (xây dựng trong một tmpfs, vô hiệu hóa một số hook chroot), và có lẽ cũng có những thủ thuật tương tự cho sbuild, nhưng tôi không biết về chúng.
Hi vọng điêu nay co ich.
sbuild
được sử dụng để tạo các gói Ubuntu mặc dù launchpad (từ những gì tôi hiểu) chạypbuilder
...