Dlaczego centrum oprogramowania nie pozwala na wielokrotne pobieranie?

29

Zastanawiałem się, dlaczego centrum oprogramowania nie pobiera wszystkich żądanych aplikacji i instaluje jeden po drugim, gdy kończą pobieranie. Lub zamiast tego, dlaczego centrum oprogramowania nie pobiera aplikacji, gdy druga się instaluje

JesusLives ii
źródło
prawdopodobnie po to, by zaoszczędzić przepustowość ...
drnessie
1
AFAIK sudo apt-get installmoże zainstalować tyle pakietów, ile chcesz. Musisz znać nazwę pakietu.
sagarchalizuj
@drnessie nie to nie jest! jeśli instalujesz oba w tym samym czasie za pomocą apt-get, pobierzesz je jednocześnie, a następnie zainstalujesz tylko jeden naraz.
Alvar
@Alvar Ok. Zrobiłem to w Linux Mint. Ale wypróbowanie tego samego w Ubuntu nie działa. Jak zrobić?
MycrofD
@MycrofD A co próbujesz?
Alvar,

Odpowiedzi:

29

To jest dobre pytanie. Jest tak, ponieważ jest oparty na tych samych narzędziach pakietowych, których używają apt-get i inni. Zostały one zaprojektowane w taki sposób, że oczekuje się dostarczenia wszystkich pakietów do zainstalowania, a reszta nastąpi automatycznie. Jest to bardzo dobre w większości przypadków, ale w przypadku Software Center powoduje pewne problemy. Trzeba albo najpierw wybrać pakiety, które chcesz zainstalować, a następnie kliknąć przycisk, aby je pobrać i zainstalować, lub musisz ustawiać w kolejce aplikacje, a następnie pobierać i instalować jeden po drugim. Zapewnia to znacznie lepszą obsługę, jeśli instalujesz jedną aplikację, niż konieczność korzystania z tych dodatkowych kliknięć, ale jest również denerwujące, gdy „robisz zakupy”.

Można to naprawić, więc spodziewam się, że w przyszłości zostanie to naprawione, ale oznacza to odtworzenie lub przepisanie istniejących narzędzi, więc nie sądzę, aby miało to bardzo wysoki priorytet.

Pozwól mi rozwinąć:

Pakiet może zależeć od innych pakietów. Jeśli te pakiety nie są dostępne, pakiet nie może zostać zainstalowany. Tak więc narzędzia takie jak apt-get najpierw pobiorą wszystkie pakiety, o które prosisz, i wszystkie pakiety, na których polegają itp., A następnie zainstalują je wszystkie. Więc zwykle dostarczasz wszystkie pakiety, które chciałeś za jednym razem, a najpierw są one pobierane, a następnie instalowane.

Gdy zdecydujesz się zainstalować aplikację w centrum oprogramowania, zazwyczaj chcesz, aby natychmiast zaczęła pobierać i instalować. Aby jednak upewnić się, że wszystko jest w porządku, w danym momencie można wykonać tylko jedną instalację. Dlatego podczas instalowania aplikacji musisz poczekać, aż aplikacja zostanie całkowicie pobrana i zainstalowana, zanim rozpocznie się kolejne pobieranie i instalacja.

Można to naprawić, nie używając apt-get do zainstalowania pakietów, ale zamiast tego pobierając pakiety ręcznie, a następnie używając dpkg, aby je zainstalować, gdy będą gotowe. Nadal nie będziesz w stanie zainstalować dwóch pakietów jednocześnie, ale będziesz mógł rozpocząć pobieranie nowych pakietów, gdy poprzednio rozpoczęte instalacje się kończą. W niektórych przypadkach zaoszczędziłoby to sporo czasu, więc jest to dobry pomysł. Ale w większości przypadków nie ma to większego znaczenia, więc wysiłek jest lepiej skoncentrowany gdzie indziej.

