npm
(javascriptの場合)や(pythonの場合)などのパッケージマネージャを使用してパッケージをインストールすると、pip
私が作成しているソフトウェアの奇妙な動作や予期しないバグを避けるためにパッケージのバージョンを非常に具体的に指定する方法を学ぶことができます。
私はapt
パッケージマネージャが非常に異なる動物であることを知っていますが、非常に正確でも悪いことはないと思いました。私が間違っている!
数日前までは、次のコマンドが機能していたようです。
「ステップ」で、特定のバージョンのaptパッケージをインストールするスクリプトを作成しました。ステップの例は次のとおりです。
apt-get install git=1:2.20.1-2+deb10u1
しかし今では、次のような結果が得られます。
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Version '1:2.20.1-2+deb10u1' for 'git' was not found
インストールを完了するには、次のバージョンをインストールする必要があります。
apt-get install git=1:2.20.1-2+deb10u3
同じスクリプトを使用して別のコンピュータに同じソフトウェアをインストールする方法があります。そうですか?おそらく:
apt-get install git=1:2.20.1-2*
これを正しい方法で行うのに役立ちます。
よろしくお願いします。
答え1
言及したツールまたはそのツールがアクセスを提供するリポジトリ間には、基本的な哲学的な違いがあります。
アドレス指定されたストレージを介してnpm
次pip
へのアクセスを提供します。みんな配布するパッケージのリリースバージョン。これらのパッケージを使用するプロジェクトの開発者として、プロジェクトに適したバージョンを選択できます。範囲、特定のバージョン、または「最新」かどうかはあなた次第であり、選択の責任はあなたにあります。 。
アドレス指定リポジトリapt
(Debianなどのディストリビューションで使用されます)は、デプロイするパッケージのバージョンの少数(ほとんどの場合は1つ)にのみアクセスを提供します。ディストリビューション開発者はあなたのためにバージョンを選択し、その選択に対して責任を負います。この選択にはいくつかの約束または少なくとも意図があります。特に、ほとんどのバージョンベースのディストリビューションでは、特定のパッケージをインストールすると、ディストリビューションの存続期間中は常に同じ機能が提供されます。
したがって、Debian 10 を使用しているので、適切な注文は次のようになります。
apt install git
git
Debian 10 の存続期間中、同じ機能を持つバージョンがインストールされます。唯一の変更は、重大なバグとセキュリティの問題を解決することです(たとえばgit
、リストされている2つのバージョン間の変更は2つのセキュリティ問題を解決します)。
もちろん、間違いは発生しますが、間違いが発生した場合、ディストリビューションはこれを真剣に受け入れます。特定のバージョンのディストリビューションでは、パッケージのアップグレードによって引き起こされる回帰を説明するバグを報告すると、すぐに解決されると期待されます。 (与えられたパッケージが安定リリースからアップグレードされるという事実は、誰かがドライバーを持っていることを意味します。)
(本当にすべての責任を持ちたい場合は、次のものを使用できます。snapshot.debian.org特定のバージョンのパッケージをインストールします。 )