Post

ENG | Upgrading Fedora 42 to 44

ENG | Upgrading Fedora 42 to 44

This article is not so much about Fedora update, like stuff that can go wrong.

At April I have some issues with podman and systemd which I need to eventually resolve, unless they resolved themselves.

Fedora update

This step is easy. It just takes 20-25 minutes. Guide is here

  1. sudo dnf upgrade --refresh
  2. sudo reboot
  3. sudo dnf system-upgrade download --releasever=44 - this takes few minutes and may fail on some conflicts such as tuned-p and tlp
  4. sudo dnf offline reboot - this takes roughly 20 to 25 minutes on my i5-6500T with cca 3300 packages

Jekyll/Chirpy and Ruby

My script ended by several errors

1
~/bin/podman-jekyll-update.sh
1
2
3
4
5
6
7
8
9
/usr/share/gems/gems/bundler-4.0.3/lib/bundler/definition.rb:702:in 'Bundler::Definition#materialize': Could not find io-event-1.14.2, racc-1.8.1, json-2.18.0, bigdecimal-3.3.1 in locally installed gems (Bundler::GemNotFound)
	from /usr/share/gems/gems/bundler-4.0.3/lib/bundler/definition.rb:240:in 'Bundler::Definition#specs'
	from /usr/share/gems/gems/bundler-4.0.3/lib/bundler/definition.rb:312:in 'Bundler::Definition#specs_for'
	from /usr/share/gems/gems/bundler-4.0.3/lib/bundler/runtime.rb:18:in 'Bundler::Runtime#setup'
	from /usr/share/gems/gems/bundler-4.0.3/lib/bundler.rb:165:in 'Bundler.setup'
	from /usr/share/gems/gems/jekyll-4.4.1/lib/jekyll/plugin_manager.rb:52:in 'Jekyll::PluginManager.require_from_bundler'
	from /usr/share/gems/gems/jekyll-4.4.1/exe/jekyll:11:in '<top (required)>'
	from /usr/bin/jekyll:25:in 'Kernel#load'
	from /usr/bin/jekyll:25:in '<main>'

I tried deleting ~/gems directory, running commands such as this that always failed by version solving failed message.

1
2
3
4
5
6
7
8
9
10
11
12
13
[pavel@marten -=- ~/dev-blog]$ bundler update
Ignoring bigdecimal-3.3.1 because its extensions are not built. Try: gem pristine bigdecimal --version 3.3.1
...
Ignoring racc-1.8.1 because its extensions are not built. Try: gem pristine racc --version 1.8.1
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Could not find compatible versions

Because every version of jekyll-theme-chirpy depends on Ruby ~> 3.1
  and Gemfile depends on jekyll-theme-chirpy >= 0,
  Ruby ~> 3.1 is required.
So, because current Ruby version is = 4.0.1,
  version solving has failed.

Wait … I have Ruby 4.0.1, Jekyll requires greater than 3.1 or … not. Actually ~> 3.1 means that last number could be greater than 1. At this point I updated Jekyll expecting that problem will be resolved by a new version.

Upgrading Jekyll-chirpy (git merge)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[pavel@marten -=- ~/dev-blog]$ git remote -v
github	https://github.com/cotes2020/jekyll-theme-chirpy.git (fetch)
github	https://github.com/cotes2020/jekyll-theme-chirpy.git (push)
origin	https://git.pavelp.cz/pavel.perina/blog.git (fetch)
origin	https://git.pavelp.cz/pavel.perina/blog.git (push)
[pavel@marten -=- ~/dev-blog]$ git fetch github
remote: Enumerating objects: 236, done.
remote: Counting objects: 100% (76/76), done.
remote: Total 236 (delta 76), reused 76 (delta 76), pack-reused 160 (from 1)
Receiving objects: 100% (236/236), 250.61 KiB | 2.98 MiB/s, done.
Resolving deltas: 100% (119/119), completed with 52 local objects.
From https://github.com/cotes2020/jekyll-theme-chirpy
 * [new branch]      dependabot/github_actions/dot-github/workflows/gh-actions-67349225b1 -> github/dependabot/github_actions/dot-github/workflows/gh-actions-67349225b1
 * [new branch]      dependabot/npm_and_yarn/dev-deps-b6ff01f021                          -> github/dependabot/npm_and_yarn/dev-deps-b6ff01f021
   eaf5e57..2685b91  master                                                               -> github/master
   c0e4756..297fbde  production                                                           -> github/production
 * [new tag]         v7.5.0                                                               -> v7.5.0
 * [new tag]         v7.4.0                                                               -> v7.4.0
 * [new tag]         v7.4.1                                                               -> v7.4.1
