Gentoo Archives: gentoo-user

From: Rich Freeman <rich0@g.o>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Re: trying to upgrade some old, never upgraded image for an embedded system …
Date: Wed, 18 Dec 2019 18:15:22
Message-Id: CAGfcS_ko8HKnWzyop-x3puHYKYxKE33_wJr+O=+Mcxt1Th9fNw@mail.gmail.com
In Reply to: [gentoo-user] Re: trying to upgrade some old, never upgraded image for an embedded system … by Grant Edwards
1 On Wed, Dec 18, 2019 at 11:03 AM Grant Edwards
2 <grant.b.edwards@×××××.com> wrote:
3 >
4 > On 2019-12-18, <nunojsilva@×××××××.pt> (Nuno Silva) <nunojsilva@×××××××.pt> wrote:
5 >
6 > > The EAPI problem is in a package that is pulled as a dependency of
7 > > portage.
8 > >
9 > > Unless there's a simple hack to solve this, you will need to use older
10 > > ebuilds or split the update in several steps, using older versions of
11 > > the portage tree. The following notes show a way of achieving this:
12 > >
13 > > https://wiki.gentoo.org/wiki/User:NeddySeagoon/HOWTO_Update_Old_Gentoo
14 >
15 > In my experience of situations like this, it's often a lot less work
16 > to just backup /etc and user home directories and re-install from
17 > scratch.
18 >
19
20 That wiki article seems a bit dated, though it has the right general
21 concept. IMO it is way simpler than that. You could of course do a
22 reinstall and move your /etc and /home - that will certainly be the
23 cleanest approach. You'll probably clear out a lot of orphans or
24 things that are config-protected that have moved that way (well, less
25 so if you keep /etc whole).
26
27 I think some of this hinges on just HOW old that system is. What was
28 the date that it was last updated on?
29
30 Assuming it isn't older than 2015 I think the simplest safe approach
31 is to switch to a git repo, and then update it by date.
32
33 You can use https://anongit.gentoo.org/git/repo/sync/gentoo.git as it
34 has the metadata cache included, but that didn't really start until
35 Aug 2018. Commits before that date won't include metadata, though you
36 can build that yourself. It also uses CI checks so in theory every
37 merge commit is clean and consistent.
38
39 You can do date-based checkouts. I'd try jumping one year at a time
40 updating @system or at least portage+toolchain. If one of those
41 updates fails you can do a shorter update interval.
42
43 You probably don't need to update @world until you get up to the
44 current date. As long as @system is updated it should be able to
45 bootstrap everything else.
46
47 You can't just jump to the current portage as the current portage
48 ebuild is going to use an EAPI that isn't supported by the version of
49 portage you already have. Portage is usually updated in EAPI
50 conservatively to minimize this issue, but if you want to jump
51 multiple years at a time it won't work. Jumping 6-12mo at a time will
52 minimize this issue.
53
54 --
55 Rich

Replies