Jo-Erlend Schinstad
źródło
W rzeczywistości apt-get może pobierać pakiety bez ich instalowania, chociaż nie jestem w 100% pewien, że działa z zablokowaną bazą danych ...
JanC
jednoczesne pobieranie i być może instalacja działa w Linux Mint. Nie ma go w Ubuntu.
MycrofD
2
@MycrofD: Naprawdę nie wiem, jaki był sens tego komentarza. Na Ubuntu możesz pobierać wiele pakietów jednocześnie. Po prostu nie możesz tego zrobić za pomocą apt-get i opartych na nim narzędzi. To oczywiście bez względu na to, o której dystrybucji mówisz.
Jo-Erlend Schinstad
10

możesz zainstalować tylko jeden pakiet naraz sudo apt-get install, ale możesz zainstalować kilka pakietów za pomocą jednego polecenia. Lubię to:

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

Spowoduje to zainstalowanie zarówno ubuntu-desktopi lubuntu-desktopwszelkich wymaganych zależności we właściwej kolejności.

Również podczas aktualizacji systemu sudo apt-get upgradenajpierw pobierasz całe oprogramowanie, a następnie instalujesz jeden pakiet naraz.

Powodem,
dla którego nie można zainstalować kilku pakietów jednocześnie, jest to, że tylko jedna instancja może korzystać z apt-getuprawnień w tym samym czasie. Wynika to z faktu, że apt-getblokuje software sourcesi blokuje korzystanie z nich przez dowolne inne polecenie.

Przykład
Załóżmy, że jakoś uruchamiasz 2 osobne apt-get, jak mówi @Rinzwind, to teoretycznie możesz przynajmniej edytować listę źródeł w tym samym czasie, gdy używasz jej do znajdowania i instalowania nowego oprogramowania. Może to prowadzić do tego, że zainstalowany program edytuje listę źródeł i dodaje niebezpieczne repozytorium w tym samym czasie, gdy aktualizujesz system. Może to być problem z bezpieczeństwem.

Kolejny przykład
Także jeśli edytujesz listę źródeł za pomocą 2 oddzielnych poleceń, wtedy podczas zapisywania zastąpisz najnowszą wersję, która będzie tą, którą zapisano jako ostatnią. Co oznacza, że ​​polecenie na środku nie miałoby żadnego efektu, ponieważ zapisałeś starszą wersję.


Windows zachowuje się podobnie, używając instalatora „oficjalnego” (MSI)

Nawet w systemie Windows wiele programów może być instalowanych jednocześnie ... czy jest to zaletą lub dlaczego jest to konieczne w Linuksie / Ubuntu itp.

Pakiety korzystające z oficjalnego instalatora Windows (MSI) ZOSTANĄ ODRZUCONE, aby uruchamiać więcej niż jedną instancję na raz. Jest tak, ponieważ baza danych instalatora MSI jest podobna do sources.listplików informacyjnych dpkg itp. - nie chcesz, aby więcej niż jeden instalator modyfikował / blokował je jednocześnie.

Jednak wiele pakietów Windows korzysta z zewnętrznych instalatorów, takich jak Installshield, NSIS itp., Które będą działać obok siebie, ponieważ nie muszą uzyskiwać dostępu / modyfikować bazy danych MSI. Podobnie w systemie Linux / Ubuntu nikt nie powstrzymuje Cię przed uruchomieniem skryptu instalacyjnego A apt-get, A tar -xzfi Perl / Bash jednocześnie :)

Alvar
źródło
1
Jeśli nie jestem zły, wiele aplikacji można uruchomić przy użyciu sudow tym samym czasie, ale jeśli chodzi o pakiet zarządzania, tylko jedna taka aplikacja może zainstalować lub usuń pakiety w danym momencie, ponieważ działa aptdostaje blokadę na sources.listi stąd ewentualne próbuje się uruchomić inną aplikację zarządzającą pakietami, nie zostanie zablokowana na tym pliku, a zatem nie będzie działać.
Kushal
@Kush to apt-get, z którego tylko jeden może korzystać, przepraszam, minęło dużo czasu, odkąd dostałem ten błąd.
Alvar
@Rinzwind to masz na myśli? :)
Alvar
2
@Alvar: edytowane w celu uwzględnienia podobnego zachowania systemu Windows na dole: nie chcę, aby ludzie otrzymywali błędne informacje, że system Windows jest w jakiś sposób „lepszy”;)
ish
1
@Alvar ... Bardzo dziękuję. !! To oczyściło moje podstawy ..;)
Nirmik
7

