Làm cách nào để chạy Debian ổn định nhưng cài đặt một số gói từ thử nghiệm?


206

Giả sử bạn đang chạy một máy chủ và bạn không muốn nâng cấp lên Kiểm tra (Bóp) từ Ổn định (Lenny) để chỉ cài đặt một hoặc hai gói yêu cầu.

Cách tốt nhất để chỉ cài đặt các gói nhất định từ Kiểm tra là gì?


2
Đây là những gì tài liệu chính thức mới nhất phải nói: Gói từ nguồn lưu trữ hỗn hợp .
Alexey

Câu trả lời:


183

Nhiều người dường như sợ pha trộn ổn định với thử nghiệm, nhưng thật lòng mà nói, thử nghiệm khá ổn định theo cách riêng của mình, và với việc kiểm tra giải pháp và sở thích phù hợp, bạn có thể tránh được "độ ổn định" đặt các gói cốt lõi của mình vào con đường không ổn định.

"Kiểm tra là khá ổn định ??" , bạn hỏi. Đúng. Để một gói chuyển từ không ổn định sang thử nghiệm, nó phải không có lỗi mở trong 10 ngày liên tiếp. Rất có thể, đặc biệt là đối với các gói phổ biến hơn, ai đó sẽ gửi báo cáo lỗi cho phiên bản không ổn định nếu có gì đó không đúng.

Ngay cả khi bạn không muốn trộn lẫn các môi trường, vẫn rất tốt để có tùy chọn ở đó trong trường hợp bạn gặp phải thứ gì đó yêu cầu phiên bản mới hơn phiên bản ổn định.

Đây là những gì tôi khuyên bạn nên thiết lập này:

Đầu tiên, tạo các tệp sau trong /etc/apt/preferences.d:

stable.pref:

# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent

Package: *
Pin: release a=stable
Pin-Priority: 900

testing.pref:

# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent

Package: *
Pin: release a=testing
Pin-Priority: 400

unstable.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=unstable
Pin-Priority: 50

experimental.pref:

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=experimental
Pin-Priority: 1

(Đừng sợ những thứ không ổn định / thử nghiệm ở đây. Các ưu tiên đủ thấp để nó không bao giờ tự động cài đặt bất kỳ thứ gì trong số đó. Ngay cả nhánh thử nghiệm cũng sẽ hoạt động, vì nó sẽ chỉ cài đặt các gói bạn muốn trong thử nghiệm.)

Bây giờ, tạo một bộ phù hợp cho /etc/apt/sources.list.d:

stable.list: Sao chép từ bản gốc của bạn /etc/apt/sources.list. Đổi tên tập tin cũ thành một cái gì đó như sources.list.orig.

testing.list: Giống như stable.list, ngoại trừ với testing.

unstable.list: Giống như stable.list, ngoại trừ với unstablevà xóa danh sách bảo mật.

experimental.list: Giống như unstable.list, ngoại trừ với experimental.

Bạn cũng có thể thêm oldstablevào sources.lists.dpreferences.d(sử dụng một ưu tiên trong tổng số 1), mặc dù biệt danh này sẽ có xu hướng hết hạn và biến mất trước khi chu kỳ ổn định tiếp theo. Trong trường hợp như vậy, bạn có thể sử dụng http://archive.debian.org/debian/và "mã hóa cứng" phiên bản Debian (etch, lenny, v.v.).

Để cài đặt phiên bản thử nghiệm của gói, chỉ cần sử dụng aptitude install lib-foobar-package/testinghoặc chỉ cần nhảy vào GUI của aptitude và chọn phiên bản bên trong chi tiết gói (nhấn enter trên gói bạn đang xem).

Nếu bạn nhận được khiếu nại về xung đột gói, hãy xem các giải pháp trước. Trong hầu hết các trường hợp, cái đầu tiên sẽ là "không cài đặt phiên bản này". Tìm hiểu để sử dụng các lựa chọn chấp nhận / từ chối mỗi gói. Ví dụ: nếu bạn đang cài đặt gói / thử nghiệm foobar và giải pháp đầu tiên là "không cài đặt gói foobar / thử nghiệm", thì hãy đánh dấu lựa chọn đó là bị từ chối và các giải pháp khác sẽ không bao giờ quay lại đường dẫn đó nữa. Trong những trường hợp như thế này, có lẽ bạn sẽ phải cài đặt một vài gói thử nghiệm khác.

