데비안 스 테이블을 어떻게 실행하고 테스트에서 일부 패키지를 설치할 수 있습니까?


답변:


183

많은 사람들이 안정적인 테스트와 테스트를 혼합하는 것을 두려워하는 것처럼 보이지만 솔직히 테스트는 자체적으로 상당히 안정적이며 적절한 환경 설정 및 솔루션 검사를 통해 코어 패키지를 불안정한 경로에 놓는 "안정성 드리프트"를 피할 수 있습니다.

"테스트는 상당히 안정적입니까?" , 물어. 예. 패키지가 불안정에서 테스트로 마이그레이션 되려면 연속 10 일 동안 버그가 전혀 발생하지 않아야합니다. 특히 인기있는 패키지의 경우 무언가 잘못된 경우 불안정한 버전에 대한 버그 보고서를 제출할 가능성이 있습니다.

환경을 혼합하고 싶지 않더라도 안정적인 버전보다 최신 버전이 필요한 제품을 사용하는 경우 옵션을 사용하는 것이 좋습니다.

이것을 설정하기 위해 권장하는 것은 다음과 같습니다.

먼저 다음 파일을 작성하십시오 /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

(여기서 불안정하거나 실험적인 것들을 두려워하지 마십시오. 우선 순위는 그 물건을 자동으로 설치하지 않을 정도로 낮습니다. 테스팅 지점조차도 원하는 패키지를 설치하기 때문에 작동합니다. 테스트 중)

이제 다음에 대한 일치 세트를 작성하십시오 /etc/apt/sources.list.d.

stable.list: 원본에서 복사하십시오 /etc/apt/sources.list. 이전 파일의 이름을 다음과 같이 바꾸십시오 sources.list.orig.

testing.list:를 stable.list제외하고와 동일 testing합니다.

unstable.list:을 stable.list제외하고와 동일 unstable하고 보안 목록을 제거하십시오.

experimental.list:를 unstable.list제외하고와 동일 experimental합니다.

이 모니 커는 다음 안정적인 사이클 전에 만료되고 사라지는 경향이 있지만 oldstablein sources.lists.dpreferences.d(1의 우선 순위 사용)을 추가 할 수도 있습니다 . 그러한 경우 http://archive.debian.org/debian/데비안 버전 (에치, 레니 등)을 사용 하고 "하드 코딩" 할 수 있습니다 .

패키지의 테스트 버전을 설치하려면 간단히을 사용 aptitude install lib-foobar-package/testing하거나 aptitude의 GUI로 이동하여 패키지 세부 정보 내에서 버전을 선택하십시오 (보고있는 패키지에서 enter 키를 누르십시오).

패키지 충돌에 대한 불만이 있으면 먼저 솔루션을 살펴보십시오. 대부분의 경우 첫 번째 버전은 "이 버전을 설치하지 마십시오"입니다. 패키지 당 수락 / 거부 해결 자 선택을 사용하는 방법을 배웁니다. 예를 들어, foobar-package / testing을 설치하고 첫 번째 솔루션이 "foobar-package / testing을 설치하지 마십시오"인 경우 해당 선택을 거부 된 것으로 표시하면 다른 솔루션은 해당 경로로 다시 연결되지 않습니다. 이런 경우에는 몇 가지 다른 테스트 패키지를 설치해야 할 것입니다.

libc 또는 커널 또는 다른 거대한 코어 시스템을 업그레이드하려고하는 것처럼 머리카락이 너무 털이 많으면 해당 업그레이드 경로를 거부하거나 초기 업그레이드를 완전히 취소 할 수 있습니다. 허용되는 경우에만 테스트 / 불안정으로 업그레이드 할 것입니다.

편집 : 일부 우선 순위 핀을 수정하고 목록을 업데이트했습니다.


4
apt-get update구성 파일을 작성한 후 실행 했습니까 ?
Flow

3
이 방법을 사용하여 일관되지 않은 동작이 나타납니다. "apt-get install -t testing appX"는 "apt-get install appX / testing"( serverfault.com/q/646934/132528 참조 ) 과 동일하지 않습니다. 나에게 직관적이지 않더라도 우선 순위가 해결되도록합니까?
eugenevd

7
중요 : 저자는 기본 릴리스 값보다 높은 안정 / 보안에 대한 고정 기본 설정 값을 선택했습니다 . 자세한 내용은 serverfault.com/a/653552/120130 을 참조하십시오
Alex Ryan

7
이 답변은 방금 시스템을 깨뜨 렸습니다. 시도한 후 sudo apt-get update업데이트 오류가 발생했습니다. 그런 다음 다시 시작하여 나에게 Xsession error다시 시작하고 다시 시작했는데 이제는 GUI가 없습니다. 는 /dev/sda1/지금 가득 차있다. 큰.
luchonacho