Po pierwsze, niech będzie wiadomo, że ta odpowiedź pochodzi z tego, co zebrałem z moich doświadczeń z dpkgi apt. Nie spojrzałem na rzeczywisty kod centrum oprogramowania, aby to ustalić.

Jest to limit projektowania bazowego oprogramowania.

Część dpkgsystemu używanego przez Ubuntu do pakietów zawiera funkcję, która „blokuje” /var/lib/dpkg/lockplik, aby zapobiec nadpisywaniu się wielu plików dpkg( apt-geta Centrum oprogramowania Ubuntu jest nakładkami) i innych złych, złych rzeczy.

Co dzieje się po zainstalowaniu oprogramowania? To, co się dzieje, zaczyna się sudo apt-get install chromium-browser(na przykład Chromium).

A kiedy tak się dzieje, blokada się uruchamia. Po dodaniu więcej niż jednego pakietu do zainstalowania, czeka go, aż pierwszy zakończy się, zanim uruchomi następne aptpolecenie.

jrg
źródło
4

Niektóre działania, takie jak odświeżanie menu, indeksowanie czcionek i rekonfiguracja bibliotek, muszą być wykonywane tylko raz, jeśli wszystkie pakiety są zainstalowane w tym samym czasie. Druga zaleta, miejmy nadzieję, nie powinna się często zdarzać, ale jeśli chcesz zainstalować pakiety, które się wykluczają, znasz ją przed pobraniem wszystkich.

Ostatnia zaleta jest szczególnie ważna, gdy instalujesz lub aktualizujesz wiele pakietów naraz: jeśli trzeba odpowiedzieć na pytania, wszystkie pojawią się po sobie podczas postępu instalacji. Możesz więc kontynuować pracę zamiast bycia co 5 minut innym pytaniem.

johanvdw
źródło
Miałeś tam kilka interesujących punktów. :)
Jo-Erlend Schinstad
2

Powodem, dla którego dwa wystąpienia apt-get nie mogą działać jednocześnie, jest to, że aplikacja odczytuje / zapisuje kilka plików krytycznych dla działania systemu. Odczytywanie lub zapisywanie pliku za pomocą operacji apt-get, podczas gdy inna wykonuje na nim te same operacje, spowoduje problemy z niewłaściwą konfiguracją i / lub uszkodzeniem plików. Kiedy więc pojawia się operacja apt-get, „blokuje” potrzebne pliki, aby kolejna operacja nie mogła być wykonywana jednocześnie, czyli podnosi flagę informującą inne operacje, że pliki są aktualnie w użyciu.

Jednak jednoczesne pobieranie plików wymaganych przez apt (a raczej pobieranie z wielu źródeł) jest możliwe za pomocą polecenia apt-fast

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

Messie
źródło
0

prosty sposób na zainstalowanie kilku plików jednocześnie, wykonaj następujące kroki

  1. skopiuj cały folder instalacyjny, na przykład: / home / user / apps
  2. Otwórz terminal i typ:

    CD / home / user / apps

  3. a następnie wpisz ponownie

    sudo dpkg -i * .deb

poczekaj na zakończenie instalacji.

hardianto
źródło
1
To wciąż instaluje pliki .deb jeden po drugim . Nie to, o co poprosił OP - chce, aby jednocześnie zainstalować wiele plików .deb.
ish
-1

dostajesz pakiet, podczas gdy drugi instaluje się np. w terminalu 1

sudo apt-get install vlc

następnie pobierz inny pakiet w innym terminalu2

sudo apt-get download openssh-server

aby zobaczyć inne opcje dostępne w apt-get, zapoznaj się z jego prostym typem

apt-get <press tab on your keyboard>
marengz
źródło
To nie odpowiada na pytanie.
guntbert
@guntbert odpowiadałem na drugą część jego pytania, on powiedział „Albo zamiast tego, dlaczego centrum oprogramowania nie pobiera aplikacji, podczas gdy druga się instaluje”, pomyślałem, że twierdził, że nie można pobrać innego pakietu podczas instalacji inny, który jest zły.
marengz