Nếu nó quá nhiều lông (như nó đang cố nâng cấp libc hoặc kernel hoặc một số hệ thống lõi lớn khác), thì bạn có thể từ chối các đường dẫn nâng cấp đó hoặc hoàn toàn rút lui khỏi bản nâng cấp ban đầu. Hãy nhớ rằng nó sẽ chỉ nâng cấp công cụ lên thử nghiệm / không ổn định nếu bạn cho phép.

EDIT: Đã sửa một số chân ưu tiên và cập nhật danh sách.


4
Bạn đã chạy apt-get updatesau khi bạn tạo các tập tin cấu hình?
Dòng chảy

3
Tôi đang nhận được (những gì dường như với tôi) những hành vi không nhất quán khi sử dụng phương pháp này. "apt-get install -t tests appX" không cung cấp giống như "apt-get install appX / tests" (xem serverfault.com/q/646934/132528 ) - Tôi đoán rằng đó chỉ là về phương pháp này làm cho các ưu tiên được giải quyết, mặc dù nó không trực quan với tôi?
eugenevd

7
QUAN TRỌNG: tác giả đã chọn giá trị ưu tiên ghim cho ổn định / bảo mật cao hơn giá trị Phát hành mặc định ... xem serverfault.com/a/653552/120130 để biết thêm thông tin
Alex Ryan

7
Câu trả lời này chỉ phá vỡ hệ thống của tôi. Sau một nỗ lực để làm sudo apt-get update, tôi đã nhận được một lỗi cập nhật. Sau đó khởi động lại, điều đó đã cho tôi Xsession error, khởi động lại một lần nữa và bây giờ tôi không có gui. các /dev/sda1/hiện đã đầy. Tuyệt quá.
luchonacho

3
Tôi sẽ đề nghị mọi người chú ý đến những bình luận tiêu cực về bài đăng này. Tôi vừa nhận được một chút về bản cập nhật Debian 9 gần đây, đã được sửa bằng cách hoàn nguyên các thay đổi này. Hãy nghe lời khuyên trong bài viết của Debian về vấn đề này: wiki.debian.org/DontBreakDebian (di chuyển đến Đừng tạo FrankenDebian)
Brandon Arnold

98

Trong /etc/apt/apt.conf.dthêm các tập tin sau đây

99defaultrelease:

APT::Default-Release "stable";

trong /etc/apt/sources.list.d- thêm url để kiểm tra / nguồn không ổn định

stable.list:

deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free

deb     http://security.debian.org/         stable/updates  main contrib non-free

testing.list:

deb     http://ftp.de.debian.org/debian/    testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/    testing main contrib non-free

deb     http://security.debian.org/         testing/updates  main contrib non-free

chạy

apt-get update

và sau đó cài đặt những gì bạn cần với

apt-get -t testing install something

Hãy rất cẩn thận nếu bạn cài đặt những thứ có nhiều phụ thuộc. Tốt nhất không làm điều này trên sản xuất.

Bạn cũng có thể thử vận ​​may của mình tại backport hoặc kho tương tự.


1
Ồ Nó thật nhanh. Tôi đã đăng bài để chia sẻ thông tin tôi vừa đi qua! Đẹp quá
Gareth

Tôi chưa bao giờ thực sự sử dụng phương thức apt.conf trước đây. Có vẻ đơn giản hơn là phương thức tệp ưu tiên, nhưng cung cấp cho bạn quyền kiểm soát ít chính xác hơn. - Coops
Coops

4
Trả lời cần nâng cấp; cấu hình này sẽ phá vỡ mọi thứ hoàn toàn ngay bây giờ khi vắt đã trở nên ổn định và lenny đã trở nên ổn định.
El Yobo

1
Không thể sử dụng được nữa, vui lòng cập nhật
Lothar

4
trong các bản phát hành debian mới hơn không có tệp apt.conf, thay vào đó hãy chỉnh sửa /etc/apt/apt.conf.d/70debconf
Hayden Thring 22/03/13

49

apt_preferences

Xác định mức mặc định mà hệ thống sẽ 'nâng cấp an toàn' lên trong tệp / etc / apt / Preferences:
man apt_preferences

Có rất nhiều thứ bạn có thể làm với apt_preferences nhưng vì mục đích đơn giản ...

Tôi cần cài đặt một gói duy nhất (autoMysqlBackup) chỉ có sẵn trong Kiểm tra. Giải pháp là thêm các mục sau vào / etc / apt / Preferences:

Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

