Muốn có nhiều gói gần đây là một vấn đề phổ biến trên bất kỳ HĐH nào. Chu kỳ phát hành của Debian đã trung bình 2 năm trong những năm gần đây, vì vậy đến cuối chu kỳ này, có lẽ đây là vấn đề cấp bách hơn. Một cách để giảm thiểu điều này là chuyển sang thử nghiệm vào cuối chu kỳ phát hành ổn định, khi phiên bản tiếp theo gần như ổn định. Không rõ ràng từ câu hỏi liệu nó đang nói về sự ổn định nói chung về kiểm tra và / hoặc không ổn định là tốt. Bất kể, có phiên bản mới nhất có thể là một vấn đề ngay cả khi một phiên bản nếu chạy không ổn định, vì phiên bản mới nhất có thể chưa được đóng gói. Các nhà phát triển / đóng gói Debian là tình nguyện viên, vì vậy họ có thể cảm thấy buồn chán hoặc bận rộn với những thứ khác, với kết quả là gói bị mòn.
Để đơn giản và cụ thể, tôi giả định rằng kế hoạch là dự phòng một gói để ổn định, nhưng nó được áp dụng chung hơn. Vì vậy, đây là những gì tôi làm nếu tôi muốn một phiên bản phần mềm mới hơn không có mặt ổn định, theo thứ tự gần đúng.
Tìm gói trong Debian Backports . Đôi khi bạn có thể tìm thấy một gói đủ gần đây để đáp ứng mục đích của bạn. Tuy nhiên, thường thì các gói này đã lỗi thời so với phiên bản không ổn định hoặc thử nghiệm hoặc ngược dòng.
Cố gắng cài đặt gói trực tiếp từ thử nghiệm, không ổn định hoặc thử nghiệm. Nếu ổn định không chuyển hướng nhiều từ bất kỳ phiên bản nào bạn đang cố gắng cài đặt, thì điều này có thể hoạt động. Bạn sẽ biết cách tiếp cận này là một phương pháp tồi nếu hệ thống bắt đầu cố gắng cài đặt hoặc nâng cấp các gói cơ bản từ phiên bản mới hơn. Giả sử bạn đang cố gắng cài đặt từ không ổn định, sau đó
apt-get install packagename/unstable
là điều đầu tiên để thử. Với các phiên bản apt ổn định, điều này thường sẽ thất bại, vì nó yêu cầu các gói khác không ổn định và câu thần chú này chỉ tăng mức độ ưu tiên packagename
đủ cao để cài đặt không ổn định. Nếu bạn không hiểu điều này có nghĩa là gì, hãy đi và đọc man
apt_preferences
. Tiếp tục thêm các phụ thuộc từ không ổn định, đảm bảo rằng nó không cố gắng nâng cấp các gói cơ bản. Ví dụ: nếu nó bắt đầu cố gắng nâng cấp libc6 hoặc X hoặc KDE hoặc Gnome, hãy hủy bỏ ngay lập tức. Nó thường ổn nếu nó cố gắng nâng cấp các gói khác từ cùng một gói nguồn, vì chúng thường được liên kết chặt chẽ với nhau. Để xem gói nguồn nào mà gói nhị phân phụ thuộc vào, hãy làm
apt-cache showsrc packagename
Vì nhiều thứ phụ thuộc vào thư viện GNU C (libc6) nên đây là một vấn đề. Gần đây, API dường như đã ổn định, vì vậy giờ đây có thể thoát ra thường xuyên hơn mà không phải nâng cấp nó. Nếu một gói thỏa mãn các phụ thuộc thời gian chạy của nó ở mức ổn định, nhưng vẫn không hoạt động chính xác, hãy báo lỗi. Nếu người đóng gói nói với bạn rằng đó không phải là một lỗi, họ đã sai. :-)
Backport gói mình từ thử nghiệm, không ổn định hoặc thử nghiệm.
Như đã đề cập ở trên, backports là một lựa chọn, nhưng thường các gói này đã lỗi thời so với phiên bản không ổn định hoặc thử nghiệm hoặc ngược dòng.
Điều này thường có thể yêu cầu một kiểu vòng lặp xây dựng phụ thuộc đệ quy. Trước tiên bạn cần có được các phụ thuộc xây dựng với
apt-get build-dep packagename
Nếu điều này không thành công vì một trong những phụ thuộc không đủ gần đây, trước tiên bạn cần phải nhập lại phụ thuộc đó. Điều này có thể vượt khỏi tầm kiểm soát. Tôi thường bỏ cuộc nếu phải đối phó với hơn 2 cấp đệ quy. Tuy nhiên, lưu ý rằng các phụ thuộc thực sự không nhất thiết phải chặt chẽ như đã nêu. một phiên bản cũ hơn có thể hoạt động. Trình đóng gói thường không cố gắng tìm phiên bản cũ nhất của phụ thuộc bản dựng (hoặc, thực sự là thời gian chạy) sẽ hoạt động.
Kiểm tra sự sẵn có của các gói từ thượng nguồn tương ứng. Lý tưởng nhất là những phiên bản này sẽ phù hợp với phiên bản phân phối của bạn, nhưng bạn cũng có thể xây dựng lại chúng nếu cần thiết.
Tạo các gói cho phiên bản phần mềm gần đây hơn các gói gần đây nhất trong thử nghiệm / không ổn định / thử nghiệm. Điều này có thể tương đối thách thức, nhưng đôi khi vẫn có thể làm được một cách đáng ngạc nhiên. Điều đầu tiên cần lưu ý là nếu bạn đang cố gắng gói một phiên bản mới hơn của gói đã có trong Debian, thì bạn đã bắt đầu với một lợi thế lớn, cụ thể là bạn có bao bì hiện có để làm việc. Cứ làm đi
apt-get source packagename
và apt-get
sẽ tải xuống gói nguồn tương ứng, bao gồm thư mục con debian nơi bao bì sống. Ngoài ra, xin lưu ý rằng những ngày này, bao bì này thường nằm trong một kho lưu trữ kiểm soát verson (git có vẻ phổ biến với Debian) và apt ổn định (hiện tại là 0.8.10.3 ) cho bạn biết đây là khi bạn gọi
apt-get source
. Bạn nên xem xét điều này, bởi vì các nhà đóng gói có thể có nhiều phiên bản gần đây của bao bì hơn là tương ứng với bất kỳ gói phát hành nào. Ví dụ.
$ apt-get source mercurial
Reading package lists... Done
Building dependency tree
Reading state information... Done
NOTICE: 'mercurial' packaging is maintained in the 'Svn' version control system at:
svn://svn.debian.org/python-apps/packages/mercurial/trunk
Ngoài ra, bạn có thể chỉ cần sử dụng
apt-cache showsrc mercurial | grep Vcs
để liệt kê các kho lưu trữ.
Nếu gói bị lỗi thời, bạn có thể phải sửa đổi
gói, làm mới các bản vá được áp dụng nhưng nó vẫn thường là
điểm khởi đầu tốt . Debian dường như đang trong quá trình chuẩn hóa quản lý gói trên
quilt theo định dạng dpkg-source 3.0 (quilt) , do đó giúp làm mới bản vá.
Tôi sẽ kết thúc bằng một ví dụ thực tế cuộc sống của tôi như thế nào backported các gói Debian của
PGF . Phiên bản đóng gói cuối cùng của pgf là 2.00 vào năm 2008 và kể từ đó 2.10 đã được phát hành. Xem phần thảo luận trong Vui lòng cập nhật lên phiên bản ổn định mới nhất của pgf (2.10) và lỗi theo dõi của tôi với một bản vá, pgf: bản vá đối với bao bì Debian 2.0 . Hóa ra, bao bì pgf Debian rất đơn giản và tôi chỉ phải thay đổi một dòng trong bao bì 2.10 để làm cho nó hoạt động. Cuối cùng tôi cũng dập tắt tất cả các
khiếu nại của lintian , nhưng đó hoàn toàn là tùy chọn.