web-dev-qa-db-ja.com

独自のリポジトリとapt-getを使用したパッケージの固定

Ubuntuリポジトリが現在保持しているものよりも新しいバージョンのパッケージを提供できるように、独自のリポジトリを作成しました。インストール時にバージョンを指定する必要があることを除いて、すべてが正常に機能します。

Sudo apt-get install package=1.2.1

バージョンを指定しない場合は、Ubuntuのリポジトリからインストールされます。

リポジトリをsources.listの上部に配置しようとしましたが、違いはありません。

だから、常にリポジトリを優先する.debパッケージをビルドするときにフラグがあるかどうか疑問に思っていますか?または実際のリポジトリのフラグ?優先度を設定するためにユーザーに/etc/apt/preferencesを変更してもらいたくない、またはapt-get -t repoを使用したくない。

与えられたTorブラウザをインストールしようとしましたこの手順は、カスタムから最新バージョンをインストールしますレポ。私は彼らが何をしているのか分かりませんが、彼らがリストしたステップでのみ機能します。

3
Pete Darrow

解決策1:(Debian Epochを使用)

パッケージのバージョンの前に1:を付けると、1:1.2.1になり、常により高いバージョンとして表示されます。これは、独自に変更したパッケージをビルドし、Ubuntuアップグレードに置き換えたくない場合に非常に便利です。

2つのバージョン番号を比較する場合、最初にそれぞれのエポックが比較され、次にエポックが等しい場合はアップストリームバージョン、次にアップストリームバージョンも等しい場合はデビアンリビジョンが比較されます。エポックは数値的に比較されます。

出典: https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version

ソリューション2(固定を使用)

特定のパッケージのAptPreferencesを設定するには、/etc/apt/preferences.d/に新しいファイルを追加します。

Sudo gedit /etc/apt/preferences.d/my-package-pin

そのファイルに次の行を追加します。

Package: my_package
Pin: release o=Ubuntu
Pin-Priority: -10

Ubuntuリポジトリのバージョンが、ローカルリポジトリによって提供されるバージョンに置き換わることを防ぎます。

パッケージピンバージョンが実行されているかどうかを確認するには:

Sudo apt-cache policy my_package

アクセス https://help.ubuntu.com/community/PinningHowto

2
Sylvain Pineau