web-dev-qa-db-fra.com

Pourquoi le centre de logiciel n'autorise-t-il pas plusieurs téléchargements?

Je me demandais pourquoi le centre de logiciel ne télécharge pas toutes les applications demandées et ne les installe pas une par une à la fin du téléchargement. Ou bien pourquoi le centre de logiciel ne télécharge pas d'application pendant que l'autre est en train d'installer

29
JesusLives ii

Voilà une bonne question. C'est parce qu'il est basé sur les mêmes outils de paquet qu'apt-get et ceux utilisés par d'autres. Celles-ci sont conçues de manière à ce que vous fournissiez tous les packages à installer, puis le reste est automatique. C'est très bien dans la plupart des cas, mais pour le centre logiciel, cela pose quelques problèmes. Vous devez d'abord sélectionner les packages que vous souhaitez installer, puis cliquer sur un bouton pour les télécharger et les installer, ou vous devez mettre les applications en file d'attente, puis télécharger et installer un par un. Cela offre une expérience utilisateur bien meilleure si vous installez une application plutôt que de devoir utiliser ces clics supplémentaires, mais cela est également gênant lorsque vous effectuez des "achats".

Il est possible de résoudre ce problème. Je pense donc que ce problème sera résolu à l'avenir, mais cela signifie qu'il faut recréer ou réécrire les outils existants. Je ne pense donc pas que ce soit une priorité absolue.

Laissez-moi élaborer:

Un paquet peut dépendre d'autres paquets. Si ces packages ne sont pas disponibles, ils ne peuvent pas être installés. Donc, des outils comme apt-get vont d'abord télécharger tous les paquets que vous demandez et tous les paquets dont ils dépendent, etc., puis les installer tous. Ainsi, vous fourniriez normalement tous les paquets que vous vouliez en une fois, ils seraient d'abord téléchargés puis installés.

Lorsque vous choisissez d'installer une application dans le centre logiciel, vous souhaiterez généralement qu'elle commence à télécharger et à installer immédiatement. Mais afin de s’assurer que tout est en ordre, une seule installation peut être effectuée à la fois. C'est pourquoi, lorsque vous installez une application, vous devez attendre que cette application soit complètement téléchargée et installée avant de pouvoir commencer le téléchargement et l'installation suivants.

Cela pourrait être corrigé en n'utilisant pas apt-get pour installer les paquetages, mais en les téléchargeant manuellement puis en utilisant dpkg pour les installer une fois qu'ils seraient prêts. Vous ne pourrez toujours pas installer deux packages simultanément, mais vous pourrez commencer à télécharger de nouveaux packages pendant la fin des installations précédemment lancées. Dans certains cas, cela ferait gagner beaucoup de temps, alors c'est une bonne idée. Mais dans la plupart des cas, cela n'aurait pas vraiment d'importance, l'effort est donc mieux ciblé ailleurs.

29
Jo-Erlend Schinstad

vous ne pouvez installer qu'un seul package à la fois avec Sudo apt-get install, mais vous pouvez installer plusieurs packages à l'aide d'une seule commande. Comme ça:

  • Sudo apt-get install ubuntu-desktop lubuntu-desktop

Cela installera à la fois ubuntu-desktop et lubuntu-desktop et toutes les dépendances dont ils ont besoin, dans le bon ordre.

De même, lorsque vous mettez à jour votre système avec Sudo apt-get upgrade, vous devez d'abord télécharger tous les logiciels, puis installer un package à la fois.

La raison
Pourquoi vous ne pouvez pas installer plusieurs packages à la fois, c'est qu'une seule instance peut utiliser les privilèges apt-get en même temps. Ceci est dû au fait que apt-get verrouille le software sources et empêche toute autre commande de les utiliser.

n exemple
Supposons que vous démarriez d'une manière ou d'une autre deux apt-get distincts, comme le dit @Rinzwind. Vous pouvez donc théoriquement au moins modifier la liste des sources en même temps que vous l'utilisez pour rechercher et installer un nouveau logiciel. Cela pourrait conduire à ce que le programme que vous avez installé modifie la liste des sources et ajoute un référentiel non sécurisé en même temps que vous mettez à niveau votre système. Cela pourrait être un problème de sécurité.

