업그레이드에서 제안 된 저장소로 되 돌리는 방법은 무엇입니까?


답변:


24

로컬에 설치된 패키지, 제안 및 백 포트 패키지에서 안정 + 업데이트 채널로 되 돌리는 일반적인 방법은 다음과 같습니다. 다른 답변은 정확하고 비슷한 방식으로 작동하지만 더 우아한 접근법이라고 생각합니다.

  1. 확인 당신의 항목을 제거 -proposed또는 -backports당신의 /etc/apt/sources.list/etc/apt/sources.list.d/*파일을.
  2. /etc/apt/preferences.d/99-back-to-stable-updates를 들어 다음과 같이 apt-preferences 파일을 추가 precise하십시오.

    Package: *
    Pin: release a=precise
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-updates
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-security
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-proposed
    Pin-Priority: -10
    
    Package: *
    Pin: release a=precise-backports
    Pin-Priority: -10
    

    1,000>의 고정이 쉬워 힘 채널의 패키지에 대한 하향 및 우선 순위에 <0 인 것 -proposed-backports도 추가적인 패키지를 제거 할 것이다 채널.

  3. 이제 실행

    sudo apt-get update
    sudo apt-get dist-upgrade
    

    제안 된 솔루션 apt가 당신에게 줄 것이라고 검사하고, 괜찮다고 생각되면 수락하십시오. 다운 그레이드되는 이유와 버전을 확인해야하는 경우이 apt-cache policy packagename버전을 확인하여 사용 가능한 버전과 설치 후보가 어떤 버전인지 결정하십시오.

  4. /etc/apt/preferences.d/99-back-to-stable-updates더 이상 필요하지 않으므로 파일을 다시 제거하십시오 .

mlind우분투 포럼 에서 5 년 전부터 자신의 게시물 을 고정시키는 데 대한이 소식 에 감사를 드렸습니다. 그러나 그것은 오늘날에도 꽤 도움이되었습니다.


데비안에서도 작동한다고 가정합니다. 불행히도, 그것은 나를 위해 아무것도하지 않습니다 : /
Michael

@Michael 1) 데비안은 공식적인 제안 된 저장소라는 개념을 가지고 있지 않습니다. 2)이 사이트는 데비안이 아닌 우분투에 관한 것입니다. Unix.SE 에 대해 새로운 질문을 하시기 바랍니다 .
gertvdijk 2016 년

이 솔루션은 'xenial'버전에서도 작동했습니다! (물론 파일에서 정확하게 xenial로 교체 한 후) 감사합니다!
morhook

4

이 페이지 에서는 핀보다 높은 우선 순위가 1000보다 높으면 패키지 다운 그레이드가 발생할 수 있다는 사실을 활용하여 Apt 피닝을 사용하여 전체 리포지토리에서 다운 그레이드 할 수 있다고 제안합니다 .

따라서 하나의 솔루션은 natty-proposed저장소의 파일을 제외한 모든 패키지 파일의 기본 우선 순위를 일시적으로 1000 씩 증가시키는 것 입니다.

apt-cache policy | awk '
    /^ [0-9]+ / {
        p = $1;
        getline;
        r = $0;
        if (r !~ /a=natty-proposed/) p += 1000;
        print "Package: *\nPin: " r "\nPin-priority: " p "\n"
    }
' | sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed

(참고 :이 방법 은 릴리스 필드에 쉼표가 포함 된 패키지 파일 의 우선 순위를 높이 지 못합니다 . 이 질문을 참조하십시오 .)

이 작업을 수행 한 후 apt-get --simulate upgrade다운 그레이드 감지 성공 여부를 테스트하는 데 사용할 수 있습니다. 올바른 다운 그레이드가 감지되었음을 확인한 후 다운 그레이드 sudo apt-get upgrade를 수행하는 데 필요한 모든 것이어야합니다.

다운 그레이드가 완료되면 소프트웨어 소스를 사용하여 시험판 업데이트 (natty-proposed) 저장소 를 비활성화 한 다음 임시 우선 순위 증가를 제거하십시오.

sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed

마지막으로, 실행중인 모든 프로그램이 다운 그레이드 된 버전이되도록 재부팅하십시오.


1
흥미로운 솔루션은 아마도 내 것보다 가장 좋고 일반적입니다. 그건 그렇고, 다운 그레이드 된 패키지의 수는 동일하므로 두 가지 접근 방식의 정확성을 확인합니다.
enzotib

2

다음보다 간단한 해결책을 찾을 수 없습니다. 그러나 누군가가 더 나은 답변을 얻기를 바랍니다.

다운 그레이드를 실행할 수있는 다음 스크립트

#!/bin/bash

# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages

# run apt-cache policy on each of them, then elaborate with the awk script 
apt-cache policy $(<all-packages) |
  ./get-prev-pkg-vers >old-versions

# install previous version of packages
sudo apt-get --simulate install $(< old-versions)

awk라는 이름의 스크립트는 get-prev-pkg-vers다음과 같다

#!/usr/bin/awk -f

/^[^ ]/ {
    package = $1
    gsub(":", "", package)
    search_next = 0
}
/^     [^ ]/ {
    installed = 0
    version = $1
    if (search_next == 1) {
        print package "=" version
        search_next = 0
    }
}
/^ \*\*\* [^ ]/ {
    installed = 1
}
/^        [^ ]/ {
    branch = $3
    if (installed == 1 && branch ~ /proposed/) {
        search_next = 1
    }
    installed = 0
}

스크립트를 실행할 때 제안 된 저장소가 아직 비활성화되어 있지 않아야합니다.

두 스크립트 모두에서 실행 비트를 설정해야합니다.

이 방법의 문제점은 다운 그레이드 된 모든 패키지가 수동으로 설치되어 자동으로 설치된 패키지로 생성된다는 것입니다.

안전 을 위해 bash 스크립트 끝에 --simulate옵션을 추가하십시오 apt-get.


2

natty 제안에서 모든 패키지를 되돌릴 필요는 없습니다. 어쨌든 natty-updates를 통해 대부분의 패키지가 곧 같은 버전으로 업데이트 될 것입니다.

하나의 패키지에 문제가있는 경우 darent present (비활성화 제안 후) 방법을 사용하여 하나의 패키지를 되돌 리거나 사용할 수 있습니다 sudo aptitude install packagename/natty. 그러나 더 중요한 것은 패키지에 대해 버그를 신고해야합니다. 실제로 natty 제안을 테스트 한 사람은 거의 없으며 회귀 (= 새로운 문제)가 발생하면 반드시보고해야합니다. 그렇지 않으면 모든 우분투 사용자의 업데이트로 끝날 수 있습니다. 문제가있는 경우보고하십시오.


1

시냅스에서 제안 된 저장소를 비활성화하고 소스를 업데이트 할 수 있습니다. 그러면 업데이트 된 모든 패키지가 로컬에 설치된 것으로 나타납니다 (더 이상 repos에 없기 때문에).

이제 해당 패키지를 "다운 그레이드"해야합니다. 하나씩 선택하고 상단 메뉴에서 다음을 선택하십시오.

package > force version

(또는 Control + E)

사용 가능한 옵션이있는 메뉴가 나타납니다. 각 패키지마다 더 낮은 버전 번호를 선택합니다. 실수로 일반 저장소에 최신 버전이 있으면 이후 업데이트에서 해결 될 것입니다.

빠른 해결책은 porposed-positor 명령을 사용하여 배치 된 저장소를 가리키는 것이지만, 그것들과 함께 작동하는지 알지 못합니다. 외부 ppa 및 다운 그레이드 패키지를 공식 우분투 버전으로 제거하는 데만 사용했습니다. 이 경우이 작업을 수행하지 않는 것이 좋습니다. 아마도 안전한 방법인지 알고있을 것입니다 ...


마지막 단락은 추측 일 뿐이므로 질문에 대한 의견이거나 올바르게 연구해야합니다.
Karl Richter

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