LINUX.ORG.RU

Как еще обновить самого себя?

 ,


0

1

Приветствую.

Как я понимаю обычное решение это скопировать куда то новый бинарник, затем запустить его с какими то параметрами из своего процесса через exec* и уже в нем положить себя на свое старое место - неудобно в этом то, что нужно проверяться из какого места загружен и либо снова запускаться из старого места либо все время помнить что запущен из «клона», а нет ли более хитрого способа без внешнего кода на C/C++ подменить свой бинарник во время его исполнения???

может есть какие то штатные средства ОС?

★★★
Ответ на: комментарий от wolverin

Вопщим пока решил при запуске проверять путь с обновлением, если есть - делать замену и execl..

При срочном обновлении делать выход и systemd снова запустит с п.1

wolverin ★★★
() автор топика
Ответ на: комментарий от Loki13

Да, наверное можно было бы чем-то вроде политик обновлять, но даже не уверен что это на линуксе сделать будет легко(уверен что очень сложно). На венде же вообще нереально почти.

Вот знаешь - теперь я свято верю что на аватарку ты поставил реальный рентген своей бошки :-)

не уверен что это на линуксе сделать будет легко(уверен что очень сложно)

+ 1 inventory в Ansible и таск, который ночью запустит обновлялку у кого надо и проконтролирует статус. Роцкет итить его саенс?!?!

На венде же вообще нереально почти.

Chrome, Firefox и ещё куча всего … не наводит на мысли?!

Да даже если ты не хочешь с этим париться - залуди пакет в SCCM для апдейта (даже если это remove\install) и накати на список песюгофф … Роцкет итить его саенс?!?!

Да что с вами народ?!? Есть реально мозгодробильные таски, но вот эта - для вновь прибывших студентов, да и то слижком лёгкая :)

WBR,

АнонимусЪ ВсеЯ РФъ

anonymous
()

Обновиться с перезаписью бинарника (например, через пакетный менеджер), а потом exec самого себя. nginx -s reload так работает, например.

annulen ★★★★★
()

Обновление без явного запроса пользователя — это явный признак плохого софта (если не троянского вообще), которым пользоваться — себя не уважать.

А если пользователь явно заказывает обновление, то дайте ему инструкцию, или скрипт, или mv project-v2 /opt/myproject/ && /opt/myproject/project-v2, или на худой конец репозиторий заведите, как выше сказали. Иначе как он будет у вас обратно откатывать такое «самообновление»?

anonymous
()
Ответ на: комментарий от anonymous

Тут человек вбил себе в голову, что поведение «как на винде» - это нормально. При этом у него есть вопросы «а что будет если выключится питание», но игнорируется возможность кривого релиза, с которого пользователь не сможет обновиться ни в какую сторону.

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

Это бред собачий.

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

Разработчики же коммерческих программ делают установку сами, причем чсх линкуются со всем статически(кроме libc и то не факт), во избежание говна в дистрах.

lovesan ★★★
()
Ответ на: комментарий от wolverin

На прыщах - да. И вообще на юниксах(про гей-ос, правда, не знаю, возможно там что-то анально усилили недавно).

На винде же, ты делаешь MSI, который тебе прибивает твои процессы при необходимости обновления. Если ты используешь какие-то библиотеки, нативные(на крестах и прочем таком), которые могут использоваться несколькими процессами, COM компоненты, итд, то их надо ставить и обновлять через SxS а не просто кидать кучей в папку. Еще вариант, но он больше для клиентских приложений, ты разбиваешь по версиям, в директории с программой, и при следующем запуске просто запускаешь новую(чем ты там ее запускаешь, ярлыком в меню, или там как сервис винды). Но в таком случае все-равно хорошо делать MSI, чтобы пользователь мог твое говно удобно удалить а не как у всякого bloatware от производителей материнок, где хер поймешь как вырезать программу из системы.

lovesan ★★★
()
Ответ на: комментарий от lovesan