3
나는 사람들에게이 게시물에 대한 부정적인 의견에주의를 기울일 것을 권장합니다. 최근 데비안 9 업데이트에서이 변경 사항을 되돌려 수정했습니다. 이 문제에 데비안 문서의 조언주의를 기울이고 wiki.debian.org/DontBreakDebian는 (A FrankenDebian하지 마십시오 스크롤)
브랜든 아놀드

98

에서하는 것은 /etc/apt/apt.conf.d다음과 같은 파일을 추가

99defaultrelease:

APT::Default-Release "stable";

에서 것은 /etc/apt/sources.list.d- 시험 / 불안정 소스에 대한 URL을 추가

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

운영

apt-get update

그런 다음 필요한 것을 설치하십시오.

apt-get -t testing install something

의존성이 많은 것을 설치하는 경우 매우 조심하십시오. 프로덕션 환경에서는이 작업을 수행하지 않는 것이 좋습니다.

백 포트 또는 유사한 저장소 에서 운을 시험해 볼 수도 있습니다 .


1
와. 그것은 빠르다. 내가 방금 접한 정보를 공유하기 위해 게시하고있었습니다! 좋은 것!
Gareth

전에는 apt.conf 메서드를 실제로 사용한 적이 없습니다. 환경 설정 파일 방법이 더 단순 해 보이지만 덜 정밀하게 제어 할 수 있습니다. -쿠퍼
쿠프

4
답변은 업그레이드가 필요합니다. 이 구성은 짜기가 안정되고 레니가 구식이 되었기 때문에 이제 완전히 파괴됩니다.
El Yobo 2019

1
더 이상 사용할 수 없습니다. 업데이트
Lothar

4
최신 데비안 릴리스에는 apt.conf 파일이 없으며 대신 /etc/apt/apt.conf.d/70debconf를 편집하십시오
Hayden Thring

49

apt_preferences

/ etc / apt / preferences 파일에서 시스템이 '안전 업그레이드'되어야하는 기본 레벨을 정의하십시오.
man apt_preferences

apt_preferences로 할 수있는 일은 많지만 단순성을 위해 ...

테스트에서만 사용할 수있는 단일 패키지 (autoMysqlBackup)를 설치해야했습니다. 해결책은 / 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

/etc/apt/sources.list에 여러 저장소가 추가되면 이후 릴리스 저장소 (이 경우 'stable')가 나열되어 있어도 적성이 지정된 릴리스로만 업그레이드됩니다.

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

따라서 해당 패키지를 설치하려면 다음을 수행해야합니다.

$ aptitude install -t testing packageName 

이 방법은 apt.conf만큼 빠르지 않지만 좋은 방법이지만 다른 모든 소스를 상대적으로 제어 할 수 있습니다.
쿠프

2
이 작업은 너무 복잡합니다 ... APT :: Default-Release를 사용하면 릴리스의 핀 우선 순위를 990 (900으로 설정하는 방법과 유사)으로 설정하고 나머지에 대한 음의 고정은 실제로 필요하지 않습니다. dist-upgrades 동안 안정적인 패키지가 우선 순위를 가지며 명령 행에 명시 적으로 무언가를 나열하자마자, 부정적인 고정 우선 순위는 대부분 무시됩니다.
Raphaël Hertzog 2016 년

@Raphael에게 답장하는 방법을 잘 모르겠습니다. 일을하는 매우 우아한 방법 인 것 같습니다. 나는 몇 년 전에 적절한 고정을 사용했지만 실제로는 그것을 얻지 못했습니다. 위에서 사용한 예제는 apt_preferences 매뉴얼 페이지에서 나온 것입니다.
Gareth 2016 년

2
스퀴즈에서 잘 작동하는지 확인
tomfanning

3
@Lothar : 데비안 6에서 작동합니다. 파일이 존재하지 않는다고해서 작동하지 않는 것은 아닙니다. 파일을 만들고 설정을 추가하십시오. 매뉴얼 페이지에서 인용 : "환경 설정 파일이 없거나 파일에 특정 버전에 적용되는 항목이없는 경우 해당 버전에 지정된 우선 순위는 해당 버전이 속하는 분배의 우선 순위입니다."
rzetterberg

13

그 가치가있는 것에 대해, 내가 항상 본 일반적인 조언은 "무엇과도 안정적으로 혼합하지 마십시오"입니다. 대부분의 혼합 시스템 자습서는 혼합 테스트 및 불안정을위한 것입니다.

