web-dev-qa-db-ja.com

ローカルリポジトリに最高の優先度を割り当てる

概要

公式リポジトリから同じパッケージバージョンを再度ダウンロードするのではなく、apt-getにローカルリポジトリパッケージを優先させるにはどうすればよいですか?ローカルリポジトリは署名され、信頼されています。 aptの優先設定を既に試しました。


元の質問:「sources.listファイルを使用せずにローカルリポジトリに最高の優先度を割り当てる方法」

ダウンロードしたパッケージでローカルリポジトリをセットアップしました。 Ubuntuを再インストールする必要があるときに、インターネット経由で同じパッケージをダウンロードしないようにするために使用します。これは、apt-ftparchive packages . > Packagesで作成された基本的なリポジトリです。 「認証されていないリポジトリ」警告を回避するために、これを信頼できるリポジトリにしました。 (信頼できないリポジトリがある場合、aptまたはsynapticはインターネット経由で同じパッケージをダウンロードしようとします。 '信頼されているからです)。

このローカルリポジトリを少なくとも1年間使用しています。ただし、これを使用するには、ローカルリポジトリの行をsources.listファイルの先頭に常に配置する必要があります。しかし、これは迷惑です。Ubuntuを再インストールするたびにターミナルを開いて入力する必要があるためです。ただし、優れたツールsoftware-properties-gtkがあります。ソース行を `sources.listの最後に配置するため、このツールは使用できません。

そして、実際の問題は、aptまたはsynapticは常に、前述のソースからパッケージをダウンロードし、パッケージがローカルリポジトリで既に利用可能かどうかを検査します。したがって、ローカルソースをsources.list実行端末の最上部に配置する以外に選択肢はありません(実際、端末は嫌いではありませんが、解決策が必要です)。

この方法 を試しました。しかし、これは私を助けません。

私の設定ファイルは/etc/apt/preferences.d/local-pin-900にあります

    Package: *
    Pin: release o=Local,n=ubuntu-local
    Pin-Priority: 900

私のリリースファイルはこちら

    Origin: Local
    Label: Local-Ubuntu
    Description: Local Ubuntu Repository
    Codename: ubuntu-local
    MD5Sum:
     ed43222856d18f389c637ac3d7dd6f85          1043412 Packages
     d41d8cd98f00b204e9800998ecf8427e                0 Sources

Apt-preferenceを有効にすると、apt-cache policyに設定が正しく表示されます。ローカルリポジトリの優先度が最も高いことを示しています。

しかし、これを行うと、Sudo apt-get install <package-name>aptはインターネットからダウンロードしようとします。しかし、ローカルリポジトリを一番上に配置すると、ローカルリポジトリからインストールされます。

したがって、私の質問は-> 'パッケージがローカルリポジトリで利用可能な場合、明示的に「リポジトリリストの上部にあるローカルソース(sources.listファイルなど)? '

編集:apt-cache policy $package_nameの出力は次のとおりです

  
 nautilus-wipe:
インストール済み:(なし)
候補:0.1.1-2 
バージョン表:
 0.1.1-2 0 
 500 http://archive.ubuntu.com/ubuntu/ precise/universe i386パッケージ
 900 file:/ media/Main/Linux-Software/Ubuntu/Precise /パッケージ

ローカルリポジトリがsources.listファイルで最初に来るものではありませんが、ローカルリポジトリの方が優先されることを示しています。

apt-get install nautilus-wipeの出力は次のとおりです

パッケージリストを読み込んでいます...完了
依存関係ツリーを構築しています
状態情報を読み込んでいます...完了
次の新しいパッケージがインストールされます:
 nautilus-wipe 
 0がアップグレードされ、1が新しくインストールされ、0が削除され、131がアップグレードされません。
 30.7 kBのアーカイブを取得する必要があります。
この操作の後、150 kBの追加ディスクスペースが使用されます。
 'http://archive.ubuntu.com/ubuntu/pool/universe/n/nautilus-wipe/nautilus-wipe_0.1.1-2_i386.deb' nautilus-wipe_0.1.1-2_i386 .deb 30730 MD5Sum:7d497b8dfcefe1c0b51a45f3b0466994 

インターネットからファイルを取得しようとしていますが、ローカルのファイルには満足すべきだと思います。


Mediageekが推奨するように ""またはlocalhostを使用した結果

Localhostを使用しても効果はありません。しかし、「」は私の方法と違いはありませんでした

    Package: *
    Pin: Origin ""
    Pin-Priority: 1001

質問を投稿する前にそれらを使用しました。しかし、私はこれを試しました(余計に)。同じ結果。 apt-cache policyは、ローカルリポジトリの優先度が最も高いことを示しています。しかし、インストールしようとすると、「XXX/XXX KBのアーカイブを取得する必要があります」と表示されます。

39
Anwar

短い答え:

APT設定ファイル/ etc/apt/preferencesを使用して、インストールするパッケージのバージョンを選択するを制御できます。

ファイル/etc/apt/preferences、これはapt-getが決定に使用し、単一のパッケージに多数のバージョンがある場合に選択する必要があるバージョンです。これにより、ローカルリポジトリからのパッケージは、他のパッケージよりも優先されます。

パッケージ:* 
 Pin:Origin "" 
 Pin-Priority:1001 

これはバージョンを制御しませんが、両方のパッケージのバージョンが同じ場合はソース設定を制御します。同じパッケージに最高の優先順位を割り当てる必要がある場合versionローカルリポジトリで、/etc/apt/sources.listファイルの上部にリストします>

元の質問への回答:

Sources.listファイルを使用せずにローカルリポジトリに最高の優先順位を割り当てる方法は?

sources.listファイルを使用せずにローカルリポジトリに最高の優先度を割り当てる方法はありません。ローカルリポジトリに最高の優先度を割り当てたい場合は、「sources.list」の先頭に配置する必要があります。

この質問に対する要約回答:

公式リポジトリから同じパッケージバージョンを再度ダウンロードするのではなく、apt-getにローカルリポジトリパッケージを優先させるにはどうすればよいですか?ローカルリポジトリは署名され、信頼されています。 aptの優先設定を既に試しました。

/etc/apt/sources.listファイルを使用して、ローカルリポジトリの行をこのファイルの先頭に配置する必要があります。以下のような。

 deb cdrom:[Kubuntu 12.04 LTS _Precise Pangolin_-リリースi386(20120424)] /正確なメイン制限
 debファイル:/ media/Main/Precise-Debs-New /
debファイル:/ media/Main/Linux-Software/Ubuntu/Precise /

deb http://archive.ubuntu.com/ubuntu正確なメインユニバース制限されたマルチバース
 deb-src http://archive.ubuntu.com/ubuntu正確なユニバースメインマルチバース制限#ソフトウェアプロパティにより追加
 
#deb cdrom:[Xubuntu 12.04 LTS _Precise Pangolin_-Release i386(20120423.1)] /正確なメイン多元宇宙制限宇宙
#deb cdrom:[Ubuntu 12.04 LTS _Precise Pangolin_-Release i386(20120423)] /正確なメイン制限
 
#deb http://archive.canonical .com/ubuntu正確なパートナー
#deb-src http://archive.canonical.com/ubuntu正確なパートナー
#deb http://extras.ubuntu.com/ubuntu正確なメイン
#deb-src http://extras.ubuntu.com/ubuntu precise main 
 

はい、「apt_preference」は、同じバージョンのパッケージのinstancesを選択することとは関係ありません。ここでのポイントは、/etc/apt/preferenceファイルを使用して、ローカルリポジトリに最高の優先度を割り当ててローカルリポジトリから.debファイルを強制的に選択/使用することはできません。そのファイル(設定)は、同じバージョンの特定のインスタンス(.debファイル)ではなく、特定のバージョンを選択するために使用されます。後者の場合、上記の方法で/etc/apt/sources.listファイルを使用する必要があります。


説明:

私たちはすべてapt_preference目的を誤解しているようです。apt_preferenceマニュアルではこれを最初の3段落で説明しています!!

APT設定ファイル/ etc/apt/preferencesを使用して、インストールするパッケージのバージョンを選択するを制御できます。

Sources.list(5)ファイルに複数のディストリビューションへの参照が含まれている場合(安定版やテスト版など)、パッケージのいくつかのバージョンをインストールできる場合があります。 APTは、利用可能な各バージョンに優先度を割り当てます。依存関係の制約に従って、apt-get(8)はインストールの優先度が最も高いバージョンを選択します。 APT設定ファイルは、デフォルトでAPTがパッケージバージョンに割り当てる優先順位をオーバーライドするため、ユーザーがインストール用に選択するものを制御できます。

そして、非常に重要なのは3番目の段落です

Sources.list(5)ファイルに複数のソースへの参照が含まれている場合、パッケージの同じバージョンの複数のインスタンスが利用できる場合があります。この場合、apt-get(8)はsources.list(5)ファイルで最初にリストされたインスタンスをダウンロードします。 APT設定ファイルは、インスタンスの選択には影響せず、バージョンの選択にのみ影響します。

これらの斜体は、私のものです

例でこれを見てみましょう:

正確なバージョンのcompiz-fusion-plugins-extraがありますが、デモンストレーション用に無効にしました

ファイル/etc/apt/preferences、これはapt-getが決定に使用し、単一のパッケージに多数のバージョンがある場合に選択する必要があるバージョンです。 (この例では、compiz-fusion-plugins-extraにはいくつかのバージョンがあります。

パッケージ:* 
 Pin:Origin "" 
 Pin-Priority:1001 

このファイルは、異なるリポジトリに複数のバージョンが存在するすべてのパッケージのローカルリポジトリからインストールするapt-getを示します。

言い換えると、ローカルリポジトリにxappsバージョンのパッケージ1.0があり、この同じパッケージxappsが上位バージョンのPreciseのリポジトリに存在する場合、たとえば2.0apt-getはローカルリポジトリのバージョン、つまり1.0を優先します。

これが私の/etc/apt/sources.listファイルです

 deb http://archive.ubuntu.com/ubuntu正確なメインユニバース制限マルチバース
 deb-src http://archive.ubuntu.com/ubuntu正確なメインメインマルチバース制限#ソフトウェアによって追加-properties 
 deb http://security.ubuntu.com/ubuntu/ precise-securityユニバースメインマルチバース制限
 deb http://archive.ubuntu.com/ubuntu exact-updatesユニバースメインマルチバース制限付き
 deb http://archive.ubuntu.com/ubuntu precise-backportsユニバースメインマルチバース制限
 
#deb http://archive.canonical.com/ubuntu正確なパートナー
#deb-src http://archive.canonical.com/ubuntu preciseパートナー
#deb http://extras.ubuntu.com/ubuntu precise main 
#deb- src http://extras.ubuntu.com/ubuntu precise main 
 
 
 deb file:/ media/Main/Linux-Software/Ubuntu/Oneiric/#this is oneiric repository 。
 debファイル:/ media/Main/Linux-Software/Ubuntu/Natty/natty /
debファイル:/ media/Main/Linux-Software/Ubuntu/Natty/kubuntu/
 debファイル:/ media/Main/Linux-Software/Ubuntu/Natty/natty_new /

正確なリポジトリをファイルの前にリストしましたが、apt-getがそのリポジトリからパッケージを選択することはありません。マニュアルに記載されているとおり

APT設定ファイルは、インスタンスの選択には影響せず、バージョンの選択にのみ影響します。

そのため、コマンドapt-cache policy compiz-fusion-plugins-extraの出力は、以下のように期待どおりでした

 anwar @ edubuntu-lenovo:/ etc/apt $ apt-cache policy compiz-fusion-plugins-extra 
 compiz-fusion-plugins-extra:
インストール済み:(なし) 
候補:0.9.5.94-0ubuntu1/**優先度の低いバージョンを選択** /
バージョンテーブル:
 0.9.7.0〜bzr9-0ubuntu6 0 
 500 http://archive.ubuntu.com/ubuntu/ precise/universe i386パッケージ
 0.9.5.94-0ubuntu1 0 
 1001 file:/ media/Main/Linux-Software/Ubuntu/Oneiric /パッケージ
 0.9.4-0ubuntu3 0 
 1001 file:/ media/Main/Linux-Software/Ubuntu/Natty/natty /パッケージ

ここでは、候補バージョンは0.9.5.94-0ubuntu1(ローカルリポジトリにあります)であり、正確なリポジトリにある0.9.7.0~bzr9-0ubuntu6 0ではありません。正確なものはsources.listファイルの最初にリストされていました。

ローカルリポジトリに最高の優先度を設定した後にapt-getをインストールしようとするcompiz-fusion-plugins-extraの実行例.

 anwar @ edubuntu-lenovo:〜$ Sudo apt-get install compiz-fusion-plugins-extra 
パッケージリストの読み取り中...完了
依存関係ツリーの構築
状態情報を読み取り中...完了
次のパッケージは自動的にインストールされ、不要になりました。
 x11-apps x11-xfs-utils xinit x11-session-utils libfs6 
 Use 
次の追加パッケージがインストールされます。
 compiz-core compiz-plugins-default compiz-plugins-extra 
 compiz-plugins- main-default libdecoration0 xserver-xorg-core 
 xserver-xorg-video-intel 
推奨パッケージ:
 compizconfig-settings-manager xfonts-100dpi xfonts-75dpi 
次のパッケージが削除されます。
 compiz compiz-gnome compizconfig-backend-gconf edubuntu-desktop 
 libcompizconfig0 ubuntu-desktop unity xorg xserver-xorg 
 xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-mouse 
 xserver-x org-input-synaptics xserver-xorg-input-vmmouse 
 xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-ATI 
 xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode 
 xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic 
 xserver-xorg-video -nouveau xserver-xorg-video-openchrome 
 xserver-xorg-video-qxl xserver-xorg-video-r128 xserver-xorg-video-radeon 
 xserver-xorg-video-s3 xserver-xorg -video-savage 
 xserver-xorg-video-siliconmotion xserver-xorg-video-sis 
 xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident 
 xserver-xorg-video-vesa xserver-xorg-video-vmware 
次の新しいパッケージがインストールされます。
 compiz-fusion-plugins-extra compiz-plugins-extra 
次のパッケージはダウングレードされます。
 compiz-core compiz-plugins-default compiz-plugins-main-default 
 libdecoration0 xserver-xorg-core xserver-xorg -video-intel 
 0はアップグレード、2は新しくインストール、6はダウングレード、37は削除、698はアップグレードしません。
 0 B/5,772 kBのアーカイブを取得する必要があります。
その後操作、8,294 kBのディスク領域が解放されます。
続行しますか[Y/n]? 

奇妙な!!!、すでにインストールされている正確なcompizパッケージをダウングレードして、新しく選択されたcompiz-fusion-plugins-extra !!!との依存関係(Oneiricのものと一致する)を解決しようとしています。

より危険なのは、新しいcompizesとの競合を避けるために、グラフィックドライバーパッケージ(xserver-xorg -....)を削除しようとしていることです。

(おそらく、ローカルリポジトリにも持っていれば、安全にダウングレードしたいかもしれません。しかし、それらのパッケージは通常インストールされているので、ダウンロードしませんでしたので、ローカルレポジトリにはありません、したがって、この結果)

結論:したがって、/etc/apt/preferencesの使用は、ローカルシステムに完全なリポジトリがある場合にのみ、ローカルリポジトリで使用することをお勧めします。

同じバージョンの複数のインスタンス(.debファイル)が多くのリポジトリに存在する場合はどうなりますか。

apt_preferenceマニュアルで説明されています

Sources.list(5)ファイルに複数のソースへの参照が含まれている場合、パッケージの同じバージョンの複数のインスタンスが利用できる場合があります。この場合、apt-get(8)はsources.list(5)ファイルで最初にリストされたインスタンスをダウンロードします。

/etc/apt/preferencesファイルの使用例の例:

apt-getに、Ubuntuの標準バージョンではなく、カスタムリポジトリから利用可能なバージョンを選択するように強制する例は、「Linux Mint」ディストリビューションです。このカスタムpreferenceファイルを使用します。

パッケージ:* 
 Pin:release o = linuxmint 
 Pin-Priority:700 
 
 Package:* 
 Pin:Origin packages.linuxmint.com 
 Pin-Priority:700 
 
 Package:* 
 Pin:release o = Ubuntu 
 Pin-Priority:500 
 

これにより、事実上、リポジトリにパッケージがある場合にパッケージが提供されます。しかし、それらがなければ、Ubuntuの標準リポジトリを使用します。


ローカルリポジトリに最高の優先度を設定した後にapt-getを実行する例

Ubuntuにkubuntu-desktopパッケージをインストールしてKDEをテストしたかっただけです。(忘れていたので、/etc/apt/preferenceファイルを使用してプリファレンスを設定しました)。私はkubuntu-12.04-alternate-installerのisoを持っていたので、それを使用できると思いました。

(リポジトリソースとしてisoを適切に設定した後)、実行しました
Sudo apt-get install kubuntu-desktop、その後、以下の出力を見て驚いた。

 
 anwar @ edubuntu-lenovo:〜$ Sudo apt-get install kubuntu-desktop 
パッケージリストの読み取り中...完了
依存ツリーの構築
状態情報を読み込んでいます...完了
一部のパッケージをインストールできませんでした。これは、不可能な状況をリクエストしたことを意味する場合があります。または、不安定な
ディストリビューションを使用している場合、必要なパッケージがまだ作成されていないか
着信から移動されます。
次の情報は、状況の解決に役立つ可能性があります。
 
次のパッケージには、満たされていない依存関係があります。
 kubuntu-desktop:Depends:language-selector-kde but itインストールされません
推奨:amarok、インストールされません
推奨:apturl-kde、インストールされません
推奨:gdebi-kde、しかしインストールされません
推奨:gpgsm、インストールされません
推奨:ibus-qt4、インストールされません
推奨:jockey- kdeがインストールされません
推奨:kdegraphics-strigi-pluginsしかし、インストールされません
推奨:kdepim-wizardsですが、インストールされません
推奨:kpackagekitですが、インストールされません
推奨:libreoffice -kdeがインストールされません
推奨:libreoffice-style-oxygenがインストールされません
推奨:network-manager-pptp-kdeがインストールされませんインストールされる
推奨:plasma-widget-facebook、インストールされない
推奨:plasma-widget-kimpanel、インストールされない
推奨:usb -creator-kdeがインストールされません
 E:問題を修正できません。壊れたパッケージがあります。
 

その結果に驚きました。突然、/etc/apt/preferenceにプリファレンス(この回答を書くための設定)を設定して、ローカルリポジトリに最高の優先度を設定したことを思い出します。

したがって、私はこれを実行しました:apt-cache policy kubuntu-desktop、出力は以下のとおりでした:

 anwar @ edubuntu-lenovo:〜$ apt-cache policy kubuntu-desktop 
 kubuntu-desktop:
インストール済み:(なし)
候補:1.222.1kde47〜 ppa2 
バージョンテーブル:
 1.254 0 
 500 cdrom:// Kubuntu 12.04 LTS _Precise Pangolin_-リリースi386(20120424)/ exact/main i386パッケージ
 500 http ://archive.ubuntu.com/ubuntu/ precise/main i386パッケージ
 1.222.1kde47〜ppa2 0 
 1001 file:/ media/Main/Linux-Software/Ubuntu/Natty/natty /パッケージ
 1.222.1 0 
 1001ファイル:/ media/Main/Linux-Software/Ubuntu/Natty/natty /パッケージ
 1.222 0 
 1001ファイル:/ media/Main/Linux-Software/Ubuntu/Natty/kubuntu /パッケージ

この出力では、「cdrom」と「正確なメインリポジトリ」の両方にバージョン番号1.254があり、ローカルリポジトリにはバージョン1.222.1kde47〜ppa2、これは下位バージョンです。 sources.listファイルでローカルパッケージの前に配置されますが、ローカルパッケージが優先されます。

apt-getが実際にローカルからインストールしようとしていることを明示的に確認するために、synapticを実行し、これを取得しました。これは、Aptシステムが1.222.1kde47 〜ppa2をインストールする候補バージョンとして。

enter image description here

apt-cache policy kubuntu-desktopも同じことを示しています

 anwar @ edubuntu-lenovo:〜$ apt-cache policy kubuntu-desktop 
 kubuntu-desktop:
インストール済み:(なし)
候補:1.222.1kde47〜 ppa2 
バージョンテーブル:
 1.254 0 
 500 cdrom:// Kubuntu 12.04 LTS _Precise Pangolin_-リリースi386(20120424)/ exact/main i386パッケージ
 500 http ://archive.ubuntu.com/ubuntu/ precise/main i386パッケージ
 1.222.1kde47〜ppa2 0 
 1001 file:/ media/Main/Linux-Software/Ubuntu/Natty/natty /パッケージ
 1.222.1 0 
 1001ファイル:/ media/Main/Linux-Software/Ubuntu/Natty/natty /パッケージ
 1.222 0 
 1001ファイル:/ media/Main/Linux-Software/Ubuntu/Natty/kubuntu /パッケージ

これを解決するために、/etc/apt/preferenceによってSudo rm /etc/apt/preferenceファイルを削除しました。

次に、これを再度実行しましたapt-cache policy kubuntu-desktop。この期待される出力のみが表示されます。

 anwar @ edubuntu-lenovo:〜$ Sudo rm /etc/apt/preferences
anwar@edubuntu-lenovo:~$ Sudo apt-cacheポリシーkubuntu-desktop 
 kubuntu-desktop :
インストール済み:(なし)
候補:1.254 
バージョン表:
 1.254 0 
 500 cdrom:// Kubuntu 12.04 LTS _Precise Pangolin_-リリースi386(20120424)/ precise/main i386パッケージ
 500 http://archive.ubuntu.com/ubuntu/ precise/main i386パッケージ
 1.222.1kde47〜ppa2 0 
 500ファイル:/ media/Main/Linux-Software/Ubuntu/Natty/natty /パッケージ
 1.222.1 0 
 500ファイル:/ media/Main/Linux-Software/Ubuntu/Natty/natty /パッケージ
 1.222 0 
 500 file:/ media/Main/Linux-Software/Ubuntu/Natty/kubuntu /パッケージ

これもまた実行しました。 Sudo apt-get install kubuntu-desktopは、以下の出力を表示します。

 .........不要な詳細が削除されました......... 
 
 0がアップグレードされ、213が新しくインストールされ、0が削除され、150がアップグレードされません。
 0 B/89.6 MBのアーカイブを取得する必要があります。
この操作の後、269 MBの追加ディスク容量が使用されます。
続行しますか[Y/n ]? 
 

完全な結果を確認できます こちら

それから、説明部分についてはかなり確信しています。


参照1:apt_preferenceマニュアル

参照2:特定のバージョンのパッケージをインストールしたままにする方法

51
Anwar