n autre exemple
De même, si vous modifiez la liste des sources à l'aide de 2 commandes distinctes, vous devez remplacer la version la plus récente lors de la sauvegarde, qui sera celle qui a été sauvegardée en dernier. Ce qui signifie que la commande au milieu n'aurait aucun effet puisque vous économiseriez sur une ancienne version.


Windows se comporte de manière similaire en utilisant le programme d'installation "officiel" (MSI)

Même sous Windows, plusieurs logiciels peuvent être installés simultanément ... y a-t-il un avantage à cela ou pourquoi est-ce une nécessité dans linux/ubuntu, etc ...

Les packages qui utilisent l'installateur officiel de Windows (MSI) refuseront d'exécuter plus d'une instance à la fois. En effet, la base de données du programme d’installation MSI est similaire à sources.list, aux fichiers d’informations dpkg, etc. - vous ne souhaitez pas qu’un seul programme d’installation les modifie/les verrouille à la fois.

Cependant, de nombreux packages Windows utilisent des programmes d’installation tiers tels que Installshield, NSIS, etc., qui s’exécutent côte à côte car ils n’ont pas besoin d’accéder à la base de données MSI ni de la modifier. De même, sous Linux/Ubuntu, personne ne vous empêche d'exécuter simultanément un apt-get, un tar -xzf et un script d'installation Perl/bash :)

10
Alvar

Premièrement, signalons que cette réponse provient de ce que j'ai tiré de mes expériences avec dpkg et apt. Je n'ai pas examiné le code du centre logiciel actuel pour le déterminer.

C'est une limite de la conception du logiciel sous-jacent.

Une partie du système dpkg utilisé par Ubuntu pour les paquets inclut une fonctionnalité qui "verrouille" le fichier /var/lib/dpkg/lock afin d'empêcher plusieurs dpkg (apt-get et Ubuntu Software Center sont frontaux) d'écraser lui-même et d'autres choses néfastes.

Que se passe-t-il lorsque vous installez un logiciel? Que se passe-t-il commence Sudo apt-get install chromium-browser (pour utiliser Chromium à titre d'exemple).

Et lorsque cela se produit, un verrou se déclenche. Une fois que vous avez ajouté plusieurs packages à installer, il attend ensuite que le premier soit terminé avant de lancer la prochaine commande apt.

7
jrg

Certaines actions, telles que l'actualisation du menu, l'indexation des polices et la reconfiguration des bibliothèques ne doivent être exécutées qu'une seule fois si tous les packages sont installés en même temps. J'espère qu'un deuxième avantage ne devrait pas arriver souvent, mais si vous voulez installer des paquetages qui s'excluent mutuellement, vous le savez avant de tous les télécharger.

Un dernier avantage est surtout important lorsque vous installez ou mettez à niveau plusieurs paquets à la fois: si des questions doivent être résolues, elles se succéderont au cours de la progression de l’installation. Ainsi, vous pouvez continuer à travailler au lieu d’être mis à jour toutes les 5 minutes par une question différente.

4
johanvdw

La raison pour laquelle deux instances d’apt-get ne peuvent pas fonctionner simultanément est que l’application lit/écrit plusieurs fichiers essentiels au fonctionnement du système. La lecture ou l'écriture d'un fichier à l'aide d'une opération apt-get, alors qu'une autre personne effectue les mêmes opérations entraîne des problèmes de mauvaise configuration et/ou d'endommagement des fichiers. Ainsi, lorsqu'une opération apt-get se produit, elle "verrouille" les fichiers dont elle a besoin afin qu'aucune autre opération ne puisse être exécutée simultanément, a.k.a., elle déclenche un indicateur qui indique aux autres opérations que les fichiers sont en cours d'utilisation.

Cependant, des téléchargements simultanés des fichiers nécessaires à apt (ou plutôt à partir de plusieurs sources) sont possibles avec la commande apt-fast

https://github.com/ilikenwf/apt-fast

2
The Messie

moyen simple d’installer plusieurs fichiers à la fois, suivez ces étapes

  1. copier tout le dossier d'installation, par exemple:/home/user/apps
  2. Terminal ouvert et type:

    CD/home/utilisateur/apps

  3. et puis tapez à nouveau

    Sudo dpkg -i * .deb

attendez jusqu'à la fin de l'installation.

0
hardianto