Почему самим пакетом не управляется программное обеспечение без пакета?

Я являюсь пользователем дистрибутивов Debian – Debian, Ubuntu, Linux Mint. Я знаю, что часто последние версии программного обеспечения не находятся в репозиториях, поэтому я часто загружаю их напрямую из источника и устанавливаю их.

Тем не менее, я заметил, что это программное обеспечение редко дает вам знать об обновлении. Кроме того, я никогда не замечал, что кто-то из них действительно обновляется самостоятельно, а затем просто просит разрешения на установку.

Это потому, что среди кодировщиков обычно предполагается, что версии Linux будут обновляться через диспетчер пакетов?

4 Solutions collect form web for “Почему самим пакетом не управляется программное обеспечение без пакета?”

Реализация этого типа функции довольно сложна, как «вызывающая главная» сторона вещей (чтобы увидеть, было ли обновление), так и сторона «обновления на месте»:

  • программное обеспечение, работающее в системе пользователя, должно знать, как проверить, доступна ли более новая версия (что означает добавление сетевого кода в ваше приложение, которое, возможно, не имеет других причин для использования сети);
  • программное обеспечение должно работать независимо от условий сети, в которых он находится (очевидно, когда он полностью отключен, но он также не должен прерываться со странными ошибками, когда он оказывается частично связанным);
  • вам нужно каким-то образом решить, доступна ли более новая версия (как вы сравниваете версии, когда пользователи строят из исходного репозитория?);
  • вам нужно иметь сервер где-нибудь с серверной частью вещей, которые вам также могут понадобиться разработать;
  • вам необходимо убедиться, что обновления не могут быть скомпрометированы либо на сервере, либо через атаку «человек в середине» (поэтому вам нужно использовать TLS и / или сильное подписание какого-либо рода);
  • вам необходимо сделать обновления доступными в форме, удобной для пользователей; они могут быть построены из исходного кода, но нет гарантии, что система, на которой работает программное обеспечение, имеет все необходимое для восстановления новой версии из исходного кода, поэтому вам необходимо предоставить двоичные файлы (для всех возможных целевых платформ?).

(Это не исчерпывающий список.)

Это все проблемы, которые были обработаны дистрибутивами, поэтому просто позволить дистрибутивам заботиться о вещах. Кроме того, как объяснил Кусалананда , пользователи, которые заботятся о запуске последней версии программного обеспечения, вероятно, достаточно заботятся об этом, чтобы следовать хотя бы списку рассылки объявлений, поэтому они будут уведомлены об этом.

Еще один аспект, который следует учитывать, заключается в том, что значительное число людей не хотят, чтобы программное обеспечение, которое они используют для телефонного звонка, каким-либо образом. Некоторые дистрибутивы идут на несколько длин, чтобы удалить код, который делает это из распространяемого ими программного обеспечения, или даже другие части программного обеспечения, которые могут использоваться для отслеживания его использования ( например, документация, которая загружает изображения или шрифты или CSS из Интернета). См. Все теги «неприкосновенность частной жизни» в Lintian Debian .

Все это объясняет, почему так мало компонентов программного обеспечения, которые содержат необходимые механизмы для предоставления самой информации об обновлениях, и даже меньше, которые могут модернизировать себя.

Существуют и другие способы решения «проблемы»: разработчики программного обеспечения, которые используют систему CI, обычно могут расширять это, чтобы обеспечить «ночные» сборки в какой-либо расходной форме (в виде пакетов); заинтересованные пользователи могут создавать собственные системы сборки, чтобы регулярно извлекать обновленный источник программного обеспечения, о котором они заботятся (это довольно часто встречается в корпоративных контекстах); или вы можете настроить пакеты AUR, которые построены из самого последнего источника.

Если само программное обеспечение не имеет возможности «позвонить домой», чтобы проверять наличие обновлений, например, некоторые браузеры и такие вещи, как Syncthing , возможно, не существует, обычно нет механизма, который сможет автоматически предупредить пользователя / администратора, что есть более новая версия программного обеспечения.

Пакеты, которые вы устанавливаете с вашим менеджером пакетов, создаются людьми, пользователями, которые, вероятно, будут заинтересованы в их обновлении и функциональности в операционных системах, которые им интересны.

Кто-то, кто упаковывает, например, Ansible , GNU coreutils или оболочку Yash , или CMake или любые другие из тысяч программных проектов для конкретной системы Unix, скорее всего (но не обязательно) будет подписан на соответствующие списки рассылки для тех проектов и / или имеют специальные инструменты для регулярного просмотра репозиториев исходного кода или исходных файлов распространения. Когда они узнают о новой версии, они будут загружать, компилировать, тестировать, исправлять (и т. Д.) И соответствующим образом упаковывать программное обеспечение в зависимости от процедур упаковки в их Unix. Это может быть связано как с восходящим (разработчиком программного обеспечения), так и с нисходящим потоком (для пользователей программного обеспечения) о несовместимости или других проблемах, возникающих в процессе сборки / упаковки.

Тогда они будут, в зависимости от того, с каким Unix они работают и как работает сторонний пакет, работают, регистрируют, загружают или фиксируют пакет так или иначе, чтобы пользователи, подобные мне, и вы могли использовать наших менеджеров пакетов для обновления наших систем.

