Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка при массовом обновлении пакетов (--all) #813

Closed
pruidzeko opened this issue Sep 26, 2018 · 27 comments

Comments

@pruidzeko
Copy link

pruidzeko commented Sep 26, 2018

(Под правами администратора)
Команда opm update --all приводит к нарушению работы opm
Вот последовательность команд:
`
C:\Users\ko.pruidze
λ opm update opm
ПРЕДУПРЕЖДЕНИЕ - Ошибка получения списка пакетов с хаба ЗапаснойСерверПакетов по причине {Модуль C:\Program Files (x86)\OneScript\lib\opm\src\core\Классы\СерверПакетов.os / Ошибка в строке: 94 / Ошибка подключения к зеркалу }
ИНФОРМАЦИЯ - Скачиваю файл: opm.ospx
ИНФОРМАЦИЯ - Устанавливаю пакет opm
ИНФОРМАЦИЯ - Регистрация приложения: opm
ИНФОРМАЦИЯ - Установка завершена
ИНФОРМАЦИЯ - Устанавливаю зависимость: из каталога локальных зависимостей
ИНФОРМАЦИЯ - уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: из каталога локальных зависимостей
ИНФОРМАЦИЯ - уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: из каталога локальных зависимостей
ИНФОРМАЦИЯ - уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: из каталога локальных зависимостей
ИНФОРМАЦИЯ - уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: из каталога локальных зависимостей
ИНФОРМАЦИЯ - уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: из каталога локальных зависимостей
ИНФОРМАЦИЯ - уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: из каталога локальных зависимостей
ИНФОРМАЦИЯ - уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Устанавливаю зависимость: из каталога локальных зависимостей
ИНФОРМАЦИЯ - уже установлен. Пропускаем.

C:\Users\ko.pruidze
λ opm list
Пакеты в системном каталоге библиотек <C:\Program Files (x86)\OneScript\lib>:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

C:\Users\ko.pruidze
λ opm update --all
ПРЕДУПРЕЖДЕНИЕ - Ошибка получения списка пакетов с хаба ЗапаснойСерверПакетов по причине {Модуль C:\Program Files (x86)\OneScript\lib\opm\src\core\Классы\СерверПакетов.os / Ошибка в строке: 94 / Ошибка подключения к зеркалу }
ИНФОРМАЦИЯ - Скачиваю файл: 1bdd.ospx
ИНФОРМАЦИЯ - Устанавливаю пакет 1bdd
ИНФОРМАЦИЯ - Регистрация приложения: 1bdd
ИНФОРМАЦИЯ - Установка завершена
ИНФОРМАЦИЯ - Устанавливаю зависимость: logos
ИНФОРМАЦИЯ - logos уже установлен. Пропускаем.
...
ИНФОРМАЦИЯ - Скачиваю файл: logos.ospx
ИНФОРМАЦИЯ - Устанавливаю пакет logos
ИНФОРМАЦИЯ - Установка завершена
ИНФОРМАЦИЯ - Устанавливаю зависимость: asserts
ИНФОРМАЦИЯ - asserts уже установлен. Пропускаем.
ИНФОРМАЦИЯ - Скачиваю файл: notify.ospx
ИНФОРМАЦИЯ - Устанавливаю пакет notify
ИНФОРМАЦИЯ - Установка завершена
ИНФОРМАЦИЯ - Скачиваю файл: opm.ospx
ИНФОРМАЦИЯ - Устанавливаю пакет opm
{Модуль C:\Program Files (x86)\OneScript\lib\opm\src\core\Классы\МенеджерУстановкиПакетов.os / Ошибка в строке: 115 / {Модуль C:\Program Files (x86)\OneScript\lib\opm\src\core\Классы\УстановкаПакета.os / Ошибка в строке: 345 / Внешнее исключение (Ionic.Zip.ZipException): The file C:\Program Files (x86)\OneScript\lib\opm\oscript_modules\1commands\packagedef already exists.}}

C:\Users\ko.pruidze
λ opm list
Script file is not found 'C:\Program Files (x86)\OneScript\lib\opm\src\cmd\opm.os'

C:\Users\ko.pruidze
λ
`

@nixel2007
Copy link
Collaborator

@EvilBeaver ЧтениеZipФайла при вызове метода Извлечь разве не должно перезатирать файлы без запроса?

https://github.com/oscript-library/opm/blob/master/src/core/%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D1%8B/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%D0%9F%D0%B0%D0%BA%D0%B5%D1%82%D0%B0.os#L345

@EvilBeaver
Copy link
Owner

@nixel2007 должно. Но могут встречаться read-only файлы, или захваченные другими приложениями, например

@nixel2007
Copy link
Collaborator

@artbear? Вроде это твои последние доработки по пэкэдждефу

@nixel2007
Copy link
Collaborator

