Disabling components of packages
Haiku's package manager presents installed packages as a read-only filesystem, so unlike other systems, it is not possible to just delete or rename a problematic driver or library. However, individual packaged files can be prevented from being exposed at boot time.
In the Boot Options menu, there is a "Disable components" option available to accomplish this. However, this method will only let you disable components of the main (haiku
) system package, and only until the next time you reboot.
Let's go through the few steps needed:
- Figure out which package contains the file that you want to disable, and whether the file is in a package located in the system or user file hierarchy. You can find the containing package name with "Get info" from Tracker's context menu on that file; look for
SYS:PACKAGE
in its "Attributes" tab. - Next, create a text file named
packages
in/boot/system/settings
, or in/boot/home/config/settings
. (The first folder is used for disabling components in system packages, the second for user packages.) - Inside the
packages
file, we put something like:Package package_name { BlockedEntries { path/to/blocked/entry ... } }
package_name
is the name of the package without version, for examplehaiku
.path/to/blocked/entry
is the relative path to the installation location, e.g.add-ons/Translators/FooTranslator
.
Any disabled entries will be ignored by packagefs and will no longer appear in the file system, until they are removed from the BlockedEntries
list and the system rebooted again.
Example
To disable the intel_extreme
driver and the xhci
driver, which are both part of the haiku
system package, the we create a /boot/system/settings/packages
and give it the following content:
Package haiku { BlockedEntries { add-ons/kernel/drivers/bin/intel_extreme add-ons/kernel/busses/usb/xhci } }
We then save the file and reboot. Once Haiku starts again, the file will be ignored by packagefs when the package is mounted.