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


40

概要

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


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

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

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

そして、本当の問題は、ということであるaptsynaptic、常にパッケージがローカルリポジトリに既に利用されているかどうかを検査せずに、前に記載されているソースからパッケージをダウンロードしてください。したがって、ローカルソースを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インターネットからダウンロードしようとします。しかし、ローカルリポジトリを一番上に配置すると、ローカルリポジトリからインストールされます。

だから、私の質問は -> 'パッケージがローカルリポジトリで利用可能なときに、リポジトリリストの一番上に明示的に「ローカルソース」を置くことなく、ローカルリポジトリを使用することを強制することは可能ですか? '

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

  
ノーチラスワイプ:
  インストール済み:(なし)
  候補: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

パッケージリストを読み込んでいます...完了
依存ツリーの構築       
状態情報を読み込んでいます...完了
次の新しいパッケージがインストールされます。
  ノーチラスワイプ
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のアーカイブを取得する必要があります」と表示されます。


ローカルリポジトリ内のパッケージは、公式パッケージよりも新しい/同等でしたか?
タンブルウィード

はい、もちろん、apt-getコマンドで検証しました。「0 kbをダウンロードする必要があります」と表示されます。
アンワール

あなたはそれを検証したいapt-cache policy
タンブルウィード

前のコメントは間違いでした。私は別の質問でそれを与えていると思った(ローカルリポジトリからソフトウェアセンターでソフトウェアをインストールすることに関して)。はい、私はすでにそれを検証しapt-cache policy、ローカルリポジトリの優先度が高いことを確認しました。しかし、まだapt-getインターネットからインストールしようとしています。私は、sources.listファイルを使用せずにそれは単に不可能だと思っています。
アンワール

apt-cache policyバージョンが同じであることを示すかどうかを尋ねていました
タンブルウィード

回答:


53

短い答え:

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

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

パッケージ: *  
ピン:原点 ""  
ピン優先度:1001  

これはバージョンを制御しませんが、両方のパッケージのバージョンが同じ場合はソース設定を制御します。ローカルリポジトリで同じパッケージバージョンに最高の優先度を割り当てる必要がある場合は、/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_-Release 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正確なユニバースメインマルチバース制限#software-propertiesにより追加

#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 precise main
#deb-src http://extras.ubuntu.com/ubuntu precise main

はい、「apt_preference」は、同じバージョンのパッケージのインスタンスを選択することとは関係ありません。ここでのポイントは、ローカルリポジトリに最高の優先度を割り当てることにより、ローカルリポジトリから/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/preferencesapt-getそれは単一packgeの多くのバージョンがある場合は選択する必要がありますどのバージョン、決定するために使用しますが。(この例でcompiz-fusion-plugins-extraは、いくつかのバージョンがあります。

パッケージ: *  
ピン:原点 ""  
ピン優先度:1001  

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

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

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

deb http://archive.ubuntu.com/ubuntu正確なメインユニバース制限されたマルチバース
deb-src http://archive.ubuntu.com/ubuntu正確なユニバースメインマルチバース制限#software-propertiesにより追加
deb http://security.ubuntu.com/ubuntu/ precise-security universe main multiverse limited
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正確なパートナー
#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ファイル:/ media / Main / Linux-Software / Ubuntu / Oneiric /パッケージ
     0.9.4-0ubuntu3 0
       1001ファイル:/ media / Main / Linux-Software / Ubuntu / Natty / natty /パッケージ

ここで、候補バージョンは0.9.5.94-0ubuntu1、(ローカルリポジトリにある)ではなく0.9.7.0~bzr9-0ubuntu6 0、excisesリポジトリにある。正確なものが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
それらを削除するには、「apt-get autoremove」を使用します。
次の追加パッケージがインストールされます。
  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-xorg-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-fusion-plugins-extra!!! と依存関係(Oneiricのものと一致する)を解決するために、すでにインストールされている正確なcompizパッケージをダウングレードしようとしています。

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

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

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

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

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

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

/etc/apt/preferencesファイルのユースケースの例:

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

パッケージ: *
ピン:リリースo = linuxmint
ピン優先順位:700

パッケージ: *
ピン:origin packages.linuxmint.com
ピン優先順位:700

パッケージ: *
ピン:リリースo = Ubuntu
ピン優先順位:500

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


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

kubuntu-desktop Ubuntuにパッケージをインストールして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:依存:language-selector-kdeがインストールされません
                   推奨: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)/ precise / main i386パッケージ
        500 http://archive.ubuntu.com/ubuntu/ precise / main i386パッケージ
     1.222.1kde47〜ppa2 0
       1001ファイル:/ 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 /パッケージ

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

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

ここに画像の説明を入力してください

また、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)/ precise / main i386パッケージ
        500 http://archive.ubuntu.com/ubuntu/ precise / main i386パッケージ
     1.222.1kde47〜ppa2 0
       1001ファイル:/ 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 policy 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ファイル:/ 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:パッケージの特定のバージョンをインストールしたままにする方法


1
「同じバージョンの複数のインスタンスが存在する場合」の部分の+1で、動作を説明します。しかし、週の終わりまで待つだけです。誰かがもっと良い説明をしているかもしれません。:)
サヴァスラデビッチ

ローカルリポジトリを使用して例を追加する必要がありますか?
アンワール

イエス...私はあなたのよく説明された答えに感謝を意味しますが、これはずっとずっと簡単であるべきです。apt-add-repositoryを実行したときに、いったいなぜ優先順位を割り当てることができないのですか??
アダムプロッチャー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.