web-dev-qa-db-ja.com

「apt install」と「dpkg -i」の違いを理解する

私はUbuntuの初心者で、パッケージ管理のしくみを理解しようとしていますが、いくつか質問があります。これは、自分のマシンにCUDAをインストールしようとしたときに発生したため、CUDAを例として使用しますが、これについて一般的な用語を知りたいと思っています。

そこで、チュートリアルに従って、cuda-repo-ubuntu1804_10.0.130-1_AMD64.debというファイルをダウンロードしました。次に、Sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_AMD64.debを実行しました。最後に、Sudo apt install cudaを実行しました。

最初の質問は、dpkg -iファイルで.debを実行することと、パッケージ名でapt installを実行することの違いは何ですか?私が読んだことから、aptはその下でdpkgを使用しているため、この場合に両方が使用される理由について混乱しています。

私の2番目の質問は、「aptにcudaの意味をどのように伝えているのですか?」ローカルファイルでdpkgを実行してこのファイルをインストールする方法を理解していますが、cudaという名前がこの.debファイルにどのようにリンクされているのかわかりません。

私の3番目の質問は、このパッケージの新しいバージョンがあり、cuda-repo-ubuntu1804_10.1_AMD64.debというファイルに入っているとしましょう。 Sudo apt upgrade cudaを実行するとどうなりますか?これにより、cuda-repo-ubuntu1804_10.0.130-1_AMD64.debのすべてのファイルが削除され、cuda-repo-ubuntu1804_10.1_AMD64.debがインストールされますか?

ありがとうございました。

3
Karnivaurus

dpkg -i <deb_file>は、ローカルに保存されたパッケージをインストールします。

apt install cudaは、UbuntuリポジトリおよびPPAがインストールされている場合はPPAからcudaパッケージをダウンロードしてインストールします。

Sudo apt upgradeを実行すると、インストールされているパッケージの新しいバージョンがないかリポジトリがチェックされ、それらがアップグレードされます。

cuda-repo-ubuntu1804_10.0.130-1_AMD64.debがアップグレードをチェックするリポジトリを設定しているようです。 /etc/apt/sources.list.dを調べて、cudaリポジトリファイルがあるかどうかを確認できます。

したがって、apt upgradeを実行し、そのリポジトリに新しいバージョンがある場合は、アップグレードされます。

cudaの名前は、そのリポジトリから取得されます。

2
Pilot6

私の最初の質問は:.debファイルでdpkg -iを実行することとパッケージ名でapt installを実行することの違いは何ですか?私が読んだことから、aptは下でdpkgを使用しているので、なぜこの場合に両方が使用されるのか混乱しています。

dpkgはローカルファイルでのみ使用できますが、apt-getおよび最近ではaptはエンドユーザーが使用するために設計されたツールであり、ローカルファイルとローカルファイルの両方で使用できます。リポジトリベースのファイル。それらはdpkgの上に構築されています。つまり、それを呼び出して、何でもインストールするために使用します。彼らは、間違いなく、よりユーザーフレンドリーです。ローカルの.debファイルでaptまたはdpkgを呼び出すことに違いはありません。ただし、リモートファイルで使用できるのはaptapt-getのみです。つまり、リモートファイルは自動的にダウンロードおよびインストールされます。よくわかりませんが、aptはローカルの.debファイルとの依存関係も処理します。それは確かにリポジトリベースのパッケージで行います。

私の2番目の質問は次のとおりです。私のガチにcudaの意味を何が伝えているのですか?ローカルファイルでdpkgを実行すると、このファイルがどのようにインストールされるかは理解していますが、cudaという名前がこの.debファイルにどのようにリンクされているかは理解できません。

cudaの意味をaptに伝えているのは、ソースファイルです。私が知ることができることから、cudaはデフォルトのリポジトリにありません。これはおそらく独自のソフトウェアであるためです。そのため、そのまま[Sudo apt install cuda]を試しても機能しません。検索してこの名前のものが見つからないためです。

何が起こるかというと、一部のプログラムは、.debインストールファイルの一部として、ソースリストに自分自身を追加します。 Google chromeは似たようなことを行います。googlechrome .debファイル(およびcudaプログラム)をダウンロードすると、インストールの一部として次の行が追加されます/etc/apt/sources.listに、または/etc/apt/sources.list.d/にファイルを保存します。そのため、Sudo apt updateを実行すると、リンクに移動してソースがダウンロードされます。このソースには、パッケージの言及があります。 cudaと呼ばれ、インストールしてSudo apt upgradeとして自動的にアップグレードできます。これは、PPAを追加するのに似ています。他の一部のプログラムは、bashインストールスクリプトの一部としてソースに自分自身を追加します。これを手動で追加することをお勧めします。これを行う最善の理由は、定期的な更新の一部として自動化されるため、更新が簡単であることです。

私の3番目の質問は次のとおりです。このパッケージの新しいバージョンがあるとします。これはcuda-repo-ubuntu1804_10.1_AMD64.debというファイルに入っています。 Sudo apt upgrade cudaを実行するとどうなりますか?これはcuda-repo-ubuntu1804_10.0.130-1_AMD64.debのすべてのファイルを削除してcuda-repo-ubuntu1804_10.1_AMD64.debをインストールしますか?

あなたはおそらくこれについてより信頼できる回答を得るためにcudaフォーラムの周りに尋ねるべきであり、そして新しいバージョンに更新するための適切なプロセスとは何か。 Google Chromeの例を使用すると、自動的に新しいバージョンに更新されるため、古いバージョンは削除され、新しいバージョンのみが保持されます。しかし、これはこのcudaパッケージに非常に固有であり、その方法は彼らは物事を扱うことにしました。

おそらく、依存関係と独自のパッケージにバンドルできないフリーソフトウェアのためだけにソースに追加するcudaパッケージを使用している可能性があるため、新しい.debファイルをダウンロードしてインストールする必要があります。多分彼らはすべてを更新するためにそれを使用し、定期的にSudo apt update && Sudo apt upgradeを実行すると自動的に新しいバージョンをダウンロードしてインストールします。繰り返しますが、このパッケージに非常に固有であり、あなたは彼らのサポートチャンネルに尋ねるべきです。

0
Podesta