Fetching submodule assets/lib
From https://github.com/cotes2020/chirpy-static-assets
   02f4ada..8ad46c0  main       -> origin/main
[pavel@marten -=- ~/dev-blog]$ git fetch github --tags
[pavel@marten -=- ~/dev-blog]$ git merge v7.5.0
Auto-merging _config.yml
CONFLICT (content): Merge conflict in _config.yml
CONFLICT (modify/delete): _posts/2019-08-08-text-and-typography.md deleted in HEAD and modified in v7.5.0.  Version v7.5.0 of _posts/2019-08-08-text-and-typography.md left in tree.
CONFLICT (modify/delete): _posts/2019-08-08-write-a-new-post.md deleted in HEAD and modified in v7.5.0.  Version v7.5.0 of _posts/2019-08-08-write-a-new-post.md left in tree.
CONFLICT (modify/delete): _posts/2019-08-09-getting-started.md deleted in HEAD and modified in v7.5.0.  Version v7.5.0 of _posts/2019-08-09-getting-started.md left in tree.
CONFLICT (modify/delete): _posts/2019-08-11-customize-the-favicon.md deleted in HEAD and modified in v7.5.0.  Version v7.5.0 of _posts/2019-08-11-customize-the-favicon.md left in tree.
Auto-merging assets/css/jekyll-theme-chirpy.scss
Automatic merge failed; fix conflicts and then commit the result.
[pavel@marten -=- ~/dev-blog]$ git rm _posts/2019-08-08-text-and-typography.md _posts/2019-08-08-write-a-new-post.md _posts/2019-08-09-getting-started.md _posts/2019-08-11-customize-the-favicon.md
rm '_posts/2019-08-08-text-and-typography.md'
rm '_posts/2019-08-08-write-a-new-post.md'
rm '_posts/2019-08-09-getting-started.md'
rm '_posts/2019-08-11-customize-the-favicon.md'
[pavel@marten -=- ~/dev-blog]$ nvim _config.yml
[pavel@marten -=- ~/dev-blog]$ git add _config.yml
[pavel@marten -=- ~/dev-blog]$ git status
On branch pavel
Your branch is up to date with 'origin/pavel'.

All conflicts fixed but you are still merging.
  (use "git commit" to conclude merge)

Changes to be committed:
...
1
2
3
4
5
6
[pavel@marten -=- ~/dev-blog]$ git commit
[pavel 6bd3db2] Merge tag 'v7.5.0' into pavel
[pavel@marten -=- ~/dev-blog]$ git status
On branch pavel
Your branch is ahead of 'origin/pavel' by 100 commits.
  (use "git push" to publish your local commits)

In the end, I edited version in gemspec file:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
[pavel@marten -=- ~/dev-blog]$ cat jekyll-theme-chirpy.gemspec
# frozen_string_literal: true

