Как обновление работает с программами, установленными из файла .deb

10

У меня возникли определенные трудности с пониманием того, как работает все обновление в Ubuntu и хорошая практика для установки программного обеспечения.

Я понимаю, что у меня есть файл /etc/apt/sources.list , где перечислены все мои репозитории, и что эти репозитории запрашиваются, когда я использую apt-get update - для более позднего использования, например, с помощью apt-get upgrade . Это имеет смысл, и я недавно установил spotify , добавив deb http://repository.spotify.com stable non-free в этот список «источников».

Но потом я запутался ...

Когда я пошел загружать Google Chrome, мне просто пришлось загрузить и захватить файл .deb , а Chrome установлен без проблем ... но я не вижу никакой новой записи в /etc/apt/sources.list ...

Итак, как apt-get update знает, где запрашивать обновления Chrome? Его каким-то образом добавили в один из уже перечисленных репозиториев в файле источников?

Я хочу, чтобы все мое установленное программное обеспечение было включено функцией обновления.

    
задан Kirbies 09.03.2014 в 20:33
источник

2 ответа

9

Это действительно сложно. Во-первых, apt является интерфейсом до dkpg , который фактически обрабатывает установку / удаление пакетов. Итак, /etc/apt/sources.list (и любые файлы в /etc/apt/sources.list.d/ ) читаются apt , а не dpkg .

Теперь, когда вы загружаете файл .deb вручную, вы обходите apt и будете использовать dpkg -i packagename.deb для его установки. Это означает, что база данных apt не будет обновлена ​​и что система apt не будет знать установленный пакет. Другими словами, apt-get upgrade будет никогда обновлять любые установленные вручную пакеты.

Сказав это, chrome фактически является исключением из правила. Когда вы перейдете на страницу загрузки, вы увидите следующее сообщение:

Внизу это примечание:

  

Примечание. Установка Google Chrome добавит репозиторий Google, чтобы ваша система автоматически обновляла Google Chrome. Если вы не хотите репозиторий Google, перед установкой пакета сделайте «sudo touch / etc / default / google-chrome».

Это означает, что пакет .deb включает скрипт, который добавит репозиторий Google в вашу систему (в частности, он создаст файл в /etc/apt/sources.list.d/ ), тем самым гарантируя, что chrome будет обновляется при использовании apt-get .

    
ответ дан terdon 09.03.2014 в 20:46
источник
1

apt ищет источники, перечисленные в /etc/apt/sources.list , а также все файлы в /etc/apt/source.list.d . У вас будет файл, такой как google-chrome.list в /etc/apt/sources.list.d , который будет иметь следующую строку:

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

Это используется как источник для обновления google-chrome.

Когда вы загрузили файл deb для google-chrome вручную и установили его, сценарий в файле deb создал этот файл, так что вам не нужно вручную искать обновления.

    
ответ дан jobin 09.03.2014 в 20:37