nixel2007 commented Sep 26, 2018 via email

@khorevaa
Copy link
Contributor

@nixel2007 @EvilBeaver Баг подтверждаю opm версии 0.14.4
не производит обномеления до 0.15.0

@EvilBeaver
Copy link
Owner

В чем заключается баг? Может отозвать 0.15.0 до получения в нем обходного маневра?

@artbear
Copy link
Collaborator

artbear commented Sep 30, 2018

я сейчас проверю и поправлю, если баг подтвердится

@artbear
Copy link
Collaborator

artbear commented Sep 30, 2018

Нашлась веселуха в движке и в 1С с поиском элементов внутри архива.
создал ишуз в движок #816

@artbear
Copy link
Collaborator

artbear commented Sep 30, 2018

Проблем было несколько.

Но главная-то проблема, оказывается, в том, что мы чистим каталог установки от всех устаревших файлов - *.os, *.dll, packagedef

Далее идет распакова файла packagedef
а в нем идет обращение к файлу констант

ПутьКСценариюКонстант = ОбъединитьПути(ТекущийСценарий().Каталог, "src/core", "Модули", "КонстантыOpm.os");
Константы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюКонстант);

а мы же вначале удалили все os-файлы, вот наш файл констант и не находится :(

@artbear
Copy link
Collaborator

artbear commented Sep 30, 2018

Решено в oscript-library/opm#141

@artbear
Copy link
Collaborator

artbear commented Sep 30, 2018

@pruidzeko @nixel2007 Выпущен релиз 0.15.2 с исправленим.

Пожалуйста, проверьте установку нового релиза

@nixel2007
Copy link
Collaborator

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

@artbear может откатить твое изменение в opm и подумать еще раз?

@nixel2007
Copy link
Collaborator

nixel2007 commented Oct 10, 2018

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

@pumbaEO
Copy link
Contributor

pumbaEO commented Oct 10, 2018

https://youtu.be/7dGUll4g2q0
https://youtu.be/Tdobu8lbOg8

Не знаю, каким образом проверяли, но не фига не работает сейчас.

@nixel2007
Copy link
Collaborator

@pumbaEO это другое. в движке поменяли библиотеку работы с зипом. из-за этого неверно зипуются ospx

@pumbaEO
Copy link
Contributor

pumbaEO commented Oct 10, 2018

Ну я бы понял для ночной сборки, а вот стабильная тоже по факту сломана, после обновления opm

@artbear
Copy link
Collaborator

artbear commented Oct 10, 2018

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

Варианты решения:

  • либо добавить перехват исключение System.IO.DirectoryNotFoundException при запуска файла packagedef
  • либо добавить перехват любого исключения при запуске этого файла

Логика такая - если при запуске есть исключения, значит, для инсталляции пакета нужен полный набор исходников, одного packagedef недостаточно.

В этом случае событие ПередУстановкой не отработает, а будет только событие ПриУстановке

И проблема будет решена.

@artbear
Copy link
Collaborator

artbear commented Oct 10, 2018

Если нет других предложений, внесу вечером исправление.

@khorevaa
Copy link
Contributor

khorevaa commented Oct 10, 2018

Есть другое предложение... Сделать packagedef - в формете json или yaml
Я об этоv уже неоднократно писал/просил oscript-library/opm#39
Данное действо резко упростит работу с данным файлом. И его можно всегда по умолчанию включать в сборки пакета/приложения

/cc @nixel2007 @EvilBeaver

@artbear
Copy link
Collaborator

artbear commented Oct 10, 2018

@khorevaa
1 json или yaml - как решить необходимость обработки события сборки/установки?
где будут находиться обработчики событий?

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

@khorevaa
Copy link
Contributor

@artbear Обработчики можно распологать в отдельных файлах Или прямо в файле. packagedef и загружать эти сценарии через "ЗагрузитьСценарийИзСтроки"

@nixel2007
Copy link
Collaborator

nixel2007 commented Oct 10, 2018 via email

@pumbaEO
Copy link
Contributor

pumbaEO commented Oct 11, 2018

Шел 10 день.

@artbear
Copy link
Collaborator

artbear commented Oct 11, 2018

Опенсорс, чо :(

@artbear
Copy link
Collaborator

artbear commented Oct 11, 2018

постараюсь добить, в метро интернета нет, не могу пакеты локально обновить :(

@artbear
Copy link
Collaborator

artbear commented Oct 11, 2018

Выпустил версию 0.15.3
https://github.com/oscript-library/opm/releases/tag/v0.15.3

Проверяйте

@pumbaEO ванесса-раннер ставится нормально

@artbear
Copy link
Collaborator

artbear commented Oct 12, 2018

Закрываю.
Если что не так с обновлением, переоткрывайте и пишите о проблеме

@artbear artbear closed this as completed Oct 12, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants