W jaki sposób aktualizacja działa z programami zainstalowanymi z pliku .deb

11

Mam pewne trudności z dokładnym zrozumieniem, jak działa cała aktualizacja w Ubuntu i dobrą praktyką instalowania oprogramowania.

Rozumiem, że mam /etc/apt/sources.listplik, w którym znajdują się wszystkie moje repozytoria, i że te repozytoria są odpytywane, gdy używam apt-get update- do późniejszego użycia np
apt-get upgrade. Z. To ma sens i niedawno zainstalowałem spotify, dodając
deb http://repository.spotify.com stable non-freedo tej listy „źródeł”.

Ale potem się zdezorientowałem ...

Kiedy poszedłem pobrać Google Chrome, musiałem tylko pobrać i pobrać .debplik, a Chrome został zainstalowany bez problemu ... ale nie widzę żadnego nowego wpisu w /etc/apt/sources.list...

apt-get updateSkąd więc wiadomo, gdzie zapytać o aktualizacje Chrome? Czy został w jakiś sposób dodany do jednego z wymienionych już repozytoriów w pliku źródłowym?

Chciałbym, aby całe moje zainstalowane oprogramowanie było objęte funkcją aktualizacji.

Kirbies
źródło

Odpowiedzi:

10

To jest rzeczywiście trochę skomplikowane. Po pierwsze, aptjest front-end do dkpgktórych faktycznie uchwyty instalowanie / usuwanie pakietów. Tak więc /etc/apt/sources.list(i wszystkie pliki w /etc/apt/sources.list.d/) są odczytywane apt, a nie dpkg.

Teraz, gdy pobierasz .debplik ręcznie, pomijasz apti dpkg -i packagename.debzamiast tego użyjesz go do zainstalowania. Oznacza to, że baza danych apt nie zostanie zaktualizowana, a aptsystem nie będzie wiedział o zainstalowanym pakiecie. Innymi słowy, apt-get upgradebędzie nigdy nie aktualizuje wszystkie zainstalowane pakiety ręcznie.

To powiedziawszy, chromejest tak naprawdę wyjątkiem od reguły. Gdy przejdziesz do strony pobierania, zobaczysz ten komunikat:

 wprowadź opis zdjęcia tutaj

Na dole jest ta uwaga:

Uwaga: zainstalowanie Google Chrome doda repozytorium Google, dzięki czemu Twój system będzie automatycznie aktualizował Google Chrome. Jeśli nie chcesz repozytorium Google, wykonaj „sudo touch / etc / default / google-chrome” przed zainstalowaniem pakietu.

Oznacza to, że .debpakiet zawiera skrypt, który doda repozytorium Google do twojego systemu (w szczególności utworzy plik w /etc/apt/sources.list.d/), zapewniając w ten sposób, że chrome będzie aktualizowany podczas korzystania apt-get.

terdon
źródło
Ok, ma sens ... ale czy jest jakiś sposób na łatwe zarządzanie aktualizacjami dla wszystkich moich ręcznie zainstalowanych pakietów?
Kirbies
2
@Morten nie, właśnie dlatego aptistnieją etc, jeśli wyjdziesz poza ten system, będziesz sam. Istnieją sztuczki, ale rzadko jest to warte wysiłku w przypadku kilku pakietów, które można zainstalować ręcznie.
terdon
1
Menedżer pakietów faktycznie nie dba o to, czy pakiet został zainstalowany przez dpkg czy apt. Jeśli znajdzie w repozytoriach nowszą wersję pakietu, zostanie zainstalowana nowsza wersja.
Florian Diesch,
@FlorianDiesch tak, oczywiście. Chodzi mi o pakiety, których nie ma w repozytoriach.
terdon
1

apt wyszukuje w źródłach wymienionych w, /etc/apt/sources.lista także we wszystkich plikach w /etc/apt/source.list.d. Będziesz miał plik, taki jak google-chrome.listw /etc/apt/sources.list.dktórym będzie następujący wiersz:

deb http://dl.google.com/linux/chrome/deb/ stable main

Jest to używane jako źródło aktualizacji Google-Chrome.

Gdy ręcznie pobrałeś plik deb dla google-chrome i zainstalowałeś go, skrypt w pliku deb utworzył ten plik, dzięki czemu nie musisz ręcznie szukać aktualizacji.

Praca w
źródło