적절한 기본 설정을 사용하여 무료가 아닌 것을 차단하는 방법은 무엇입니까?

적절한 기본 설정을 사용하여 무료가 아닌 것을 차단하는 방법은 무엇입니까?

non-free내가 명시적으로 명명한 패키지를 제외한 모든 패키지를 차단하고 싶습니다 . 현재 나는 다음을 가지고 있습니다:

/etc/apt/sources.list:

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

/etc/apt/preferences.d/non-free_policy:

Explanation: Disable packages from `non-free` tree by default
Package: *
Pin: release c=non-free
Pin-Priority: -1

(원하는 각 비자유 패키지에 대해 명시적인 섹션을 추가한다는 아이디어입니다.)

하지만 작동하지 않습니다.

root@silber:/etc/apt/preferences.d# apt-get -s install firmware-linux-nonfree
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.       
Statusinformationen werden eingelesen.... Fertig
Die folgenden NEUEN Pakete werden installiert:
  firmware-linux-nonfree
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Inst firmware-linux-nonfree (0.43 Debian:8.4/stable [all])
Conf firmware-linux-nonfree (0.43 Debian:8.4/stable [all])

내가 무엇을 놓치고 있나요?

답변1

제외 규칙 보다 우선하는 또 다른 일반적인 핀 우선순위가 없는지 확인해야 합니다 non-free. (여기에는 APT::Default-Release지정된 버전에 우선순위가 높은 구성 설정을 할당하는 것이 포함됩니다.)

예를 들어, /etc/apt/preferences파일(또는 그 안의 다른 파일 /etc/apt/preferences.d)에 다음과 같은 내용이 포함되어 있는 경우:

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

그러면 unstable패키지의 핀 우선 순위는 구성 요소에 관계없이 200입니다. 첨부된 파일과 함께 작동하게 하려면 다음으로 변경해야 합니다.

Package: *
Pin: release a=unstable, c=main
Pin-Priority: 200

contrib(관심되는 경우 추가 섹션을 추가하십시오). (귀하의 경우에는 stable물론 이렇게 할 것입니다.)

다음을 실행하여 핀 우선순위의 효과를 확인할 수 있습니다.

apt-cache policy

non-free-exclude 구성이 제대로 작동하는 경우 non-free핀 우선순위가 -1인 추적 중인 모든 키트에 대한 항목이 표시되어야 합니다. 일단 작동하면 더 이상 설치할 수 없거나 raccoon실제로 어떤 패키지(명시적으로 언급된 경우에도)를 설치할 수 없다는 것을 알게 될 것입니다. 적절한 핀 우선 순위를 사용하여 구성 파일에 필요한 패키지를 추가 non-free해야 합니다 .non-free

/etc/apt/preferences.d/non-free예를 들어, 제가 사용하는 설정은 다음과 같습니다. include라는 파일이 있습니다.

Package: intel-microcode
Pin: release n=buster, c=non-free
Pin-Priority: 100

Explanation: Disable packages from non-free tree by default
Package: *
Pin: release c=non-free
Pin-Priority: -1

무료가 아닌 패키지가 여전히 검색에 표시되지만 설치할 수 없습니다.

$ sudo apt install lmbench
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package lmbench is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'lmbench' has no installation candidate

그리고 apt policy다음에 동의합니다:

$ apt policy lmbench
lmbench:
  Installed: (none)
  Candidate: (none)
  Version table:
     3.0-a9+debian.1-2 -1
         -1 http://ftp.fr.debian.org/debian buster/non-free amd64 Packages
         -1 http://ftp.fr.debian.org/debian testing/non-free amd64 Packages
         -1 http://ftp.fr.debian.org/debian unstable/non-free amd64 Packages

그러나 intel-microcode설치 및 업그레이드는 가능합니다. 따라서 이전 안정 버전으로 강제 다운그레이드한 후

$ apt policy intel-microcode
intel-microcode:
  Installed: 3.20190618.1~deb9u1
  Candidate: 3.20190618.1
  Version table:
     3.20190618.1 100
         -1 http://ftp.fr.debian.org/debian buster/non-free amd64 Packages
         -1 http://ftp.fr.debian.org/debian testing/non-free amd64 Packages
         -1 http://ftp.fr.debian.org/debian unstable/non-free amd64 Packages
 *** 3.20190618.1~deb9u1 100
        100 /usr/var/lib/dpkg/status

$ apt list --upgradable
intel-microcode/stable,testing,unstable 3.20190618.1 amd64 [upgradable from: 3.20190618.1~deb9u1]

출력은 apt policy약간 혼란스럽습니다. 실제로 무슨 일이 일어나는지 보려면 "후보" 줄을 참조하세요.

관련 정보