Problems with installing the OS update 4.3.0

Here we are for further analysis by @Jolla!?

Looks like an older file of yaml-cpp package (iirc it is only library libyaml-cpp) refused to be replaced?

If not urgent I would wait for a sailor’s answer here, possibly do some more analysis before continuing.


What says?
rpm -qf /use/lib/libyaml-cpp.so*

Thanks @peterleinchen ! Certainly not urgent. Happy to wait and see - sleep is going to be next activity shortly.

Also, better second time round:
[root@Sailfish nemo]# rpm -qf /usr/lib/libyaml-cpp.so*
libyaml-cpp0_6-0.6.2+master.20181213083542.4d61e32-1.3.3.jolla.armv7hl
libyaml-cpp0_6-0.6.2+master.20181213083542.4d61e32-1.3.3.jolla.armv7hl

Sorry, forgot the ending or Asterix.

But what is really strange is the name of your (installed?/conflicting) yaml-cpp package

Do you happen to have some openrepos repositories activated? (even if so, Jolla’s 4.3 version is higher and should be taken)

I don’t know if any of the following is of use but the libyaml-cpp package is a little unusual in its installed/not installed nature.
Also of note, is it seems to have been installed during the version --dup from 4.2 to 4.3.
Yet it was built April 2019. So a newly installed package for me perhaps? But not a new package?
Also, couldn’t say for sure if it is installed or not installed?

[root@Sailfish nemo]# rpm -q libyaml-cpp*
package libyaml-cpp* is not installed
[root@Sailfish nemo]# rpm -q libyaml-cpp
package libyaml-cpp is not installed
[root@Sailfish nemo]# rpm --query --info libyaml-cpp
package libyaml-cpp is not installed
[root@Sailfish nemo]# rpm --query --info libyaml-cpp0_6-0.6.2+master.20
181213083542.4d61e32-1.3.3.jolla.armv7hl
Name : libyaml-cpp0_6
Version : 0.6.2+master.20181213083542.4d61e32
Release : 1.3.3.jolla
Architecture: armv7hl
Install Date: Thu 04 Nov 2021 07:05:34 AEDT
Group : Development/Libraries/C and C++
Size : 343913
License : MIT
Signature : (none)
Source RPM : yaml-cpp-0.6.2+master.20181213083542.4d61e32-1.3.3.jolla.src.rpm
Build Date : Wed 03 Apr 2019 01:08:10 AEDT
Build Host : phost5
Vendor : meego
URL : https://github.com/jbeder/yaml-cpp/
Summary : YAML parser and emitter in C++
Description :
A YAML parser and emitter in C++ matching the YAML 1.2 spec.
[root@Sailfish nemo]# rpm -Kv libyaml-cpp0_6-0.6.2+master.2018121308354
2.4d61e32-1.3.3.jolla.armv7hl
error: libyaml-cpp0_6-0.6.2+master.20181213083542.4d61e32-1.3.3.jolla.armv7hl: open failed: No such file or directory
[root@Sailfish nemo]# repoquery --plugins -i libyaml-cpp0_6-0.6.2+maste
r.20181213083542.4d61e32-1.3.3.jolla.armv7hl
bash: repoquery: not found
[root@Sailfish nemo]# zypper info libyaml-cpp0_6-0.6.2+master.201812130
83542.4d61e32-1.3.3.jolla.armv7hl
Loading repository data…
Reading installed packages…
package ‘libyaml-cpp0_6-0.6.2+master.20181213083542.4d61e32-1.3.3.jolla.armv7hl’ not found.

Hopefully this helps with a hint?

Yes! Looks like.
openrepos-birdzhang provides this package.
And it is interpreted as higher version by pkcon/zipper.
0_6-0.6.2 > -0.6.3

So question now:
iirc (I did not update for long time! :frowning: ) Jolla implemented a deactivation of all open repos repositories before upgrading some releases ago? Or is this not true? And one still needs to deactivate all open repos stuff before starting the upgrade?

The package name is
yaml-cpp

And it installs binaries named
libyaml-cpp*

Do a simple
zypper se yaml-cpp


aaaargh, I see
bird Zhang named his package libyaml-cpp (wth same provides).

Oh dear - all this fuss, and I could have saved it all by disabling openrepos. I should have known to do that. I feel like a have wasted a lot of peoples time from a lazy moment. Sorry all.

Yes, I have openrepos-birdzhang active.

[root@Sailfish nemo]# zypper se yaml-cpp
Loading repository data...
Reading installed packages...

S | Name                 | Summary                         | Type
--+----------------------+---------------------------------+-----------
i | libyaml-cpp0_6       | YAML parser and emitter in C++  | package
  | yaml-cpp             | A YAML parser and emitter for-> | package
  | yaml-cpp             | A YAML parser and emitter for-> | srcpackage
  | yaml-cpp-debuginfo   | Debug information for package-> | package
  | yaml-cpp-debugsource | Debug sources for package yam-> | package
  | yaml-cpp-devel       | Development files for yaml-cpp  | package

Yes! :smiley:

But question remains
@jovirkku @all

@0312birdzhang
Time to revoke that package from your repo?

I did a version --dup. This probably worked around Jolla’s disabling of certain repos. Having said that, I think the package has been on openrepos for 2+ years. I have certainly done version --dup for other upgrades in that time period, and it has never been installed in the past? Something different recently?

It’s possible others have a different issue, but @N-Mi has a very similar sounding issue, but used sfos-upgrade rather than version --dup. @olf’s Sfos-upgrade explicitly says it disables openrepos?

Is the fix for me straightforward?

