Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

автоматизация обнавления системы. сложности с установкой и откатом обнавлений

312
21 июля 2009 года
dead_star
392 / / 26.11.2006
вопрос больше теоретический, по организации программы
написал модуль обновлений, который позволяет
  • создавать пакеты обновления. эта возможность доступна только разработчику
  • устанавливать пакеты обновления, обновляя систему до последней версии
  • откак обновления. отмена всех действий которые могли быть произведены после последнего обновления. также откат, в силу своей организации, позволяет последовательно откатываться назад вплоть до первой версии
  • ну и естественно просмотр подробной информации о пакете обновления
все достаточно просто, модуль прекрасно работает
но вот на днях обнаружил баг (хорошо что обнаружил в теории, а не на практике )
ситуация следующая
предположим я установил 5 обновлений, но мне не понравился результат и я решил откатиться назад.
откатился на одну вторую третью, и на первой я решил что результат меня устраивает
но через некоторое время работы я пришел к выводу что фича которая появилась в 5 версии мне нужна
и я начинаю опять устанавливать обновления и тут обнаруживается первый баг

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

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

в теории в процессе установки обновления можно проверять
было ли ранее установлен пакет необходимый для работы этой версии
но тут автоматически возникает сложность
если для установки обновления требуется наличие 2-3 пакетов, это нормально
а когда это 20-30 уже получается серьезная нагрузка
и увеличивается вероятность забыть про какой ни будь очень важный пакет

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

PS: автоматическое обновление подразумевает - автоматический поиск обновления(например на удаленном хосте), в случае если пользователь хочет установить обновление оно скачивается на сервер и автоматически устанавливается. откат и установка уже загруженных пакетов производится через специальный админский интерфейс
в моем случае установка пакетов возможна только в порядке возрастания
12
21 июля 2009 года
alekciy
3.0K / / 13.12.2005
Блин, не могу удержаться. Обавления писец как глаза режут.
353
22 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: dead_star

программа по умолчанию устанавливает последнюю версию,
то есть в моем случае получается что новая версия это пятая предыдущие 4 он не установит


Почему не установит? Заводишь спец. число - номер версии. Если ты откатываешь на старую или устанавливаешь новую - меняешь номер версии на соответствующую.

Цитата: dead_star

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


А если связь с сервером (или сам сервер) упадет, будем телепатически пакеты отправлять?

312
22 июля 2009 года
dead_star
392 / / 26.11.2006
Цитата: Nixus
Почему не установит? Заводишь спец. число - номер версии. Если ты откатываешь на старую или устанавливаешь новую - меняешь номер версии на соответствующую.


у меня так и сделано
в основном файле, где я объявляю все константы, установлены константы с номером текущей версии и датой ее установки

Цитата: Nixus
А если связь с сервером (или сам сервер) упадет, будем телепатически пакеты отправлять?


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

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

353
22 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: dead_star
у меня так и сделано
в основном файле, где я объявляю все константы, установлены константы с номером текущей версии и датой ее установки


Тогда я не понимаю в чем вопрос.

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


Это само собой разумеется, если планируется возможность отката.

14
22 июля 2009 года
Phodopus
3.3K / / 19.06.2008
Ну а если я и кто-то еще со мной вместе скачаем версию 1 твоей программы и будем ею пользоваться, причем я - оффлайн, а кто-то - с запросами на обновления. Пройдет время. Выйдут 2,3,4, версии продукта, выйдет 5. Наконец я вылезаю из берлоги, мир прекрасен, из ежедневных газет узнаю что появилась долгожданная версия 5! Ну, я ж платил и за это в том числе и я коннекчусь к серваку и запрашиваю, ясно дело, последнюю - 5ю версию. А у меня знаете ли 1ая. Ну чем не тот же самый вариант безо всяких откатов на предыдущие?
12
22 июля 2009 года
alekciy
3.0K / / 13.12.2005
Хотя вообще зачем изобретать лысапэды, когда есть SVN...
312
23 июля 2009 года
dead_star
392 / / 26.11.2006
Цитата: alekciy
Хотя вообще зачем изобретать лысапэды, когда есть SVN...


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

12
23 июля 2009 года
alekciy
3.0K / / 13.12.2005
Просто нужно было перед начало работ пошукать в плане того, что в текущий момент создано. В SVN в этом плане очень мощен, там есть в том числи и ветвление и слияние. Все, что требовалось бы это дописать небольшую автообновлялку/интерфейс пользователя, который бы через SVN клиент делал бы загрузку файлов.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог