私は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
がインストールされますか?
ありがとうございました。
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
の名前は、そのリポジトリから取得されます。
私の最初の質問は:.debファイルでdpkg -iを実行することとパッケージ名でapt installを実行することの違いは何ですか?私が読んだことから、aptは下でdpkgを使用しているので、なぜこの場合に両方が使用されるのか混乱しています。
dpkg
はローカルファイルでのみ使用できますが、apt-get
および最近ではapt
はエンドユーザーが使用するために設計されたツールであり、ローカルファイルとローカルファイルの両方で使用できます。リポジトリベースのファイル。それらはdpkg
の上に構築されています。つまり、それを呼び出して、何でもインストールするために使用します。彼らは、間違いなく、よりユーザーフレンドリーです。ローカルの.debファイルでapt
またはdpkg
を呼び出すことに違いはありません。ただし、リモートファイルで使用できるのはapt
とapt-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
を実行すると自動的に新しいバージョンをダウンロードしてインストールします。繰り返しますが、このパッケージに非常に固有であり、あなたは彼らのサポートチャンネルに尋ねるべきです。