ソフトウェアセンターが、要求されたすべてのアプリをダウンロードせず、ダウンロードが完了したときに1つずつインストールしないのはなぜかと思っていました。または代わりに、ソフトウェアセンターが他のアプリのインストール中にアプリをダウンロードしない理由
それはいい質問です。これは、apt-getなどが使用するのと同じパッケージツールに基づいているためです。これらは、インストールするすべてのパッケージを提供するように設計されており、残りは自動的に行われます。ほとんどの場合、これは非常に優れていますが、ソフトウェアセンターではいくつかの問題が発生します。最初にインストールするパッケージを選択してからボタンをクリックして実際にダウンロードしてインストールするか、アプリケーションをキューに入れてから1つずつダウンロードしてインストールする必要があります。これにより、1つのアプリケーションをインストールする場合、余分なクリックを使用するよりもはるかに優れたユーザーエクスペリエンスが提供されますが、「買い物」をしているときにも面倒です。
これを修正することは可能ですので、将来的には修正されることを期待していますが、既存のツールを再作成または書き換えることを意味するため、優先度が非常に高くなるとは思いません。
詳しく説明します。
パッケージは他のパッケージに依存する場合があります。これらのパッケージが利用できない場合、パッケージをインストールできません。そのため、apt-getなどのツールは、最初に要求するすべてのパッケージと依存するすべてのパッケージなどをダウンロードしてから、すべてをインストールします。そのため、通常は必要なすべてのパッケージを一度に提供し、最初にダウンロードしてからインストールします。
ソフトウェアセンターにアプリケーションをインストールする場合、通常はすぐにダウンロードとインストールを開始する必要があります。ただし、すべてが正常であることを確認するために、一度に実行できるインストールは1つだけです。そのため、アプリケーションをインストールするときに、そのアプリケーションが完全にダウンロードおよびインストールされるまで待ってから、次のダウンロードとインストールを開始する必要があります。
これは、apt-getを使用してパッケージをインストールするのではなく、パッケージを手動でダウンロードし、準備ができたらdpkgを使用してインストールすることで修正できます。それでも2つのパッケージを同時にインストールすることはできませんが、以前に開始したインストールが完了している間に新しいパッケージのダウンロードを開始することができます。場合によっては、かなりの時間を節約できますので、良いアイデアです。しかし、ほとんどの場合、それは本当に重要ではないので、努力は他の場所に集中するほうが良いでしょう。
Sudo apt-get install
で一度にインストールできるパッケージは1つだけですが、1つのコマンドで複数のパッケージをインストールできます。このような:
Sudo apt-get install ubuntu-desktop lubuntu-desktop
これにより、ubuntu-desktop
とlubuntu-desktop
の両方、および必要な依存関係が正しい順序でインストールされます。
また、Sudo apt-get upgrade
でシステムを更新する場合、最初にすべてのソフトウェアをダウンロードしてから、一度に1つのパッケージをインストールします。
理由
一度に複数のパッケージをインストールできないのは、apt-get
特権を同時に使用できるインスタンスは1つだけだからです。これは、apt-get
がsoftware sources
をロックし、他のコマンドによる使用をブロックするためです。
例
@ Rinzwindが言うように、どういうわけか2つの個別のapt-getを開始するとしましょう。理論的には、少なくともソースリストを編集して、新しいソフトウェアを見つけてインストールすることができます。これは、インストールしたプログラムがソースリストを編集し、システムのアップグレードと同時に安全でないリポジトリを追加することにつながる可能性があります。これはセキュリティの問題である可能性があります。
別の例
また、2つの別々のコマンドでソースリストを編集した場合、保存するときに最新バージョンを置き換えます。これは最後に保存したバージョンになります。つまり、古いバージョンを上書き保存するため、中央のコマンドは効果がありません。
Windowsは「公式」(MSI)インストーラーを使用して同様に動作します
Windowsでも、複数のソフトウェアを同時にインストールできます...これに利点があるのか、これがlinux/ubuntuなどで必要なのか...
公式のWindowsインストーラー(MSI)を使用するパッケージは、一度に複数のインスタンスを実行することを拒否します。これは、MSIインストーラーデータベースがsources.list
、dpkg情報ファイルなどに似ているためです。一度に複数のインストーラーがそれらを変更/ロックすることは望ましくありません。
ただし、多くのWindowsパッケージは、Installshield、NSISなどのサードパーティインストーラーを使用します。これらは、MSIデータベースにアクセス/変更する必要がないため、互いに並行して実行されます。同様に、Linux/Ubuntuでは、apt-get
、tar -xzf
、およびPerl/bashインストールスクリプトを同時に実行することを誰も妨げません:)
まず、この答えは、dpkg
およびapt
の経験から得たものであることがわかります。これを判断するために、実際のソフトウェアセンターコードを見たことはありません。
基礎となるソフトウェアの設計の限界です。
Ubuntuがパッケージに使用するdpkg
システムの一部には、複数のdpkg
(/var/lib/dpkg/lock
およびUbuntu Software Centerがフロントエンドである)を防ぐためにapt-get
ファイルを「ロック」する機能が含まれます。それ自体と他の悪い、悪いことを上書きすることから。
ソフトウェアをインストールするとどうなりますか?起こるのは、Sudo apt-get install chromium-browser
を開始することです(例としてChromiumを使用します)。
そして、それが起こるとロックが作動します。インストールするパッケージを複数追加すると、次に何が起こるかは、最初のパッケージが完了するまで待ってから次のapt
コマンドを開始します。
メニューの更新、フォントのインデックス付け、ライブラリの再構成などの一部のアクションは、すべてのパッケージが同時にインストールされている場合に一度だけ実行する必要があります。願わくば、2番目の利点はあまり起こらないはずですが、お互いを除外するパッケージをインストールする場合は、すべてをダウンロードする前にそれを知っています。
一度に多くのパッケージをインストールまたはアップグレードする場合、最後の利点が最も重要です。質問に回答する必要がある場合、インストールの進行中にすべての質問が後に続きます。そのため、5分ごとに別の質問に悩まされる代わりに、作業を続けることができます。
Apt-getの2つのインスタンスが同時に操作できないのは、アプリケーションがシステム操作に重要ないくつかのファイルを読み書きしているためです。 apt-get操作によるファイルの読み取りまたは書き込み中に別の操作が同じ操作を実行していると、不適切な構成やファイルの損傷の問題が発生します。したがって、apt-get操作が発生すると、必要なファイルが「ロック」され、別の操作を同時に実行できなくなります。つまり、ファイルが現在使用中であることを他の操作に通知するフラグを立てます。
ただし、aptが必要とするファイルの同時ダウンロード(または多くのソースからのダウンロード)は、apt-fastコマンドで可能です。
一度に複数のファイルをインストールする簡単な方法は、次の手順に従ってください
ターミナルを開いてタイプ:
CD/home/user/apps
そして、もう一度入力します
Sudo dpkg -i * .deb
インストールが完了するまで待ちます。