защо моят продукт eclipse RCP е заключен и не може да се актуализира?

Създавам продукт, базиран на Eclipse RCP, и се натъквам на проблем, при който когато се опитам да използвам вградения потребителски интерфейс на p2, за да инсталирам актуализации на продукта, получавам съобщение за грешка в диалоговия прозорец, че „Недостатъчни привилегии за достъп до приложете тази актуализация."

Отстраних грешки в Eclipse и открих, че „основната причина“ е, че има p2 .profile файл, който има xml, който включва този фрагмент:

<iuProperties id='com.datical.db.ui.product' version='1.33.0.201412032223'>
  <properties size='4'>
    <property name='org.eclipse.equinox.p2.internal.inclusion.rules' value='STRICT'/>
    <property name='org.eclipse.equinox.p2.type.root' value='true'/>
    <property name='org.eclipse.equinox.p2.type.lock' value='3'/>
    <property name='org.eclipse.equinox.p2.base' value='true'/>
  </properties>
</iuProperties>

Съответният ред е този, който казва <property name='org.eclipse.equinox.p2.type.lock' value='3'/>

Не съм сигурен какво правя погрешно - мисля, че трябва да има нещо нередно в дефиницията на моя продукт или дефиницията на функцията ми или в моя процес на инсталиране, което причинява този ред да е там.

Когато преминавам през кода на Eclipse (целевата ни среда е 3.7/Indigo), виждам, че профилът се записва вътре в org.eclipse.equinox.internal.p2.engine:SurrogateProfileHandler:addSharedProfileBaseIUs (което е частно статично.) Това се извиква от SurrogateProfileHandler:createProfile

Хранилището p2 на продукта се изгражда с помощта на добавките tycho, версия 0.15.


person SteveDonie    schedule 03.12.2014    source източник
comment
Тъй като p2 е много специализирана тема, може би си струва да попитате това във форумите на Eclipse във форума на P2.   -  person greg-449    schedule 04.12.2014
comment
Индиго документи предполагат, че валидните стойности за този флаг са 0 (LOCK_NONE), 1 (LOCK_UNINSTALL) или 2 (LOCK_UPDATE). Не се споменава какво означава 3. Пробвал ли си с по-нова версия на tycho?   -  person Nick Wilson    schedule 04.12.2014
comment
Флаговете са ИЛИ заедно, така че 3 показва, че е заключен както за актуализиране, така и за деинсталиране. Не съм (все още) опитвал да премина към по-нова версия на tycho, основно от FUD. greg-449, благодаря за препратката към форумите - ще опитам кръстосано публикуване там.   -  person SteveDonie    schedule 04.12.2014
comment
Никога не съм чувал за този проблем, така че това може да е грешка, която все още не е докладвана. Ако случаят е такъв, така или иначе ще трябва да актуализирате до по-нова p2 версия и тъй като p2 е вграден в Tycho, трябва да актуализирате вашата Tycho версия.   -  person oberlies    schedule 04.12.2014
comment
Днес актуализирах до tycho версия 0.21.0 (най-нова) и виждам почти идентично поведение. Заключването все още се настройва, когато стартирам продукта за първи път. Хакнах около това, като манипулирах XML по време на инсталиране. Това ми позволява да стартирам Проверка за актуализации в приложението и сега всъщност мога да избера актуализираната версия и да я приложа - което първоначално изглежда работи. Въпреки това, когато копая по-дълбоко, виждам неща като старата и новата версия на функцията, показващи се в диалоговия прозорец „Относно“ в раздела с функции, и плъгините, всички със „старата“ версия.   -  person SteveDonie    schedule 12.12.2014


Отговори (3)


Най-накрая открихме още една информация, която може да е от значение. Използвахме персонализирано име на OSGI директория. Когато премахнахме това, всичко започна да работи според очакванията.

person SteveDonie    schedule 17.02.2015
comment
Ако погледнете тази страница: help.eclipse.org/indigo/, който описва опциите за конфигуриране на eclipse, се споменава -configuration ‹location› (Main), еквивалентен на настройката на osgi.configuration.area на ‹location › - person SteveDonie; 23.02.2015

Изглежда, че имате споделена инсталация, където продуктът, който искате да актуализирате, се използва (потенциално) от много инсталации като база - и следователно не може да бъде актуализиран.

person Peter    schedule 09.12.2014
comment
Какво би довело до означаване на нещо като споделена инсталация? Процесът на инсталиране, който използвам, е просто да разархивирам специфичния за платформата zip файл, който е създаден от плъгините „materialize-product“ и „archive-product“ на tycho в директория, която е в моята домашна директория (в моя случай, в Ubuntu - /дом/стив/продукт). След това стартирам изпълнимия файл с '-initialize', когато виждам, че файлът .profile.gz се създава с ключалката. - person SteveDonie; 10.12.2014
comment
Опитах -initialize с по-нов продукт на Eclipse и той не добави заключването. Така че, предполагам, че най-добрият ви залог е да използвате по-нова версия на tycho (и по този начин да имате по-нова версия на p2), както посочи @oberlies. - person Peter; 12.12.2014
comment
BTW: Защо бихте използвали -initialize, ако не беше инсталация само за четене? - person Peter; 12.12.2014
comment
Използвам -initialize, защото това е, което тази страница каза, че трябва да направя. help.eclipse.org/indigo/ - person SteveDonie; 12.12.2014

Този вид проблем надхвърля това, на което може да се отговори добре в stackoverflow, защото наистина трябва да предоставите примерен проект и точни стъпки за възпроизвеждане на проблема.

Най-правдоподобната причина за симптомите, които виждате, е някакъв проблем с разрешението на файловата система. Тази документация споменава, че имате нужда от разрешение за запис в инсталационната директория за стартиране на Eclipse с -initialize. Може би ви липсват някои разрешения, което прави част от процедурата -initialize неуспешна и оставя инсталацията в непоследователно състояние.

person oberlies    schedule 15.12.2014
comment
Съставянето на пример може да е това, което трябва да направя. За съжаление, в момента вече съм потънал около 2 седмици в това и не мога да оправдая, че отделям повече време за това точно сега. Имам права за запис във всички въпросни директории. - person SteveDonie; 15.12.2014