適切なデフォルト設定を使用して無料でないことをブロックする方法は?

適切なデフォルト設定を使用して無料でないことをブロックする方法は?

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少し混乱しています。実際に何が起こるのかについては、「候補」行を参照してください。

おすすめ記事