Gem::Specification.new do |spec|
  spec.name          = "jekyll-theme-chirpy"
  spec.version       = "7.5.0"
  spec.authors       = ["Cotes Chung"]
  spec.email         = ["[email protected]"]

  spec.summary       = "A minimal, responsive, and feature-rich Jekyll theme for technical writing."
  spec.homepage      = "https://github.com/cotes2020/jekyll-theme-chirpy"
  spec.license       = "MIT"

  spec.files         = `git ls-files -z`.split("\x0").select { |f|
    f.match(%r!^((_(includes|layouts|sass|(data\/(locales|origin)))|assets)\/|README|LICENSE)!i)
  }

  spec.metadata = {
    "bug_tracker_uri"   => "https://github.com/cotes2020/jekyll-theme-chirpy/issues",
    "documentation_uri" => "https://github.com/cotes2020/jekyll-theme-chirpy/#readme",
    "homepage_uri"      => "https://cotes2020.github.io/chirpy-demo",
    "source_code_uri"   => "https://github.com/cotes2020/jekyll-theme-chirpy",
    "wiki_uri"          => "https://github.com/cotes2020/jekyll-theme-chirpy/wiki",
    "plugin_type"       => "theme"
  }

  spec.required_ruby_version = "~> 3.1"

  spec.add_runtime_dependency "jekyll", "~> 4.3"
  spec.add_runtime_dependency "jekyll-paginate", "~> 1.1"
  spec.add_runtime_dependency "jekyll-seo-tag", "~> 2.8"
  spec.add_runtime_dependency "jekyll-archives", "~> 2.2"
  spec.add_runtime_dependency "jekyll-sitemap", "~> 1.4"
  spec.add_runtime_dependency "jekyll-include-cache", "~> 0.2"

end

[pavel@marten -=- ~/dev-blog]$ ruby --version
ruby 4.0.1 (2026-01-13 revision e04267a14b) +PRISM [x86_64-linux]

[pavel@marten -=- ~/dev-blog]$ nvim jekyll-theme-chirpy.gemspec

[pavel@marten -=- ~/dev-blog]$ git diff jekyll-theme-chirpy.gemspec 
diff --git a/jekyll-theme-chirpy.gemspec b/jekyll-theme-chirpy.gemspec
index 76e7369..33e86d9 100644
--- a/jekyll-theme-chirpy.gemspec
+++ b/jekyll-theme-chirpy.gemspec
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
     "plugin_type"       => "theme"
   }
 
-  spec.required_ruby_version = "~> 3.1"
+  spec.required_ruby_version = ">= 3.1"
 
   spec.add_runtime_dependency "jekyll", "~> 4.3"
   spec.add_runtime_dependency "jekyll-paginate", "~> 1.1"

[pavel@marten -=- ~/dev-blog]$ bundle
In a future version of Bundler, running `bundle` without argument will no longer run `bundle install`.
Instead, the `cli_help` command will be displayed. Please use `bundle install` explicitly for scripts like CI/CD.
You can use the future behavior now with `bundle config set default_cli_command cli_help --global`,
or you can continue to use the current behavior with `bundle config set default_cli_command install --global`.
This message will be removed after a default_cli_command value is set.

Fetching gem metadata from https://rubygems.org/..........
Local specification for listen-3.7.1 has different dependencies than the remote gem, ignoring it
Local specification for em-websocket-0.5.3 has different dependencies than the remote gem, ignoring it
Resolving dependencies...
Fetching rake 13.4.2
Installing rake 13.4.2
...
Bundle complete! 5 Gemfile dependencies, 64 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
1 installed gem you directly depend on is looking for funding.
  Run `bundle fund` for details