Например, я забочусь о том, что для OpenBSD доступен GNU Stow (я являюсь «поддерживающим порт» для этого программного обеспечения). Я время от времени проверяю, какой текущий статус Stow находится на веб-сайте GNU (он не обновляется очень часто), и когда я вижу новую версию, я устанавливаю ее и слежу за ее работой, а также обновляю порт OpenBSD на моей личной машине. Затем я отправляю по электронной почте список портов OpenBSD с патчем для порта (порты распределяются как набор Make-файлов на OpenBSD). Кто-то с правами фиксации будет следить за тем, чтобы мой патч применялся чисто и что порт выглядит корректно, прежде чем передать его в дерево CVS портов OpenBSD.

В следующий раз, когда пользователь обновит дерево CVS и перестроит порт, или загрузит двоичный порт, который в конечном итоге появится, их установка GNU Stow будет обновлена. Но GNU Stow сам по себе не знает, доступна ли новая версия. Это просто не то, что должен делать GNU Stow. Это инструмент, который используется для установки стороннего программного обеспечения в автономных иерархиях каталогов, и было бы очень странно, если бы он пытался «позвонить домой» каждый раз, когда он использовался (как ни странно, как если бы вдруг потребовался доступ к сети для запуска ).

Чтобы само обновление программного обеспечения могло во многих случаях быть нежелательным, так как многие компоненты системы должны быть протестированы вместе. Необходимые части инфраструктуры также серьезно раздувают меньшие пакеты, и для людей, которым не хватает ноу-хау или ресурсов, для запуска какого-либо сервера обновлений высокой доступности для разработки программного обеспечения, которое автоматически обновляется автоматически, людям не хватит.

В прежние времена компьютеры управлялись профессионалами, которые при необходимости устанавливали новое программное обеспечение.

Со временем различные операционные системы разработали две разные традиции для облегчения бремени обновления программного обеспечения вручную.

  • В Linux и большинстве других современных Unix-версий операционная система поставляется с менеджером пакетов . Большинство программ установлено через этот менеджер пакетов, а диспетчер пакетов обновляет программное обеспечение, когда доступна новая версия.
  • До недавнего времени Windows не поставлялась с диспетчером пакетов, поэтому поставщики программного обеспечения Windows привыкли устанавливать свой собственный код для установки обновлений.

Подход менеджера пакетов особенно хорошо подходит для мира с открытым исходным кодом, поскольку программное обеспечение с открытым исходным кодом состоит из тысяч пакетов, которые разрабатываются независимо и собраны вместе. Многие вещи могут ошибиться при сборке пакетов, поэтому большинство дистрибутивов Linux обеспечивают согласованный набор, называемый выпуском . В некоторых дистрибутивах есть «скользящие выпуски», где единственная проверка согласованности заключается в том, что компиляция программного обеспечения. Другие имеют больше тестов и только предоставляют новый выпуск один или два раза в год или даже раз в пару лет.

Преимущество подхода Linux по подходу Windows заключается в том, что он позволяет пакетам программного обеспечения взаимодействовать друг с другом. Это сложно в подходе Windows, потому что если программное обеспечение A и программное обеспечение B хотят что-то сделать вместе, они должны следить за тем, установлен ли их партнер, справляться с обновлениями, заботиться о том, чтобы не оставлять крошки, когда они удаляются … Это, в частности, почему программное обеспечение Windows должно связывать все библиотеки, которые он использует, а это означает, что если в библиотеке обнаружена ошибка, тогда необходимо обновить все программное обеспечение, использующее библиотеку. Напротив, в Linux требуется обновить только пакет, содержащий библиотеку, независимо от того, сколько программ использует его.

Поскольку операционная система обеспечивает механизм обновления программного обеспечения, авторам программного обеспечения Linux не нужно изобретать колесо.

Редко требуется устанавливать более свежие версии программного обеспечения, чем то, что предоставляет ваш дистрибутив. Более новое программное обеспечение в целом не менее багги. Распределения предоставляют обновления, если обнаружена серьезная ошибка (особенно ошибки безопасности). Более новая версия некоторого программного обеспечения полезна только в том, что эта версия имеет новую функцию, для которой вы используете.

Если вам нравится иметь последнюю версию программного обеспечения, даже если она вам не нужна, тогда вы должны установить раскручивающийся дистрибутив, такой как Debian unstable или Arch Linux. Распределения с последовательными версиями, такими как Ubuntu, Mint или Debian, предназначены для людей, которые не хотят нарушать свою систему каждую неделю.

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

Установка программного обеспечения (по крайней мере, установка его по всей системе) обычно требует корневого доступа. Вы доверяете менеджеру пакетов дистрибутива и людям, которые устанавливают программное обеспечение для надлежащего использования этой привилегии, но вы не обязательно доверяете каждой случайной части программного обеспечения, которую вы установили, чтобы сделать это правильно.

Interesting Posts

Не удалось получить доступ к Docker после установки в подсистеме Windows для Linux

Переносимость исполняемого файла другой машине Linux

Новое ядро ​​установлено, но недоступно для загрузки через grub

Разница между локацией и mlocate

Как удалять временные метки файлов на 3 месяца (для дерева каталогов)?

Namservers вернулись к нормальному вскоре после подключения VPN с помощью Openconnect

Настройка графического интерфейса (рабочего стола) для удаленного подключения

Как добавить метку времени в каждую строку файла журнала?

Как открыть Gmail в Firefox на Scientific Linux?

Как скрипт оболочки может выполнять действия, если время создания файла прошло 5 минут?

Перемещение нескольких файлов из нескольких каталогов в исходный адрес

заменить все точки в именах файлов с помощью подчеркивания

Ошибка «E488: Trailing Characters» в Vim после ввода: <F7>

Может ли не-sudoer изменять что-либо за пределами домашнего каталога

Должен ли (должен) LC_COLLATE влиять на диапазоны символов?

Linux и Unix - лучшая ОС в мире.