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

11

У меня возникают некоторые трудности с пониманием того, как все это обновление работает в 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
источник

Ответы:

10

Это действительно сложно. Во-первых, 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
источник
Хорошо, имеет смысл ... но есть ли способ легко управлять обновлениями для всех моих установленных вручную пакетов?
Кирби
2
@ Скорее нет, именно поэтому и aptт. Д. Существуют, если вы выходите за пределы этой системы, вы сами. Есть хитрости, но это редко стоит усилий для тех немногих пакетов, которые вы можете установить вручную.
Тердон
1
Менеджеру пакетов на самом деле все равно, был ли пакет установлен dpkg или apt. Если он обнаруживает более новую версию пакета в репозиториях, устанавливается новая версия.
Флориан Диеш
@FlorianDiesch Да, конечно. Моя точка зрения была для пакетов, которых нет в репозиториях.
тердон
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
источник