안정적인 테스트와 테스트를 혼합하면 libc6과 같은 매우 기본적인 패키지는 업데이트를 요구하고 (테스트에서 소프트웨어를 설치하기 위해) 이러한 기본 패키지가 테스트로 이동하면 전체 시스템이 그런 식으로 표류 할 수 있기 때문입니다.

두 가지 대안이 있습니다.

  1. 백 포트를 사용하십시오 .
  2. 테스트에서 소스 라인을 설치하고 source에서 원하는 이후 버전빌드하십시오 .

1
동의한다. 방금 wheezy / stable 버전의 버그로 인해 테스트에서 libdvdread4를 업데이트하려고했습니다. 그래도 최신 libc를 가져오고 싶습니다. 그래서 방금 libdvdread4의 소스 패키지를 안정적으로 가져 와서 1 라인 소스 변경으로 패치하고 다시 빌드했습니다. 테스트에서 모든 종류의 패키지를 가져 오는 것보다 낫습니다. 이제 모든 패키지는 여전히 "안정된"패키지이며 필요한 한 줄 변경이 있습니다.
dgrant

12

데비안 문서는 주제에 광범위하며, 데비안 시스템의 아름다움을 실제로 공개 할 것이기 때문에 깊이 파고들 것을 강력히 권합니다.

혼합 시스템을 유지하는 방법을 살펴보면 필요한 모든 정보를 설명합니다.


1
이것은 @pQd의 답변에 사용 된 것과 동일한 방법 인 것 같으므로 debian> = 6.0에는 적용되지 않습니다. 또한 링크 제목에 "구식 문서"가 표시됩니다. 또한 대부분 답변 만 연결합니다.
dequis

@dequis는 링크가 오래되었다는 점에서 옳았지만 데비안 8 (테스트)의 지침에 따라 불안정한 패키지를 설치했으며 모든 것이 완벽하게 작동하는 것처럼 보입니다. 누구든지 최신 문서 링크를 가지고 있습니까?
domsson

1
이것은 당신이 찾고있는 것일 것입니다 : debian.org/doc/manuals/debian-reference/…
tomdeb

7

Testing 또는 Sid에서 너무 많은 의존성을 설치하지 못하게하는 또 다른 방법은 다음과 같습니다. apt-get에게 Testing 또는 Sid에서 패키지의 소스를 가져오고 데비안 도구를 사용하여 시스템 용 패키지를 만들도록 지시합니다 (수동으로 땜질 할 필요가 없음) 소스와 함께).

여기에서 인용 :
https://wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

sid 패키지를 테스트 또는 안정적으로 백 포트하려면 어떻게합니까?

데비안 소스 (및 개발 도구, 특히 debhelper, devscripts 및 build-essential)를 설치 한 다음 패키지를 빌드하십시오.

단계별 :

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 

결과 debs는 현재 디렉토리에 있어야하며 dpkg -i the.deb와 함께 설치할 수 있습니다.


4

나는 그것이 충분히 안전하고 편리해질 수 있다고 확신하기 위해 오랫동안 그것을 해왔습니다. 아래 설정을 사용하면 기본적으로 안정적인 버전이 설치되지만 원하는 경우 Aptitude에서 백 포트 또는 불안정한 버전을 선택할 수도 있습니다.

여기에 이미지 설명을 입력하십시오

편집해야 할 4 가지 사항, 기본 고정 릴리스 설정, 소스가 백 포트 및 불안정한 추가 필요, 백 포트 / 불안정한 패키지의 고정 우선 순위를 낮추고 고정 표시를 표시하기 위해 적성 표시 설정을 수정해야합니다.

  • '/etc/apt/apt.conf.d/10defaultrelease' 를 만들고 다음과 같이 내용을 만듭니다 .
Apt :: default- 릴리스 "안정적";
  • '/etc/apt/sources.list' 를 편집하여 불안정하고 백 포트 소스를 다음과 같이 추가하십시오.
# deb cdrom : [데비안 GNU / 리눅스 6.0.0 _Squeeze_-공식 다중 아키텍처 amd64 / i386 NETINST # 1 20110205-14 : 45] / squeeze main

deb http://ftp.us.debian.org/debian/ 짜기 메인
deb-src http://ftp.us.debian.org/debian/ 스퀴즈 메인

deb http://security.debian.org/ squeeze / updates main
deb-src http://security.debian.org/ squeeze / updates 메인

# 스퀴즈 업데이트, 이전에는 '휘발성'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

스퀴즈 백 포트
# http://backports.debian.org/Instructions/
deb http://backports.debian.org/debian-backports squeeze-backports main

# 불안정
# http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/ 불안정한 메인
deb-src http://ftp.us.debian.org/debian/ 불안정한 메인

