2022-11-14 07:36:48 |
Naomi Rose |
bug |
|
|
added bug |
2022-11-14 12:49:32 |
John Chittum |
bug task added |
|
livecd-rootfs (Ubuntu) |
|
2023-01-17 13:13:19 |
Launchpad Janitor |
livecd-rootfs (Ubuntu): status |
New |
Confirmed |
|
2023-01-17 13:35:43 |
Ferenc Wágner |
bug watch added |
|
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=963087 |
|
2023-06-19 09:34:23 |
Alain Clément |
bug |
|
|
added subscriber Alain Clément |
2023-07-08 11:22:25 |
Elvis Stansvik |
bug |
|
|
added subscriber Elvis Stansvik |
2023-09-01 19:11:05 |
Launchpad Janitor |
merge proposal linked |
|
https://code.launchpad.net/~utkarsh/livecd-rootfs/+git/livecd-rootfs/+merge/450490 |
|
2023-09-04 08:15:32 |
Utkarsh Gupta |
livecd-rootfs (Ubuntu): status |
Confirmed |
Fix Released |
|
2023-09-04 08:43:15 |
kalvdans |
bug |
|
|
added subscriber kalvdans |
2023-10-04 08:11:37 |
Utkarsh Gupta |
nominated for series |
|
Ubuntu Lunar |
|
2023-10-04 08:11:37 |
Utkarsh Gupta |
bug task added |
|
livecd-rootfs (Ubuntu Lunar) |
|
2023-10-04 08:11:37 |
Utkarsh Gupta |
nominated for series |
|
Ubuntu Jammy |
|
2023-10-04 08:11:37 |
Utkarsh Gupta |
bug task added |
|
livecd-rootfs (Ubuntu Jammy) |
|
2023-10-04 08:11:47 |
Utkarsh Gupta |
cloud-images: status |
New |
Fix Released |
|
2023-10-04 08:16:10 |
Launchpad Janitor |
merge proposal linked |
|
https://code.launchpad.net/~utkarsh/livecd-rootfs/+git/livecd-rootfs/+merge/452739 |
|
2023-10-04 08:21:41 |
Launchpad Janitor |
merge proposal linked |
|
https://code.launchpad.net/~utkarsh/livecd-rootfs/+git/livecd-rootfs/+merge/452742 |
|
2023-10-19 09:19:38 |
Utkarsh Gupta |
livecd-rootfs (Ubuntu): assignee |
|
Utkarsh Gupta (utkarsh) |
|
2023-10-19 09:19:41 |
Utkarsh Gupta |
livecd-rootfs (Ubuntu Jammy): assignee |
|
Utkarsh Gupta (utkarsh) |
|
2023-10-19 09:19:44 |
Utkarsh Gupta |
livecd-rootfs (Ubuntu Lunar): assignee |
|
Utkarsh Gupta (utkarsh) |
|
2023-10-26 15:47:26 |
Ubuntu Archive Robot |
bug |
|
|
added subscriber Philip Roche |
2023-10-26 21:41:34 |
Mauricio Faria de Oliveira |
bug |
|
|
added subscriber Mauricio Faria de Oliveira |
2023-10-27 12:18:25 |
Andreas Hasenack |
livecd-rootfs (Ubuntu Jammy): status |
New |
Incomplete |
|
2023-10-27 12:18:28 |
Andreas Hasenack |
livecd-rootfs (Ubuntu Lunar): status |
New |
Incomplete |
|
2023-11-10 10:12:51 |
Utkarsh Gupta |
description |
I am building a custom Docker image based on:
https://github.com/microsoft/vscode-dev-containers/tree/main/containers/ubuntu
I added a line that runs `yes | unminmize':
https://github.com/nomirose/devcontainer/commit/1ba51c651c06b9ce71c73e7bf016939d989cfa2c#diff-4c1f94864a9642897e2fa6c1d532830b6d1a2ba9d6b6f2f149178dde32cf0e77R10-R11
Here's from build log :
https://github.com/nomirose/devcontainer/actions/runs/3451129967/jobs/5760151170#step:6:1565
And here are the errors from the `uminmize` command:
#9 47.54 Reinstalling packages with system documentation in /usr/share/doc/ ..
#9 48.76 dpkg-query: error: --search needs at least one file name pattern argument
#9 48.76
#9 48.76 Use --help for help about querying packages.
#9 48.80 Reading package lists...
#9 49.49 Building dependency tree...
#9 49.62 Reading state information...
#9 49.76 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 49.76 Restoring system translations...
#9 50.97 dpkg-query: error: --search needs at least one file name pattern argument
#9 50.97
#9 50.97 Use --help for help about querying packages.
#9 51.01 Reading package lists...
#9 51.71 Building dependency tree...
#9 51.85 Reading state information...
#9 52.00 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 53.18 Documentation has been restored successfully.
#9 DONE 54.3s
Specifically, the error is:
dpkg-query: error: --search needs at least one file name pattern argument
I copped `/usr/local/sbin/unminimize` to my local directory to see if I could debug what was doing on.
When looking for packages with missing files in the `/usr/bin/man` directory, the script does this:
dpkg -S /usr/share/man/ |sed 's|, |\n|g;s|: [^:]*$||' | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
However, for the `/usr/share/docs/` the script does this:
dpkg --verify --verify-format rpm | awk '/..5...... \/usr\/share\/doc/ {print $2}' | sed 's|/[^/]*$||' | sort |uniq \
| xargs dpkg -S | sed 's|, |\n|g;s|: [^:]*$||' | uniq | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
The script runs the same command for the `/usr/share/locale/` directory.
In both cases, no packages ever make it to the `xargs dpkg -S` command, so the script throws an error. However, because the error occurs in a pipe, it is lost, and the script continues despite the `set -e` at the start (which is a bug in itself).
However, with a little experimentation, I found that the original command for `/usr/local/bin` works perfectly for the `/usr/share/docs/` and `/usr/share/locale/` directories.
Why not run the same command for all three directories? You could even wrap it in a function.
However, you could improve performance by combining all three into a single command.
The `unminimize` script notes:
# Reinstallation takes place in two steps because a single dpkg --verified
# command generates very long parameter list for "xargs dpkg -S" and may go
# over ARG_MAX. Since many packages have man pages the second download
# handles a much smaller amount of packages.
I understand the concern about hitting `ARG_MAX`, but I think a better solution to that problem would be to use `xargs -n` to set a limit on the maximum number of arguments. This change would allow xargs to run `dpkg -S` as many times as need (to avoid hitting ARG_MAX).
Doing it this way would also speed up the script.
There are many packages with missing files in multiple minmized directories, meaning that as it stands, even if the bug was fixed, some packages would be re-installed twice, maybe even three times.
(I have seen this for myself because I essentially wrote a shorter version of the script for my own use.) |
[Impact]
========
The `unminimize` command in livecd-rootfs doesn't work out of the box. When `unminimize` is run, it results into the following errors:
#9 47.54 Reinstalling packages with system documentation in /usr/share/doc/ ..
#9 48.76 dpkg-query: error: --search needs at least one file name pattern argument
#9 48.76
#9 48.76 Use --help for help about querying packages.
#9 48.80 Reading package lists...
#9 49.49 Building dependency tree...
#9 49.62 Reading state information...
#9 49.76 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 49.76 Restoring system translations...
#9 50.97 dpkg-query: error: --search needs at least one file name pattern argument
#9 50.97
#9 50.97 Use --help for help about querying packages.
#9 51.01 Reading package lists...
#9 51.71 Building dependency tree...
#9 51.85 Reading state information...
#9 52.00 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 53.18 Documentation has been restored successfully.
#9 DONE 54.3s
Specifically, the error is:
dpkg-query: error: --search needs at least one file name pattern argument
The problem is that prior to dpkg/1.21.0, there was a bug where dpkg -V/--verify couldn't list all the correct packages correctly but with that being fix and in archive since Jammy, this works perfectly but the syntax to report the missing files have changed. It just prints 'missing' now. With that new format, we can now fix the regex to simply list the packages.
[Test Plan]
===========
$ lxc launch ubuntu-minimal-daily:jammy jtemp --vm
$ lxc shell jtemp
# apt update
# unminimize
This will result in the above error.
# echo $?
1
Also notes that the above command failed to run successfully.
OTOH, with the fixed package, unminimize will run just fine and "echo $?" would say 0.
[Where Problems Could Occur]
============================
unminimize is already broken so not a lot of things can go wrong at this point. However, if a user has already made amendments to their unminimize script and adapted it to work differently for them, this update could break their existing set up and functionality. But I don't envision that happening a lot, really.
[OG Bug Report]
===============
I am building a custom Docker image based on:
https://github.com/microsoft/vscode-dev-containers/tree/main/containers/ubuntu
I added a line that runs `yes | unminmize':
https://github.com/nomirose/devcontainer/commit/1ba51c651c06b9ce71c73e7bf016939d989cfa2c#diff-4c1f94864a9642897e2fa6c1d532830b6d1a2ba9d6b6f2f149178dde32cf0e77R10-R11
Here's from build log :
https://github.com/nomirose/devcontainer/actions/runs/3451129967/jobs/5760151170#step:6:1565
And here are the errors from the `uminmize` command:
#9 47.54 Reinstalling packages with system documentation in /usr/share/doc/ ..
#9 48.76 dpkg-query: error: --search needs at least one file name pattern argument
#9 48.76
#9 48.76 Use --help for help about querying packages.
#9 48.80 Reading package lists...
#9 49.49 Building dependency tree...
#9 49.62 Reading state information...
#9 49.76 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 49.76 Restoring system translations...
#9 50.97 dpkg-query: error: --search needs at least one file name pattern argument
#9 50.97
#9 50.97 Use --help for help about querying packages.
#9 51.01 Reading package lists...
#9 51.71 Building dependency tree...
#9 51.85 Reading state information...
#9 52.00 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 53.18 Documentation has been restored successfully.
#9 DONE 54.3s
Specifically, the error is:
dpkg-query: error: --search needs at least one file name pattern argument
I copped `/usr/local/sbin/unminimize` to my local directory to see if I could debug what was doing on.
When looking for packages with missing files in the `/usr/bin/man` directory, the script does this:
dpkg -S /usr/share/man/ |sed 's|, |\n|g;s|: [^:]*$||' | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
However, for the `/usr/share/docs/` the script does this:
dpkg --verify --verify-format rpm | awk '/..5...... \/usr\/share\/doc/ {print $2}' | sed 's|/[^/]*$||' | sort |uniq \
| xargs dpkg -S | sed 's|, |\n|g;s|: [^:]*$||' | uniq | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
The script runs the same command for the `/usr/share/locale/` directory.
In both cases, no packages ever make it to the `xargs dpkg -S` command, so the script throws an error. However, because the error occurs in a pipe, it is lost, and the script continues despite the `set -e` at the start (which is a bug in itself).
However, with a little experimentation, I found that the original command for `/usr/local/bin` works perfectly for the `/usr/share/docs/` and `/usr/share/locale/` directories.
Why not run the same command for all three directories? You could even wrap it in a function.
However, you could improve performance by combining all three into a single command.
The `unminimize` script notes:
# Reinstallation takes place in two steps because a single dpkg --verified
# command generates very long parameter list for "xargs dpkg -S" and may go
# over ARG_MAX. Since many packages have man pages the second download
# handles a much smaller amount of packages.
I understand the concern about hitting `ARG_MAX`, but I think a better solution to that problem would be to use `xargs -n` to set a limit on the maximum number of arguments. This change would allow xargs to run `dpkg -S` as many times as need (to avoid hitting ARG_MAX).
Doing it this way would also speed up the script.
There are many packages with missing files in multiple minmized directories, meaning that as it stands, even if the bug was fixed, some packages would be re-installed twice, maybe even three times.
(I have seen this for myself because I essentially wrote a shorter version of the script for my own use.) |
|
2023-11-10 10:12:55 |
Utkarsh Gupta |
livecd-rootfs (Ubuntu Jammy): status |
Incomplete |
New |
|
2023-11-10 10:12:58 |
Utkarsh Gupta |
livecd-rootfs (Ubuntu Lunar): status |
Incomplete |
New |
|
2023-11-10 10:13:28 |
Launchpad Janitor |
livecd-rootfs (Ubuntu Jammy): status |
New |
Confirmed |
|
2023-11-10 10:13:28 |
Launchpad Janitor |
livecd-rootfs (Ubuntu Lunar): status |
New |
Confirmed |
|
2023-12-06 21:47:30 |
Ubuntu Archive Robot |
bug |
|
|
added subscriber Steve Langasek |
2023-12-07 18:24:58 |
Andreas Hasenack |
livecd-rootfs (Ubuntu Lunar): status |
Confirmed |
Fix Committed |
|
2023-12-07 18:25:00 |
Andreas Hasenack |
bug |
|
|
added subscriber Ubuntu Stable Release Updates Team |
2023-12-07 18:25:06 |
Andreas Hasenack |
bug |
|
|
added subscriber SRU Verification |
2023-12-07 18:25:12 |
Andreas Hasenack |
tags |
|
verification-needed verification-needed-lunar |
|
2023-12-07 18:48:11 |
Andreas Hasenack |
livecd-rootfs (Ubuntu Jammy): status |
Confirmed |
Fix Committed |
|
2023-12-07 18:48:18 |
Andreas Hasenack |
tags |
verification-needed verification-needed-lunar |
verification-needed verification-needed-jammy verification-needed-lunar |
|
2023-12-08 05:08:53 |
Steve Langasek |
summary |
The unminimize command fails to reinstall packags with missing files in the `share` and `locale` directories |
The unminimize command fails to reinstall packages with missing files in the `share` and `locale` directories |
|
2023-12-14 17:31:13 |
Philip Roche |
tags |
verification-needed verification-needed-jammy verification-needed-lunar |
block-proposed verification-needed verification-needed-jammy verification-needed-lunar |
|
2023-12-14 17:31:33 |
Philip Roche |
tags |
block-proposed verification-needed verification-needed-jammy verification-needed-lunar |
block-proposed-jammy verification-needed verification-needed-jammy verification-needed-lunar |
|
2024-01-04 22:04:53 |
Launchpad Janitor |
livecd-rootfs (Ubuntu Lunar): status |
Fix Committed |
Fix Released |
|
2024-01-11 11:31:40 |
Utkarsh Gupta |
tags |
block-proposed-jammy verification-needed verification-needed-jammy verification-needed-lunar |
block-proposed-jammy verification-done-jammy verification-done-lunar verification-needed |
|
2024-01-12 15:43:02 |
Ubuntu Archive Robot |
bug |
|
|
added subscriber Utkarsh Gupta |
2024-01-15 15:19:55 |
Łukasz Zemczak |
tags |
block-proposed-jammy verification-done-jammy verification-done-lunar verification-needed |
block-proposed-jammy verification-done-lunar verification-needed verification-needed-jammy |
|
2024-01-16 07:00:31 |
Utkarsh Gupta |
tags |
block-proposed-jammy verification-done-lunar verification-needed verification-needed-jammy |
block-proposed-jammy verification-done-jammy verification-done-lunar verification-needed |
|
2024-01-16 07:03:07 |
Utkarsh Gupta |
description |
[Impact]
========
The `unminimize` command in livecd-rootfs doesn't work out of the box. When `unminimize` is run, it results into the following errors:
#9 47.54 Reinstalling packages with system documentation in /usr/share/doc/ ..
#9 48.76 dpkg-query: error: --search needs at least one file name pattern argument
#9 48.76
#9 48.76 Use --help for help about querying packages.
#9 48.80 Reading package lists...
#9 49.49 Building dependency tree...
#9 49.62 Reading state information...
#9 49.76 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 49.76 Restoring system translations...
#9 50.97 dpkg-query: error: --search needs at least one file name pattern argument
#9 50.97
#9 50.97 Use --help for help about querying packages.
#9 51.01 Reading package lists...
#9 51.71 Building dependency tree...
#9 51.85 Reading state information...
#9 52.00 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 53.18 Documentation has been restored successfully.
#9 DONE 54.3s
Specifically, the error is:
dpkg-query: error: --search needs at least one file name pattern argument
The problem is that prior to dpkg/1.21.0, there was a bug where dpkg -V/--verify couldn't list all the correct packages correctly but with that being fix and in archive since Jammy, this works perfectly but the syntax to report the missing files have changed. It just prints 'missing' now. With that new format, we can now fix the regex to simply list the packages.
[Test Plan]
===========
$ lxc launch ubuntu-minimal-daily:jammy jtemp --vm
$ lxc shell jtemp
# apt update
# unminimize
This will result in the above error.
# echo $?
1
Also notes that the above command failed to run successfully.
OTOH, with the fixed package, unminimize will run just fine and "echo $?" would say 0.
[Where Problems Could Occur]
============================
unminimize is already broken so not a lot of things can go wrong at this point. However, if a user has already made amendments to their unminimize script and adapted it to work differently for them, this update could break their existing set up and functionality. But I don't envision that happening a lot, really.
[OG Bug Report]
===============
I am building a custom Docker image based on:
https://github.com/microsoft/vscode-dev-containers/tree/main/containers/ubuntu
I added a line that runs `yes | unminmize':
https://github.com/nomirose/devcontainer/commit/1ba51c651c06b9ce71c73e7bf016939d989cfa2c#diff-4c1f94864a9642897e2fa6c1d532830b6d1a2ba9d6b6f2f149178dde32cf0e77R10-R11
Here's from build log :
https://github.com/nomirose/devcontainer/actions/runs/3451129967/jobs/5760151170#step:6:1565
And here are the errors from the `uminmize` command:
#9 47.54 Reinstalling packages with system documentation in /usr/share/doc/ ..
#9 48.76 dpkg-query: error: --search needs at least one file name pattern argument
#9 48.76
#9 48.76 Use --help for help about querying packages.
#9 48.80 Reading package lists...
#9 49.49 Building dependency tree...
#9 49.62 Reading state information...
#9 49.76 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 49.76 Restoring system translations...
#9 50.97 dpkg-query: error: --search needs at least one file name pattern argument
#9 50.97
#9 50.97 Use --help for help about querying packages.
#9 51.01 Reading package lists...
#9 51.71 Building dependency tree...
#9 51.85 Reading state information...
#9 52.00 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 53.18 Documentation has been restored successfully.
#9 DONE 54.3s
Specifically, the error is:
dpkg-query: error: --search needs at least one file name pattern argument
I copped `/usr/local/sbin/unminimize` to my local directory to see if I could debug what was doing on.
When looking for packages with missing files in the `/usr/bin/man` directory, the script does this:
dpkg -S /usr/share/man/ |sed 's|, |\n|g;s|: [^:]*$||' | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
However, for the `/usr/share/docs/` the script does this:
dpkg --verify --verify-format rpm | awk '/..5...... \/usr\/share\/doc/ {print $2}' | sed 's|/[^/]*$||' | sort |uniq \
| xargs dpkg -S | sed 's|, |\n|g;s|: [^:]*$||' | uniq | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
The script runs the same command for the `/usr/share/locale/` directory.
In both cases, no packages ever make it to the `xargs dpkg -S` command, so the script throws an error. However, because the error occurs in a pipe, it is lost, and the script continues despite the `set -e` at the start (which is a bug in itself).
However, with a little experimentation, I found that the original command for `/usr/local/bin` works perfectly for the `/usr/share/docs/` and `/usr/share/locale/` directories.
Why not run the same command for all three directories? You could even wrap it in a function.
However, you could improve performance by combining all three into a single command.
The `unminimize` script notes:
# Reinstallation takes place in two steps because a single dpkg --verified
# command generates very long parameter list for "xargs dpkg -S" and may go
# over ARG_MAX. Since many packages have man pages the second download
# handles a much smaller amount of packages.
I understand the concern about hitting `ARG_MAX`, but I think a better solution to that problem would be to use `xargs -n` to set a limit on the maximum number of arguments. This change would allow xargs to run `dpkg -S` as many times as need (to avoid hitting ARG_MAX).
Doing it this way would also speed up the script.
There are many packages with missing files in multiple minmized directories, meaning that as it stands, even if the bug was fixed, some packages would be re-installed twice, maybe even three times.
(I have seen this for myself because I essentially wrote a shorter version of the script for my own use.) |
[Impact]
========
The `unminimize` command in livecd-rootfs doesn't work out of the box. When `unminimize` is run, it results into the following errors:
#9 47.54 Reinstalling packages with system documentation in /usr/share/doc/ ..
#9 48.76 dpkg-query: error: --search needs at least one file name pattern argument
#9 48.76
#9 48.76 Use --help for help about querying packages.
#9 48.80 Reading package lists...
#9 49.49 Building dependency tree...
#9 49.62 Reading state information...
#9 49.76 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 49.76 Restoring system translations...
#9 50.97 dpkg-query: error: --search needs at least one file name pattern argument
#9 50.97
#9 50.97 Use --help for help about querying packages.
#9 51.01 Reading package lists...
#9 51.71 Building dependency tree...
#9 51.85 Reading state information...
#9 52.00 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 53.18 Documentation has been restored successfully.
#9 DONE 54.3s
Specifically, the error is:
dpkg-query: error: --search needs at least one file name pattern argument
The problem is that prior to dpkg/1.21.0, there was a bug where dpkg -V/--verify couldn't list all the correct packages correctly but with that being fix and in archive since Jammy, this works perfectly but the syntax to report the missing files have changed. It just prints 'missing' now. With that new format, we can now fix the regex to simply list the packages.
[Test Plan]
===========
1. Create an image with the changes:
$ ubuntu-bartender --build-provider gce --hook-extras-dir "$(pwd)/cpc_packaging.extra" --livecd-rootfs-branch ubuntu/jammy -- --series jammy --project ubuntu-cpc --image-target gce --subproject minimized
2. Boot into that image. Ensure it's a minimized image.
3. Run update and unminimize.
# apt update
# unminimize
This will result in the above error.
# echo $?
1
Also notes that the above command failed to run successfully.
OTOH, with the fixed package, unminimize will run just fine and "echo $?" would say 0.
[Where Problems Could Occur]
============================
unminimize is already broken so not a lot of things can go wrong at this point. However, if a user has already made amendments to their unminimize script and adapted it to work differently for them, this update could break their existing set up and functionality. But I don't envision that happening a lot, really.
[OG Bug Report]
===============
I am building a custom Docker image based on:
https://github.com/microsoft/vscode-dev-containers/tree/main/containers/ubuntu
I added a line that runs `yes | unminmize':
https://github.com/nomirose/devcontainer/commit/1ba51c651c06b9ce71c73e7bf016939d989cfa2c#diff-4c1f94864a9642897e2fa6c1d532830b6d1a2ba9d6b6f2f149178dde32cf0e77R10-R11
Here's from build log :
https://github.com/nomirose/devcontainer/actions/runs/3451129967/jobs/5760151170#step:6:1565
And here are the errors from the `uminmize` command:
#9 47.54 Reinstalling packages with system documentation in /usr/share/doc/ ..
#9 48.76 dpkg-query: error: --search needs at least one file name pattern argument
#9 48.76
#9 48.76 Use --help for help about querying packages.
#9 48.80 Reading package lists...
#9 49.49 Building dependency tree...
#9 49.62 Reading state information...
#9 49.76 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 49.76 Restoring system translations...
#9 50.97 dpkg-query: error: --search needs at least one file name pattern argument
#9 50.97
#9 50.97 Use --help for help about querying packages.
#9 51.01 Reading package lists...
#9 51.71 Building dependency tree...
#9 51.85 Reading state information...
#9 52.00 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
#9 53.18 Documentation has been restored successfully.
#9 DONE 54.3s
Specifically, the error is:
dpkg-query: error: --search needs at least one file name pattern argument
I copped `/usr/local/sbin/unminimize` to my local directory to see if I could debug what was doing on.
When looking for packages with missing files in the `/usr/bin/man` directory, the script does this:
dpkg -S /usr/share/man/ |sed 's|, |\n|g;s|: [^:]*$||' | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
However, for the `/usr/share/docs/` the script does this:
dpkg --verify --verify-format rpm | awk '/..5...... \/usr\/share\/doc/ {print $2}' | sed 's|/[^/]*$||' | sort |uniq \
| xargs dpkg -S | sed 's|, |\n|g;s|: [^:]*$||' | uniq | DEBIAN_FRONTEND=noninteractive xargs apt-get install --reinstall -y
The script runs the same command for the `/usr/share/locale/` directory.
In both cases, no packages ever make it to the `xargs dpkg -S` command, so the script throws an error. However, because the error occurs in a pipe, it is lost, and the script continues despite the `set -e` at the start (which is a bug in itself).
However, with a little experimentation, I found that the original command for `/usr/local/bin` works perfectly for the `/usr/share/docs/` and `/usr/share/locale/` directories.
Why not run the same command for all three directories? You could even wrap it in a function.
However, you could improve performance by combining all three into a single command.
The `unminimize` script notes:
# Reinstallation takes place in two steps because a single dpkg --verified
# command generates very long parameter list for "xargs dpkg -S" and may go
# over ARG_MAX. Since many packages have man pages the second download
# handles a much smaller amount of packages.
I understand the concern about hitting `ARG_MAX`, but I think a better solution to that problem would be to use `xargs -n` to set a limit on the maximum number of arguments. This change would allow xargs to run `dpkg -S` as many times as need (to avoid hitting ARG_MAX).
Doing it this way would also speed up the script.
There are many packages with missing files in multiple minmized directories, meaning that as it stands, even if the bug was fixed, some packages would be re-installed twice, maybe even three times.
(I have seen this for myself because I essentially wrote a shorter version of the script for my own use.) |
|
2024-01-16 18:33:11 |
Philip Roche |
tags |
block-proposed-jammy verification-done-jammy verification-done-lunar verification-needed |
block-proposed-jammy verification-done verification-done-jammy verification-done-lunar |
|
2024-01-17 11:44:33 |
Łukasz Zemczak |
tags |
block-proposed-jammy verification-done verification-done-jammy verification-done-lunar |
verification-done verification-done-jammy verification-done-lunar |
|
2024-01-17 11:44:47 |
Launchpad Janitor |
livecd-rootfs (Ubuntu Jammy): status |
Fix Committed |
Fix Released |
|
2024-01-17 11:45:06 |
Łukasz Zemczak |
removed subscriber Ubuntu Stable Release Updates Team |
|
|
|