Với nhiều kho lưu trữ được thêm vào /etc/apt/source.list, giờ đây sẽ chỉ nâng cấp lên bản phát hành được chỉ định của bạn mặc dù các bản phát hành sau được liệt kê (trong trường hợp này là 'ổn định').

deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main

Vì vậy, để cài đặt gói đó, tất cả những gì bạn phải làm là:

$ aptitude install -t testing packageName 

Đây cũng là một phương pháp tốt, không nhanh chóng như apt.conf, nhưng cho phép bạn kiểm soát tất cả các nguồn khác nhau của mình một cách tương đối.
Coops

2
Điều này quá phức tạp đối với tác vụ ... Sử dụng APT :: Default-Release sẽ đặt mức ưu tiên pin của bản phát hành thành 990 (tương tự như cách bạn đặt nó thành 900) và việc ghim âm cho phần còn lại là không thực sự cần thiết .. Trong quá trình nâng cấp, gói ổn định vẫn được ưu tiên và ngay khi bạn liệt kê một cái gì đó rõ ràng trên dòng lệnh, thì mức độ ưu tiên ghim tiêu cực của nó sẽ bị bỏ qua.
Raphaël Hertzog

Tôi không chắc làm thế nào để trả lời bạn @Raphael. Có vẻ như một cách làm rất thanh lịch. Tôi đã sử dụng ghim apt từ nhiều năm trước nhưng tôi chưa bao giờ thực sự 'hiểu' nó. Các ví dụ tôi đã sử dụng ở trên trực tiếp từ trang man apt_preferences.
Gareth

2
Xác nhận điều này hoạt động tốt khi vắt
tomfanning

3
@Lothar: Nó hoạt động trên Debian 6. Chỉ vì tệp không tồn tại không có nghĩa là nó không hoạt động. Chỉ cần tạo tập tin và thêm các cài đặt. Trích dẫn từ trang man: "Nếu không có tệp ưu tiên hoặc nếu không có mục nào trong tệp áp dụng cho một phiên bản cụ thể thì mức độ ưu tiên được gán cho phiên bản đó là mức độ ưu tiên của bản phân phối mà phiên bản đó thuộc về."
rzetterberg

13

Đối với những gì nó có giá trị, lời khuyên chung mà tôi luôn thấy là "Đừng trộn ổn định với bất cứ điều gì." Hầu hết các hướng dẫn hệ thống hỗn hợp là để thử nghiệm trộn và không ổn định.

Lý do dường như là nếu bạn kết hợp ổn định với thử nghiệm, các gói rất cơ bản (như libc6) sẽ yêu cầu cập nhật (để cài đặt phần mềm từ thử nghiệm) và khi các gói cơ bản này chuyển sang thử nghiệm, toàn bộ hệ thống có thể chuyển theo cách đó.

Đây là hai lựa chọn thay thế:

  1. Sử dụng Backports .
  2. Cài đặt một dòng nguồn từ thử nghiệm và cố gắng xây dựng phiên bản mới hơn mà bạn muốn từ nguồn .

1
Tôi đồng ý. Tôi vừa thử cập nhật libdvdread4 từ thử nghiệm vì một lỗi trong phiên bản ở trạng thái khò khè / ổn định. Nó muốn mang lại libc mới nhất mặc dù. Vì vậy, tôi chỉ lấy gói nguồn cho libdvdread4 từ ổn định và vá nó với thay đổi nguồn 1 dòng và xây dựng lại nó. Cách tốt hơn là kéo tất cả các loại gói từ thử nghiệm. Bây giờ tất cả các gói vẫn là những gói "ổn định" và tôi chỉ có thay đổi 1 dòng tôi cần.
dgrant

12

Các tài liệu về debian có rất nhiều về chủ đề này và tôi thực sự khuyên bạn nên khai thác vì nó thực sự sẽ tiết lộ vẻ đẹp của hệ thống debian.

Hãy xem Làm thế nào để giữ một hệ thống hỗn hợp , nó sẽ giải thích tất cả những gì bạn cần tio biết.


1
Đây có vẻ là phương thức tương tự được sử dụng trong câu trả lời của @pQd, vì vậy nó không áp dụng cho debian> = 6.0. Ngoài ra tiêu đề liên kết nói "tài liệu lỗi thời" bây giờ. Ngoài ra chủ yếu chỉ liên kết trả lời.
dequis