если доверить обновление твоего софта всяким дебилам, типа мейнтейнеров дистра

Дядя, ты б хоть тред почитал. Речь про свой реп. Для этого придумали вещи типа add-apt-repository

Разработчики же коммерческих программ

…Тащат в linux свои грязные виндовые привычки, из-за которых в дистре нихера не работает а весь хомяк засран корневыми каталогами

PPP328 ★★★★★
()
Ответ на: комментарий от wolverin

Для «тысяч железок» есть ansible и иже с ним. Никаких «самообновляторов» там быть не должно.

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

PPP328 ★★★★★
()
Последнее исправление: PPP328 (всего исправлений: 1)
Ответ на: комментарий от PPP328

Не хотите закрывать дыры на своем парке

в перспективе ничего не будет слушать сеть, поэтому и закрывать будет нечего, вместо бесконечной тупой работы по содержанию своего репа

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

Ну лови тогда заслуженного клоуна. А когда побежишь на ЛОР плакать о том что у тебя дедлок с твоей обновлялкой или когда у тебя после вынужденного обновления отвалились сотни узлов - ну удачи тебе, чо.

Я очень сильно надеюсь, что у тебя твои узлы не имеют доступа в интернет и что они могут только подключаться по VPN к админке.

PPP328 ★★★★★
()
Ответ на: комментарий от wolverin

сделал так, все работает, команда что и откуда скачать через mqtt поступает защищенный ssl с подписью md5 бинарника

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)

А если у тебя не один бинарик а целая охапка библиотек и ресурсов к нему? А если у бинарика еще есть бдшечка для которой требуется миграции? А если у бинарика чуть поменялся конфиг и с этим тоже надо манипуляции проводит? Слишком много если.

anonymous
()
Ответ на: комментарий от wolverin

единственно чем хотел восхититься - boost::asio просто пушка как быстро качает с http файл, по локальной сети и то кажется медленней происходит, не говоря уж о ssh, как бэ самого себя не задудосить рассылая команды обновиться )

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)
Ответ на: комментарий от anonymous

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

wolverin ★★★
() автор топика
Ответ на: комментарий от anonymous

на определенные группы серийников свой сервис слушающий свою подписку будет допилен, который пока работает в духе

  • где я?
  • ты здесь
  • вот тебе в здесь моя текущая конфигурация

он и будет сверяться кому чего делать и куда за чем ходить

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 2)
Ответ на: комментарий от wolverin

мониторинг пока простой - периодический запрос снимка через тот же мктт, на нем статистика

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)
Ответ на: комментарий от anonymous

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

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 2)
Ответ на: комментарий от wolverin

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

anonymous
()
Ответ на: комментарий от anonymous

Да даже если ты не хочешь с этим париться - залуди пакет в SCCM для апдейта (даже если это remove\install) и накати на список песюгофф … Роцкет итить его саенс?!?!

Я погромист, а не одмин, мне проще из БД(или ещё откуда) стянуть блоб и заменить бинарник, чем с этими вашими ансиблами сношаться. Да и откуда возьмется ансибл на писюке у бухгалтерши?

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

Loki13 ★★★★★
()
Ответ на: комментарий от anonymous

да текущему пока особо заняться нечем, он даже тьфу тьфу тьфу аптаймы месячные имеет ))

меня больше в этой всей истории беспокоит другое - вся моя идея максимально получить распределенную систему, в отличии от большинства что делают ее монолитно централизованной со своими VPN, НО вот брокер сообщений пока остается ахиллесовой пятой во всей этой идеи

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)
Ответ на: комментарий от anonymous

на картинке вижу один сервер

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

wolverin ★★★
() автор топика
Ответ на: комментарий от PPP328

свои грязные виндовые привычки

Грязные привычки — это централизованные репозитории в связке с идиотским принципом «stable api is nonsense» — в результате чего линакс представлял, представляет и будет представлять собой вечную помойку-глюкодром полу-работающего софта.

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 2)