# 무료가 아닌 ex. 태양 자바
#deb http://ftp.us.debian.org/debian/ squeeze non-free
# deb-src http://ftp.us.debian.org/debian/ squeeze non-free
  • etc/apt/preferences고정 파일 편집 -파일이 없으면 만듭니다.
# 패키지 고정 우선 순위
# http://wiki.debian.org/AptPreferences 및 http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences 참조
#
# 너트 셸에서 가장 높은 PIN이 설치됩니다.
#
# 고정 기본 설정은 다음과 같이 설정에 추가됩니다.
# 990-설치되지 않았지만 DO 버전은 'APT :: Default-Relase "stable"설정에 속합니다.
# 500-설치되지 않았으며 대상 릴리스에 속하지 않는 버전의 경우
# 100-이미 설치된 패키지의 경우 동일한 패키지의 다른 버전도 의미합니다
# 1-실험 패키지; "NotAutomatic : yes"가 포함 된 패키지
#
# 우리의 피닝
# 400-다른 패키지를 업데이트하지 않고도 안전하게 설치할 수있는 백 포트
# 50-불안정한 패키지, 세부 정보 화면에서 강제 설치하면 충돌이 발생할 수 있습니다

패키지 : *
핀 : 릴리스 n = 압착 백 포트
핀 우선 순위 : 400

패키지 : *
핀 : 릴리스 a = 불안정
  • '/etc/apt/apt.conf.d/100guiconf'를 작성 하고 고정 정보를 표시하도록 Aptitude를 설정하십시오.
적성 :: UI :: 패키지-디스플레이-형식 "% c % a % M % p % Z % v % V % i";

1
위의 것 외에도 '테스트'개발 저장소에서 모든 시스템 패키지를 실행하기로 결정한 업데이트 일뿐입니다. 따라서 대신 source.list코드 이름을 말해야합니다 . 데비안의 정책 은 거의 안정적이며 패키지는 리포지토리 와 거의 비슷 합니다. 여기에 공간이 부족하므로 wiki.debian.org/DebianReleases , wiki.debian.org/StableUpdateswiki.debian.org/StableProposedUpdates ; 마지막 두 개는 추가 리포지토리 소스입니다. jessiesqueezetestingunstable
Daniel Sokolowski

2

선택한 패키지가 더 복잡하거나 여러 시스템에서 설치가 반복되는 경우 공식 리포지토리의 하위 집합을 미러링하는 개인 리포지토리 설정을 고려할 수 있습니다. 이를 위해서는 리포지토리를 구성하는 데 약간의 작업이 필요하지만 각 클라이언트에서 최소한의 구성과 수십 개의 설치를 수행 할 때 반복 가능한 결과로 보상을 쉽게 유지할 수 있습니다. 하나 또는 두 개의 패키지 만 설치하는 경우에도이 기능이 유용하며 클라우드 설치 자동화 및 유지 관리에이 방법을 사용합니다. 저렴한 VPS의 단일 서버는 수십 개의 개인 리포지토리를 처리 할 수 ​​있습니다.

개인 저장소 서버를 구성하려면 다음을 수행하십시오.

# 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

그런 다음 정적 저장소 파일을 제공하도록 선택한 웹 서버를 구성하십시오. 보안 인증서와 기본 인증으로 리포지토리를 보호 할 수 있습니다.

개인 저장소를 자동으로 유지 관리하고 업스트림에서 업데이트를 가져 오려면 위의 스크립트를 스크립트에 넣고 크론 작업에서 실행하십시오.

클라이언트 컴퓨터에서 클라이언트 컴퓨터를 구성하려면

# 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

클라이언트 시스템에서 클라이언트 시스템을 유지 보수하고 모든 개인 저장소 갱신 사항을 가져 오려면 다음을 수행하십시오.

# Update.
apt-get update

# Upgrade.
apt-get upgrade

1

또 다른 옵션은 테스트에서 소스 패키지를 다운로드하는 것입니다. APT는 소스 패키지를 다운로드 한 후 자동 빌드 할 수 있습니다. 이런 식으로 안정적인 패키지는 업데이트 테스트의 영향을받지 않습니다. 유일한 단점은 바이너리 패키지를 다운로드하고 설치하는 것보다 시간이 더 걸린다는 것입니다.

테스트에서 소스 패키지를 다운로드하도록 APT를 구성하려면 다음을 추가하십시오.

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

현재 테스트 만 수행하고 향후 테스트는 수행하지 않으려면 "testing"을 현재 코드 이름으로 바꿉니다 (이 글을 쓰는 시점에서 "버스터").

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.