Mặc dù @dequis đúng ở chỗ liên kết dường như đã lỗi thời, tôi chỉ làm theo hướng dẫn trên Debian 8 (thử nghiệm) để cài đặt gói từ không ổn định và mọi thứ dường như hoạt động hoàn toàn tốt. Bất cứ ai cũng có một liên kết tài liệu cập nhật?
domsson

1
Đây có thể là những gì bạn đang tìm kiếm: debian.org/doc/manuals/debian-reference/ mẹo
tomdeb

7

Một cách khác, có thể ngăn cài đặt quá nhiều phụ thuộc từ Kiểm tra hoặc Sid, đó là: bạn nói với apt-get để lấy nguồn của gói từ Kiểm tra hoặc Sid và tạo gói cho hệ thống của bạn bằng các công cụ Debian (không cần phải tự sửa với các nguồn).

Trích dẫn từ đây:
https://wiki.debian.org/DebianUnurdy#How_do_I_backport_a_sid_package_to_testing_or_ sóng.3F

Làm cách nào để backport một gói sid để kiểm tra hoặc ổn định?

Cài đặt nguồn Debian (và các công cụ phát triển, đặc biệt là debrcper, devscripts và build-Essential), sau đó xây dựng gói.

Từng bước một:

add a deb-src line for sid to your sources.list

apt-get update

apt-get build-dep PACKAGE_NAME

apt-get -b source PACKAGE_NAME 

Các cuộc tranh luận kết quả phải nằm trong thư mục hiện tại và có thể được cài đặt với dpkg -i the.deb.


4

Tôi đã làm điều đó trong một thời gian dài để tự tin nói rằng nó đủ an toàn và có thể được thực hiện thuận tiện. Với thiết lập bên dưới, phiên bản ổn định sẽ được cài đặt theo mặc định, tuy nhiên Aptitude cũng sẽ cho phép bạn chọn phiên bản backported hoặc không ổn định nếu muốn:

nhập mô tả hình ảnh ở đây

Có bốn điều cần được chỉnh sửa, cần phải thiết lập bản phát hành ghim mặc định, các nguồn cần backport và không ổn định, giảm mức độ ưu tiên ghim của backport / gói không ổn định và cài đặt hiển thị năng khiếu cần được sửa đổi để hiển thị ghim.

  • Tạo một '/etc/apt/apt.conf.d/10defaultrelease' và làm cho nội dung của nó như sau:
Apt :: default-Release "ổn định";
  • Chỉnh sửa '/etc/apt/source.list' của bạn để thêm các nguồn không ổn định và backport để nó trông giống như thế này:
# deb cdrom: [Debian GNU / Linux 6.0.0 _Squeeze_ - Kiến trúc đa kiến ​​thức amd64 / i386 NETINST # 1 20110205-14: 45] / bóp chính

deb http://ftp.us.debian.org/debian/ bóp chính
deb-src http://ftp.us.debian.org/debian/ bóp chính

deb http://security.debian.org/ bóp / cập nhật chính
deb-src http://security.debian.org/ bóp / cập nhật chính

# bóp-cập nhật, trước đây được gọi là 'dễ bay hơi'
deb http://ftp.us.debian.org/debian/ vắt cập nhật chính
deb-src http://ftp.us.debian.org/debian/ bóp-cập nhật chính

# bóp lưng
# http://backports.debian.org/In thi /
deb http://backports.debian.org/debian-backports bóp lưng chính

# không ổn định
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ không ổn định chính
deb-src http://ftp.us.debian.org/debian/ chính không ổn định

# không miễn phí cũ. mặt trời java
#deb http://ftp.us.debian.org/debian/ bóp không miễn phí
# deb-src http://ftp.us.debian.org/debian/ bóp không miễn phí
  • Chỉnh sửa etc/apt/preferencestệp ghim - nếu tệp không tồn tại, hãy tạo tệp.
# Ưu tiên ghim gói
# Xem http://wiki.debian.org/AptPreferences và http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
#
# Trong vỏ ốc, mã PIN cao nhất được cài đặt
#
# Mặc định Pining là như sau ngoài cài đặt của chúng tôi:
# 990 - cho phiên bản chưa được cài đặt nhưng DO thuộc về cài đặt `APT :: Default-Relase" ổn định ".
# 500 - cho các phiên bản chưa được cài đặt và không thuộc về bản phát hành mục tiêu
# 100 - đối với các gói đã được cài đặt, điều này cũng có nghĩa là các phiên bản khác của cùng gói
# 1 - cho các gói thử nghiệm; các gói có "NotAutomatic: yes"
#
# Ghim của chúng tôi
# 400 - backport có thể được cài đặt một cách an toàn mà không cần cập nhật các gói khác
# 50 - gói không ổn định, cài đặt bắt buộc trong màn hình chi tiết, có thể dẫn đến xung đột

