1 # dpkg manual page - dpkg-fsys-usrunmess(8)
3 # Copyright © 2020-2021 Guillem Jover <guillem@debian.org>
5 # This is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
10 # This is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <https://www.gnu.org/licenses/>.
22 dpkg-fsys-usrunmess - undoes the merged-/usr-via-aliased-dirs mess
26 B<dpkg-fsys-usrunmess> [B<option>...]
30 B<dpkg-fsys-usrunmess> is a tool to fix up filesystems that have been
31 installed anew with recent installers with unfortunate defaults or
32 migrated to the broken merged /usr via aliased directories layout,
33 which is B<not> supported by dpkg. See the dpkg FAQ.
35 B<Note>: In Debian its tech-ctte has decreed that on the release after
36 bookworm the non-usrmerged layout is not going to be supported, and thus
37 some of its maintainers might not fix issues or intentionally remove
38 non-usrmerged support, so you will need decide and pick your poison.
40 The program will perform the following overall actions:
46 Check whether the system needs to be switched, otherwise do nothing,
50 Check for dpkg database consistency and otherwise abort.
54 Generate and install a regression prevention package, if requested on the
55 command-line or otherwise on the prompt.
59 Get the list of files and alternatives that need to be restored.
63 Look for untracked kernel modules files that need to be moved too.
67 Create a shadow hierarchy under F</.usrunmess>, by creating the directories
68 symlinks or hardlinking or copying the files as needed.
72 Prompt for confirmation before proceeding, if requested on the command-line.
76 Lock the dpkg database.
80 Mark all packages as half-configured to force running maintainer scripts
81 that might need to recreate files.
85 Replace the aliased directories with the shadow ones, by creating a backup
86 of the old symlinked directories and renaming the shadow ones over.
90 Relabel MAC information for directories and symlinks if necessary.
94 Remove backup symlinks.
98 Remove old moved objects, but defer directory removal.
102 Remove old deferred directories that are not referenced by dpkg-query.
106 Remove shadow root directory.
110 Register a B<policy-rc.d> to disallow service actions, which means that
111 services might need to be restarted afterwards, ideally via a reboot.
115 Reconfigure all packages.
119 Unregister the B<policy-rc.d> and restore the alternatives state.
123 B<Note>: When running the program from some shells such as L<bash(1)> or
124 L<zsh(1)>, after executing it, you might need to request the shell to
125 forget all remembered executable locations with for example C<hash -r>.
127 B<Note>: Some directories might linger after the migration in case they
128 contain untracked files. A list is printed once the script has finished
129 for further investigation.
131 B<Warning>: Note that this operation has the potential to render the system
132 unusable or broken in case of a sudden crash or reboot, unexpected state of
133 the system, or possible bugs in the script. Be prepared with recovery media
134 and consider doing backups beforehand.
140 =item B<-p>, B<--prompt>
142 Prompt at the time of no return, so that the debug output or the shadow
143 hierarchy can be evaluated before proceeding.
145 =item B<--prevention>
147 =item B<--no-prevention>
149 Enables or disables generating and installing a regression prevention package
151 If no option has been specified, the action to take will be prompted.
153 The generated package contains the B<Protected> field set to B<yes> to
154 protect against accidental removal of the package.
156 =item B<-n>, B<--no-act>
160 This option enables the dry-run mode, where no destructive action takes place,
161 only the preparatory part.
163 =item B<-?>, B<--help>
165 Show the usage message and exit.
169 Show the version and exit.
177 =item B<DPKG_USRUNMESS_NOACT>
179 This setting defines whether to enable dry-run mode.
185 L<https://wiki.debian.org/Teams/Dpkg/FAQ#broken-usrmerge>.