/usr/bin/locale-check is missing from bionic LTS versions
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
base-files (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
After downgrading from 19.04 to 18.04 (which involved a bunch of `apt remove --purge` and manual dependency conflict resolution) I had the following error on logging into my machine:
```
bash: /usr/bin/
```
On investigation, it seems that this file is supposed to be provided by `base-files`, but it is not present in the two current LTS versions (10.1ubuntu2 and 10.2ubuntu2.2).
```
tl@hotbox:~$ apt download base-files=
Get:1 http://
Fetched 58.2 kB in 0s (1,000 kB/s)
tl@hotbox:~$ apt download base-files=
Get:1 http://
Fetched 58.2 kB in 0s (189 kB/s)
tl@hotbox:~$ dpkg -c base-files_
drwxr-xr-x root/root 0 2018-04-24 04:34 ./usr/bin/
tl@hotbox:~$ dpkg -c base-files_
drwxr-xr-x root/root 0 2018-08-20 09:44 ./usr/bin/
```
It is present in `bionic-updates` which is currently `10.1ubuntu2.5`, however.
The reason I think this happened to this system in particular is that as part of the dist-downgrade process I added the following to `/etc/apt/
```
Package: *
Pin: release a=bionic
Pin-Priority: 1001
```
This appears to have prevented me from getting `bionic-updates`. Removing this file allows apt to install `base-files` from `bionic-updates` and resolved the issue for me.
Downgrading is not supported.
Downgrading with the result that files / bugfixes present in the -updates pocket are not installed because you only installed from the release pocket is not a bug in Ubuntu. Any changes we make to a stable release after GA land only in the -updates pocket, never in the release pocket. So there is nothing we would change here to make this problem go away.
The reason you saw the error is that /etc/profile. d/01-locale- fix.sh and /usr/bin/ locale- check were both introduced to bionic after release, so are only in bionic-updates. However, /usr/bin/ locale- check is a regular packaged file, and /etc/profile. d/01-locale- fix.sh is a conffile; which means that on downgrade, /usr/bin/ locale- check is removed because it's not part of the older package, but /etc/profile. d/01-locale- fix.sh is not removed because conffiles are only removed with additional handling via the maintainer scripts, and there is no handling that would remove this conffile as part of a downgrade.
Almost no conffiles are correctly removed on downgrade to a version of the package earlier than the version which introduced the conffile.
This is why downgrades are not supported.