From 9a88e9ff0385f66e7c565a394908503dc6e916ad Mon Sep 17 00:00:00 2001 From: neodarz Date: Fri, 28 Apr 2017 00:30:19 +0200 Subject: Site updated at 2017-04-28T00:29:42+02:00 source branch was at: f1965c50670f611ef54f9471490d45a554f7d866 Correct a link --- build/blog/2014-10-25-os-x-package-receipts.html | 48 ++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 build/blog/2014-10-25-os-x-package-receipts.html (limited to 'build/blog/2014-10-25-os-x-package-receipts.html') diff --git a/build/blog/2014-10-25-os-x-package-receipts.html b/build/blog/2014-10-25-os-x-package-receipts.html new file mode 100644 index 00000000..863156ab --- /dev/null +++ b/build/blog/2014-10-25-os-x-package-receipts.html @@ -0,0 +1,48 @@ + + + + + + + +OS X package receipts + + + + + + + + +
This blog has been archived.
Visit my home page at zhimingwang.org.
+ +
+
+

OS X package receipts

+ +
+

I just learned something new. Whenever you install a pkg on OS X, OS X stores a receipt of what was installed in /var/db/receipts (I'm running OS X 10.9.5 at the time of writing), called a bom — bill of materials (I’d rather call it a manifest, whatever). This feature was introduced in NeXTSTEP. From man 5 bom:

+
+

The Mac OS X Installer uses a file system "bill of materials" to determine which files to install, remove, or upgrade. A bill of materials, bom, contains all the files within a directory, along with some information about each file. File information includes: the file's UNIX permissions, its owner and group, its size, its time of last modification, and so on. Also included are a checksum of each file and information about hard links.

+
+

man 5 bom is actually badly maintained, as it says "The bill of materials for installed packages are found within the package receipts located in /Library/Receipts," whereas those have been migrated to /var/db/receipts a long time ago.

+

.bom files are binary, but you can access the contents via lsbom. For instance, to list the files installed,

+
lsbom -f /var/db/receipts/org.macports.MacPorts.bom
+

Note that the paths printed are always relative to /. See man 1 lsbom for detailed option listing.

+

(Beware when you try to clean up unwanted packages using the lsbom listing. Packages might overwrite files, so make sure you review the listing first and know what you are doing. "Knowing what you are doing" is the prerequisite for using sudo anyway.)

+
+
+ + + -- cgit v1.2.1