ソフトウェアセンターが要求されたすべてのアプリをダウンロードせず、ダウンロードが完了したときに1つずつインストールしないのはなぜだろうと思っていました。または代わりに、ソフトウェアセンターが他のアプリのインストール中にアプリをダウンロードしない理由
sudo apt-get install
は、必要な数のパッケージをインストールできます。パッケージ名を知る必要があります。
ソフトウェアセンターが要求されたすべてのアプリをダウンロードせず、ダウンロードが完了したときに1つずつインストールしないのはなぜだろうと思っていました。または代わりに、ソフトウェアセンターが他のアプリのインストール中にアプリをダウンロードしない理由
sudo apt-get install
は、必要な数のパッケージをインストールできます。パッケージ名を知る必要があります。
回答:
それはいい質問です。これは、apt-getなどが使用するのと同じパッケージツールに基づいているためです。これらは、インストールされるすべてのパッケージを提供するように設計されており、残りは自動的に行われます。ほとんどの場合、これは非常に優れていますが、ソフトウェアセンターではいくつかの問題が発生します。最初にインストールするパッケージを選択してからボタンをクリックして実際にダウンロードしてインストールするか、アプリケーションをキューに入れてから1つずつダウンロードしてインストールする必要があります。これにより、1つのアプリケーションをインストールする場合、余分なクリックを使用するよりもはるかに優れたユーザーエクスペリエンスが提供されますが、「買い物」をしているときにも面倒です。
これを修正することは可能ですので、将来的には修正されることを期待していますが、既存のツールを再作成または書き換えることを意味するため、優先度が非常に高いとは思いません。
詳しく説明します。
パッケージは他のパッケージに依存する場合があります。これらのパッケージが利用できない場合、パッケージをインストールできません。そのため、apt-getなどのツールは、最初に要求するすべてのパッケージと依存するすべてのパッケージなどをダウンロードしてから、すべてをインストールします。したがって、通常は必要なすべてのパッケージを一度に提供し、最初にダウンロードしてからインストールします。
ソフトウェアセンターにアプリケーションをインストールする場合、通常はすぐにダウンロードとインストールを開始する必要があります。ただし、すべてが正常であることを確認するために、一度に実行できるインストールは1つだけです。そのため、アプリケーションをインストールするときに、そのアプリケーションが完全にダウンロードおよびインストールされるまで待ってから、次のダウンロードとインストールを開始する必要があります。
これは、apt-getを使用してパッケージをインストールするのではなく、代わりにパッケージを手動でダウンロードし、準備ができたらdpkgを使用してインストールすることで修正できます。それでも2つのパッケージを同時にインストールすることはできませんが、以前に開始したインストールが完了している間に新しいパッケージのダウンロードを開始することができます。場合によっては、かなりの時間を節約できるので、良いアイデアです。しかし、ほとんどの場合、それは本当に重要ではないので、努力は他の場所によりよく焦点を合わせられます。
一度にインストールできるパッケージは1つだけですがsudo apt-get install
、1つのコマンドで複数のパッケージをインストールできます。このような:
sudo apt-get install ubuntu-desktop lubuntu-desktop
これは、両方がインストールされますubuntu-desktop
し、lubuntu-desktop
そしてどのような正しい順序で、彼らは必要依存関係します。
また、でシステムを更新する場合sudo apt-get upgrade
、最初にすべてのソフトウェアをダウンロードしてから、一度に1つのパッケージをインストールします。
一度に複数のパッケージをインストールできない理由は、1つのインスタンスのみapt-get
が同時に特権を使用できるためです。これは、を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
、a tar -xzf
、perl / bashインストールスクリプトを同時に実行することを止めません:)
sudo
、同時に、それは管理をパッケージ化するために来るとき、一つだけ、そのようなアプリがある時点でパッケージをインストールまたは削除することができ、実行されているので、apt
取得するロック上sources.list
、したがってもしあれば他のパッケージ管理アプリを実行しようとすると、そのファイルがロックされないため、実行されません。
まず、この答えは私が私の経験から集められたものであることが知られてみましょうdpkg
とapt
。これを判断するために、実際のソフトウェアセンターコードを見たことはありません。
基礎となるソフトウェアの設計の限界です。
dpkg
Ubuntuがパッケージに使用するシステムの一部には、/var/lib/dpkg/lock
ファイルを「ロック」して、複数dpkg
(apt-get
およびUbuntu Software Centerがフロントエンド)自体やその他の悪い悪事を上書きしないようにする機能が含まれています。
ソフトウェアをインストールするとどうなりますか?何が起こるかが始まりますsudo apt-get install chromium-browser
(例としてChromiumを使用します)。
そして、それが起こると、ロックが作動します。インストールするパッケージを複数追加すると、次は、最初のパッケージが完了するまで待ってから次のapt
コマンドを開始します。
メニューの更新、フォントのインデックス付け、ライブラリの再構成などの一部のアクションは、すべてのパッケージが同時にインストールされている場合に一度だけ実行する必要があります。願わくば、2番目の利点はあまり起こらないはずですが、お互いを除外するパッケージをインストールしたい場合は、すべてをダウンロードする前にそれを知っています。
最後の利点は、多くのパッケージを一度にインストールまたはアップグレードする場合に最も重要です。質問に回答する必要がある場合、インストールの進行中にすべての質問が後に続きます。そのため、5分ごとに別の質問に悩まされる代わりに、作業を続けることができます。
apt-getの2つのインスタンスが同時に動作できないのは、アプリケーションがシステムの動作に重要ないくつかのファイルを読み書きしているためです。apt-get操作によるファイルの読み取りまたは書き込み中に別の操作が同じ操作を実行していると、不適切な構成やファイルの損傷の問題が発生します。したがって、apt-get操作が発生すると、必要なファイルが「ロック」され、別の操作を同時に実行できなくなります。つまり、ファイルが現在使用されていることを他の操作に通知するフラグを立てます。
ただし、aptに必要なファイルの同時ダウンロード(または多くのソースからのダウンロード)は、apt-fastコマンドを使用して可能です。
ターミナル1などにインストールしている間に、パッケージをダウンロードします
sudo apt-get install vlc
次に、別の端末2に別のパッケージをダウンロードします
sudo apt-get download openssh-server
apt-getで使用可能な他のオプションを確認するには、そのmanシンプルタイプを参照してください
apt-get <press tab on your keyboard>