Repository 'blah' changed its 'Codename' value from 'bullseye' to 'bookworm'

This really is a load of fucking shite.


Doing apt-get update spits out a load of shit like this:

E: Repository ' testing-security InRelease' changed its 'Codename' value from 'bullseye-security' to 'bookworm-security' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details. E: Repository ' testing InRelease' changed its 'Codename' value from 'bullseye' to 'bookworm' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details. E: Repository ' testing InRelease' changed its 'Codename' value from 'bullseye' to 'bookworm' N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

...and if you try to upgrade/install anything now, you get a crapload of "not found" errors on half the stuff it tries to download.


Add Acquire::AllowReleaseInfoChange::Codename "true"; to /etc/apt/apt.conf.


This stupid fucking booby trap has apparently been hidden in the apt code since November 2016 (version 1.4~beta1, dated Fri, 25 Nov 2016 23:49:54 +0100, changelog entry "* show distribution mismatch for changed codenames"), but it has lain dormant until August 2021, and then seems to have suddenly jumped into action and started fucking people up left right and centre. I wouldn't be surprised if the dumb-arsed wanker who (a) put it in in the first place and (b) never fucking documented it has completely forgotten about it in the intervening 5 years. And the explanations/solutions I have found by searching on the internet don't explain anything and only solve it once.

For a start, the injunction to "See apt-secure(8) manpage for details" is completely fucking useless, because the bloody page doesn't actually tell you anything at all. It doesn't explain why this error suddenly crops up when you haven't changed anything, and it certainly doesn't explain what "This must be accepted explicitly" actually fucking means or what you have to do to "accept" it.

What even is a "Codename" anyway? I don't see how it's anything other than the names like "buster", "stretch", "sarge" etc which identify different releases. Well I have always called that the "release name" or the "version name" and I've been using Debian for fucking years and years. Now up pops some obscure cunt calling it the "codename" and introduces another facet to the problem by making it sound like something new.

Having worked out that it just means the release name, the error now seems even more obscure. Because I don't even fucking USE the release names in my sources.list. I call things "stable", "testing" or "unstable" as appropriate. In other words, I refer to the releases by a meaningful name for the kind of thing they are. I do NOT try to identify them by some random name of a character out of a kids' movie because every so often it changes to mean something different and then I have to piss around wondering why things aren't working properly until I find out about the change.

Why the bleeding fuck is it moaning about something no longer using the name "bullseye" when I'm not bleeding well telling it to look for fucking "bullseye" in the first place? Why the fuck does it care about something which it isn't configured to care about? And why the fuck does nobody replying to any of the other people who are asking exactly this question bother to actually explain it?

It seems to have originated at least as far back as wishlist bug 706972 from May 2013, in which some flaming great nipple declares that "some users use terms such as 'stable' and 'testing' in their sources.list file, rather than 'squeeze' and 'wheezy'", and therefore it would be a great idea to add some code to apt-get to deliberately break those people's systems whenever the squeeze/wheezy/etc name changes.

You fucking great cunt. I "use terms such as 'stable' and 'testing'" precisely because I do NOT want it to break unexpectedly at whatever random moment the squeeze/wheezy/etc name happens to change. I don't give a fuck about the squeeze/wheezy/etc name. I don't fucking care if it changes, and I certainly don't want to have the fact of its change forced down my throat by some wanker deliberately making things break when it does after I've configured things for the opposite behaviour.

The bug report contends that it is necessary to introduce the deliberate breakage to avoid some people "upgrad[ing] to some hybrid mix between releases, breaking their system". Bollocks. Preventing that kind of breakage is what the fucking package dependency system is supposed to be for. If it really is a problem - which I dispute; I've got a "hybrid mix" of packages covering about 20 years and the dependency system can still cope - then the solution is to fix the fucking dependency deficiencies. NOT to just suddenly make it impossible to upgrade at all and spit out an error message complaining about something that doesn't even exist in your configuration and referring you to an explanatory man page which doesn't even bloody mention it.

