さまざまなバージョンとアーキテクチャのapt-preferenceの優先順位を修正しました。

さまざまなバージョンとアーキテクチャのapt-preferenceの優先順位を修正しました。

私はこの問題を解決するのに時間がかかりすぎたので、この質問をします。文書にはいくつかの重要な注意事項がありません。

複数のアーキテクチャに対して特定のパッケージバージョンを優先する方法は?具体的には、複数のアーキテクチャに対してダウンロードしたいさまざまなパッケージがあり、バージョンの優先順位を指定して明示的に提供されていない場合は、aptが任意の要件に一致するバージョンを取得しようとします(私の場合は現在のgitブランチ名)develop。バージョンにロールバックします。

例えば。パッケージをダウンロードし、スキーマを指定しmy-packageます。i386amd64my-git-branch-namedevelop

答え1

公式文書はここ

  1. 複数のアーキテクチャをサポートするために、すべてのパッケージが修正されました。〜しなければならないそのスキーマを指定し、各スキーマに1つのエントリが必要です。指定されたアーキテクチャなしでパッケージ名を固定すると、デフォルト(プラットフォーム)アーキテクチャにのみ影響します。

    Package: my-package
    Pin: version /your regex here/
    Pin-Priority: 1001
    
  2. 項目は空白に敏感ですが、空白があってもエラーは報告されません。次の修正は自動的に無視されます。

    Package: my-package:amd64
        Pin: version /your regex here/
        Pin-Priority: 1001
    
  3. apt update 〜しなければならない~と呼ばれる後ろに尊重されるように設定ファイルを更新し、後ろに追加スキーマの使用を追加する(例:)dpkg --add-architecture i386

    次の抜粋は/etc/apt/preferences上記の問題を扱っています。

    Package: my-package:amd64
    Pin: version /-my-git-branch-name-/
    Pin-Priority: 1001
    
    Package: my-package:i386
    Pin: version /-my-git-branch-name-/
    Pin-Priority: 1001
    
    Package: my-package:amd64
    Pin: version /-develop-/
    Pin-Priority: 900
    
    Package: my-package:i386
    Pin: version /-develop-/
    Pin-Priority: 900
    

関連情報