Gói: *
Pin: phát hành n = bóp-backport
Pin-Ưu tiên: 400

Gói: *
Pin: phát hành a = không ổn định
  • Tạo '/etc/apt/apt.conf.d/100guiconf' và để thiết lập Aptitude để nó hiển thị thông tin ghim.
Aptitude :: UI :: Gói-Hiển thị-Định dạng "% c% a% M% p% Z% v% V% i";

1
Chỉ cần một bản cập nhật ngoài những điều trên tôi đã quyết định chạy tất cả các gói hệ thống của mình từ kho lưu trữ phát triển 'thử nghiệm'. Vì vậy, trong source.listđó nên nói tên mã jessiethay vì squeeze. Chính sách của Debian testinggần ổn định và các gói gần như mới từ unstablekho lưu trữ. Tôi sắp hết dung lượng ở đây, vì vậy hãy xem: wiki.debian.org/DebianRelease , wiki.debian.org/StableUpdateswiki.debian.org/StableProposesUpdates ; hai cuối cùng là các nguồn lưu trữ bổ sung.
Daniel Sokolowski

2

Nếu lựa chọn gói của bạn có liên quan nhiều hơn hoặc cài đặt sẽ được lặp lại trên nhiều máy, bạn có thể xem xét việc thiết lập một kho lưu trữ riêng phản ánh tập hợp con của kho lưu trữ chính thức. Điều này đòi hỏi một chút công việc để cấu hình kho lưu trữ nhưng phần thưởng rất dễ duy trì với cấu hình tối thiểu trên mỗi máy khách và kết quả lặp lại khi thực hiện hàng tá cài đặt. Tôi thấy điều này hữu ích ngay cả khi chỉ có một hoặc hai gói được cài đặt và sử dụng phương pháp này để tự động hóa và duy trì cài đặt đám mây. Một máy chủ duy nhất trên VPS giá rẻ có thể xử lý hàng tá kho lưu trữ riêng.

Để cấu hình máy chủ kho lưu trữ riêng của bạn:

# Install aptly.
apt-get install aptly

# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main

# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube

# Update local mirror.
aptly mirror update stretch-roundcube

# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch

# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube

# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube

# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube

Sau đó cấu hình máy chủ web của bạn lựa chọn để phục vụ các tệp lưu trữ tĩnh. Có thể bảo vệ kho lưu trữ với chứng chỉ bảo mật và xác thực cơ bản.

Để tự động duy trì kho lưu trữ riêng tư của bạn và lấy các bản cập nhật từ thượng nguồn, hãy đặt phần trên vào tập lệnh và chạy từ công việc định kỳ.

Để định cấu hình máy khách của bạn, trên máy khách của bạn:

# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list

# Configure private repository with authentication.
echo 'deb https://hostname:password@private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https

# Update.
apt-get update

# Install package.
apt-get install roundcube

Để duy trì máy khách của bạn và cập nhật tất cả các cập nhật kho lưu trữ riêng tư của bạn, trên máy khách của bạn:

# Update.
apt-get update

# Upgrade.
apt-get upgrade

1

Một tùy chọn khác là tải xuống thay vì gói nguồn từ thử nghiệm. APT có thể tự động xây dựng gói nguồn sau khi tải xuống. Bằng cách này, các gói ổn định của bạn sẽ không bị ảnh hưởng bởi các bản cập nhật thử nghiệm. Sự đánh đổi duy nhất là nó sẽ mất nhiều thời gian hơn là chỉ tải xuống và cài đặt gói nhị phân.

Để định cấu hình APT để tải xuống các gói nguồn từ thử nghiệm, chỉ cần thêm:

deb-src http://<your debian mirror here> testing main

Nếu bạn chỉ muốn theo dõi thử nghiệm hiện tại và không phải thử nghiệm trong tương lai, hãy thay thế "thử nghiệm" bằng tên mã hiện tại (vì khi viết bài này, nó là "buster")

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.