The maintainers should have replied to this item with nothing more than a simple "don't be a dick", but the Debian organisation has suffered from a catastrophic failure of flaming great nipple filtering for the past decade or so, and about three and a half years later, the cunty code was added to the package. And as is so often the case with these things, for some weird reason it still didn't actually do anything for a further five years, but then suddenly sprang up apparently out of nowhere and caused a flood of people all getting the same stupid error which makes no sense.

At the time of writing, the most prominent search result for this problem is a thread on debian-user, which if you follow it through to this message, "explains" that "The Suite for testing changed from bullseye to bookworm, so you get this message", and says that the solution is to do apt-get update --allow-releaseinfo-change. Which is all very well, but:

- The original questioner clearly stated that "in my sources.list is neither bullseye nor bookworm as below (I use testing-security)". Yes, maybe the Suite for testing did change from bullseye to bookworm; but so fucking what? The sources.list doesn't use those terms at all, so what the fuck have we got an error message about them for all of a sudden when we never have before? This answer looks like the answerer hasn't read the question properly, didn't see that bit, and simply regurgitated a stock answer addressing the situation of people who do use bullseye/bookworm/etc in their sources.list, but which doesn't seem relevant to the situation the questioner described. And then the thread stops, so you never do get any explanation.

- In fact the solution is relevant, and the reason is that apt-get has been deliberately broken so that it complains about that shit whether you're using it or not. But it is not a permanent solution. It works once, and then everything appears to be fine until the next time the bullseye/bookworm/etc name changes. Then it fucking breaks again, and of course by that time you can't remember what the fucking magic word was any more so you have to solve the whole stupid bloody thing all over again.

So by now I had decided that the whole thing was an unrelieved pile of piss-arsed cunting shite, and it was time to get the sledgehammer out. I have to compile apt from source these days in any case because some stupid fucking bastard has made it depend on fucking systemd for fuck's sake so I have to excise that particular piece of moronic idiocy before I can install it at all. If I'm hacking out the fucking shitstemd bollocks in any case it's surely trivial to modify the patch to hack out the codename bollocks at the same time.

But when I was grepping the source code to find out where to start looking for what to change, I discovered that there DOES exist a config option to fix this dumb crap permanently. There's fuck all about it in the documentation, but it's defined in the source code. If you add Acquire::AllowReleaseInfoChange::Codename "true"; to /etc/apt/apt.conf then it disables the stupid bollocks permanently, so you don't have to arse around trying to dig back up some frantically obscure command option that you only use once every couple of years and then forget. You still get the message telling you the codename has changed, but it no longer treats it as an error, so the functionality is restored to normal and you can just take no notice of the guff.

Why the fuck doesn't anyone tell you about this? If they have to be cuntish enough to suddenly break something that's been working fine for years, they could at least have the decency to tell all the people who have suddenly been bitten by it about the once-and-for-all fix that already exists in the code so those people can go back to not worrying about it same as they always have.

It's a fucking cunt, this. Debian always used to be something that was straightforward to set up how you wanted it, with the things that you did want and without the things that you didn't. Of course there was a "default configuration" - there couldn't very well not be - but it was a basic starting point and it would let you do things differently without trying to fight you. That's a lot of the reason I use it in the first place, and it's definitely the reason I went back to it after trying Ubuntu which won't let you do fucking anything.

But now Debian seems to be taking Ubuntu as a model and adopting the attitude of "You WILL use this exactly and only in the specific way we say you ought to be using it and fuck you if you don't like that". The whole fucking shite about forcing shitstemd down everyone's throats is only the most conspicuous. They did much the same with pulseaudio only fewer people objected. There's this shite here, "you WILL comply with the mandate to fuck around taking notice of the silly names that keep changing their meaning because if you try and continue ignoring them we will break your system". There's another one which goes "you WILL hack around altering your boot configuration to do it the only way we have decided you will be allowed to because we have started putting vital libraries in /usr/lib instead of /lib for no reason so if you don't change it to mount /usr along with the root then it won't boot". There's fucking loads of this shit now and I wish to fuck they would fucking well pack it in.

Back to Pigeon's Nest

Be kind to pigeons

Valid HTML 4.01!