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