[pavel@marten -=- ~/dev-blog]$ podman-jekyll-update.sh
👷 Rebuilding static web content ...
/usr/share/gems/gems/bundler-4.0.3/lib/bundler/runtime.rb:321:in 'Bundler::Runtime#check_for_activated_spec!': You have already activated bigdecimal 4.0.1, but your Gemfile requires bigdecimal 3.3.1. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)
	from /usr/share/gems/gems/bundler-4.0.3/lib/bundler/runtime.rb:25:in 'block in Bundler::Runtime#setup'
	from /usr/share/gems/gems/bundler-4.0.3/lib/bundler/spec_set.rb:224:in 'Array#each'
	from /usr/share/gems/gems/bundler-4.0.3/lib/bundler/spec_set.rb:224:in 'Bundler::SpecSet#each'
	from /usr/share/gems/gems/bundler-4.0.3/lib/bundler/runtime.rb:24:in 'Enumerable#map'
	from /usr/share/gems/gems/bundler-4.0.3/lib/bundler/runtime.rb:24:in 'Bundler::Runtime#setup'
	from /usr/share/gems/gems/bundler-4.0.3/lib/bundler.rb:165:in 'Bundler.setup'
	from /usr/share/gems/gems/jekyll-4.4.1/lib/jekyll/plugin_manager.rb:52:in 'Jekyll::PluginManager.require_from_bundler'
	from /usr/share/gems/gems/jekyll-4.4.1/exe/jekyll:11:in '<top (required)>'
	from /usr/bin/jekyll:25:in 'Kernel#load'
	from /usr/bin/jekyll:25:in '<main>'

Ufff …. this actually required to modify my script and adding bundle exec:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/dash
# Updates jekyll site in container

target="nginx:/config/www"

# Old blog based on minima theme, used before 2023-06-24
#podman cp ~/jekyll/blog/_site/. $target

# New blog based on chirpy theme, used since 2023-06-24
source="/home/pavel/dev-blog"
cd $source
echo "👷 Rebuilding static web content ..."
JEKYLL_ENV=production bundle exec jekyll build || exit
echo "🔥 Deleting old content, don't panic! ..."
podman exec nginx sh -c "cd /config/www && rm -rf *"
echo "🚚 Copying new content ..."

podman cp _site/. $target
# The following lines added 2024-03-18
podman cp ~/jekyll/googleb917xxxxxxxxxx.html nginx:/config/www
podman cp ~/jekyll/BingSiteAuth.xml nginx:/config/www

Few things does not yet run manually

Weather station server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[pavel@marten -=- ~/dev-py/pico_weather_station/server]$ setopt nohup
[pavel@marten -=- ~/dev-py/pico_weather_station/server]$ nohup python server.py >> nohup.out 2>&1 &
[1] 31326
[pavel@marten -=- ~/dev-py/pico_weather_station/server]$ 
[1]  + exit 1     nohup python server.py >> nohup.out 2>&1
[pavel@marten -=- ~/dev-py/pico_weather_station/server]$ 
[pavel@marten -=- ~/dev-py/pico_weather_station/server]$ tail nohup.out
192.168.68.13 - - [05/May/2026 17:39:58] "POST /upload HTTP/1.0" 200 -
{'station_id': 'sta01', 'time': '2026-05-05T15:44:55Z', 'temperature': 24.44, 'pressure': 97675.8, 'humidity': 35.12, 'time_of_arrival': '2026-05-05T15:45:00Z'}
known station
2026-05-05 17:45:00,124 INFO    : Received and logged data: {'station_id': 'sta01', 'time': '2026-05-05T15:44:55Z', 'temperature': 24.44, 'pressure': 97675.8, 'humidity': 35.12, 'time_of_arrival': '2026-05-05T15:45:00Z', 'dew_point': 8.044384614593843, 'sea_level_pressure': 100623.1817672218, 'specific_humidity': 0.006880332997177664}
192.168.68.13 - - [05/May/2026 17:45:00] "POST /upload HTTP/1.0" 200 -
nohup: ignoring input
Traceback (most recent call last):
  File "/home/pavel/dev-py/pico_weather_station/server/server.py", line 3, in <module>
    from flask import Flask
ModuleNotFoundError: No module named 'flask'

Aha … I upgraded from Fedora 42 released in mid April 2025 to Fedora 44 released in late April 2026. New Python was released in October.

Python upgrade

This installs Pillow, Numpy, Matplotlib as dependencies. Weird deps are PostgresSQL for Python

1
2
grep import *.py
pip install flask seaborn opencv-python sqlalchemy psycopg2-binary
This post is licensed under CC BY 4.0 by the author.