zypper in yaml-cpp -libyaml-cpp0_6-0.6.2+master.20181213083542
.4d61e32-1.3.3.jolla.armv7hl
zypper update libzypp

Is that enough?
And disable unnecessary repos…

Disable openrepos-birdzhang (or it might get pulled in again)

ssu re 4.3.0.12
zypper rm libyaml-cpp
zypper in -f yaml-cpp
zipper up libzypp

should do the trick, yes.

Maybe also install @olf 's sfos-upgrade
disable all open repos repositories
run
sfos-upgrade 4.3.0.12
reboot and run
post-sfos-upgrade

enable selected open repos only and take care what you install!

2 Likes

I would love to hear from the others having had the same issue?

This seems to have done the trick.
I have just run sfos-upgrade --verify to check the installlation and that seems to have suggested everything is in order now.
Pkcon is currently refreshing and working without complaint.
Things are looking good.
Thanks so much.

You are welcome.

Been there (sfos 2–>3 and definitely having all openrepos disabled! - always!), took me 2/3 days or even more, resolved it on my own, even having asked at zendesk did not bring any help…

So, happy got it resolved for you! :slight_smile:

2 Likes

Can you provide a source for this statement other than the release notes for SailfishOS 1.0.4 (discussed below)?
IMO this is “not true”.

What Jolla added to the GUI updater of SailfishOS 3.4.0, is listing all installed RPMs which have replaced “system RPMs” (i.e., ones from Jolla’s repositories) and recommending to uninstall them before upgrading. But that detection seems to be faulty, sometimes reporting many of Jolla’s own RPMs (i.e., “false positives”). In case of libyaml-cpp0_6-0.6.2 (from openrepos-birdzhang), I suppose that people did not pay attention (or that this detection mechanism also yields “false negatives”, sometimes).
Note that beyond the functionality documented by Jolla, this mechanism also apparently disables (≠ “delete”) the repositories, which provide the detected “system-RPM replacing RPMs”; at least this is what I observed when upgrading from SailfishOS 3.4.0 to 4.0.1.

Furthermore, I believe to have read that Jolla implemented a “repository separation mechanism”, which was “enhanced” in some later SailfishOS release. But I have never seen the exact functionality described and fail to find the remark about the “enhancement” (but IIRC it did not state anything specific). Maybe this just addressed what has been introduced in SailfishOS 1.0.4 and the “enhancement” meant the aforementioned new functionality of the GUI updater of SailfishOS 3.4.0.
The statement from the release notes for SailfishOS 1.0.4 is, “We have implemented disabling of additional repositories before system updates with this release.”, but we all know and regularly see that this is not at all true / working this way: All “additional repositories” are enabled during an SailfishOS update, because their RPMs are also updated by a SailfishOS upgrade and before SailfishOS 3.4.0 “system-RPM replacing RPMs” were pulled in from “additional repositories”, if they carry higher version numbers that the ones provided by Jolla.

And one still needs to deactivate all open repos stuff before starting the upgrade?

Short answer: IMO “No” with any SailfishOS ≥ 1.0.4, if one strictly keeps repositories disabled which contain “system-RPM replacing RPMs” among other RPMs (e.g., openrepos-birdzhang, openrepos-nieldk, openrepos-lachs0r).
Repositories which deliberately and explicitly (i.e., its maintainer knows what he is doing and documented that) contain solely “system-RPM replacing RPMs” are O.K. (e.g., openrepos-obexdcontentfilterolf).

And this was & is my long, in-depth answer to that question.

2 Likes

No, I can not.
That was the reason I asked explicitly.

Thanks.

1 Like

Deleted yaml-cpp and some other libs

3 Likes

No, Jolla has not implemented any deactivation of Open Repos repositories (afaicr). There is just the utility that attempts to find potentially conflicting packages, list them and recommend removing them. And then the release notes have the recommendation to manually disable O.R. repositories. It is difficult to say if the latter is required (anymore) as it depends on what each user has installed on his/her device. Most of the O.R. repositories and packages are ok. The recommendation is a precaution to prevent inexperienced users from running into trouble with the OS updates.

3 Likes

Maybe that missing statement is what confuses me.
I know that was in earlier release notes but I fail to find it in this one. (or am I just blind?)

There are some remarks about apps from openrepos but nothing about disabling repositories (which ofc is obvious, to me and more experienced user, but…).

1 Like

Upgrade via “system settings” from 4.2 went ok (Xperia X) but after reboot the phone keep rebooting AFTER reaching the GUI.
I had the time to enter the PIN, the SIMcard PIN - but before I manage to launch anything there’s a short freeze then reboot.
Then:
Reflashed to 4.2 , restore from backup, upgrade in terminal (version – dup) => same result
Reflashed to 4.2 , restore from backup, upgrade in GUI => same result

Is there any way to enable persistent and verbose logging to see what is causing the reboot ( I’d configure that while still in 4.2 then upgrade and retrieve the logs in Recovery mode)

1 Like

There actually is a mechanism in the update UI and the upgrade boot thing that temporarily disables any non-system repo for the upgrade, then re-enables them when done. As far as I know this mechanism is still working correctly. If you’ve only ever updated with the UI, then you shouldn’t see any other packages downloaded to the special upgrade zypp cache at /home/.pk-zypp-dist-upgrade-cache. Directories for other repos might be present in there if you’ve used version --dup before though, because that doesn’t disable anything.

My guess would be that the people encountering this problem already had the other yaml-cpp installed, or ran version --dup which pulled it in instead of the system version. Hopefully now that package is gone no-one else will run into this. Thank you all for detecting and investigating this in EA, as it would have been much harder for regular users to recover from it.

2 Likes