<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.pcbsd.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.pcbsd.org/api.php?action=feedcontributions&amp;user=Krismoore&amp;feedformat=atom</id>
		<title>PC-BSD Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.pcbsd.org/api.php?action=feedcontributions&amp;user=Krismoore&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Special:Contributions/Krismoore"/>
		<updated>2013-05-22T17:26:18Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.3</generator>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Host_a_Mirror</id>
		<title>Host a Mirror</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Host_a_Mirror"/>
				<updated>2013-04-08T16:57:52Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: Change mirror flags to something which helps keep our package sets consistent&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{NavHeader|back=Purchase PC-BSD® Swag|forward=Seed a Torrent}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We are always interested in more download mirrors. If you have a system with a high-speed connection, 350-500GB of space, and the ability to '''rsync''' with a host, you can greatly help the PC-BSD® project and PC-BSD® users by becoming a mirror. More mirrors means faster download speeds and more geographic locations for users to download from.&lt;br /&gt;
&lt;br /&gt;
This '''rsync''' command will mirror the entire collection of installation files and PBIs:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box='''rsync -vaz --delete-delay --delay-updates isc.pcbsd.org::ftp .'''}}&lt;br /&gt;
&lt;br /&gt;
That command should be run as a '''cron''' job with a recommended frequency of at least once daily with a preferred interval of every 12 hours.&lt;br /&gt;
&lt;br /&gt;
Once you have begun the '''rsync''' process, send an email to kris at pcbsd dot org letting him know the URL of the mirror so that the new mirror can get listed and become available to users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[category:handbook]]&lt;br /&gt;
[[category:Supporting PC-BSD®]]&lt;br /&gt;
[[category:Host a Mirror]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE</id>
		<title>Convert a FreeBSD System to PC-BSD®</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE"/>
				<updated>2013-04-08T16:30:10Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Switching to our PKGNG repo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHome|custompagename=Turn FreeBSD into PC-BSD{{r}}|custompagecategory={{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
With the changeover to PKGNG as the backend in PC-BSD / TrueOS, it is now easier than ever to convert a FreeBSD system into a PC-BSD desktop or TrueOS server. &lt;br /&gt;
&lt;br /&gt;
Our PKGNG repos can also be used by FreeBSD users who just want access to a full package repo, with frequent updates. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Switching to our PKGNG repo ==&lt;br /&gt;
&lt;br /&gt;
On your FreeBSD system, jail, etc, you will first need to install the latest pkgng binaries, located in the ports tree under [http://www.freshports.org/ports-mgmt/pkg/ ports-mgmt/pkg]&lt;br /&gt;
&lt;br /&gt;
After installing PKGNG, you'll probably want to run the command &amp;quot;'''pkg2ng'''&amp;quot; to import your existing packages. &lt;br /&gt;
&lt;br /&gt;
Next, you will need to setup access to the PC-BSD repository. Start by creating the file '''/usr/local/etc/pkg.conf''' to look like example below:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box=packagesite: {{http}}ftp.pcbsd.org/pub/mirror/packages/9.1-RELEASE/amd64/&lt;br /&gt;
PUBKEY: /usr/local/etc/pkg-pubkey.cert&lt;br /&gt;
PKG_CACHEDIR: /usr/local/tmp}}&lt;br /&gt;
&lt;br /&gt;
You will want to change the packagesite: variable to a particular [http://www.pcbsd.org/getmirrors.php?url=packages PC-BSD mirror] close to your location, and in addition change the 9.1-RELEASE / amd64 to the release / architecture you want to use. Click [http://www.pcbsd.org/getmirrors.php?url=packages here] to get a list of mirrors &amp;amp; package sets available.&lt;br /&gt;
&lt;br /&gt;
Next you will need to download our repo's [http://trac.pcbsd.org/export/21629/pcbsd/current/src-sh/pc-extractoverlay/desktop-overlay/usr/local/etc/pkg-pubkey.cert public key cert file], and copy it to '''/usr/local/etc/pkg-pubkey.cert'''.&lt;br /&gt;
&lt;br /&gt;
With this in place, you will probably want to start by updating your packages to the latest versions from the repo. You may do so by running the following command:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pkg upgrade -fy}}&lt;br /&gt;
&lt;br /&gt;
When that command finishes, you should be good to go! You may now use the '''pkg''' command normally to install / remove / upgrade packages from our repo.&lt;br /&gt;
&lt;br /&gt;
== Converting to PC-BSD ==&lt;br /&gt;
&lt;br /&gt;
With your initial repo setup complete, it is now easy to convert your system into a PC-BSD desktop using the following commands:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pkg install -yf pcbsd-base&lt;br /&gt;
{{pound}} rehash&lt;br /&gt;
{{pound}} pbreg set /PC-BSD/SysType PCBSD&lt;br /&gt;
{{pound}} pc-extractoverlay desktop&lt;br /&gt;
{{pound}} pc-extractoverlay ports}}&lt;br /&gt;
&lt;br /&gt;
With these commands finished, you can now reboot and the GDM login manager will be started automatically bringing you to your desktop. If you want to run the PC-BSD display wizard / first boot wizards you can also trigger that before rebooting:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} touch /var/.runxsetup&lt;br /&gt;
{{pound}} touch /var/.pcbsd-firstboot&lt;br /&gt;
{{pound}} touch /var/.pcbsd-firstgui}}&lt;br /&gt;
&lt;br /&gt;
If you are trying to convert a pre-release FreeBSD, such as 10-CURRENT, you may need to specify the PBI version of what to pull from. &lt;br /&gt;
&lt;br /&gt;
To do so, edit '''/usr/local/etc/pbi.conf''' and add this line:&lt;br /&gt;
 &lt;br /&gt;
 PBI_FBSDMAJOR: 9&lt;br /&gt;
&lt;br /&gt;
TIP!&lt;br /&gt;
&lt;br /&gt;
If you are using NVIDIA video hardware you may want to load their driver before rebooting into the display wizard:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pc-metapkgmanager add NVIDIA}}&lt;br /&gt;
&lt;br /&gt;
== Converting to TrueOS ==&lt;br /&gt;
&lt;br /&gt;
If you wish to convert your server into TrueOS you can quickly do so using the following commands:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pkg install -yf trueos-base&lt;br /&gt;
{{pound}} rehash&lt;br /&gt;
{{pound}} pbreg set /PC-BSD/SysType TRUEOS&lt;br /&gt;
{{pound}} pc-extractoverlay server&lt;br /&gt;
{{pound}} pc-extractoverlay ports}}&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Build_Testing</id>
		<title>PBI Build Testing</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Build_Testing"/>
				<updated>2013-04-05T15:28:06Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHome}}&lt;br /&gt;
This area of the wiki is for those who have worked on turning a FreeBSD port into a PBI. Those who wish to add their results may do so in the table below.&lt;br /&gt;
&lt;br /&gt;
=== Getting a port turned into a PBI ===&lt;br /&gt;
&lt;br /&gt;
If you wish to keep your favorite port across system updates, there is more than one way to accomplish this, but soon to become common is the creation of a PBI. The process of turning a port into a PBI can be a very simple matter of either using [[PBI Module Builder Guide#Creating a New PBI with pbi_makeport|'''pbi_makeport''']] from the commandline, or the GUIfied '''[[EasyPBI]]''' program. However, not every port submits so easily to this conversion process, and sometimes extra interaction is needed in order to succeed. The purpose of this area is to help document how those challenging ports get turned into PBIs and also perhaps, by way of this information, assist with improvement to the tools that would automate the process.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This page pertains to PBI version 9.&lt;br /&gt;
&lt;br /&gt;
=== What has been Attempted ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=100%|caption=: Ports that have been attempted. Is this version of the port a ''One-Click'' PBI creation candidate?}}&lt;br /&gt;
{{Tbl-title|width=8%|'''Category'''}}&lt;br /&gt;
{{Tbl-title|width=23%|'''Port name'''}}&lt;br /&gt;
{{Tbl-title|width=7%|'''Version'''}}&lt;br /&gt;
{{Tbl-title|width=10%|'''Options'''}}&lt;br /&gt;
{{Tbl-title|width=6%|'''1-Click'''}}&lt;br /&gt;
{{Tbl-title|width=49%|'''Special changes (and/or errors)'''}}&lt;br /&gt;
|-  &amp;lt;!-- PLEASE do not simply update version numbers without having also proven that all the other details remain true. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=1|sysutils}}&lt;br /&gt;
{{Tbl-cell|row=1|'''easypbi'''}}&lt;br /&gt;
{{Tbl-cell|row=1|1.0}}&lt;br /&gt;
{{Tbl-cell|row=1|defaults}}&lt;br /&gt;
{{Tbl-cell|row=1|yes}}&lt;br /&gt;
{{Tbl-cell|row=1|}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=2|www}}&lt;br /&gt;
{{Tbl-cell|row=2|'''firefox'''}}&lt;br /&gt;
{{Tbl-cell|row=2|8.0,1}}&lt;br /&gt;
{{Tbl-cell|row=2|defaults}}&lt;br /&gt;
{{Tbl-cell|row=2|yes}}&lt;br /&gt;
{{Tbl-cell|row=2|needs adjustment to define desktop icon}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=3|mail}}&lt;br /&gt;
{{Tbl-cell|row=3|'''gmail-notify'''}}&lt;br /&gt;
{{Tbl-cell|row=3|1.6.1.1_4}}&lt;br /&gt;
{{Tbl-cell|row=3|defaults}}&lt;br /&gt;
{{Tbl-cell|row=3|yes}}&lt;br /&gt;
{{Tbl-cell|row=3|needs adjustment to define desktop icon}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=4|irc}}&lt;br /&gt;
{{Tbl-cell|row=4|'''quassel'''}}&lt;br /&gt;
{{Tbl-cell|row=4|0.73}}&lt;br /&gt;
{{Tbl-cell|row=4|}}&lt;br /&gt;
{{Tbl-cell|row=4|no}}&lt;br /&gt;
{{Tbl-cell|row=4|needs work; cannot create monolithic version, other versions have problems.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=5|emulators}}&lt;br /&gt;
{{Tbl-cell|row=5|'''virtualbox-ose'''}}&lt;br /&gt;
{{Tbl-cell|row=5|4.0.14}}&lt;br /&gt;
{{Tbl-cell|row=5|defaults}}&lt;br /&gt;
{{Tbl-cell|row=5|no}}&lt;br /&gt;
{{Tbl-cell|row=5|seems like it cannot pull-in kernel source}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=6|emulators}}&lt;br /&gt;
{{Tbl-cell|row=6|'''virtualbox-ose-additions'''}}&lt;br /&gt;
{{Tbl-cell|row=6|4.0.14}}&lt;br /&gt;
{{Tbl-cell|row=6|defaults}}&lt;br /&gt;
{{Tbl-cell|row=6|no}}&lt;br /&gt;
{{Tbl-cell|row=6|seems like it cannot pull-in kernel source}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=7|emulators}}&lt;br /&gt;
{{Tbl-cell|row=7|'''virtualbox-ose-kmod'''}}&lt;br /&gt;
{{Tbl-cell|row=7|4.0.14}}&lt;br /&gt;
{{Tbl-cell|row=7|defaults}}&lt;br /&gt;
{{Tbl-cell|row=7|no}}&lt;br /&gt;
{{Tbl-cell|row=7|seems like it cannot pull-in kernel source}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=8|deskutils}}&lt;br /&gt;
{{Tbl-cell|row=8|'''znotes'''}}&lt;br /&gt;
{{Tbl-cell|row=8|0.45}}&lt;br /&gt;
{{Tbl-cell|row=8|defaults}}&lt;br /&gt;
{{Tbl-cell|row=8|yes}}&lt;br /&gt;
{{Tbl-cell|row=8|needs adjustment to define included desktop icon}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''''One-click candidates''''' are fully functional but can have minor flaws, such as a generic desktop/menu icon, or appearing in ''lost &amp;amp; found''. Some ports have various non-default options which may prevent creation or cause a substantially different PBI to be made that either performs differently or lacks certain features (such as NLS).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{GroupListHeading|group=tables}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Build_Testing</id>
		<title>PBI Build Testing</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Build_Testing"/>
				<updated>2013-04-05T15:19:23Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: Testing pdfbook functionality&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHome}}&lt;br /&gt;
This area of the wiki is for those who have worked on turning a FreeBSD port into a PBI. Those who wish to add their results may do so in the table below.&lt;br /&gt;
&lt;br /&gt;
=== Getting a port turned into a PBI ===&lt;br /&gt;
&lt;br /&gt;
If you wish to keep your favorite port across system updates, there is more than one way to accomplish this, but soon to become common is the creation of a PBI. The process of turning a port into a PBI can be a very simple matter of either using [[PBI Module Builder Guide#Creating a New PBI with pbi_makeport|'''pbi_makeport''']] from the commandline, or the GUIfied '''[[EasyPBI]]''' program. However, not every port submits so easily to this conversion process, and sometimes extra interaction is needed in order to succeed. The purpose of this area is to help document how those challenging ports get turned into PBIs and also perhaps, by way of this information, assist with improvement to the tools that would automate the process.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This page pertains to PBI version 9.&lt;br /&gt;
&lt;br /&gt;
=== What has been Attempted ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=100%|caption=: Ports that have been attempted. Is this version of the port a ''One-Click'' PBI creation candidate?}}&lt;br /&gt;
{{Tbl-title|width=8%|'''Category'''}}&lt;br /&gt;
{{Tbl-title|width=23%|'''Port name'''}}&lt;br /&gt;
{{Tbl-title|width=7%|'''Version'''}}&lt;br /&gt;
{{Tbl-title|width=10%|'''Options'''}}&lt;br /&gt;
{{Tbl-title|width=6%|'''1-Click'''}}&lt;br /&gt;
{{Tbl-title|width=49%|'''Special changes (and/or errors)'''}}&lt;br /&gt;
|-  &amp;lt;!-- PLEASE do not simply update version numbers without having also proven that all the other details remain true. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=1|sysutils}}&lt;br /&gt;
{{Tbl-cell|row=1|'''easypbi'''}}&lt;br /&gt;
{{Tbl-cell|row=1|1.0}}&lt;br /&gt;
{{Tbl-cell|row=1|defaults}}&lt;br /&gt;
{{Tbl-cell|row=1|yes}}&lt;br /&gt;
{{Tbl-cell|row=1|}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=2|www}}&lt;br /&gt;
{{Tbl-cell|row=2|'''firefox'''}}&lt;br /&gt;
{{Tbl-cell|row=2|8.0,1}}&lt;br /&gt;
{{Tbl-cell|row=2|defaults}}&lt;br /&gt;
{{Tbl-cell|row=2|yes}}&lt;br /&gt;
{{Tbl-cell|row=2|needs adjustment to define desktop icon}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=3|mail}}&lt;br /&gt;
{{Tbl-cell|row=3|'''gmail-notify'''}}&lt;br /&gt;
{{Tbl-cell|row=3|1.6.1.1_4}}&lt;br /&gt;
{{Tbl-cell|row=3|defaults}}&lt;br /&gt;
{{Tbl-cell|row=3|yes}}&lt;br /&gt;
{{Tbl-cell|row=3|needs adjustment to define desktop icon}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=4|irc}}&lt;br /&gt;
{{Tbl-cell|row=4|'''quassel'''}}&lt;br /&gt;
{{Tbl-cell|row=4|0.73}}&lt;br /&gt;
{{Tbl-cell|row=4|}}&lt;br /&gt;
{{Tbl-cell|row=4|no}}&lt;br /&gt;
{{Tbl-cell|row=4|needs work; cannot create monolithic version, other versions have problems.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=5|emulators}}&lt;br /&gt;
{{Tbl-cell|row=5|'''virtualbox-ose'''}}&lt;br /&gt;
{{Tbl-cell|row=5|4.0.14}}&lt;br /&gt;
{{Tbl-cell|row=5|defaults}}&lt;br /&gt;
{{Tbl-cell|row=5|no}}&lt;br /&gt;
{{Tbl-cell|row=5|seems like it cannot pull-in kernel source}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=6|emulators}}&lt;br /&gt;
{{Tbl-cell|row=6|'''virtualbox-ose-additions'''}}&lt;br /&gt;
{{Tbl-cell|row=6|4.0.14}}&lt;br /&gt;
{{Tbl-cell|row=6|defaults}}&lt;br /&gt;
{{Tbl-cell|row=6|no}}&lt;br /&gt;
{{Tbl-cell|row=6|seems like it cannot pull-in kernel source}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=7|emulators}}&lt;br /&gt;
{{Tbl-cell|row=7|'''virtualbox-ose-kmod'''}}&lt;br /&gt;
{{Tbl-cell|row=7|4.0.14}}&lt;br /&gt;
{{Tbl-cell|row=7|defaults}}&lt;br /&gt;
{{Tbl-cell|row=7|no}}&lt;br /&gt;
{{Tbl-cell|row=7|seems like it cannot pull-in kernel source}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-cell|row=8|deskutils}}&lt;br /&gt;
{{Tbl-cell|row=8|'''znotes'''}}&lt;br /&gt;
{{Tbl-cell|row=8|0.45}}&lt;br /&gt;
{{Tbl-cell|row=8|defaults}}&lt;br /&gt;
{{Tbl-cell|row=8|yes}}&lt;br /&gt;
{{Tbl-cell|row=8|needs adjustment to define included desktop icon}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''''One-click candidates''''' are fully functional but can have minor flaws, such as a generic desktop/menu icon, or appearing in ''lost &amp;amp; found''. Some ports have various non-default options which may prevent creation or cause a substantially different PBI to be made that either performs differently or lacks certain features (such as NLS).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{GroupListHeading|group=tables}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[{{fullurl:{{FULLPAGENAMEE}}|action=pdfbook}} download this selection of articles as a PDF book]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE</id>
		<title>Convert a FreeBSD System to PC-BSD®</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE"/>
				<updated>2013-04-02T15:36:00Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHome|custompagename=Turn FreeBSD into PC-BSD{{r}}|custompagecategory={{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
With the changeover to PKGNG as the backend in PC-BSD / TrueOS, it is now easier than ever to convert a FreeBSD system into a PC-BSD desktop or TrueOS server. &lt;br /&gt;
&lt;br /&gt;
Our PKGNG repos can also be used by FreeBSD users who just want access to a full package repo, with frequent updates. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Switching to our PKGNG repo ==&lt;br /&gt;
&lt;br /&gt;
On your FreeBSD system, jail, etc, you will first need to install the latest pkgng binaries, located in the ports tree under [http://www.freshports.org/ports-mgmt/pkg/ ports-mgmt/pkg]&lt;br /&gt;
&lt;br /&gt;
After installing PKGNG, you'll probably want to run the command &amp;quot;'''pkg2ng'''&amp;quot; to import your existing packages. &lt;br /&gt;
&lt;br /&gt;
Next, you will need to setup access to the PC-BSD repository. Start by creating the file '''/usr/local/etc/pkg.conf''' to look like example below:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box=packagesite: {{ftp}}mirrors.isc.org/pub/pcbsd/packages/9.1-RELEASE/amd64/&lt;br /&gt;
PUBKEY: /usr/local/etc/pkg-pubkey.cert&lt;br /&gt;
PKG_CACHEDIR: /usr/local/tmp}}&lt;br /&gt;
&lt;br /&gt;
You will want to change the packagesite: variable to a particular [http://www.pcbsd.org/getmirrors.php?url=packages PC-BSD mirror] close to your location, and in addition change the 9.1-RELEASE / amd64 to the release / architecture you want to use. Click [http://www.pcbsd.org/getmirrors.php?url=packages here] to get a list of mirrors &amp;amp; package sets available.&lt;br /&gt;
&lt;br /&gt;
Next you will need to download our repo's [http://trac.pcbsd.org/export/21629/pcbsd/current/src-sh/pc-extractoverlay/desktop-overlay/usr/local/etc/pkg-pubkey.cert public key cert file], and copy it to '''/usr/local/etc/pkg-pubkey.cert'''.&lt;br /&gt;
&lt;br /&gt;
With this in place, you will probably want to start by updating your packages to the latest versions from the repo. You may do so by running the following command:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pkg upgrade -fy}}&lt;br /&gt;
&lt;br /&gt;
When that command finishes, you should be good to go! You may now use the '''pkg''' command normally to install / remove / upgrade packages from our repo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Converting to PC-BSD ==&lt;br /&gt;
&lt;br /&gt;
With your initial repo setup complete, it is now easy to convert your system into a PC-BSD desktop using the following commands:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pkg install -yf pcbsd-base&lt;br /&gt;
{{pound}} rehash&lt;br /&gt;
{{pound}} pbreg set /PC-BSD/SysType PCBSD&lt;br /&gt;
{{pound}} pc-extractoverlay desktop&lt;br /&gt;
{{pound}} pc-extractoverlay ports}}&lt;br /&gt;
&lt;br /&gt;
With these commands finished, you can now reboot and the GDM login manager will be started automatically bringing you to your desktop. If you want to run the PC-BSD display wizard / first boot wizards you can also trigger that before rebooting:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} touch /var/.runxsetup&lt;br /&gt;
{{pound}} touch /var/.pcbsd-firstboot&lt;br /&gt;
{{pound}} touch /var/.pcbsd-firstgui}}&lt;br /&gt;
&lt;br /&gt;
If you are trying to convert a pre-release FreeBSD, such as 10-CURRENT, you may need to specify the PBI version of what to pull from. &lt;br /&gt;
&lt;br /&gt;
To do so, edit '''/usr/local/etc/pbi.conf''' and add this line:&lt;br /&gt;
 &lt;br /&gt;
 PBI_FBSDMAJOR: 9&lt;br /&gt;
&lt;br /&gt;
TIP!&lt;br /&gt;
&lt;br /&gt;
If you are using NVIDIA video hardware you may want to load their driver before rebooting into the display wizard:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pc-metapkgmanager add NVIDIA}}&lt;br /&gt;
&lt;br /&gt;
== Converting to TrueOS ==&lt;br /&gt;
&lt;br /&gt;
If you wish to convert your server into TrueOS you can quickly do so using the following commands:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pkg install -yf trueos-base&lt;br /&gt;
{{pound}} rehash&lt;br /&gt;
{{pound}} pbreg set /PC-BSD/SysType TRUEOS&lt;br /&gt;
{{pound}} pc-extractoverlay server&lt;br /&gt;
{{pound}} pc-extractoverlay ports}}&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE</id>
		<title>Convert a FreeBSD System to PC-BSD®</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE"/>
				<updated>2013-03-17T09:50:42Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Converting to PC-BSD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHome|custompagename=Turn FreeBSD into PC-BSD{{r}}|custompagecategory={{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
With the changeover to PKGNG as the backend in PC-BSD / TrueOS, it is now easier than ever to convert a FreeBSD system into a PC-BSD desktop or TrueOS server. &lt;br /&gt;
&lt;br /&gt;
Our PKGNG repos can also be used by FreeBSD users who just want access to a full package repo, with frequent updates. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
On your FreeBSD system, you will first need to install the latest pkgng binaries, located in the ports tree under [[http://www.freshports.org/ports-mgmt/pkg/ ports-mgmt/pkg]]&lt;br /&gt;
&lt;br /&gt;
After installing PKGNG, you'll probably want to run the command &amp;quot;'''pkg2ng'''&amp;quot; to import your existing packages. &lt;br /&gt;
&lt;br /&gt;
Next, you will need to setup access to the PC-BSD repository. Start by creating the file '''/usr/local/etc/pkg.conf''' to look like example below:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box=packagesite: {{http}}mirrors.isc.org/pub/pcbsd/packages/9.1-RELEASE/amd64&lt;br /&gt;
PUBKEY: /usr/local/etc/pkg-pubkey.cert&lt;br /&gt;
PKG_CACHEDIR: /usr/local/tmp}}&lt;br /&gt;
&lt;br /&gt;
You will want to change the packagesite: variable to a particular [http://www.pcbsd.org/getmirrors.php?url=packages PC-BSD mirror] close to your location, and in addition change the 9.1-RELEASE / amd64 to the release / architecture you want to use. Click [http://www.pcbsd.org/getmirrors.php?url=packages here] to get a list of mirrors &amp;amp; package sets available.&lt;br /&gt;
&lt;br /&gt;
Next you will need to download our repo's [http://trac.pcbsd.org/export/21629/pcbsd/current/src-sh/pc-extractoverlay/desktop-overlay/usr/local/etc/pkg-pubkey.cert public key], and copy it to '''/usr/local/etc/pkg-pubkey.cert'''.&lt;br /&gt;
&lt;br /&gt;
With this in place, you will probably want to start by updating your packages to the latest versions from the repo. You may do so by running the following command:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pkg upgrade -fy}}&lt;br /&gt;
&lt;br /&gt;
When that command finishes, you should be good to go! You may now use the '''pkg''' command normally to install / remove / upgrade packages from our repo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Converting to PC-BSD ===&lt;br /&gt;
&lt;br /&gt;
With your initial repo setup complete, it is now easy to convert your system into a PC-BSD desktop using the following commands:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pkg install -yf pcbsd-base&lt;br /&gt;
{{pound}} rehash&lt;br /&gt;
{{pound}} pbreg set /PC-BSD/SysType PCBSD&lt;br /&gt;
{{pound}} pc-extractoverlay desktop&lt;br /&gt;
{{pound}} pc-extractoverlay ports}}&lt;br /&gt;
&lt;br /&gt;
With these commands finished, you can now reboot and the GDM login manager will be started automatically bringing you to your desktop. If you want to run the PC-BSD display wizard / first boot wizards you can also trigger that before rebooting:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} touch /var/.runxsetup&lt;br /&gt;
{{pound}} touch /var/.pcbsd-firstboot&lt;br /&gt;
{{pound}} touch /var/.pcbsd-firstgui}}&lt;br /&gt;
&lt;br /&gt;
If you are trying to convert a pre-release FreeBSD, such as 10-CURRENT, you may need to specify the PBI version of what to pull from. &lt;br /&gt;
&lt;br /&gt;
To do so, edit '''/usr/local/etc/pbi.conf''' and add this line:&lt;br /&gt;
 &lt;br /&gt;
 PBI_FBSDMAJOR: 9&lt;br /&gt;
&lt;br /&gt;
TIP!&lt;br /&gt;
&lt;br /&gt;
If you are using NVIDIA video hardware you may want to load their driver before rebooting into the display wizard:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pc-metapkgmanager add NVIDIA}}&lt;br /&gt;
&lt;br /&gt;
=== Converting to TrueOS ===&lt;br /&gt;
&lt;br /&gt;
If you wish to convert your server into TrueOS you can quickly do so using the following commands:&lt;br /&gt;
&lt;br /&gt;
{{txtbox|box={{pound}} pkg install -yf trueos-base&lt;br /&gt;
{{pound}} rehash&lt;br /&gt;
{{pound}} pbreg set /PC-BSD/SysType TRUEOS&lt;br /&gt;
{{pound}} pc-extractoverlay server&lt;br /&gt;
{{pound}} pc-extractoverlay ports}}&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE</id>
		<title>Convert a FreeBSD System to PC-BSD®</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE"/>
				<updated>2013-02-22T18:52:11Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Converting to TrueOS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHome|custompagename=Turn FreeBSD into PC-BSD{{r}}|custompagecategory={{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
With the changeover to PKGNG as the backend in PC-BSD / TrueOS, it is now easier than ever to convert a FreeBSD system into a PC-BSD desktop or TrueOS server. &lt;br /&gt;
&lt;br /&gt;
Our PKGNG repos can also be used by FreeBSD users who just want access to a full package repo, with frequent updates. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
On your FreeBSD system, you will first need to install the latest pkgng binaries, located in the ports tree under [[http://www.freshports.org/ports-mgmt/pkg/ ports-mgmt/pkg]]&lt;br /&gt;
&lt;br /&gt;
After installing PKGNG, you'll probably want to run the command &amp;quot;'''pkg2ng'''&amp;quot; to import your existing packages. &lt;br /&gt;
&lt;br /&gt;
Next, you will need to setup access to the PC-BSD repository. Start by creating the file '''/usr/local/etc/pkg.conf''' to look like example below:&lt;br /&gt;
&lt;br /&gt;
 packagesite: http://mirrors.isc.org/pub/pcbsd/packages/9.1-RELEASE/amd64&lt;br /&gt;
 PUBKEY: /usr/local/etc/pkg-pubkey.cert&lt;br /&gt;
 PKG_CACHEDIR: /usr/local/tmp&lt;br /&gt;
&lt;br /&gt;
You will want to change the packagesite: variable to a particular [http://www.pcbsd.org/getmirrors.php?url=packages PC-BSD mirror] close to your location, and in addition change the 9.1-RELEASE / amd64 to the release / architecture you want to use. Click [http://www.pcbsd.org/getmirrors.php?url=packages here] to get a list of mirrors &amp;amp; package sets available.&lt;br /&gt;
&lt;br /&gt;
Next you will need to download our repo's [http://trac.pcbsd.org/export/21629/pcbsd/current/src-sh/pc-extractoverlay/desktop-overlay/usr/local/etc/pkg-pubkey.cert public key], and copy it to '''/usr/local/etc/pkg-pubkey.cert'''.&lt;br /&gt;
&lt;br /&gt;
With this in place, you will probably want to start by updating your packages to the latest versions from the repo. You may do so by running the following command:&lt;br /&gt;
&lt;br /&gt;
 # pkg upgrade -fy&lt;br /&gt;
&lt;br /&gt;
When that command finishes, you should be good to go! You may now use the '''pkg''' command normally to install / remove / upgrade packages from our repo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Converting to PC-BSD ===&lt;br /&gt;
&lt;br /&gt;
With your initial repo setup complete, it is now easy to convert your system into a PC-BSD desktop using the following commands:&lt;br /&gt;
&lt;br /&gt;
 # pkg install -yf pcbsd-base&lt;br /&gt;
 # rehash&lt;br /&gt;
 # pbreg set /PC-BSD/SysType PCBSD&lt;br /&gt;
 # pc-extractoverlay desktop&lt;br /&gt;
 # pc-extractoverlay ports&lt;br /&gt;
&lt;br /&gt;
With these commands finished, you can now reboot and the GDM login manager will be started automatically bringing you to your desktop. If you want to run the PC-BSD display wizard / first boot wizards you can also trigger that before rebooting:&lt;br /&gt;
&lt;br /&gt;
 # touch /var/.runxsetup&lt;br /&gt;
 # touch /var/.pcbsd-firstboot&lt;br /&gt;
 # touch /var/.pcbsd-firstgui&lt;br /&gt;
&lt;br /&gt;
TIP!&lt;br /&gt;
&lt;br /&gt;
If you are using NVIDIA video hardware you may want to load their driver before rebooting into the display wizard:&lt;br /&gt;
&lt;br /&gt;
 # pc-metapkgmanager add NVIDIA&lt;br /&gt;
&lt;br /&gt;
=== Converting to TrueOS ===&lt;br /&gt;
&lt;br /&gt;
If you wish to convert your server into TrueOS you can quickly do so using the following commands:&lt;br /&gt;
&lt;br /&gt;
 # pkg install -yf trueos-base&lt;br /&gt;
 # rehash&lt;br /&gt;
 # pbreg set /PC-BSD/SysType TRUEOS&lt;br /&gt;
 # pc-extractoverlay server&lt;br /&gt;
 # pc-extractoverlay ports&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE</id>
		<title>Convert a FreeBSD System to PC-BSD®</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE"/>
				<updated>2013-02-22T18:51:54Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Converting to PC-BSD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHome|custompagename=Turn FreeBSD into PC-BSD{{r}}|custompagecategory={{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
With the changeover to PKGNG as the backend in PC-BSD / TrueOS, it is now easier than ever to convert a FreeBSD system into a PC-BSD desktop or TrueOS server. &lt;br /&gt;
&lt;br /&gt;
Our PKGNG repos can also be used by FreeBSD users who just want access to a full package repo, with frequent updates. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
On your FreeBSD system, you will first need to install the latest pkgng binaries, located in the ports tree under [[http://www.freshports.org/ports-mgmt/pkg/ ports-mgmt/pkg]]&lt;br /&gt;
&lt;br /&gt;
After installing PKGNG, you'll probably want to run the command &amp;quot;'''pkg2ng'''&amp;quot; to import your existing packages. &lt;br /&gt;
&lt;br /&gt;
Next, you will need to setup access to the PC-BSD repository. Start by creating the file '''/usr/local/etc/pkg.conf''' to look like example below:&lt;br /&gt;
&lt;br /&gt;
 packagesite: http://mirrors.isc.org/pub/pcbsd/packages/9.1-RELEASE/amd64&lt;br /&gt;
 PUBKEY: /usr/local/etc/pkg-pubkey.cert&lt;br /&gt;
 PKG_CACHEDIR: /usr/local/tmp&lt;br /&gt;
&lt;br /&gt;
You will want to change the packagesite: variable to a particular [http://www.pcbsd.org/getmirrors.php?url=packages PC-BSD mirror] close to your location, and in addition change the 9.1-RELEASE / amd64 to the release / architecture you want to use. Click [http://www.pcbsd.org/getmirrors.php?url=packages here] to get a list of mirrors &amp;amp; package sets available.&lt;br /&gt;
&lt;br /&gt;
Next you will need to download our repo's [http://trac.pcbsd.org/export/21629/pcbsd/current/src-sh/pc-extractoverlay/desktop-overlay/usr/local/etc/pkg-pubkey.cert public key], and copy it to '''/usr/local/etc/pkg-pubkey.cert'''.&lt;br /&gt;
&lt;br /&gt;
With this in place, you will probably want to start by updating your packages to the latest versions from the repo. You may do so by running the following command:&lt;br /&gt;
&lt;br /&gt;
 # pkg upgrade -fy&lt;br /&gt;
&lt;br /&gt;
When that command finishes, you should be good to go! You may now use the '''pkg''' command normally to install / remove / upgrade packages from our repo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Converting to PC-BSD ===&lt;br /&gt;
&lt;br /&gt;
With your initial repo setup complete, it is now easy to convert your system into a PC-BSD desktop using the following commands:&lt;br /&gt;
&lt;br /&gt;
 # pkg install -yf pcbsd-base&lt;br /&gt;
 # rehash&lt;br /&gt;
 # pbreg set /PC-BSD/SysType PCBSD&lt;br /&gt;
 # pc-extractoverlay desktop&lt;br /&gt;
 # pc-extractoverlay ports&lt;br /&gt;
&lt;br /&gt;
With these commands finished, you can now reboot and the GDM login manager will be started automatically bringing you to your desktop. If you want to run the PC-BSD display wizard / first boot wizards you can also trigger that before rebooting:&lt;br /&gt;
&lt;br /&gt;
 # touch /var/.runxsetup&lt;br /&gt;
 # touch /var/.pcbsd-firstboot&lt;br /&gt;
 # touch /var/.pcbsd-firstgui&lt;br /&gt;
&lt;br /&gt;
TIP!&lt;br /&gt;
&lt;br /&gt;
If you are using NVIDIA video hardware you may want to load their driver before rebooting into the display wizard:&lt;br /&gt;
&lt;br /&gt;
 # pc-metapkgmanager add NVIDIA&lt;br /&gt;
&lt;br /&gt;
=== Converting to TrueOS ===&lt;br /&gt;
&lt;br /&gt;
If you wish to convert your server into TrueOS you can quickly do so using the following commands:&lt;br /&gt;
&lt;br /&gt;
 # pkg install -yf trueos-base&lt;br /&gt;
 # rehash&lt;br /&gt;
 # pbreg set /PC-BSD/SysType TRUEOS&lt;br /&gt;
 # /usr/local/bin/pc-extractoverlay server&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE</id>
		<title>Convert a FreeBSD System to PC-BSD®</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE"/>
				<updated>2013-02-22T18:44:30Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHome|custompagename=Turn FreeBSD into PC-BSD{{r}}|custompagecategory={{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
With the changeover to PKGNG as the backend in PC-BSD / TrueOS, it is now easier than ever to convert a FreeBSD system into a PC-BSD desktop or TrueOS server. &lt;br /&gt;
&lt;br /&gt;
Our PKGNG repos can also be used by FreeBSD users who just want access to a full package repo, with frequent updates. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
On your FreeBSD system, you will first need to install the latest pkgng binaries, located in the ports tree under [[http://www.freshports.org/ports-mgmt/pkg/ ports-mgmt/pkg]]&lt;br /&gt;
&lt;br /&gt;
After installing PKGNG, you'll probably want to run the command &amp;quot;'''pkg2ng'''&amp;quot; to import your existing packages. &lt;br /&gt;
&lt;br /&gt;
Next, you will need to setup access to the PC-BSD repository. Start by creating the file '''/usr/local/etc/pkg.conf''' to look like example below:&lt;br /&gt;
&lt;br /&gt;
 packagesite: http://mirrors.isc.org/pub/pcbsd/packages/9.1-RELEASE/amd64&lt;br /&gt;
 PUBKEY: /usr/local/etc/pkg-pubkey.cert&lt;br /&gt;
 PKG_CACHEDIR: /usr/local/tmp&lt;br /&gt;
&lt;br /&gt;
You will want to change the packagesite: variable to a particular [http://www.pcbsd.org/getmirrors.php?url=packages PC-BSD mirror] close to your location, and in addition change the 9.1-RELEASE / amd64 to the release / architecture you want to use. Click [http://www.pcbsd.org/getmirrors.php?url=packages here] to get a list of mirrors &amp;amp; package sets available.&lt;br /&gt;
&lt;br /&gt;
Next you will need to download our repo's [http://trac.pcbsd.org/export/21629/pcbsd/current/src-sh/pc-extractoverlay/desktop-overlay/usr/local/etc/pkg-pubkey.cert public key], and copy it to '''/usr/local/etc/pkg-pubkey.cert'''.&lt;br /&gt;
&lt;br /&gt;
With this in place, you will probably want to start by updating your packages to the latest versions from the repo. You may do so by running the following command:&lt;br /&gt;
&lt;br /&gt;
 # pkg upgrade -fy&lt;br /&gt;
&lt;br /&gt;
When that command finishes, you should be good to go! You may now use the '''pkg''' command normally to install / remove / upgrade packages from our repo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Converting to PC-BSD ===&lt;br /&gt;
&lt;br /&gt;
With your initial repo setup complete, it is now easy to convert your system into a PC-BSD desktop using the following commands:&lt;br /&gt;
&lt;br /&gt;
 # pkg install -yf pcbsd-base&lt;br /&gt;
 # rehash&lt;br /&gt;
 # pbreg set /PC-BSD/SysType PCBSD&lt;br /&gt;
 # /usr/local/bin/pc-extractoverlay desktop&lt;br /&gt;
&lt;br /&gt;
With these commands finished, you can now reboot and the GDM login manager will be started automatically bringing you to your desktop. If you want to run the PC-BSD display wizard / first boot wizards you can also trigger that before rebooting:&lt;br /&gt;
&lt;br /&gt;
 # touch /var/.runxsetup&lt;br /&gt;
 # touch /var/.pcbsd-firstboot&lt;br /&gt;
 # touch /var/.pcbsd-firstgui&lt;br /&gt;
&lt;br /&gt;
TIP!&lt;br /&gt;
&lt;br /&gt;
If you are using NVIDIA video hardware you may want to load their driver before rebooting into the display wizard:&lt;br /&gt;
&lt;br /&gt;
 # pc-metapkgmanager add NVIDIA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Converting to TrueOS ===&lt;br /&gt;
&lt;br /&gt;
If you wish to convert your server into TrueOS you can quickly do so using the following commands:&lt;br /&gt;
&lt;br /&gt;
 # pkg install -yf trueos-base&lt;br /&gt;
 # rehash&lt;br /&gt;
 # pbreg set /PC-BSD/SysType TRUEOS&lt;br /&gt;
 # /usr/local/bin/pc-extractoverlay server&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE</id>
		<title>Convert a FreeBSD System to PC-BSD®</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Convert_a_FreeBSD_System_to_PC-BSD%C2%AE"/>
				<updated>2013-02-22T18:42:59Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHome|custompagename=Turn FreeBSD into PC-BSD{{r}}|custompagecategory={{PAGENAME}}}}&lt;br /&gt;
&lt;br /&gt;
'''Introduction'''&lt;br /&gt;
&lt;br /&gt;
With the changeover to PKGNG as the backend in PC-BSD / TrueOS, it is now easier than ever to convert a FreeBSD system into a PC-BSD desktop or TrueOS server. &lt;br /&gt;
&lt;br /&gt;
Our PKGNG repos can also be used by FreeBSD users who just want access to a full package repo, with frequent updates. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Getting Started'''&lt;br /&gt;
&lt;br /&gt;
On your FreeBSD system, you will first need to install the latest pkgng binaries, located in the ports tree under [[http://www.freshports.org/ports-mgmt/pkg/ ports-mgmt/pkg]]&lt;br /&gt;
&lt;br /&gt;
After installing PKGNG, you'll probably want to run the command &amp;quot;'''pkg2ng'''&amp;quot; to import your existing packages. &lt;br /&gt;
&lt;br /&gt;
Next, you will need to setup access to the PC-BSD repository. Start by creating the file '''/usr/local/etc/pkg.conf''' to look like example below:&lt;br /&gt;
&lt;br /&gt;
 packagesite: http://mirrors.isc.org/pub/pcbsd/packages/9.1-RELEASE/amd64&lt;br /&gt;
 PUBKEY: /usr/local/etc/pkg-pubkey.cert&lt;br /&gt;
 PKG_CACHEDIR: /usr/local/tmp&lt;br /&gt;
&lt;br /&gt;
You will want to change the packagesite: variable to a particular [http://www.pcbsd.org/getmirrors.php?url=packages PC-BSD mirror] close to your location, and in addition change the 9.1-RELEASE / amd64 to the release / architecture you want to use. Click [http://www.pcbsd.org/getmirrors.php?url=packages here] to get a list of mirrors &amp;amp; package sets available.&lt;br /&gt;
&lt;br /&gt;
Next you will need to download our repo's [http://trac.pcbsd.org/export/21629/pcbsd/current/src-sh/pc-extractoverlay/desktop-overlay/usr/local/etc/pkg-pubkey.cert public key], and copy it to '''/usr/local/etc/pkg-pubkey.cert'''.&lt;br /&gt;
&lt;br /&gt;
With this in place, you will probably want to start by updating your packages to the latest versions from the repo. You may do so by running the following command:&lt;br /&gt;
&lt;br /&gt;
 # pkg upgrade -fy&lt;br /&gt;
&lt;br /&gt;
When that command finishes, you should be good to go! You may now use the '''pkg''' command normally to install / remove / upgrade packages from our repo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Converting to PC-BSD'''&lt;br /&gt;
&lt;br /&gt;
With your initial repo setup complete, it is now easy to convert your system into a PC-BSD desktop using the following commands:&lt;br /&gt;
&lt;br /&gt;
 # pkg install -yf pcbsd-base&lt;br /&gt;
 # rehash&lt;br /&gt;
 # pbreg set /PC-BSD/SysType PCBSD&lt;br /&gt;
 # /usr/local/bin/pc-extractoverlay desktop&lt;br /&gt;
&lt;br /&gt;
With these commands finished, you can now reboot and the GDM login manager will be started automatically bringing you to your desktop. If you want to run the PC-BSD display wizard / first boot wizards you can also trigger that before rebooting:&lt;br /&gt;
&lt;br /&gt;
 # touch /var/.runxsetup&lt;br /&gt;
 # touch /var/.pcbsd-firstboot&lt;br /&gt;
 # touch /var/.pcbsd-firstgui&lt;br /&gt;
&lt;br /&gt;
TIP!&lt;br /&gt;
&lt;br /&gt;
If you are using NVIDIA video hardware you may want to load their driver before rebooting into the display wizard:&lt;br /&gt;
&lt;br /&gt;
 # pc-metapkgmanager add NVIDIA&lt;br /&gt;
&lt;br /&gt;
'''Converting to TrueOS'''&lt;br /&gt;
&lt;br /&gt;
If you wish to convert your server into TrueOS you can quickly do so using the following commands:&lt;br /&gt;
&lt;br /&gt;
 # pkg install -yf trueos-base&lt;br /&gt;
 # rehash&lt;br /&gt;
 # pbreg set /PC-BSD/SysType TRUEOS&lt;br /&gt;
 # /usr/local/bin/pc-extractoverlay server&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO</id>
		<title>PC-BSD® 9.2 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO"/>
				<updated>2012-11-28T17:30:18Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.2 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
! Feature&lt;br /&gt;
! Owner&lt;br /&gt;
! Skills&lt;br /&gt;
! Status&lt;br /&gt;
! Completion Date&lt;br /&gt;
|-&lt;br /&gt;
| Enable PEFS via User-Manager, allowing encrypted home directories&lt;br /&gt;
| kmoore&lt;br /&gt;
| QT4/Shell/Sys&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
| dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
| dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Front-end to text installer&lt;br /&gt;
| jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
| C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add option to play some simple games while waiting for installation&lt;br /&gt;
| kris&lt;br /&gt;
| C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
| kmoore&lt;br /&gt;
| C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Localize the meta-pkg descriptions&lt;br /&gt;
| kmoore&lt;br /&gt;
| C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
| C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
| kmoore&lt;br /&gt;
| C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add directory tree to AppCafe. On app page, at top show Home -&amp;gt; Category -&amp;gt; AppName, clickable&lt;br /&gt;
|&lt;br /&gt;
| C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add enable / disable startup warden buttons&lt;br /&gt;
|&lt;br /&gt;
| C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Display fetch size / speed on warden downloads&lt;br /&gt;
|&lt;br /&gt;
| C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Display more info about devices in hardware compat GUI&lt;br /&gt;
|&lt;br /&gt;
| C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| the psk for WPA networks should be hashed with wpa_passphrase(8)&lt;br /&gt;
|&lt;br /&gt;
| C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add some kind of low disk space framework that detects both UFS + ZFS space&lt;br /&gt;
| kmoore&lt;br /&gt;
| C++ / Shell / libpcbsd&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Improve system update mechanism to update rc.conf / loader.conf defaults (Perhaps with /etc/defaults/rc.conf)&lt;br /&gt;
| kmoore&lt;br /&gt;
| Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| add bug reporting tool&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| add a mass delete snapshot function for warden to delete snapshots no longer needed beyond a certain date. (from the command line not GUI)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add VPN functionality.   If not enough time push back to 10.0.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[category:PC-BSD® Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Creating_an_Automated_Installation_with_pc-sysinstall</id>
		<title>Creating an Automated Installation with pc-sysinstall</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Creating_an_Automated_Installation_with_pc-sysinstall"/>
				<updated>2012-10-03T19:47:25Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Determine which variables you wish to customize */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{NavHeader|back=Upgrading PC-BSD®|forward=Desktops}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PC-BSD® provides a set of Bourne shell scripts that allow advanced users to create automatic or customized PC-BSD® installations. '''pc-sysinstall''' is the name of the master script; it reads a customizable configuration file and uses dozens of backend scripts to perform the installation. You can read more about this utility by typing '''man pc-sysinstall'''.&lt;br /&gt;
&lt;br /&gt;
Here is a quick overview of the components used by '''pc-sysinstall''':&lt;br /&gt;
&lt;br /&gt;
* '''/usr/share/pc-sysinstall/backend/'''  contains the scripts used by the PC-BSD® installer. Scripts have been divided by function such as ''functions-bsdlabel.sh'' and ''functions-installcomponents.sh''. If you have ever wondered how the PC-BSD® installer works, read through these scripts. This directory also contains the ''parseconfig.sh'' and ''startautoinstall.sh'' scripts which '''pc-sysinstall''' uses to parse the configuration file and begin the installation.&lt;br /&gt;
&lt;br /&gt;
* '''/usr/share/pc-sysinstall/backend-partmanager/''' contains the scripts which are used by the installer to create and delete partitions.&lt;br /&gt;
&lt;br /&gt;
* '''/usr/share/pc-sysinstall/backend-query/''' contains the scripts which are used by the installer to detect (e.g. ''detect-nics.sh'') and configure (e.g. ''enable-net.sh'') hardware.&lt;br /&gt;
&lt;br /&gt;
* '''/usr/share/pc-sysinstall/components/''' contains FreeBSD ports and src and the PBIs for chromium, firefox, opera, and thunderbird.&lt;br /&gt;
&lt;br /&gt;
* '''/usr/share/pc-sysinstall/conf/''' contains the configuration file ''pc-sysinstall.conf''. It also contains a file indicating which localizations are available (''avail-langs''), a list of files which are not touched during an upgrade (''exclude-from-upgrade''), and a ''license/'' subdirectory containing text files of applicable licenses (e.g. ''bsd-en.txt'' and ''nvidia-en.txt'').&lt;br /&gt;
&lt;br /&gt;
* '''/usr/share/pc-sysinstall/doc/''' contains the help text that is seen if you run '''pc-sysinstall''' without any arguments.&lt;br /&gt;
&lt;br /&gt;
* '''/usr/share/examples/pc-sysinstall/''' contains several example configuration files for different scenarios (e.g. ''upgrade'', ''fbsd-netinstall''). The ''README'' file in this directory should be considered as mandatory reading before using '''pc-sysinstall'''.&lt;br /&gt;
&lt;br /&gt;
* '''/usr/sbin/pc-sysinstall''' this is the script that is used to perform a customized installation.&lt;br /&gt;
&lt;br /&gt;
To create a custom installation, perform the following steps:&lt;br /&gt;
# [[#Determine which variables you wish to customize|Determine which variables you wish to customize]].&amp;lt;br&amp;gt;&lt;br /&gt;
# [[#Create a customized configuration|Create a customized configuration]].&amp;lt;br&amp;gt;&lt;br /&gt;
# [[#Create a custom installation media|Create a custom installation media]].&amp;lt;br&amp;gt;&lt;br /&gt;
These steps are discussed in more detail below.&lt;br /&gt;
&lt;br /&gt;
== Determine which variables you wish to customize ==&lt;br /&gt;
&lt;br /&gt;
A list of possible variables can be found in ''/usr/share/examples/pc-sysinstall/README'' and in Table 5.4a. Note that the Table is meant as a quick reference to determine which variables are available. The ''README'' file contains more complete descriptions for each variable. These are assigned their values by using an equal sign (=).&lt;br /&gt;
&lt;br /&gt;
'''Table 5.4a: Available Variables for Customizing a PC-BSD® Installation'''&lt;br /&gt;
&lt;br /&gt;
{{tbl-init}}&lt;br /&gt;
{{tbl-title|width=20%|Variable}}&lt;br /&gt;
{{tbl-title|Options}}&lt;br /&gt;
{{tbl-title|Description}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=1|content=hostname}}&lt;br /&gt;
{{tbl-cell|row=1|should be unique for the network}}&lt;br /&gt;
{{tbl-cell|row=1|optional as installer will auto-generate a hostname if empty}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=2|content=installMode}}&lt;br /&gt;
{{tbl-cell|row=2|fresh, upgrade, or extract}}&lt;br /&gt;
{{tbl-cell|row=2|sets the installation type}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=3|content=installLocation}}&lt;br /&gt;
{{tbl-cell|row=3|/path/to/location}}&lt;br /&gt;
{{tbl-cell|row=3|used only when installMode is extract and should point to an already mounted location}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=4|content=installInteractive}}&lt;br /&gt;
{{tbl-cell|row=4|yes or no}}&lt;br /&gt;
{{tbl-cell|row=4|set to no for automated installs without user input}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=5|content=netDev}}&lt;br /&gt;
{{tbl-cell|row=5|AUTO-DHCP or FreeBSD interface name}}&lt;br /&gt;
{{tbl-cell|row=5|type of network connection to use during the installation}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=6|content=netIP|other=padding-left: 24px;}}&lt;br /&gt;
{{tbl-cell|row=6|IP address of interface used during installation}}&lt;br /&gt;
{{tbl-cell|row=6|content=only use if ''netDev'' is set to an interface name}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=7|content=netMask|other=padding-left: 24px;}}&lt;br /&gt;
{{tbl-cell|row=7|subnet mask of interface}}&lt;br /&gt;
{{tbl-cell|row=7|content=only use if netDev is set to an interface name}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=8|content=netNameServer|other=padding-left: 24px;}}&lt;br /&gt;
{{tbl-cell|row=8|IP address of DNS server}}&lt;br /&gt;
{{tbl-cell|row=8|content=only use if netDev is set to an interface name}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=9|content=netDefaultRouter|other=padding-left: 24px;}}&lt;br /&gt;
{{tbl-cell|row=9|IP address of default gateway}}&lt;br /&gt;
{{tbl-cell|row=9|content=only use if netDev is set to an interface name}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=10|content=netSaveDev}}&lt;br /&gt;
{{tbl-cell|row=10|AUTO-DHCP or FreeBSD interface name(s) (multiple allowed separated by spaces)}}&lt;br /&gt;
{{tbl-cell|row=10|content=type of network configuration to enable on the installed system; can set multiple interfaces}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=11|content=netSaveIP_''interface name''|other=padding-left: 24px;}}&lt;br /&gt;
{{tbl-cell|row=11|IP address of interface ''&amp;lt;interface_name&amp;gt;'' or DHCP}}&lt;br /&gt;
{{tbl-cell|row=11|content=only use if netSaveDev is set to an interface name or a list of interface names (repeat for each interface)}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=12|content=netSaveMask_''&amp;lt;interface_name&amp;gt;''=}}&lt;br /&gt;
{{tbl-cell|row=12|subnet mask of interface ''&amp;lt;interface_name&amp;gt;''}}&lt;br /&gt;
{{tbl-cell|row=12|content=only use if netSaveDev is set to an interface name or a list of interface names (repeat for each interface)}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=13|content=netSaveNameServer=}}&lt;br /&gt;
{{tbl-cell|row=13|IP address of DNS server (multiple allowed separated by spaces)}}&lt;br /&gt;
{{tbl-cell|row=13|content=only use if netSaveDev= is set to an interface name or a list of interface names (do not repeat for each interface)}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=14|content=netSaveDefaultRouter=}}&lt;br /&gt;
{{tbl-cell|row=14|IP address of default gateway}}&lt;br /&gt;
{{tbl-cell|row=14|content=only use if netSaveDev= is set to an interface name or a list of interface names (do not repeat for each interface)}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=15|content=disk0=}}&lt;br /&gt;
{{tbl-cell|row=15|FreeBSD disk device Name, (e.g. ''ad0'')}}&lt;br /&gt;
{{tbl-cell|row=15|see ''README'' for examples}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=16|content=partition=}}&lt;br /&gt;
{{tbl-cell|row=16|content=all, free, s1, s2, s3, s4, image}}&lt;br /&gt;
{{tbl-cell|row=16|content=see ''README'' for examples}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=17|content=partscheme=}}&lt;br /&gt;
{{tbl-cell|row=17|content=MBR or GPT}}&lt;br /&gt;
{{tbl-cell|row=17|content=partition scheme type}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=18|content=mirror=}}&lt;br /&gt;
{{tbl-cell|row=18|content=FreeBSD disk device name (e.g. ''ad1'')}}&lt;br /&gt;
{{tbl-cell|row=18|content=sets the target disk for the mirror (i.e. the second disk)}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=19|content=mirrorbal=}}&lt;br /&gt;
{{tbl-cell|row=19|content=load, prefer, round-robin, split}}&lt;br /&gt;
{{tbl-cell|row=19|content=defaults to round-robin if the mirror balance method is not specified}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=20|content=bootManager=}}&lt;br /&gt;
{{tbl-cell|row=20|content=none, bsd}}&lt;br /&gt;
{{tbl-cell|row=20|content=whether or not to install the FreeBSD boot manager}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=21|content=image=}}&lt;br /&gt;
{{tbl-cell|row=21|content=/path/to/image}}&lt;br /&gt;
{{tbl-cell|row=21|content=will write specified image file}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=22|content=commitDiskPart}}&lt;br /&gt;
{{tbl-cell|row=22|content=}}&lt;br /&gt;
{{tbl-cell|row=22|content=this variable is mandatory and must be placed at the end of each diskX= section; create a diskX= section for each disk you wish to configure. }}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=23|content=commitDiskLabel}}&lt;br /&gt;
{{tbl-cell|row=23|content=}}&lt;br /&gt;
{{tbl-cell|row=23|content=this variable is mandatory and must be placed at the end of disk's partitioning settings; see the ''README'' for examples on how to set the &amp;lt;File System Type&amp;gt; &amp;lt;Size&amp;gt; &amp;lt;Mountpoint&amp;gt; entries for each disk}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=24|content=installMedium=}}&lt;br /&gt;
{{tbl-cell|row=24|content=dvd, usb, ftp, rsync, image}}&lt;br /&gt;
{{tbl-cell|row=24|content=source to be used for installation}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=25|content=installType=}}&lt;br /&gt;
{{tbl-cell|row=25|content=PCBSD, FreeBSD}}&lt;br /&gt;
{{tbl-cell|row=25|content=determines whether this is a desktop or a server install}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=26|content=installFile=}}&lt;br /&gt;
{{tbl-cell|row=26|content=e.g. fbsd-release.tbz}}&lt;br /&gt;
{{tbl-cell|row=26|content=only set if using a customized installer archive}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=27|content=packageType=}}&lt;br /&gt;
{{tbl-cell|row=27|content=tar, uzip, split, dist}}&lt;br /&gt;
{{tbl-cell|row=27|content=the archive type on the installation media}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=28|content=ftpPath=}}&lt;br /&gt;
{{tbl-cell|row=28|content=e.g. &amp;lt;nowiki&amp;gt;ftp://ftp.pcbsd.org/pub/mirror/9.1/amd64/netinstall/&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{tbl-cell|row=28|content=location of the installer archive when using installMedium=ftp}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=29|content=rsyncPath=}}&lt;br /&gt;
{{tbl-cell|row=29|content=e.g. life-preserver/back-2011-09-12T14_53_14}}&lt;br /&gt;
{{tbl-cell|row=29|content=location of the rsync data on the remote server when using installMedium=rsync}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=30|content=rsyncUser=}}&lt;br /&gt;
{{tbl-cell|row=30|content=username}}&lt;br /&gt;
{{tbl-cell|row=30|content=set when using installMedium=rsync}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=31|content=rsyncHost=}}&lt;br /&gt;
{{tbl-cell|row=31|content=IP address of rsync server}}&lt;br /&gt;
{{tbl-cell|row=31|content=set when using installMedium=rsync}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=32|content=rsyncPort=}}&lt;br /&gt;
{{tbl-cell|row=32|content=port number}}&lt;br /&gt;
{{tbl-cell|row=32|content=set when using installMedium=rsync}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=33|content=installComponents=}}&lt;br /&gt;
{{tbl-cell|row=33|content=e.g. amarok,firefox,ports}}&lt;br /&gt;
{{tbl-cell|row=33|content=components must exist in ''/PCBSD/pc-sysinstall/components/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=34|content=upgradeKeepDesktopProfile=}}&lt;br /&gt;
{{tbl-cell|row=34|content=yes or no}}&lt;br /&gt;
{{tbl-cell|row=34|content=specify if you wish to keep your existing user's desktop profile data during an upgrade }}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=35|content=rootPass=}}&lt;br /&gt;
{{tbl-cell|row=35|content=password}}&lt;br /&gt;
{{tbl-cell|row=35|content=set the root password of the installed system to the specified string}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=36|content=rootEncPass=}}&lt;br /&gt;
{{tbl-cell|row=36|content=encrypted string}}&lt;br /&gt;
{{tbl-cell|row=36|content=set root password to specified encrypted string}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=37|content=userName=}}&lt;br /&gt;
{{tbl-cell|row=37|content=case sensitive value}}&lt;br /&gt;
{{tbl-cell|row=37|content=create a separate block of user values for each user you wish to create}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=38|content=userComment=}}&lt;br /&gt;
{{tbl-cell|row=38|content=description}}&lt;br /&gt;
{{tbl-cell|row=38|content=description text can include spaces}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=39|content=userPass=}}&lt;br /&gt;
{{tbl-cell|row=39|content=case sensitive value}}&lt;br /&gt;
{{tbl-cell|row=39|content=password of user}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=40|content=userEncPass}}&lt;br /&gt;
{{tbl-cell|row=40|content=encrypted string}}&lt;br /&gt;
{{tbl-cell|row=40|content=set user password to specified encrypted string}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=41|content=userShell=}}&lt;br /&gt;
{{tbl-cell|row=41|content=e.g. ''/bin/csh''}}&lt;br /&gt;
{{tbl-cell|row=41|content=path to default shell}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=42|content=userHome=}}&lt;br /&gt;
{{tbl-cell|row=42|content=e.g. ''/home/username''}}&lt;br /&gt;
{{tbl-cell|row=42|content=path to home directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=43|content=userGroups=}}&lt;br /&gt;
{{tbl-cell|row=43|content=e.g. wheel,operator}}&lt;br /&gt;
{{tbl-cell|row=43|content=comma separated (no spaces) list of groups}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=44|content=commitUser}}&lt;br /&gt;
{{tbl-cell|row=44|content=}}&lt;br /&gt;
{{tbl-cell|row=44|content=mandatory, must be last line in each user block}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=45|content=runCommand=}}&lt;br /&gt;
{{tbl-cell|row=45|content=path to command}}&lt;br /&gt;
{{tbl-cell|row=45|content=run the specified command within chroot of the installed system, after the installation is complete}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=46|content=runScript=}}&lt;br /&gt;
{{tbl-cell|row=46|content=path to script}}&lt;br /&gt;
{{tbl-cell|row=46|content=runs specified script within chroot of the installed system, after the installation is complete}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=47|content=runExtCommand=}}&lt;br /&gt;
{{tbl-cell|row=47|content=path to command}}&lt;br /&gt;
{{tbl-cell|row=47|content=runs a command outside the chroot}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=48|content=timeZone=}}&lt;br /&gt;
{{tbl-cell|row=48|content=e.g. America/New_York}}&lt;br /&gt;
{{tbl-cell|row=48|content=location must exist in ''/usr/share/zoneinfo/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=49|content=enableNTP=}}&lt;br /&gt;
{{tbl-cell|row=49|content=yes or no}}&lt;br /&gt;
{{tbl-cell|row=49|content=enable/disable NTP}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=50|content=localizeLang=}}&lt;br /&gt;
{{tbl-cell|row=50|content=e.g. en}}&lt;br /&gt;
{{tbl-cell|row=50|content=sets the system console and Desktop to the target language}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=51|content=localizeKeyLayout=}}&lt;br /&gt;
{{tbl-cell|row=51|content=e.g. en}}&lt;br /&gt;
{{tbl-cell|row=51|content=updates the system's Xorg config to set the keyboard layout}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=52|content=localizeKeyModel=}}&lt;br /&gt;
{{tbl-cell|row=52|content=e.g. pc104}}&lt;br /&gt;
{{tbl-cell|row=52|content=updates the system's Xorg config to set the keyboard model}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=53|content=localizeKeyVariant=}}&lt;br /&gt;
{{tbl-cell|row=53|content=e.g. intl}}&lt;br /&gt;
{{tbl-cell|row=53|content=updates the Xorg config to set the keyboard variant}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cell|row=54|content=autoLoginUser=}}&lt;br /&gt;
{{tbl-cell|row=54|content=username}}&lt;br /&gt;
{{tbl-cell|row=54|content=user will be logged in automatically without entering a password}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Create a customized configuration ==&lt;br /&gt;
&lt;br /&gt;
One way to create this file is to read through the configuration examples in ''/usr/share/examples/pc-sysinstall/'' to find the one that most closely matches your needs. Copy that file (to any location) and customize it so that it includes the variables and values you would like to use in your installation.&lt;br /&gt;
&lt;br /&gt;
An alternate way to create this file is to perform an installation of the version that you wish to customize. The installer will automatically create a file containing the settings you selected during the installation to ''/root/pc-sysinstall.cfg.'' You can use that configuration file as-is or customize it to meet an installation's needs. This method may prove easier to use if you are performing complex disk layouts.&lt;br /&gt;
&lt;br /&gt;
If you wish to perform a fully automated installation that does not prompt for any user input, you will also need to review ''/usr/share/examples/pc-sysinstall/pc-autoinstall.conf'' and place a customized copy of that file into ''/boot/pc-autoinstall.conf'' on your installation media.&lt;br /&gt;
&lt;br /&gt;
Table 5.4b summarizes the additional variables that are available for fully automatic installations. More detailed descriptions can be found in the ''/usr/share/examples/pc-sysinstall/pc-autoinstall.conf'' file. Note that the variables in this file use a different syntax than those in Table 5.4a in that the values follow a colon and space rather than an equal sign.&lt;br /&gt;
&lt;br /&gt;
'''Table 5.4b.: Additional Variables for Automated Installations'''&lt;br /&gt;
&lt;br /&gt;
{{tbl-init}}&lt;br /&gt;
{{tbl-title|Variable}}&lt;br /&gt;
{{tbl-title|Options}}&lt;br /&gt;
{{tbl-title|Description}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cellw|pc_config}}&lt;br /&gt;
{{tbl-cellw|URL or /path/to/file}}&lt;br /&gt;
{{tbl-cellw|location of customized ''pc-sysinstall.conf''}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cellg|confirm_install}}&lt;br /&gt;
{{tbl-cellg|yes or no}}&lt;br /&gt;
{{tbl-cellg|should be set to yes, otherwise booting the wrong disk will result in a system wipe}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cellw|shutdown_cmd}}&lt;br /&gt;
{{tbl-cellw|e.g. '''shutdown -p now'''}}&lt;br /&gt;
{{tbl-cellw|good idea to run a shutdown, but can be any command/script you wish to execute post-install}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cellg|nic_config}}&lt;br /&gt;
{{tbl-cellg|dhcp-all or &amp;lt;interface name&amp;gt; &amp;lt;IP address&amp;gt; &amp;lt;subnet mask&amp;gt;}}&lt;br /&gt;
{{tbl-cellg|will attempt dhcp on all found NICs until the installation file can be fetched or will setup specified interface}}&lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cellw|nic_dns}}&lt;br /&gt;
{{tbl-cellw|IP address}}&lt;br /&gt;
{{tbl-cellw|DNS server to use}} &lt;br /&gt;
|-&lt;br /&gt;
{{tbl-cellg|nic_gateway}}&lt;br /&gt;
{{tbl-cellg|IP address}}&lt;br /&gt;
{{tbl-cellg|default gateway to use}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Sample pc-sysinstall.cfg ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Sample configuration file for an installation using pc-sysinstall&lt;br /&gt;
&lt;br /&gt;
installMode=fresh&lt;br /&gt;
installInteractive=no&lt;br /&gt;
hostname=myhost.mydomain.com&lt;br /&gt;
&lt;br /&gt;
# Set the disk parameters - 1st disk&lt;br /&gt;
disk0=da0&lt;br /&gt;
partition=all&lt;br /&gt;
bootManager=none&lt;br /&gt;
commitDiskPart&lt;br /&gt;
&lt;br /&gt;
# Set the disk parameters - 2nd disk&lt;br /&gt;
disk1=da1&lt;br /&gt;
partition=all&lt;br /&gt;
bootManager=none&lt;br /&gt;
commitDiskPart&lt;br /&gt;
&lt;br /&gt;
# Setup the disk label - 1st disk&lt;br /&gt;
# All sizes are expressed in MB&lt;br /&gt;
# Avail FS Types, UFS, UFS+S, UFS+J, ZFS, SWAP&lt;br /&gt;
disk0-part=UFS+S 1024 / &lt;br /&gt;
disk0-part=SWAP.eli 2048 none&lt;br /&gt;
disk0-part=UFS+S 1024 /tmp&lt;br /&gt;
disk0-part=UFS+S 1024 /var&lt;br /&gt;
disk0-part=UFS+S 0 /usr&lt;br /&gt;
# Size 0 means use the rest of the slice size&lt;br /&gt;
# Do it now!&lt;br /&gt;
commitDiskLabel&lt;br /&gt;
&lt;br /&gt;
# Setup the disk label - 2nd disk&lt;br /&gt;
# All sizes are expressed in MB&lt;br /&gt;
# Avail FS Types, UFS, UFS+S, UFS+J, ZFS, SWAP&lt;br /&gt;
disk1-part=UFS+S 1024 /usr/src &lt;br /&gt;
disk1-part=UFS+S 4096 /usr/local&lt;br /&gt;
disk1-part=UFS+S 0 /usr/ports&lt;br /&gt;
# Size 0 means use the rest of the slice size&lt;br /&gt;
# Do it now!&lt;br /&gt;
commitDiskLabel&lt;br /&gt;
&lt;br /&gt;
netDev=em1&lt;br /&gt;
netIP=172.16.80.250&lt;br /&gt;
netMask=255.255.240.0&lt;br /&gt;
netNameServer=172.16.80.1&lt;br /&gt;
netDefaultRouter=172.16.80.1&lt;br /&gt;
netSaveDev=em0 em1 &lt;br /&gt;
netSaveIP_em0=192.168.101.42&lt;br /&gt;
netSaveIP_em1=172.16.80.156&lt;br /&gt;
netSaveMask_em0=255.255.252.0&lt;br /&gt;
netSaveMask_em1=255.255.240.0&lt;br /&gt;
netSaveNameServer=172.16.80.1&lt;br /&gt;
netSaveDefaultRouter=192.168.100.1&lt;br /&gt;
&lt;br /&gt;
# Set if we are installing via optical, USB, or FTP&lt;br /&gt;
installType=FreeBSD&lt;br /&gt;
installMedium=ftp&lt;br /&gt;
ftpPath=http://pkgbuilder.mydomain.com/images/freebsd/8.2/&lt;br /&gt;
packageType=tar&lt;br /&gt;
&lt;br /&gt;
# List our components to install&lt;br /&gt;
#installComponents=ports,src&lt;br /&gt;
&lt;br /&gt;
# Set the root pass&lt;br /&gt;
rootPass=root&lt;br /&gt;
&lt;br /&gt;
# Setup our users&lt;br /&gt;
userName=demo&lt;br /&gt;
userComment=Demo User&lt;br /&gt;
userPass=demo&lt;br /&gt;
userShell=/bin/sh&lt;br /&gt;
userHome=/home/demo&lt;br /&gt;
commitUser&lt;br /&gt;
&lt;br /&gt;
# Set up date/time&lt;br /&gt;
runCommand=cp /usr/share/zoneinfo/EST5EDT /etc/localtime&lt;br /&gt;
runCommand=touch /etc/wall_cmos_clock&lt;br /&gt;
runCommand=adjkerntz -a&lt;br /&gt;
&lt;br /&gt;
# Install packages required for VMware Tools installation/configuration&lt;br /&gt;
runCommand=pkg_add -r compat6x-amd64&lt;br /&gt;
runCommand=pkg_add -r perl&lt;br /&gt;
runCommand=pkg_add -r pcre&lt;br /&gt;
runCommand=pkg_add -r puppet&lt;br /&gt;
runCommand=pkg_add -r sysrc&lt;br /&gt;
&lt;br /&gt;
# Fetch/install VMware Tools&lt;br /&gt;
runCommand=fetch -o /tmp/vmtools.tar.gz http://pkgbuilder.mydomain.com/images/freebsd/vmware-freebsd-tools.tar.gz&lt;br /&gt;
runCommand=zcat /tmp/vmtools.tar.gz | tar -C /tmp -xvf -&lt;br /&gt;
runCommand=/tmp/vmware-tools-distrib/vmware-install.pl -d&lt;br /&gt;
runCommand=rm -rf /tmp/vmware-tools-distrib&lt;br /&gt;
runCommand=/usr/local/sbin/sysrc puppet_enable=YES&lt;br /&gt;
# Generate the certificate to be signed by the master&lt;br /&gt;
runCommand=/usr/local/bin/puppet agent -t&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sample pc-autoinstall.conf ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# pc-autoinstall.conf example&lt;br /&gt;
#&lt;br /&gt;
# Usage: Modify these variables, and copy the file to&lt;br /&gt;
# /boot/pc-autoinstall.conf on your PC-BSD installation medium&lt;br /&gt;
#&lt;br /&gt;
# The conf will then be read at bootup, and your automated&lt;br /&gt;
# install will take place&lt;br /&gt;
##################################################################&lt;br /&gt;
&lt;br /&gt;
# Where the pc-sysinstall main config is located&lt;br /&gt;
# Can be either a file on the booted CD / DVD / USB media,&lt;br /&gt;
# or a remote file on http / ftp&lt;br /&gt;
#&lt;br /&gt;
# The value %%NIC_MAC%% is special, and will be substituted with&lt;br /&gt;
# the macaddress of the enabled NIC from DHCP or manually set&lt;br /&gt;
# with 'nic_config:'&lt;br /&gt;
##################################################################&lt;br /&gt;
&lt;br /&gt;
# Examples:&lt;br /&gt;
# pc_config: ftp://192.168.0.2/cust-install.cfg&lt;br /&gt;
# pc_config: http://192.168.0.2/cust-install.cfg&lt;br /&gt;
# pc_config: http://192.168.0.2/%%NIC_MAC%%.cfg&lt;br /&gt;
# pc_config: /boot/cust-install.cfg&lt;br /&gt;
pc_config:&lt;br /&gt;
http://pkgbuilder.mydomain.com/images/freebsd/pc-sysinstall.cfg&lt;br /&gt;
&lt;br /&gt;
# Set this to yes if we should confirm before doing an install&lt;br /&gt;
# This should normally be set to yes, otherwise booting the wrong&lt;br /&gt;
# disk will result in a system wipe&lt;br /&gt;
confirm_install: no&lt;br /&gt;
&lt;br /&gt;
# Set the command to run post-install, usually best to run shutdown&lt;br /&gt;
# but this can be replaced with any other command / script you wish&lt;br /&gt;
# to execute post-install&lt;br /&gt;
shutdown_cmd: shutdown -r now&lt;br /&gt;
&lt;br /&gt;
# Options for the network setup, should the cfg need to be fetched&lt;br /&gt;
# from a remote location, only necessary when using ftp or http&lt;br /&gt;
##################################################################&lt;br /&gt;
&lt;br /&gt;
# Special option, will attempt dhcp on all found NICs&lt;br /&gt;
# until the file can be fetched, or we run out of interfaces&lt;br /&gt;
# nic_config: dhcp-all&lt;br /&gt;
&lt;br /&gt;
# Line to be passed to the &amp;quot;ifconfig&amp;quot; command to bring up an interface&lt;br /&gt;
nic_config: em1 172.16.80.250 255.255.240.0&lt;br /&gt;
&lt;br /&gt;
# DNS server to use&lt;br /&gt;
nic_dns: 172.16.80.1&lt;br /&gt;
&lt;br /&gt;
# Default router / gateway&lt;br /&gt;
nic_gateway: 172.16.80.1&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a custom installation media ==&lt;br /&gt;
&lt;br /&gt;
The installation media can be a CD, DVD, USB, or a directory on an HTTP, FTP, or SSH+rsync server.&lt;br /&gt;
&lt;br /&gt;
The easiest way to create a custom installation media is to modify an existing installation image. For example, if you have downloaded an ISO for the PC-BSD® version that you wish to customize, the superuser can access the contents of the ISO as follows:&lt;br /&gt;
&lt;br /&gt;
 '''mdconfig -a -t vnode -f PCBSD9.0-x86-DVD.iso -u 1'''&lt;br /&gt;
 '''mount -t cd9660 /dev/md1 /mnt'''&lt;br /&gt;
 &lt;br /&gt;
Make sure you have '''cd''' 'd into a directory where you would like to copy the contents of the ISO. In the following examples, ''/tmp/custominstall/'' was created for this purpose:&lt;br /&gt;
&lt;br /&gt;
 '''cd /tmp/custominstall'''&lt;br /&gt;
 '''tar -C /mnt -cf - . | tar -xvf -'''&lt;br /&gt;
 '''umount /mnt'''&lt;br /&gt;
&lt;br /&gt;
Alternately, if you have inserted an installation CD or DVD, you can mount the media and copy its contents to your desired directory:&lt;br /&gt;
&lt;br /&gt;
 '''mount -t cd9660 /dev/cd0 /mnt'''&lt;br /&gt;
 '''cp -R /mnt/* /tmp/custominstall/'''&lt;br /&gt;
 '''umount /mnt'''&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' if you are using an HTTP, FTP, or SSH server as the installation media, untar or copy the files to a directory on the server that is accessible to users. Be sure to configure the server so that the installation files are accessible to the systems that you wish to install.&lt;br /&gt;
&lt;br /&gt;
If you are creating an automated installation, copy your customized ''pc-autoinstall.conf'' to ''/tmp/custominstall/boot/''.&lt;br /&gt;
&lt;br /&gt;
Copy your customized configuration file to ''/tmp/custominstall/''. Double-check that the installMedium= variable in your customized configuration file is set to the type of media that you will be installing from.&lt;br /&gt;
&lt;br /&gt;
You may also need to add some extra files if you set the following variables in your custom configuration file:&lt;br /&gt;
&lt;br /&gt;
* '''installComponents=''' make sure that any extra components you wish to install exist in ''extras/PBI/'' (if they end in the ''.pbi'' extension) or ''extras/components/'' (if they end in ''.tbz'')&lt;br /&gt;
&lt;br /&gt;
* '''runCommand=''' make sure the command exists in the specified path&lt;br /&gt;
&lt;br /&gt;
* '''runScript=''' make sure the script exists in the specified path&lt;br /&gt;
&lt;br /&gt;
* '''runExtCommand=''' make sure the command exists in the specified path&lt;br /&gt;
&lt;br /&gt;
If the installation media is a CD or DVD, you will need to create a bootable media that contains the files in your directory. To create a bootable ISO:&lt;br /&gt;
&lt;br /&gt;
 '''cd /tmp/custominstall&lt;br /&gt;
 '''mkisofs -V mycustominstall -J -R -b boot/cdboot -no-emul-boot -o myinstall.iso'''&lt;br /&gt;
&lt;br /&gt;
You can then use your favorite burning utility to burn the ISO to the media.&lt;br /&gt;
&lt;br /&gt;
To begin an installation that requires user interaction:&lt;br /&gt;
&lt;br /&gt;
'''pc-sysinstall -c /path_to_your_config_file'''&lt;br /&gt;
&lt;br /&gt;
To begin a fully automated installation, insert the installation media and reboot.&lt;br /&gt;
&lt;br /&gt;
In a PXE boot environment, '''cp''' your ''pc-sysinstall.conf'' file to ''/boot/'' on the [[Thin_Client#Creating_a_PXE_Boot_Install_Server | PXE Boot Install Server]]. Then, setup a call in ''/etc/rc.local'' that runs this command:&lt;br /&gt;
 &lt;br /&gt;
 '''pc-sysinstall start-autoinstall /boot/pc-autoinstall.conf'''&lt;br /&gt;
 &lt;br /&gt;
That will start the installation process, fetch your main configuration file, and perform the actual installation.&lt;br /&gt;
&lt;br /&gt;
== Additional Resources ==&lt;br /&gt;
&lt;br /&gt;
* Installing FreeBSD with pc-sysinstall: pages 26-28, {{citelink|url=http://bsdmag.org/magazine/1741-nanobsd-and-alix/|txt=June 2011 issue of BSD Mag}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{refheading}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[category:handbook]]&lt;br /&gt;
[[category:Advanced Installation Topics]]&lt;br /&gt;
[[category:Creating an Automated Installation with pc-sysinstall]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Manager</id>
		<title>PBI Manager</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Manager"/>
				<updated>2012-09-24T14:30:31Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Release History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{NavHeader|back=Using AppCafe®|forward=Update Manager}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PBI Manager is a suite of command line utilities which can be used to install, remove, create and manage PBIs. It is also available for [[#Installing PBI Manager|FreeBSD systems]]. The PBI Manager is released under the {{citelink|url=http://www.freebsd.org/copyright/freebsd-license.html|txt=BSD license}}.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
The 9.x PBI format introduced the following features:&lt;br /&gt;
&lt;br /&gt;
* '''Upgrade deltas:''' since PBIs are self-contained, installation files tend to be large. In the previous implementation, updating a PBI required the re-downloading of the entire installation archive. For larger applications this could be a time-consuming process, especially over low bandwidth connections. The new PBI specification performs updates using binary diff patches known as PBP (Push Button Patch) files. PBPs are a fraction of the PBI's size; in some cases less than 5% of the original PBI archive. An upgrade automatically checks for for the presence of a PBP file and attempts to use it, only falling back to the original archive should the process fail.&lt;br /&gt;
&lt;br /&gt;
* '''Library and file sharing:''' in the previous implementation of the PBI format it was common that identical files existed between various applications. These duplicates, while necessary to provide the self-contained functionality, wasted both disk space and runtime memory. This waste of space has been greatly reduced through the use of a hash-dir directory where libraries and common files are shared through a system of hard links. When an identical file is found in a PBI, the original will be removed and a hard-link stored in the hash-dir. After a PBI has been removed, any unneeded files left in the hash-dir are cleaned up by the pbid(8) daemon which monitors and maintains the integrity of the shared files.&lt;br /&gt;
&lt;br /&gt;
* '''Repository management:''' allows administrators and PBI builders to create and manage their own repositories of PBIs. This repository system provides a number of tools for PBI distribution, release management, and repository browsing. &lt;br /&gt;
&lt;br /&gt;
* '''Digitally signed PBIs:''' each repository includes an openssl public key file which is installed on the end user's system. Each PBI includes several signatures for the content archive and installation and removal scripts. During the PBI installation process, these signatures are checked to confirm that the archive has not been tampered with during transit. This key file is also used to associate a particular PBI with a parent repository for upgrade purposes, since it is possible that multiple repositories will have the same applications.&lt;br /&gt;
&lt;br /&gt;
* '''Root password not required:''' most applications can be installed and upgraded by regular user (non-root) accounts. This allows enhanced security in office or home situations, where users can now add/remove desktop applications without needing access to the root password. PBIs that impact on the security of the system (e.g. installing a web server) will require root access.&lt;br /&gt;
&lt;br /&gt;
* '''Implementation:''' the previous PBI design was developed in QT/KDE C++, making it inappropriate for use at the command line. The new format is implemented 100% in shell and is comprised of command-line utilities, each with an associated man page. These utilities are discussed in more detail in the rest of this section.&lt;br /&gt;
&lt;br /&gt;
== Additional Resources ==&lt;br /&gt;
&lt;br /&gt;
* {{citelink|url=http://www.pcbsd.org/~kris/pbi9-slides.pdf|txt=The PBI Format Re-implemented for Free/PC-BSD® (conference slides)}}&lt;br /&gt;
&lt;br /&gt;
* {{citelink|url=http://www.pcbsd.org/~kris/asiabsdcon2011-pbi9.pdf|txt=The PBI Format Re-implemented for Free/PC-BSD® (formal paper)}}&lt;br /&gt;
&lt;br /&gt;
* [[PBI9 Format|The PBI Format for 9.0 and Beyond]]&lt;br /&gt;
&lt;br /&gt;
== Release History ==&lt;br /&gt;
&lt;br /&gt;
; 1.0: ({{#dateformat:24 Sept 2012}}) - Kris Moore&lt;br /&gt;
&lt;br /&gt;
:* Fix build with CLANG&lt;br /&gt;
&lt;br /&gt;
:* Add support for shared XDG / Mime directories among users&lt;br /&gt;
&lt;br /&gt;
:* Enhance icons handling when adding to LOCALBASE&lt;br /&gt;
&lt;br /&gt;
:* Fixed a bug pruning the old version from an INDEX&lt;br /&gt;
&lt;br /&gt;
:* Get rid of left-over .sha256 files in auto-build directories&lt;br /&gt;
&lt;br /&gt;
; 0.9.9: ({{#dateformat:27 Aug 2012}}) - Kris Moore&lt;br /&gt;
&lt;br /&gt;
:* Added new C .pbiwrapper file, which can set LD* variables, and use setuid among others&lt;br /&gt;
&lt;br /&gt;
:* Fixed issues doing pkg_add on pkgs which need license agreements&lt;br /&gt;
&lt;br /&gt;
:* Added support for saving / re-creating users &amp;amp; groups that a port may need&lt;br /&gt;
&lt;br /&gt;
:* Fixed some issues getting the correct Package Name&lt;br /&gt;
&lt;br /&gt;
:* Fixed and issue using exclude lists&lt;br /&gt;
&lt;br /&gt;
:* Added option to view archive contents with pbi_add -i -v&lt;br /&gt;
&lt;br /&gt;
:* Added internal priority system to pbi autobuilding&lt;br /&gt;
&lt;br /&gt;
:* Speed up build system with better package caching&lt;br /&gt;
&lt;br /&gt;
:* Added additional tmpfs support for auto-building, to further speed up process&lt;br /&gt;
&lt;br /&gt;
:* Auto-source /etc/profile, to catch any HTTP_PROXY / FTP_PROXY values the user may set&lt;br /&gt;
&lt;br /&gt;
; 0.9.8: ({{#dateformat:11 May 2011}}) - Kris Moore&lt;br /&gt;
&lt;br /&gt;
:* Add support for copying linux binaries from ports, with their respective libs&lt;br /&gt;
&lt;br /&gt;
:* Add GUI speed calculations when downloading&lt;br /&gt;
&lt;br /&gt;
:* Allow some overrides to built-in defaults, for FreeNAS / pfSense and others&lt;br /&gt;
&lt;br /&gt;
:* Added fail-safes to make sure the user didn't manually mount things into a PBI directory&lt;br /&gt;
&lt;br /&gt;
; 0.9.7: ({{#dateformat:07 Dec 2011}}) - Kris Moore&lt;br /&gt;
&lt;br /&gt;
:* Use -a flag for fetch to retry after soft failures&lt;br /&gt;
&lt;br /&gt;
:* Do not create binary patch files, if they are larger than the source&lt;br /&gt;
&lt;br /&gt;
:* Add ability to use /etc/pbi-make.conf on system, letting us set universal make options&lt;br /&gt;
&lt;br /&gt;
:* Simplify the startup with less parsing commands&lt;br /&gt;
&lt;br /&gt;
:* Add new -R flag for pbi_add, which only downloads a PBI from a mirror, without installing it&lt;br /&gt;
&lt;br /&gt;
:* Add support for using &amp;quot;ccache&amp;quot; automatically if configured on the host system&lt;br /&gt;
&lt;br /&gt;
:* Fixed a bug using &amp;quot;pbi_create&amp;quot; on a directory manually, make sure file end up in proper PBI application directory&lt;br /&gt;
&lt;br /&gt;
:* Make sure we use the systems share/icons directory to use shared cursors / icons across all PBIs&lt;br /&gt;
&lt;br /&gt;
; 0.9.6: ({{#dateformat:07 Nov 2011}})&lt;br /&gt;
&lt;br /&gt;
:* Fix some bugs doing cleanup of stagedir / build directories&lt;br /&gt;
&lt;br /&gt;
:* Properly kill fetch process when canceling a download&lt;br /&gt;
&lt;br /&gt;
:* Improve buildworld on FreeBSD to use /usr/src if it already has source&lt;br /&gt;
&lt;br /&gt;
:* Fix some random warnings when building via sudo&lt;br /&gt;
&lt;br /&gt;
; 0.9.5: ({{#dateformat:03 Nov 2011}})&lt;br /&gt;
&lt;br /&gt;
:* Add sizes of PBIs to the meta index files&lt;br /&gt;
&lt;br /&gt;
:* Fix bug adding default icon to PBIs when none is specified&lt;br /&gt;
&lt;br /&gt;
:* Fix handling of PBI_PROGREVISION&lt;br /&gt;
&lt;br /&gt;
:* Make sure we unmount nullfs mounts completely&lt;br /&gt;
&lt;br /&gt;
; 0.9.4: ({{#dateformat:19 Oct 2011}})&lt;br /&gt;
&lt;br /&gt;
:* Fix issue using system-fonts in PBIs&lt;br /&gt;
&lt;br /&gt;
:* Fix issue removing files which have been set r--&lt;br /&gt;
&lt;br /&gt;
:* Slow down fetch process to fix issues with fetch protocol errors&lt;br /&gt;
&lt;br /&gt;
:* Fix bug coping linux libraries into final PBI file&lt;br /&gt;
&lt;br /&gt;
:* Allow user settings in external-links to overwrite auto-detected values&lt;br /&gt;
&lt;br /&gt;
:* Fix bug running &amp;quot;stat&amp;quot; on files with spaces in name&lt;br /&gt;
&lt;br /&gt;
:* Validate the build checksum before doing patching&lt;br /&gt;
&lt;br /&gt;
:* Speed up builds with optional --tmpfs flags&lt;br /&gt;
&lt;br /&gt;
:* Add priority system to building modules&lt;br /&gt;
&lt;br /&gt;
:* Fix issues setting proxy support from pbi.conf / pcbsd.conf files&lt;br /&gt;
&lt;br /&gt;
:* Validate repo URL's when creating .rpo file&lt;br /&gt;
&lt;br /&gt;
; 0.9.3: ({{#dateformat:18 Jul 2011}})&lt;br /&gt;
&lt;br /&gt;
:* Unset variables between auto-builds&lt;br /&gt;
&lt;br /&gt;
:* Fixed some warnings with 'cut' when parsing i18n strings&lt;br /&gt;
&lt;br /&gt;
:* When doing auto-builds, run through alphabetically&lt;br /&gt;
&lt;br /&gt;
:* Increase check frequency when first trying to download index's&lt;br /&gt;
&lt;br /&gt;
:* Speed up the hashdir merging&lt;br /&gt;
&lt;br /&gt;
:* Show repo MD5 with listings&lt;br /&gt;
&lt;br /&gt;
:* If no index files, do not fail on listing, just show empty repo&lt;br /&gt;
&lt;br /&gt;
; 0.9.2: ({{#dateformat:23 May 2011}})&lt;br /&gt;
&lt;br /&gt;
:* Fixed usage errors with &amp;quot;tr&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
:* Syntax fixes when trying to install app with no meta-data&lt;br /&gt;
  &lt;br /&gt;
:* Fixed some bugs with binary patching&lt;br /&gt;
  &lt;br /&gt;
:* Fixed auto-builder using the PBI_BUILDKEY in modules pbi.conf file&lt;br /&gt;
  &lt;br /&gt;
:* When building ports, do not export PREFIX since it confuses some linux ports&lt;br /&gt;
  &lt;br /&gt;
:* Perform check if user is root, if PBI is flagged root-only&lt;br /&gt;
  &lt;br /&gt;
:* Auto-builder now checks if port is compatible with arch type of system&lt;br /&gt;
&lt;br /&gt;
; 0.9.1: ({{#dateformat:3 May 2011}})&lt;br /&gt;
&lt;br /&gt;
:* Initial public release&lt;br /&gt;
&lt;br /&gt;
== What is the PBI format? ==&lt;br /&gt;
&lt;br /&gt;
One of the things holding back mainstream adoption of open source desktops is the package management format. With almost all open source desktops, software is simply treated as part of the operating system. Thus, when performing an update of some seemingly trivial application, you run the risk of potentially needing to upgrade other packages which could break other critical parts of your desktop. &lt;br /&gt;
&lt;br /&gt;
While package management systems have gotten better at resolving dependency issues, trying to fix conflicts to prevent breakage before it occurs, they still do not address the underlying problem: every software package is a part of the system, and pulling on any one thread has the potential of causing a break somewhere farther down the line.&lt;br /&gt;
&lt;br /&gt;
The PBI format tries to correct this underlying flaw. Rather than making every application a part of the base system, PBIs are self-contained, including their own dependent library tree and related data. As a result, when you install a PBI there are no dependency issues to resolve, and applications can be added or removed freely, without fear of causing breakage to the desktop or any other installed software.&lt;br /&gt;
&lt;br /&gt;
== Installing PBI Manager ==&lt;br /&gt;
&lt;br /&gt;
If you are running PC-BSD® 9 or higher, then the PBI Manager is already installed, and you can use it via the command-line, or a front-end such as the AppCafe®. &lt;br /&gt;
&lt;br /&gt;
FreeBSD users can install it from the {{citelink|url=http://www.freshports.org/ports-mgmt/pbi-manager|txt=ports tree}}. &lt;br /&gt;
&lt;br /&gt;
Users interested in installing the development version from our {{citelink|url=http://trac.pcbsd.org/brower/pcbsd/current/src-sh/pbi-manager/|txt=SVN repository}} can do so with the following commands: &amp;lt;!-- Is this still relevant or was this for pre-v9.0? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pcbsd/current/src-sh/pbi-manager&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 '''cd pbi-manager'''&lt;br /&gt;
 '''make install'''&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The development version may be unstable / buggy, use at your own risk'''&lt;br /&gt;
&lt;br /&gt;
== Getting PBI Files ==&lt;br /&gt;
&lt;br /&gt;
A list of approved and available PBIs can be viewed with '''pbi_info -i''' or '''pbi_browser''', and then installed with '''pbi_add -r &amp;lt;pbiname&amp;gt;'''. &lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' PBI files previously created for PC-BSD® 7.x/8.x will NOT work with PBI Manager as it was designed for version 9.x.&lt;br /&gt;
&lt;br /&gt;
== Underlying File / Directory Structure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The underlying files and directories used by PBI Manager are as follows:&lt;br /&gt;
&lt;br /&gt;
* '''/usr/local/etc/pbi.conf''': location of the PBI Manager configuration file &lt;br /&gt;
&lt;br /&gt;
* '''/usr/pbi/''': where PBIs are installed on the system&lt;br /&gt;
&lt;br /&gt;
* '''/var/db/pbi/''': contains data files related to installed PBIs and repositories &lt;br /&gt;
&lt;br /&gt;
* '''/usr/local/sbin/pbi_*''': location of the PBI Manager commands&lt;br /&gt;
&lt;br /&gt;
* '''/usr/local/share/pbi-manager/module-examples/convertoldmod.sh''': script which can be used to convert an existing 7.x or 8.x PBI module to the new 9.x format&lt;br /&gt;
&lt;br /&gt;
== Feedback / Reporting Problems ==&lt;br /&gt;
&lt;br /&gt;
Feedback, problem reports, and general discussion are welcome on the {{citelink|url=http://lists.pcbsd.org/mailman/listinfo/pbi-dev|txt=PBI Developers Mailing list}}.&lt;br /&gt;
&lt;br /&gt;
== Command Reference ==&lt;br /&gt;
&lt;br /&gt;
The following commands are installed by PBI Manager. For more details, refer to that command's man page.&lt;br /&gt;
&lt;br /&gt;
=== pbi_add(1) ===&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_add''', the '''pbi_add''' command is used for adding/installing PBIs on a system, either from a local file or remotely from a repository. This utility supports the options listed in Table 7.2a.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2a: pbi_add Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|extract only, do not install; will extract the archive to ''~/&amp;lt;pbidirname&amp;gt;'' unless the '''-o''' option is used}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-f'''}}&lt;br /&gt;
{{Tbl-line|align=left|force installation, overwriting an already installed copy of the application}}&lt;br /&gt;
|- &lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt; &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-g'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|show path to icons and images for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|bg=ee|align=left|display information about specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-l'''}}            &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|display license for specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify the directory to use when extracting the PBI with '''-e'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|remote fetch installation file from update server; the system architecture and version will be automatically determined in order to fetch the correct file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-R'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|remote fetch the install file from the update server but do not install}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|align=left|enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 9 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|display any custom scripts used in the installation/removal of the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 10 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--licagree'''}}&lt;br /&gt;
{{Tbl-line|align=left|agree to license terms and conditions; to view the license, use '''-l'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 11 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-checksig'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 12 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksum'''}}&lt;br /&gt;
{{Tbl-line|align=left|skip the checksum verification of the archive data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 13 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|disable using the shared hash dir}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 14 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--repo repoid'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify which repository to use}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 15 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--rArch arch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|manually specify the PBI architecture type of i386 or amd64}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 16 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--rVer version'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify which version of the PBI to install}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommend that users first use the '''-e''' and '''--checkscript''' options to view archive contents and installation scripts prior to installing a PBI file.&lt;br /&gt;
&lt;br /&gt;
To install a PBI, use: '''pbi_add -r PBINAME'''. The following example will install the alpine PBI:&lt;br /&gt;
&lt;br /&gt;
 '''pbi_add -r alpine'''&lt;br /&gt;
 Downloading ftp://ftp.pcbsd.org/pub/mirror/PBI/mail/alpine/9/x32/alpine-2.00_3-i386.pbi&lt;br /&gt;
 /usr/pbi/.alpine-2.00_3-i386.pbi.42391   100% of  11 MB 295 kBps 00m00s&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to: /usr/pbi/alpine-i386&lt;br /&gt;
 Installed: Alpine-2.00_3&lt;br /&gt;
&lt;br /&gt;
=== pbi_addrepo(8) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_addrepo''' command is used to register a new PBI repository on a system. If the '''pbid''' daemon is running, the repository's index and meta files will be automatically fetched and made ready for browsing. The command has one argument: the name of the repository file. Repository files have a ''.rpo'' extension and are created with the '''pbi_makerepo''' command.&lt;br /&gt;
&lt;br /&gt;
=== pbi_autobuild(8) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_autobuild''' command is used on the PBI build system to build any out-of-date or new packages. It can traverse the FreeBSD ports and metadata trees, building missing PBI files or PBIs in which the target port version has been updated. Instructions for using this command to keep a custom repository up-to-date can be found in the section [[Create Your Own PBI Repository#Configure the Automatic Build of Updated Ports|Configure the Automatic Build of Updated Ports]].&lt;br /&gt;
&lt;br /&gt;
Table 7.2b summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2b: pbi_autobuild Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; specify the directory containing the PBI configuration modules; any found ''pbi.conf'' files will be parsed, and if PBI_MAKEPORT is set, the target port will be used for the build; if PBI_MAKEPORT is unset, the auto-build will attempt to match the module to a FreeBSD port based upon the dirname of ''pbi.conf''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify an alternative ports directory; defaults to ''/usr/ports/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-h script'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify a helper script to call after building a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory; the directory to place the finished PBI files}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--genpatch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|when building a new PBI, check for archived copies and generate smaller patch updates to the new version (*.pbp files)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--keep num'''}}&lt;br /&gt;
{{Tbl-line|align=left|when building new PBIs, keep &amp;lt;num&amp;gt; copies of past versions of working PBI in ''&amp;lt;outdir&amp;gt;/archived/'' folder; these archived copies can be used with the '''--genpatch''' command to generate update patch files}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--pkgcache'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|enable caching of ''.txz'' pkg files which greatly speeds up subsequent builds of a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--prune'''}}&lt;br /&gt;
{{Tbl-line|align=left|remove any PBIs which no longer have an associated module}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--tmpfs'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|automatically create and mount a tmp filesystem which can speed up port compiles on systems with available RAM}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|digitally sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_browser(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_browser''' command provides a CLI front-end to browsing a repository's available PBIs. Options for viewing categories and searching by keyword are available, and once the desired PBI is located, it will show the '''pbi_add''' command which can be used to install the application. Table 7.2c summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2c: pbi_browser Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|displays a list of PBIs in the specified category}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-s search'''}}&lt;br /&gt;
{{Tbl-line|align=left|search for PBIs containing the specified string in the name, description, or keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--listcats'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|list the available categories}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--viewall'''}}&lt;br /&gt;
{{Tbl-line|align=left|list all available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi.conf(5) ===&lt;br /&gt;
&lt;br /&gt;
''pbi.conf'' is an ASCII text configuration file containing values that are used by the various '''pbi_*''' commands. The proxy variables are only needed if the system uses a proxy server to access the Internet. Table 7.2d lists the supported variables.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2d: pbi_conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=20%|'''Variable'''}}&lt;br /&gt;
{{Tbl-title|width=80%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|PBID_REFRESH}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|wakeup time in seconds for '''pbid''' to run its checks}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|PBI_INDEXREFRESH}}&lt;br /&gt;
{{Tbl-line|align=left|number of hours representing how often '''pbid''' refreshes the index and meta files from repos; default is every 24 hours}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|PBI_PROXYURL}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|proxy server IP address}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|PBI_PROXYPORT}}&lt;br /&gt;
{{Tbl-line|align=left|proxy server port number}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|PBI_PROXYTYPE}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|can be HTTP or SOCKS5}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|PBI_PROXYUSER}}&lt;br /&gt;
{{Tbl-line|align=left|username used to authenticate with proxy server}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|PBI_PROXYPASS}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|password used to authenticate with proxy server}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_create(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_create''' command provides a way for packagers to manually specify a target directory to be compressed into a PBI file. The option '''-b''' can also be used to re-package an already installed PBI back to an archive. PBI creators are encouraged to send a tarball of the resulting PBI module to the {{citelink|url=http://lists.pcbsd.org/mailman/listinfo/pbi-dev|txt=PBI-testing mailing list}} so they can be added to the PC-BSD® PBI repository and made available to other PC-BSD® users.&lt;br /&gt;
&lt;br /&gt;
Table 7.2e summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2e: pbi_create Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify the author for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-b'''}}&lt;br /&gt;
{{Tbl-line|align=left|make a backup of an installed PBI; specify the target PBI name instead of the PBI directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify the metadata configuration directory; while not required it is highly recommended as metadata is required to create icons and binary entry-points}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify an alternative ports directory; defaults to ''/usr/ports/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify a default icon, relative to ''pbidir/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify a name for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|place the finished ''.pbi'' file into the specified directory; defaults to $HOME}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p port'''}}&lt;br /&gt;
{{Tbl-line|align=left|use the given port to get PBI name and version}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r version'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify a version for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-u weburl'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify a website URL for the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|disable using the shared hash directory which uses hard links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|digitally sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As the superuser, you can create a PBI with the '''pbi_create''' command using the following syntax:&lt;br /&gt;
&lt;br /&gt;
 '''pbi_create -a &amp;lt;author&amp;gt; -n &amp;lt;name&amp;gt; -r &amp;lt;version&amp;gt; -w &amp;lt;weburl&amp;gt; &amp;lt;target directory&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Inside the target directory place the application's binaries or scripts along with any required dependencies. To indicate which file(s) represent the runtime command(s), include a file named ''external-links'' in the target directory. That file contains an entry for each command, as seen in the following example:&lt;br /&gt;
&lt;br /&gt;
 # Files to be symlinked into the default LOCALBASE&lt;br /&gt;
 # One per-line, relative to %%PBI_APPDIR%% and LOCALBASE&lt;br /&gt;
 # Defaults to keeping any existing files in LOCALBASE&lt;br /&gt;
 # Use bin-files/ for binaries that need wrapper functionality&lt;br /&gt;
 &lt;br /&gt;
 # TARGET                LINK IN LOCALBASE       ACTION&lt;br /&gt;
 bin/myapp               bin/myapp               binary,nocrash&lt;br /&gt;
&lt;br /&gt;
This entry instructs '''pbi_create''' to make the wrapper scripts for the ''myapp'' binary, along with placing it in the user's PATH at install time.&lt;br /&gt;
&lt;br /&gt;
It is also possible to include desktop icons and mime entries using the ''xdg-mime/'', ''xdg-desktop/'' and ''xdg-menu/'' directories. The section on how to [[Create PBIs]] contains more details about creating these files. These directories should be created as subdirectories of the target directory of your application.&lt;br /&gt;
&lt;br /&gt;
=== pbi_delete(1) ===&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_delete''', the '''pbi_delete''' command removes an installed PBI from the system. It also schedules cleaning for the shared library directory, which is performed by '''pbid'''. Table 7.2f summarizes its options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2f: pbi_delete Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--clean-hdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|perform a full cleaning of the shared hash directory, removing any unused files; should only be required after a system crash or failure in removing a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When removing a PBI, you must give its full name. The full name can be found in the output of '''pbi_info'''. The following example searches for the ntop PBI and removes it:&lt;br /&gt;
 &lt;br /&gt;
 '''pbi_info | grep ntop'''&lt;br /&gt;
 ntop-4.0.1_1-i386&lt;br /&gt;
 '''pbi_delete -v ntop-4.0.1_1-i386'''&lt;br /&gt;
 Running pre-removal script: /var/db/pbi/installed/ntop-4.0.1_1-i386/pre-remove.sh&lt;br /&gt;
 Removing: /usr/pbi/ntop-i386&lt;br /&gt;
 Removing: /var/db/pbi/installed/ntop-4.0.1_1-i386&lt;br /&gt;
&lt;br /&gt;
=== pbi_deleterepo(8) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_deleterepo''' command can be used to remove a registered repository from the system. It takes the repository's ID as the only command argument.&lt;br /&gt;
&lt;br /&gt;
=== pbi_icon(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_icon''' command provides a number of options for adding desktop icons, menu entries, and mime data for an installed PBI. Not all PBIs will contain desktop/menu/mime data. Additionally, the window manager must be {{citelink|url=http://en.wikipedia.org/wiki/Xdg|XDG}}-compliant to understand a PBI's icon and mime settings. Table 7.2g summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2g: pbi_icon Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|installs desktop icon; should be run as regular user}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-mime'''}}&lt;br /&gt;
{{Tbl-line|align=left|installs mime information; should be run as root}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-menu'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|installs menu icons; should be run as root}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|installs any $PATH links to ''~/bin'' when run as user or to $LOCALBASE when run as root}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|removes desktop icon; should be run as regular user}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|removes menu icons; should be run as root}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|removes mime information; should be run as root}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|removes any $PATH links to ''~/bin'' when run as user or to $LOCALBASE when run as root}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_indextool(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_indextool''' command is useful for repository maintainers. It allows PBI files to be added and removed from the repository's ''INDEX'' file. An example of using this command can be found in [[Create Your Own PBI Repository]]. Table 7.2h summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2h: pbi_indextool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Command'''}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=70%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-b vers'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mark previous versions as having a binary diff patch (''.pbp'' file used for upgrading) available}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-f pbifile'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory, name of PBI being added to the target ''INDEX'' file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-k num'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|number of previous versions of this PBI to keep in the ''INDEX'' file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-u fileurl'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory URL to PBI location on server in the format category/pbi_name}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-m arch'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory architecture type for PBI being removed (e.g. i386, amd64)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-n pbiname'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory name of PBI being removed from the ''INDEX'' file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-v version'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory, version of the PBI being removed from the ''INDEX'' file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_info(1) ===&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_info''' command, the '''pbi_info''' command is used to determine which PBIs are currently installed. Table 7.2i summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2i: pbi_info Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|list all PBIs installed on the system; same as running '''pbi_info''' without an argument}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|align=left|list all available PBIs from any repo}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_listrepo(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_listrepo''' command manages installed repositories on a system. Table 7.2j summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2j: pbi_listrepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--down'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|move the targeted repoID down a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-mirror URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|change the specified repoID's mirror URL}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--up'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|move the targeted repoID up a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command without any options to list the IDs of the available repositories.&lt;br /&gt;
&lt;br /&gt;
=== pbi_makepatch(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makepatch''' command is automatically used by '''pbi_autobuild''' to create small ''*.pbp'' (Push Button Patch) files. These files can be downloaded to a user's system in order to update a PBI's version without re-downloading the entire archive. This allows users to download only the incremental changes when a PBI is upgraded. The command can also be run manually by providing two PBI archives to compare and generate a patch file for.&lt;br /&gt;
&lt;br /&gt;
Table 7.2k summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2k: pbi_makepatch Options&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|save the resulting ''*pbp'' file to the specified directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|use the specified openssl key to digitally sign the patch file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--tmpfs'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|can reduce building time for large PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_makeport(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makeport''' command can be used by packagers to build a target FreeBSD port and convert it into a PBI file. Many options are provided to fine-tune the build process, and meta-data modules can also be specified to further improve the resulting PBI file. The first time this command is run, it will build a fresh chroot sandbox environment which can be used for clean-room building of the target port without affecting the host system. More details about how to create a PBI using this command, can be found in the [[PBI Module Builder Guide#Creating a New PBI with pbi makeport | ''PBI Module Builder Guide'']].&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' the '''pbi_makeport''' command has support for using {{citelink|url=http://www.freshports.org/devel/ccache/|txt=ccache}} to speed up the compile process. If '''ccache''' is installed on the host system and the CCACHE_DIR variable is set, the '''pbi_makeport''' command will automatically utilize it for the port compile phase. This can be disabled by setting NO_CCACHE=yes in ''/etc/pbi-make.conf'' on the host system, or as an optional make flag in a module's ''pbi.conf'' file. &lt;br /&gt;
&lt;br /&gt;
Table 7.2l summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2l: pbi_makeport Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-B'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|build-only; generally used with '''-k''' to build a port before running '''pbi_create''' manually}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify the metadata configuration directory; while not required it is highly recommended as metadata is required to create icons and binary entry-points }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify an alternative ports directory; defaults to ''/usr/ports''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-k'''}}&lt;br /&gt;
{{Tbl-line|align=left|keep the build files after building the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|the directory to place the finished PBI file; defaults to user's $HOME directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p prefix'''}}&lt;br /&gt;
{{Tbl-line|align=left|manually provide a PREFIX which determines the location where the PBI will be installed on the end-user's system}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--delbuild'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|remove any existing build directories before starting the build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--mkdebug'''}}&lt;br /&gt;
{{Tbl-line|align=left|will drop to a debugging shell should the port make fail}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|disable auto-pruning of non-REQUIREDBY ports after the compile phase; by default any ports which are used solely for building and which are not required for program execution will be pruned}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--pkgdir dir'''}}&lt;br /&gt;
{{Tbl-line|align=left|uses the specified directory to cache the .txz package so subsequent builds will not rebuild the port from source&lt;br /&gt;
 }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--tmpfs'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|automatically create and mount a tmp filesystem and use it for WRKDIRPREFIX; can speed up port compiles on systems with available RAM}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|digitally sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_makerepo(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makerepo''' command allows repository maintainers to create a single ''*.rpo'' file containing various information about the new repository. This ''.rpo'' file can then be installed on the target system with '''pbi_addrepo'''. Table 7.2m summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2m: pbi_makerepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--desc description'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|required; description of the repo to be shown in the repo list}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--key keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|required; OpenSSL public key used to verify the digital signature of PBIs installed from this repo}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--mirror URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|required; URL in &amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;, or &amp;lt;nowiki&amp;gt;ftp://&amp;lt;/nowiki&amp;gt; format to download PBIs and updates from}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--url URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|required; URL in &amp;lt;nowiki&amp;gt;http://&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;, or &amp;lt;nowiki&amp;gt;ftp://&amp;lt;/nowiki&amp;gt; format to use when downloading the master ''INDEX'' file of available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_metatool(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_metatool''' command provides a way for repository maintainers to modify the PBI metadata in their repository in order to add or remove application categories or specified PBIs. An example of using this command can be found in [[Create Your Own PBI Repository]]. Table 7.2n summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2n: pbi_metatool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Command'''}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=70%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add''' or '''rem'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--cat'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|indicates that a new category is being added to or removed from the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add''' or '''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''--app'''}}&lt;br /&gt;
{{Tbl-line|align=left|adds or removes a new PBI to/from the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|adds the name of the application's author to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|align=left|name of new category to add to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d desc'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory description of PBI or category being added}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory URL to 64x64 ''.png'' icon of PBI or category being added}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-k keywords'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|comma delimited list (with no spaces) of search keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-l license'''}}&lt;br /&gt;
{{Tbl-line|align=left|type of license (e.g. BSD, GPL, Commercial)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add''' or '''rem'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory name of category or PBI being added to or removed from the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-t type'''}}&lt;br /&gt;
{{Tbl-line|align=left|type of application (e.g. Graphical, Text, Service)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-u URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|website of application being added}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-r'''}}&lt;br /&gt;
{{Tbl-line|align=left|include if application needs to be installed as the superuser}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_patch(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_patch''' command is used to update an installed PBI to a different version using a small diff Push Button Patch ''*.pbp'' file. This allows the user to perform an incremental upgrade of an installed PBI. The available options are summarized in Table 7.2o.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2o: pbi_patch Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|extract only, do not install; will extract the archive to ''~/&amp;lt;pbidirname&amp;gt;'' unless '''-o''' is used.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-g'''}}&lt;br /&gt;
{{Tbl-line|align=left|extract image data from header; commonly used for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|display information about this PBI file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify the directory to use when only extracting the PBI with '''-e'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|display any custom scripts used in the installation/removal of this PBI file; recommended if the PBI file is suspect in any way}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksig'''}}&lt;br /&gt;
{{Tbl-line|align=left|skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|disable using the shared hash directory which uses hard links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_update(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update''' command is used to display information about which PBIs have available updates and to perform the updates. Table 7.2p summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2p: pbi_update Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|check only the specified PBI for available updates}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--check-all'''}}&lt;br /&gt;
{{Tbl-line|align=left|run a full check of all installed PBIs and display list of available updates}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-disable-auto'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|disable auto-updating of the target PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--enable-auto'''}}&lt;br /&gt;
{{Tbl-line|align=left|enable auto-updating of the target PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--update-all'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|update all installed PBIs to the latest versions}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_update_hashdir(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update_hashdir''' command is used by the '''pbid''' daemon to merge the contents of a PBI into the hash directory.&lt;br /&gt;
&lt;br /&gt;
=== pbid(8) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbid''' command runs a small daemon which performs maintenance of installed PBIs, merges files into the shared hashdir, fetches the repository ''INDEX'' and meta files, and makes the adding and removing of PBIs much faster. It will automatically be started from the''/usr/local/etc/rc.d/pbid'' startup script if ''pbid_enable=&amp;quot;YES&amp;quot;'' is in the ''/etc/rc.conf'' file.&lt;br /&gt;
&lt;br /&gt;
This utility supports the option summarized in table 7.2q:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2q: pbid Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|enable verbose output when the daemon starts}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--refresh'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|schedule a refresh of index and meta files }}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This command logs its output to ''/var/log/pbid.log''. Check this log for errors should you experience any problems with PBI maintenance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{refheading}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[category:handbook]]&lt;br /&gt;
[[category:Maintaining and Extending PC-BSD®]]&lt;br /&gt;
[[category:PBI Manager]]&lt;br /&gt;
[[category:protect]]&lt;br /&gt;
[[category:Referred by manpage]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Manager</id>
		<title>PBI Manager</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Manager"/>
				<updated>2012-08-27T16:56:26Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Release History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{NavHeader|back=Using AppCafe®|forward=Update Manager}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
PBI Manager is a suite of command line utilities which can be used to install, remove, create and manage PBIs. It is also available for [[#Installing PBI Manager|FreeBSD systems]]. The PBI Manager is released under the {{citelink|url=http://www.freebsd.org/copyright/freebsd-license.html|BSD license}}.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
The 9.x PBI format introduced the following features:&lt;br /&gt;
&lt;br /&gt;
* '''Upgrade deltas:''' since PBIs are self-contained, installation files tend to be large. In the previous implementation, updating a PBI required the re-downloading of the entire installation archive. For larger applications this could be a time-consuming process, especially over low bandwidth connections. The new PBI specification performs updates using binary diff patches known as PBP (Push Button Patch) files. PBPs are a fraction of the PBI's size; in some cases less than 5% of the original PBI archive. An upgrade automatically checks for for the presence of a PBP file and attempts to use it, only falling back to the original archive should the process fail.&lt;br /&gt;
&lt;br /&gt;
* '''Library and file sharing:''' in the previous implementation of the PBI format it was common that identical files existed between various applications. These duplicates, while necessary to provide the self-contained functionality, wasted both disk space and runtime memory. This waste of space has been greatly reduced through the use of a hash-dir directory where libraries and common files are shared through a system of hard links. When an identical file is found in a PBI, the original will be removed and a hard-link stored in the hash-dir. After a PBI has been removed, any unneeded files left in the hash-dir are cleaned up by the pbid(8) daemon which monitors and maintains the integrity of the shared files.&lt;br /&gt;
&lt;br /&gt;
* '''Repository management:''' allows administrators and PBI builders to create and manage their own repositories of PBIs. This repository system provides a number of tools for PBI distribution, release management, and repository browsing. &lt;br /&gt;
&lt;br /&gt;
* '''Digitally signed PBIs:''' each repository includes an openssl public key file which is installed on the end user's system. Each PBI includes several signatures for the content archive and installation and removal scripts. During the PBI installation process, these signatures are checked to confirm that the archive has not been tampered with during transit. This key file is also used to associate a particular PBI with a parent repository for upgrade purposes, since it is possible that multiple repositories will have the same applications.&lt;br /&gt;
&lt;br /&gt;
* '''Root password not required:''' most applications can be installed and upgraded by regular user (non-root) accounts. This allows enhanced security in office or home situations, where users can now add/remove desktop applications without needing access to the root password. PBIs that impact on the security of the system (e.g. installing a web server) will require root access.&lt;br /&gt;
&lt;br /&gt;
* '''Implementation:''' the previous PBI design was developed in QT/KDE C++, making it inappropriate for use at the command line. The new format is implemented 100% in shell and is comprised of command-line utilities, each with an associated man page. These utilities are discussed in more detail in the rest of this section.&lt;br /&gt;
&lt;br /&gt;
== Additional Resources ==&lt;br /&gt;
&lt;br /&gt;
* {{citelink|url=http://www.pcbsd.org/~kris/pbi9-slides.pdf|The PBI Format Re-implemented for Free/PC-BSD® (conference slides)}}&lt;br /&gt;
&lt;br /&gt;
* {{citelink|url=http://www.pcbsd.org/~kris/asiabsdcon2011-pbi9.pdf|The PBI Format Re-implemented for Free/PC-BSD® (formal paper)}}&lt;br /&gt;
&lt;br /&gt;
* [[PBI9 Format|The PBI Format for 9.0 and Beyond]]&lt;br /&gt;
&lt;br /&gt;
== Release History ==&lt;br /&gt;
&lt;br /&gt;
'''0.9.9''' (08-27-12) - Kris Moore&lt;br /&gt;
&lt;br /&gt;
:* Added new C .pbiwrapper file, which can set LD* variables, and use setuid among others&lt;br /&gt;
&lt;br /&gt;
:* Fixed issues doing pkg_add on pkgs which need license agreements&lt;br /&gt;
&lt;br /&gt;
:* Added support for saving / re-creating users &amp;amp; groups that a port may need&lt;br /&gt;
&lt;br /&gt;
:* Fixed some issues getting the correct Package Name&lt;br /&gt;
&lt;br /&gt;
:* Fixed and issue using exclude lists&lt;br /&gt;
&lt;br /&gt;
:* Added option to view archive contents with pbi_add -i -v&lt;br /&gt;
&lt;br /&gt;
:* Added internal priority system to pbi autobuilding&lt;br /&gt;
&lt;br /&gt;
:* Speed up build system with better package caching&lt;br /&gt;
&lt;br /&gt;
:* Added additional tmpfs support for auto-building, to further speed up process&lt;br /&gt;
&lt;br /&gt;
:* Auto-source /etc/profile, to catch any HTTP_PROXY / FTP_PROXY values the user may set&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''0.9.8''' (05-11-12) - Kris Moore&lt;br /&gt;
&lt;br /&gt;
:* Add support for copying linux binaries from ports, with their respective libs&lt;br /&gt;
&lt;br /&gt;
:* Add GUI speed calculations when downloading&lt;br /&gt;
&lt;br /&gt;
:* Allow some overrides to built-in defaults, for FreeNAS / pfSense and others&lt;br /&gt;
&lt;br /&gt;
:* Added fail-safes to make sure the user didn't manually mount things into a PBI directory&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''0.9.7''' (12-07-11) - Kris Moore&lt;br /&gt;
&lt;br /&gt;
:* Use -a flag for fetch to retry after soft failures&lt;br /&gt;
&lt;br /&gt;
:* Do not create binary patch files, if they are larger than the source&lt;br /&gt;
&lt;br /&gt;
:* Add ability to use /etc/pbi-make.conf on system, letting us set universal make options&lt;br /&gt;
&lt;br /&gt;
:* Simplify the startup with less parsing commands&lt;br /&gt;
&lt;br /&gt;
:* Add new -R flag for pbi_add, which only downloads a PBI from a mirror, without installing it&lt;br /&gt;
&lt;br /&gt;
:* Add support for using &amp;quot;ccache&amp;quot; automatically if configured on the host system&lt;br /&gt;
&lt;br /&gt;
:* Fixed a bug using &amp;quot;pbi_create&amp;quot; on a directory manually, make sure file end up in proper PBI application directory&lt;br /&gt;
&lt;br /&gt;
:* Make sure we use the systems share/icons directory to use shared cursors / icons across all PBIs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''0.9.6''' (11-07-11)&lt;br /&gt;
&lt;br /&gt;
:* Fix some bugs doing cleanup of stagedir / build directories&lt;br /&gt;
&lt;br /&gt;
:* Properly kill fetch process when canceling a download&lt;br /&gt;
&lt;br /&gt;
:* Improve buildworld on FreeBSD to use /usr/src if it already has source&lt;br /&gt;
&lt;br /&gt;
:* Fix some random warnings when building via sudo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''0.9.5''' (11-03-11)&lt;br /&gt;
&lt;br /&gt;
:* Add sizes of PBIs to the meta index files&lt;br /&gt;
&lt;br /&gt;
:* Fix bug adding default icon to PBIs when none is specified&lt;br /&gt;
&lt;br /&gt;
:* Fix handling of PBI_PROGREVISION&lt;br /&gt;
&lt;br /&gt;
:* Make sure we unmount nullfs mounts completely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''0.9.4''' (10-19-11)&lt;br /&gt;
&lt;br /&gt;
:* Fix issue using system-fonts in PBIs&lt;br /&gt;
&lt;br /&gt;
:* Fix issue removing files which have been set r--&lt;br /&gt;
&lt;br /&gt;
:* Slow down fetch process to fix issues with fetch protocol errors&lt;br /&gt;
&lt;br /&gt;
:* Fix bug coping linux libraries into final PBI file&lt;br /&gt;
&lt;br /&gt;
:* Allow user settings in external-links to overwrite auto-detected values&lt;br /&gt;
&lt;br /&gt;
:* Fix bug running &amp;quot;stat&amp;quot; on files with spaces in name&lt;br /&gt;
&lt;br /&gt;
:* Validate the build checksum before doing patching&lt;br /&gt;
&lt;br /&gt;
:* Speed up builds with optional --tmpfs flags&lt;br /&gt;
&lt;br /&gt;
:* Add priority system to building modules&lt;br /&gt;
&lt;br /&gt;
:* Fix issues setting proxy support from pbi.conf / pcbsd.conf files&lt;br /&gt;
&lt;br /&gt;
:* Validate repo URL's when creating .rpo file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''0.9.3''' (07-18-11)&lt;br /&gt;
&lt;br /&gt;
:* Unset variables between auto-builds&lt;br /&gt;
&lt;br /&gt;
:* Fixed some warnings with 'cut' when parsing i18n strings&lt;br /&gt;
&lt;br /&gt;
:* When doing auto-builds, run through alphabetically&lt;br /&gt;
&lt;br /&gt;
:* Increase check frequency when first trying to download index's&lt;br /&gt;
&lt;br /&gt;
:* Speed up the hashdir merging&lt;br /&gt;
&lt;br /&gt;
:* Show repo MD5 with listings&lt;br /&gt;
&lt;br /&gt;
:* If no index files, do not fail on listing, just show empty repo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''0.9.2''' (05-23-11)&lt;br /&gt;
&lt;br /&gt;
:* Fixed usage errors with &amp;quot;tr&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
:* Syntax fixes when trying to install app with no meta-data&lt;br /&gt;
  &lt;br /&gt;
:* Fixed some bugs with binary patching&lt;br /&gt;
  &lt;br /&gt;
:* Fixed auto-builder using the PBI_BUILDKEY in modules pbi.conf file&lt;br /&gt;
  &lt;br /&gt;
:* When building ports, do not export PREFIX since it confuses some linux ports&lt;br /&gt;
  &lt;br /&gt;
:* Perform check if user is root, if PBI is flagged root-only&lt;br /&gt;
  &lt;br /&gt;
:* Auto-builder now checks if port is compatible with arch type of system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''0.9.1''' (05/3/11)&lt;br /&gt;
&lt;br /&gt;
:* Initial public release&lt;br /&gt;
&lt;br /&gt;
== What is the PBI format? ==&lt;br /&gt;
&lt;br /&gt;
One of the things holding back mainstream adoption of open source desktops is the package management format. With almost all open source desktops, software is simply treated as part of the operating system. Thus, when performing an update of some seemingly trivial application, you run the risk of potentially needing to upgrade other packages which could break other critical parts of your desktop. &lt;br /&gt;
&lt;br /&gt;
While package management systems have gotten better at resolving dependency issues, trying to fix conflicts to prevent breakage before it occurs, they still do not address the underlying problem: every software package is a part of the system, and pulling on any one thread has the potential of causing a break somewhere farther down the line.&lt;br /&gt;
&lt;br /&gt;
The PBI format tries to correct this underlying flaw. Rather than making every application a part of the base system, PBIs are self-contained, including their own dependent library tree and related data. As a result, when you install a PBI there are no dependency issues to resolve, and applications can be added or removed freely, without fear of causing breakage to the desktop or any other installed software.&lt;br /&gt;
&lt;br /&gt;
== Installing PBI Manager ==&lt;br /&gt;
&lt;br /&gt;
If you are running PC-BSD® 9 or higher, then the PBI Manager is already installed, and you can use it via the command-line, or a front-end such as the AppCafe®. &lt;br /&gt;
&lt;br /&gt;
FreeBSD users can install it from the {{citelink|url=http://www.freshports.org/ports-mgmt/pbi-manager|ports tree}}. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users interested in installing the development version from our {{citelink|url=http://trac.pcbsd.org/brower/pcbsd/current/src-sh/pbi-manager/|SVN repository}} can do so with the following commands: &amp;lt;!-- Is this still relevant or was this for pre-v9.0? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pcbsd/current/src-sh/pbi-manager&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 '''cd pbi-manager'''&lt;br /&gt;
 '''make install'''&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The development version may be unstable / buggy, use at your own risk'''&lt;br /&gt;
&lt;br /&gt;
== Getting PBI Files ==&lt;br /&gt;
&lt;br /&gt;
A list of approved and available PBIs can be viewed with '''pbi_info -i''' or '''pbi_browser''', and then installed with '''pbi_add -r &amp;lt;pbiname&amp;gt;'''. &lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' PBI files previously created for PC-BSD® 7.x/8.x will NOT work with PBI Manager as it was designed for version 9.x.&lt;br /&gt;
&lt;br /&gt;
== Underlying File / Directory Structure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The underlying files and directories used by PBI Manager are as follows:&lt;br /&gt;
&lt;br /&gt;
* '''/usr/local/etc/pbi.conf''': location of the PBI Manager configuration file &lt;br /&gt;
&lt;br /&gt;
* '''/usr/pbi/''': where PBIs are installed on the system&lt;br /&gt;
&lt;br /&gt;
* '''/var/db/pbi/''': contains data files related to installed PBIs and repositories &lt;br /&gt;
&lt;br /&gt;
* '''/usr/local/sbin/pbi_*''': location of the PBI Manager commands&lt;br /&gt;
&lt;br /&gt;
* '''/usr/local/share/pbi-manager/module-examples/convertoldmod.sh''': script which can be used to convert an existing 7.x or 8.x PBI module to the new 9.x format&lt;br /&gt;
&lt;br /&gt;
== Feedback / Reporting Problems ==&lt;br /&gt;
&lt;br /&gt;
Feedback, problem reports, and general discussion are welcome on the {{citelink|url=http://lists.pcbsd.org/mailman/listinfo/pbi-dev|PBI Developers Mailing list}}. &lt;br /&gt;
&lt;br /&gt;
== Command Reference ==&lt;br /&gt;
&lt;br /&gt;
The following commands are installed by PBI Manager. For more details, refer to that command's man page.&lt;br /&gt;
&lt;br /&gt;
=== pbi_add(1) ===&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_add''', the '''pbi_add''' command is used for adding/installing PBIs on a system, either from a local file or remotely from a repository. This utility supports the options listed in Table 7.2a.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2a: pbi_add Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|extract only, do not install; will extract the archive to ''~/&amp;lt;pbidirname&amp;gt;'' unless the '''-o''' option is used}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-f'''}}            &lt;br /&gt;
{{Tbl-line|align=left|force installation, overwriting an already installed copy of the application}}&lt;br /&gt;
|- &lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt; &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-g'''}}            &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|show path to icons and images for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|'''-i'''}}            &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|display information about specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-l'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|display license for specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}      &lt;br /&gt;
{{Tbl-line|align=left|specify the directory to use when extracting the PBI with '''-e'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|remote fetch installation file from update server; the system architecture and version will be automatically determined in order to fetch the correct file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-R'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|remote fetch the install file from the update server but do not install}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-v'''}}             &lt;br /&gt;
{{Tbl-line|align=left|enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 9 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|display any custom scripts used in the installation/removal of the PBI}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 10 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''--licagree'''}}     &lt;br /&gt;
{{Tbl-line|align=left|agree to license terms and conditions; to view the license, use '''-l'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 11 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-checksig'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 12 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksum'''}}  &lt;br /&gt;
{{Tbl-line|align=left|skip the checksum verification of the archive data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 13 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|disable using the shared hash dir}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 14 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--repo repoid'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify which repository to use}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 15 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--rArch arch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|manually specify the PBI architecture type of i386 or amd64}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 16 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--rVer version'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify which version of the PBI to install}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommend that users first use the '''-e''' and '''--checkscript''' options to view archive contents and installation scripts prior to installing a PBI file.&lt;br /&gt;
&lt;br /&gt;
To install a PBI, use: '''pbi_add -r PBINAME'''. The following example will install the alpine PBI:&lt;br /&gt;
&lt;br /&gt;
 '''pbi_add -r alpine'''&lt;br /&gt;
 Downloading ftp://ftp.pcbsd.org/pub/mirror/PBI/mail/alpine/9/x32/alpine-2.00_3-i386.pbi&lt;br /&gt;
 /usr/pbi/.alpine-2.00_3-i386.pbi.42391   100% of  11 MB 295 kBps 00m00s&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to: /usr/pbi/alpine-i386&lt;br /&gt;
 Installed: Alpine-2.00_3&lt;br /&gt;
&lt;br /&gt;
=== pbi_addrepo(8) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_addrepo''' command is used to register a new PBI repository on a system. If the '''pbid''' daemon is running, the repository's index and meta files will be automatically fetched and made ready for browsing. The command has one argument: the name of the repository file. Repository files have a ''.rpo'' extension and are created with the '''pbi_makerepo''' command.&lt;br /&gt;
&lt;br /&gt;
=== pbi_autobuild(8) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_autobuild''' command is used on the PBI build system to build any out-of-date or new packages. The utility is also of interest to PBI testers and system administrators who create and maintain their own internal repository of PBIs. It can traverse the FreeBSD ports and Meta-data trees, building missing PBI files or PBIs in which the target port version has been updated. Table 7.2b summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2b: pbi_autobuild Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify the directory containing the PBI configuration modules; any found ''pbi.conf'' files will be parsed, and if PBI_MAKEPORT is set, the target port will be used for the build; if PBI_MAKEPORT is unset, the auto-build will attempt to match the module to a FreeBSD port based upon the dirname of ''pbi.conf''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify an alternative ports directory; defaults to ''/usr/ports/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-h script'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify a helper script to call after building a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|the directory to place the finished PBI files; also used to determine which apps are in need of a rebuild if the associated FreeBSD port has been updated}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--genpatch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|when building a new PBI, check for archived copies and generate smaller patch updates to the new version (*.pbp files)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--keep num'''}}&lt;br /&gt;
{{Tbl-line|align=left|when building new PBIs, keep &amp;lt;num&amp;gt; copies of past versions of working PBI in ''&amp;lt;outdir&amp;gt;/archived/'' folder; these archived copies can be used with the '''--genpatch''' command to generate update patch files}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--pkgcache'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|enable caching of ''.txz'' pkg files which greatly speeds up subsequent builds of a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--prune'''}}&lt;br /&gt;
{{Tbl-line|align=left|remove any PBIs which no longer have an associated module in confdir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--tmpfs'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|automatically create and mount a tmp filesystem and use it for WRKDIRPREFIX; can speed up port compiles on systems with available RAM}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|digitally sign the PBI file with the specified openssl private key file}}            &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_browser(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_browser''' command provides a CLI front-end to browsing a repository's available PBIs. Options for viewing categories and searching by keyword are available, and once the desired PBI is located, it will show the '''pbi_add''' command which can be used to install the application. Table 7.2c summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2c: pbi_browser Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|displays a list of PBIs in the specified category}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-s search'''}}&lt;br /&gt;
{{Tbl-line|align=left|search for PBIs containing the specified string in the name, description, or keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--listcats'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|list the available categories}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--viewall'''}}&lt;br /&gt;
{{Tbl-line|align=left|list all available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi.conf(5) ===&lt;br /&gt;
&lt;br /&gt;
''pbi.conf'' is an ASCII text configuration file containing values that are used by the various '''pbi_*''' commands. The proxy variables are only needed if the system uses a proxy server to access the Internet. Table 7.2d lists the supported variables.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2d: pbi_conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=20%|'''Variable'''}}&lt;br /&gt;
{{Tbl-title|width=80%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|PBID_REFRESH}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|wakeup time in seconds for '''pbid''' to run its checks}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|PBI_INDEXREFRESH}}&lt;br /&gt;
{{Tbl-line|align=left|number of hours representing how often '''pbid''' refreshes the index and meta files from repos; default is every 24 hours}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|PBI_PROXYURL}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|proxy server IP address}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|PBI_PROXYPORT}}&lt;br /&gt;
{{Tbl-line|align=left|proxy server port number}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|PBI_PROXYTYPE}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|can be HTTP or SOCKS5}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|PBI_PROXYUSER}}&lt;br /&gt;
{{Tbl-line|align=left|username used to authenticate with proxy server}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|PBI_PROXYPASS}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|password used to authenticate with proxy server}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_create(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_create''' command provides a way for packagers to manually specify a target directory to be compressed into a PBI file. The option '''-b''' can also be used to re-package an already installed PBI back to an archive. PBI creators are encouraged to send a tarball of the resulting PBI module to the {{citelink|url=http://lists.pcbsd.org/mailman/listinfo/pbi-dev|PBI-testing mailing list}} so they can be added to the PC-BSD® PBI repository and made available to other PC-BSD® users.&lt;br /&gt;
&lt;br /&gt;
Table 7.2e summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2e: pbi_create Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify the author for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-b'''}}     &lt;br /&gt;
{{Tbl-line|align=left|make a backup of an installed PBI; specify the target PBI name instead of the PBI directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify the metadata configuration directory; while not required it is highly recommended as metadata is required to create icons and binary entry-points}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify an alternative ports directory; defaults to ''/usr/ports/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify a default icon, relative to ''pbidir/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify a name for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|place the finished ''.pbi'' file into the specified directory; defaults to $HOME}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p port'''}}&lt;br /&gt;
{{Tbl-line|align=left|use the given port to get PBI name and version}}&lt;br /&gt;
|-   &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r version'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify a version for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-u weburl'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify a website URL for the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|disable using the shared hash directory which uses hard links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|digitally sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As the superuser, you can create a PBI with the '''pbi_create''' command using the following syntax: &lt;br /&gt;
&lt;br /&gt;
 '''pbi_create -a &amp;lt;author&amp;gt; -n &amp;lt;name&amp;gt; -r &amp;lt;version&amp;gt; -w &amp;lt;weburl&amp;gt; &amp;lt;target directory&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Inside the target directory place the application's binaries or scripts along with any required dependencies. To indicate which file(s) represent the runtime command(s), include a file named ''external-links'' in the target directory. That file contains an entry for each command, as seen in the following example:&lt;br /&gt;
&lt;br /&gt;
 # Files to be symlinked into the default LOCALBASE&lt;br /&gt;
 # One per-line, relative to %%PBI_APPDIR%% and LOCALBASE&lt;br /&gt;
 # Defaults to keeping any existing files in LOCALBASE&lt;br /&gt;
 # Use bin-files/ for binaries that need wrapper functionality&lt;br /&gt;
 &lt;br /&gt;
 # TARGET                LINK IN LOCALBASE       ACTION&lt;br /&gt;
 bin/myapp               bin/myapp               binary,nocrash&lt;br /&gt;
&lt;br /&gt;
This entry instructs '''pbi_create''' to make the wrapper scripts for the ''myapp'' binary, along with placing it in the user's PATH at install time.&lt;br /&gt;
&lt;br /&gt;
It is also possible to include desktop icons and mime entries using the ''xdg-mime/'', ''xdg-desktop/'' and ''xdg-menu/'' directories. The section on how to [[Create PBIs]] contains more details about creating these files. These directories should be created as subdirectories of the target directory of your application.&lt;br /&gt;
&lt;br /&gt;
=== pbi_delete(1) ===&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_delete''', the '''pbi_delete''' command removes an installed PBI from the system. It also schedules cleaning for the shared library directory, which is performed by '''pbid'''. Table 7.2f summarizes its options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2f: pbi_delete Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--clean-hdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|perform a full cleaning of the shared hash directory, removing any unused files; should only be required after a system crash or failure in removing a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When removing a PBI, you must give its full name. The full name can be found in the output of '''pbi_info'''. The following example searches for the ntop PBI and removes it:&lt;br /&gt;
 &lt;br /&gt;
 '''pbi_info | grep ntop'''&lt;br /&gt;
 ntop-4.0.1_1-i386&lt;br /&gt;
 '''pbi_delete -v ntop-4.0.1_1-i386'''&lt;br /&gt;
 Running pre-removal script: /var/db/pbi/installed/ntop-4.0.1_1-i386/pre-remove.sh&lt;br /&gt;
 Removing: /usr/pbi/ntop-i386&lt;br /&gt;
 Removing: /var/db/pbi/installed/ntop-4.0.1_1-i386&lt;br /&gt;
&lt;br /&gt;
=== pbi_deleterepo(8) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_deleterepo''' command can be used to remove a registered repository from the system. It takes the repository's ID as the only command argument.&lt;br /&gt;
&lt;br /&gt;
=== pbi_icon(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_icon''' command provides a number of options for adding desktop icons, menu entries, and mime data for an installed PBI. Not all PBIs will contain desktop/menu/mime data. Additionally, the window manager must be {{citelink|url=http://en.wikipedia.org/wiki/Xdg|XDG}}-compliant to understand a PBI's icon and mime settings. Table 7.2g summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2g: pbi_icon Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|installs desktop icon; should be run as regular user}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-mime'''}}&lt;br /&gt;
{{Tbl-line|align=left|installs mime information; should be run as root}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-menu'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|installs menu icons; should be run as root}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|installs any $PATH links to ''~/bin'' when run as user or to $LOCALBASE when run as root}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|removes desktop icon; should be run as regular user}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|removes menu icons; should be run as root}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|removes mime information; should be run as root}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|removes any $PATH links to ''~/bin'' when run as user or to $LOCALBASE when run as root}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_indextool(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_indextool''' command is useful for repository maintainers. It allows PBI files to be added and removed from the repository's ''INDEX'' file. An example of using this command can be found in [[Create Your Own PBI Repository]]. Table 7.2h summarizes the available options: &lt;br /&gt;
&lt;br /&gt;
'''Table 7.2h: pbi_indextool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Command'''}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=70%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-b vers'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mark previous versions as having a binary diff patch (''.pbp'' file used for upgrading) available}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-f pbifile'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory, name of PBI being added to the target ''INDEX'' file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-k num'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|number of previous versions of this PBI to keep in the ''INDEX'' file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-u fileurl'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory URL to PBI location on server in the format category/pbi_name}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-m arch'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory architecture type for PBI being removed (e.g. i386, amd64)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-n pbiname'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory name of PBI being removed from the ''INDEX'' file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-v version'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory, version of the PBI being removed from the ''INDEX'' file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_info(1) ===&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_info''' command, the '''pbi_info''' command is used to determine which PBIs are currently installed. Table 7.2i summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2i: pbi_info Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|list all PBIs installed on the system; same as running '''pbi_info''' without an argument}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|align=left|list all available PBIs from any repo}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}     &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_listrepo(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_listrepo''' command manages installed repositories on a system. Table 7.2j summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2j: pbi_listrepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--down'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|move the targeted repoID down a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-mirror URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|change the specified repoID's mirror URL}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--up'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|move the targeted repoID up a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command without any options to list the IDs of the available repositories.&lt;br /&gt;
&lt;br /&gt;
=== pbi_makepatch(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makepatch''' command is automatically used by '''pbi_autobuild''' to create small ''*.pbp'' (Push Button Patch) files. These files can be downloaded to a user's system in order to update a PBI's version without re-downloading the entire archive. This allows users to download only the incremental changes when a PBI is upgraded. The command can also be run manually by providing two PBI archives to compare and generate a patch file for.&lt;br /&gt;
&lt;br /&gt;
Table 7.2k summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2k: pbi_makepatch Options&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|save the resulting ''*pbp'' file to the specified directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|use the specified openssl key to digitally sign the patch file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--tmpfs'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|can reduce building time for large PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_makeport(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makeport''' command can be used by packagers to build a target FreeBSD port and convert it into a PBI file. Many options are provided to fine-tune the build process, and meta-data modules can also be specified to further improve the resulting PBI file. The first time this command is run, it will build a fresh chroot sandbox environment which can be used for clean-room building of the target port without affecting the host system. More details about how to create a PBI using this command, can be found in the [[PBI Module Builder Guide#Creating a New PBI with pbi makeport | ''PBI Module Builder Guide'']].&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' the '''pbi_makeport''' command has support for using {{citelink|url=http://www.freshports.org/devel/ccache/|ccache}} to speed up the compile process. If '''ccache''' is installed on the host system and the CCACHE_DIR variable is set, the '''pbi_makeport''' command will automatically utilize it for the port compile phase. This can be disabled by setting NO_CCACHE=yes in ''/etc/pbi-make.conf'' on the host system, or as an optional make flag in a module's ''pbi.conf'' file. &lt;br /&gt;
&lt;br /&gt;
Table 7.2l summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2l: pbi_makeport Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-B'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|build-only; generally used with '''-k''' to build a port before running '''pbi_create''' manually}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify the metadata configuration directory; while not required it is highly recommended as metadata is required to create icons and binary entry-points }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|specify an alternative ports directory; defaults to ''/usr/ports''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-k'''}}      &lt;br /&gt;
{{Tbl-line|align=left|keep the build files after building the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|the directory to place the finished PBI file; defaults to user's $HOME directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p prefix'''}}&lt;br /&gt;
{{Tbl-line|align=left|manually provide a PREFIX which determines the location where the PBI will be installed on the end-user's system}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--delbuild'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|remove any existing build directories before starting the build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--mkdebug'''}}&lt;br /&gt;
{{Tbl-line|align=left|will drop to a debugging shell should the port make fail}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|disable auto-pruning of non-REQUIREDBY ports after the compile phase; by default any ports which are used solely for building and which are not required for program execution will be pruned}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--pkgdir dir'''}}&lt;br /&gt;
{{Tbl-line|align=left|uses the specified directory to cache the .txz package so subsequent builds will not rebuild the port from source&lt;br /&gt;
 }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--tmpfs'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|automatically create and mount a tmp filesystem and use it for WRKDIRPREFIX; can speed up port compiles on systems with available RAM&lt;br /&gt;
}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|digitally sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_makerepo(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makerepo''' command allows repository maintainers to create a single ''*.rpo'' file containing various information about the new repository. This ''.rpo'' file can then be installed on the target system with '''pbi_addrepo'''. Table 7.2m summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2m: pbi_makerepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--desc description'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|required; description of the repo to be shown in the repo list}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--key keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|required; OpenSSL public key used to verify the digital signature of PBIs installed from this repo}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--mirror URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|required; URL in &amp;lt;nowiki&amp;gt;http://, https://&amp;lt;/nowiki&amp;gt;, or ftp:// format to download PBIs and updates from}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--url URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|required; URL in &amp;lt;nowiki&amp;gt;http://, https://&amp;lt;/nowiki&amp;gt;, or ftp:// format to use when downloading the master ''INDEX'' file of available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_metatool(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_metatool''' command provides a way for repository maintainers to modify the PBI metadata in their repository in order to add or remove application categories or specified PBIs. An example of using this command can be found in [[Create Your Own PBI Repository]]. Table 7.2n summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2n: pbi_metatool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Command'''}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=70%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add''' or '''rem'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--cat'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|indicates that a new category is being added to or removed from the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add''' or '''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''--app'''}}&lt;br /&gt;
{{Tbl-line|align=left|adds or removes a new PBI to/from the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|adds the name of the application's author to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|align=left|name of new category to add to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d desc'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory description of PBI or category being added}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory URL to 64x64 ''.png'' icon of PBI or category being added}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-k keywords'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|comma delimited list (with no spaces) of search keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-l license'''}}&lt;br /&gt;
{{Tbl-line|align=left|type of license (e.g. BSD, GPL, Commercial)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add''' or '''rem'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory name of category or PBI being added to or removed from the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-t type'''}}&lt;br /&gt;
{{Tbl-line|align=left|type of application (e.g. Graphical, Text, Service)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-u URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|website of application being added}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|align=left|'''-r'''}}&lt;br /&gt;
{{Tbl-line|align=left|include if application needs to be installed as the superuser}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_patch(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_patch''' command is used to update an installed PBI to a different version using a small diff Push Button Patch ''*.pbp'' file. This allows the user to perform an incremental upgrade of an installed PBI. The available options are summarized in Table 7.2o.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2o: pbi_patch Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|extract only, do not install; will extract the archive to ''~/&amp;lt;pbidirname&amp;gt;'' unless '''-o''' is used.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-g'''}}     &lt;br /&gt;
{{Tbl-line|align=left|extract image data from header; commonly used for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|display information about this PBI file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|specify the directory to use when only extracting the PBI with '''-e'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|display any custom scripts used in the installation/removal of this PBI file; recommended if the PBI file is suspect in any way}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksig'''}}&lt;br /&gt;
{{Tbl-line|align=left|skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|disable using the shared hash directory which uses hard links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_update(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update''' command is used to display information about which PBIs have available updates and to perform the updates. Table 7.2p summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2p: pbi_update Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|check only the specified PBI for available updates}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--check-all'''}}&lt;br /&gt;
{{Tbl-line|align=left|run a full check of all installed PBIs and display list of available updates}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-disable-auto'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|disable auto-updating of the target PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--enable-auto'''}}&lt;br /&gt;
{{Tbl-line|align=left|enable auto-updating of the target PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--update-all'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|update all installed PBIs to the latest versions}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== pbi_update_hashdir(1) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update_hashdir''' command is used by the '''pbid''' daemon to merge the contents of a PBI into the hash directory.&lt;br /&gt;
&lt;br /&gt;
=== pbid(8) ===&lt;br /&gt;
&lt;br /&gt;
The '''pbid''' command runs a small daemon which performs maintenance of installed PBIs, merges files into the shared hashdir, fetches the repository ''INDEX'' and meta files, and makes the adding and removing of PBIs much faster. It will automatically be started from the''/usr/local/etc/rc.d/pbid'' startup script if ''pbid_enable=&amp;quot;YES&amp;quot;'' is in the ''/etc/rc.conf'' file.&lt;br /&gt;
&lt;br /&gt;
This utility supports the option summarized in table 7.2q:&lt;br /&gt;
&lt;br /&gt;
'''Table 7.2q: pbid Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|enable verbose output when the daemon starts}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--refresh'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|schedule a refresh of index and meta files }}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This command logs its output to ''/var/log/pbid.log''. Check this log for errors should you experience any problems with PBI maintenance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{refheading}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[category:handbook]]&lt;br /&gt;
[[category:Maintaining and Extending PC-BSD®]]&lt;br /&gt;
[[category:PBI Manager]]&lt;br /&gt;
[[category:protect]]&lt;br /&gt;
[[category:Referred by manpage]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Obtaining_PC-BSD%C2%AE</id>
		<title>Obtaining PC-BSD®</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Obtaining_PC-BSD%C2%AE"/>
				<updated>2012-08-01T15:03:56Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Selecting Which File to Download */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{NavHeader|back=Partitioning the Hard Drive|forward=Burning the Installation Media}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
The installation files for PC-BSD can be downloaded for free and end with an ''.iso'' or ''.img.bz2'' file extension. Depending upon the type of file you choose, the size will vary between ~650MB and ~3.5GB. This section will show you how to select which file to download and how to verify the downloaded file's checksum. The next section will demonstrate how to burn the file to bootable media.&lt;br /&gt;
&lt;br /&gt;
If you have a slow download connection or wish to support the PC-BSD project financially, you can purchase PC-BSD DVDs from the {{citelink|url=http://www.freebsdmall.com/cgi-bin/fm/scan/su=yes/fi=prod_bsd/sf=sku/sf=title/sf=category/se=pcbsd|FreeBSD Mall}}.&lt;br /&gt;
&lt;br /&gt;
Members of the PC-BSD project attend many IT conferences across the globe and give out PC-BSD DVDs at conference booths. Visiting a PC-BSD booth is an excellent way to meet other PC-BSD users and to get your questions answered. Check the {{citelink|url=http://blog.pcbsd.org/|PC-BSD Blog}} to see if any events are happening near you. If you are organizing a PC-BSD booth, {{citelink|url=http://pcbsd.org/about/contact-us|contact us}} to arrange for DVDs.&lt;br /&gt;
&lt;br /&gt;
=== Selecting Which File to Download ===&lt;br /&gt;
&lt;br /&gt;
When you go to the {{citelink|url=http://pcbsd.org/get-it/download-pc-bsd|Download}} page of the PC-BSD website, you will find a number of files available for download:&lt;br /&gt;
&lt;br /&gt;
* '''DVD-live:''' contains a live version of PC-BSD running the KDE4 desktop; requires a DVD burner. Note that the live version is read-only. It does provide an installer icon on the destkop should you decide to install PC-BSD.&lt;br /&gt;
&lt;br /&gt;
* '''DVD:''' contains the full version of PC-BSD (all system components, ports, and source); requires a DVD burner.&lt;br /&gt;
&lt;br /&gt;
* '''USB:''' contains the full version of PC-BSD (all system components, ports, and source); requires a USB memory stick or flash card.&lt;br /&gt;
&lt;br /&gt;
* '''USB-lite:''' contains a stripped down version of PC-BSD and the LXDE desktop (no system components, ports, or source); requires a USB memory stick or flash card.&lt;br /&gt;
&lt;br /&gt;
* '''VMware disk image:''' contains the full version of PC-BSD (all system components, ports, and source); requires {{citelink|url=http://vmware.com|VMware}} to be installed.&lt;br /&gt;
&lt;br /&gt;
* '''VirtualBox disk:''' contains the full version of PC-BSD (all system components, ports, and source); see [[Using VirtualBox|Using VirtualBox]] for instructions on using the VirtualBox disk.&lt;br /&gt;
&lt;br /&gt;
The larger the installation file size, the more components that come with that installation. &lt;br /&gt;
&lt;br /&gt;
Regardless of which media you use to install PC-BSD, you have the option to install additional components and applications after the installation using [[System Manager]] and [[Using_AppCafe® | AppCafe®]].&lt;br /&gt;
&lt;br /&gt;
There are two versions available for each type of file: one for 32-bit (i386) systems and one for 64-bit (amd64) systems. It is important that you download a file that matches your computer's processor type (32- or 64-bit). Each media type includes the ''pcbsd-media-details'' file which identifies the release version, architecture, and media type. &lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' If you plan to use VirtualBox to install PC-BSD, you can install the 32-bit version, even if your computer is 64-bit. Depending upon your processor's capabilities, you may or may not be able to install the 64-bit version on a 64-bit system using VirtualBox.&lt;br /&gt;
&lt;br /&gt;
=== Data Integrity Check ===&lt;br /&gt;
&lt;br /&gt;
After downloading the file that is correct for your architecture and installation media, it is a good idea to check that the file is exactly the same as the one on the PC-BSD server. While downloading, a portion of the file may get damaged or lost, making the installation file unusable. Each PC-BSD download has an associated MD5 checksum which is listed next to the download link. If the checksum of the file you downloaded has the same number, your download was successful. If the MD5 numbers don't match, you should download the file again, preferably from a different mirror. In order to verify the checksum, you will need to use a checksum verification utility.&lt;br /&gt;
&lt;br /&gt;
If you are currently using a Windows system, you can download and install the {{citelink|url=http://www.fastsum.com/|FastSum}} utility. Once installed, launch the program and click the Files button, shown in Figure 2.5a, to browse to the location of your downloaded file:&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.5a: Verifying a Checksum Using FastSum'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Fastsum1a.jpeg]]&lt;br /&gt;
&lt;br /&gt;
Once the file is selected, click the green arrow to calculate the checksum. Once calculated, it will be listed in the Checksum\State column. In this example, the checksum is e66acb8ff1013c6c5e114191e9556580 (though FastSum will capitalize the letters). &lt;br /&gt;
&lt;br /&gt;
On Linux and BSD systems you can use the built-in '''md5''' (or '''md5sum''') command line tool to check the data integrity of the downloaded file. In this example, the file is located in the Downloads subdirectory of a user's home (~) directory. You should substitute the name and location of the file that you downloaded:&lt;br /&gt;
&lt;br /&gt;
 '''md5 ~/Downloads/PCBSD9.0-RELEASE-x86-DVD.iso '''&lt;br /&gt;
 MD5 (Desktop/PCBSD9.0-RELEASE-x86-DVD.iso) = e66acb8ff1013c6c5e114191e9556580&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{refheading}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[category:handbook]]&lt;br /&gt;
[[category:Pre-Installation Tasks]]&lt;br /&gt;
[[category:Obtaining PC-BSD]]&lt;br /&gt;
[[category:Referred by pcbsd.org]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO</id>
		<title>PC-BSD® 9.2 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO"/>
				<updated>2012-07-26T21:22:40Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.2 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|Enable PEFS via User-Manager, allowing encrypted home directories&lt;br /&gt;
|kmoore&lt;br /&gt;
|QT4/Shell/Sys&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add directory tree to AppCafe. On app page, at top show Home -&amp;gt; Category -&amp;gt; AppName, clickable&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add enable / disable startup warden buttons&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Display fetch size / speed on warden downloads&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Display more info about devices in hardware compat GUI&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|the psk for WPA networks should be hashed with wpa_passphrase(8)&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add some kind of low disk space framework that detects both UFS + ZFS space&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell / libpcbsd&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO</id>
		<title>PC-BSD® 9.2 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO"/>
				<updated>2012-07-24T19:28:12Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.2 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|Enable PEFS via User-Manager, allowing encrypted home directories&lt;br /&gt;
|kmoore&lt;br /&gt;
|QT4/Shell/Sys&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add directory tree to AppCafe. On app page, at top show Home -&amp;gt; Category -&amp;gt; AppName, clickable&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add enable / disable startup warden buttons&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Display fetch size / speed on warden downloads&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Display more info about devices in hardware compat GUI&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|the psk for WPA networks should be hashed with wpa_passphrase(8)&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO</id>
		<title>PC-BSD® 9.2 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO"/>
				<updated>2012-07-24T19:05:29Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.2 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|Enable PEFS via User-Manager, allowing encrypted home directories&lt;br /&gt;
|kmoore&lt;br /&gt;
|QT4/Shell/Sys&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add directory tree to AppCafe. On app page, at top show Home -&amp;gt; Category -&amp;gt; AppName, clickable&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add enable / disable startup warden buttons&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Display fetch size / speed on warden downloads&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Display more info about devices in hardware compat GUI&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO</id>
		<title>PC-BSD® 9.2 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO"/>
				<updated>2012-07-24T18:46:16Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.2 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|Enable PEFS via User-Manager, allowing encrypted home directories&lt;br /&gt;
|kmoore&lt;br /&gt;
|QT4/Shell/Sys&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add directory tree to AppCafe. On app page, at top show Home -&amp;gt; Category -&amp;gt; AppName, clickable&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add enable / disable startup warden buttons&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Display fetch size / speed on warden downloads&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO</id>
		<title>PC-BSD® 9.2 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO"/>
				<updated>2012-07-24T18:40:50Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.2 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|Enable PEFS via User-Manager, allowing encrypted home directories&lt;br /&gt;
|kmoore&lt;br /&gt;
|QT4/Shell/Sys&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add directory tree to AppCafe. On app page, at top show Home -&amp;gt; Category -&amp;gt; AppName, clickable&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2012-07-16T20:04:05Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|kmoore&lt;br /&gt;
|&lt;br /&gt;
|Obsolete now, with meta-pkg support for Jails&lt;br /&gt;
|9.1 (7-16-2012)&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|kmoore&lt;br /&gt;
|&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|7-5-12 [[http://trac.pcbsd.org/changeset/17643 17643]]&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|DONE&lt;br /&gt;
|In 9.0&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|5-31-2012 [[http://trac.pcbsd.org/changeset/17119 17119]]&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|kris&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|1-16-2012 [[http://trac.pcbsd.org/changeset/14866 14866]]&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|2-17-2012 [[http://trac.pcbsd.org/changeset/15467 15467]]&lt;br /&gt;
|-&lt;br /&gt;
|Merge Warden® into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|Kris&lt;br /&gt;
|C++&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|[[http://trac.pcbsd.org/changeset/15467 15467]]&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|kmoore&lt;br /&gt;
|&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add setting to automatically create desktop / menu icons upon appcafe installations &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|In pc-sysinstaller GUI, show native language strings when selecting the initial language, not the english version. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create sound mixer control panel app, let user pick default sound device, mixer settings&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|7-16-2012 [[http://trac.pcbsd.org/changeset/17653 17653]]&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall&lt;br /&gt;
|kmoore&lt;br /&gt;
|&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|7-16-2012 [[http://trac.pcbsd.org/changeset/17782 17782]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO</id>
		<title>PC-BSD® 9.2 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO"/>
				<updated>2012-07-16T20:03:09Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.2 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|Enable PEFS via User-Manager, allowing encrypted home directories&lt;br /&gt;
|kmoore&lt;br /&gt;
|QT4/Shell/Sys&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO</id>
		<title>PC-BSD® 9.2 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO"/>
				<updated>2012-07-16T19:21:40Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.2 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|Enable PEFS via User-Manager, allowing encrypted home directories&lt;br /&gt;
|kmoore&lt;br /&gt;
|QT4/Shell/Sys&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_version_task_list</id>
		<title>PC-BSD® version task list</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_version_task_list"/>
				<updated>2012-07-16T19:16:12Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHome}}&lt;br /&gt;
* [[PC-BSD 7.2 TODO|PC-BSD 7.2 Task List]]&lt;br /&gt;
&lt;br /&gt;
* [[PC-BSD 8.0 TODO|PC-BSD 8.0 Task List]]&lt;br /&gt;
&lt;br /&gt;
* [[PC-BSD 8.1 TODO|PC-BSD 8.1 Task List]]&lt;br /&gt;
&lt;br /&gt;
* [[PC-BSD 8.2 TODO|PC-BSD 8.2 Task List]]&lt;br /&gt;
&lt;br /&gt;
* [[PC-BSD 9.0 TODO|PC-BSD 9.0 Task List]]&lt;br /&gt;
&lt;br /&gt;
* [[PC-BSD 9.1 TODO|PC-BSD 9.1 Task List]]&lt;br /&gt;
&lt;br /&gt;
* [[PC-BSD 9.2 TODO|PC-BSD 9.2 Task List]]&lt;br /&gt;
&lt;br /&gt;
* [[PC-BSD Life Cycle|PC-BSD Life Cycle ]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2012-07-16T19:14:06Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|kmoore&lt;br /&gt;
|&lt;br /&gt;
|Obsolete now, with meta-pkg support for Jails&lt;br /&gt;
|9.1 (7-16-2012)&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|kmoore&lt;br /&gt;
|&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|7-5-12 [[http://trac.pcbsd.org/changeset/17643 17643]]&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|DONE&lt;br /&gt;
|In 9.0&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|5-31-2012 [[http://trac.pcbsd.org/changeset/17119 17119]]&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|kris&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|1-16-2012 [[http://trac.pcbsd.org/changeset/14866 14866]]&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|2-17-2012 [[http://trac.pcbsd.org/changeset/15467 15467]]&lt;br /&gt;
|-&lt;br /&gt;
|Merge Warden® into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|Kris&lt;br /&gt;
|C++&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|[[http://trac.pcbsd.org/changeset/15467 15467]]&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|kmoore&lt;br /&gt;
|&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add setting to automatically create desktop / menu icons upon appcafe installations &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|In pc-sysinstaller GUI, show native language strings when selecting the initial language, not the english version. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create sound mixer control panel app, let user pick default sound device, mixer settings&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|7-16-2012 [[http://trac.pcbsd.org/changeset/17653 17653]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO</id>
		<title>PC-BSD® 9.2 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.2_TODO"/>
				<updated>2012-07-16T19:08:21Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: Created page with &amp;quot;==== New Features / Tools planned for 9.2 ==== {| border=1 |'''Feature''' |'''Owner''' |'''Skills''' |'''Status''' |'''Completion Date''' |- |add iSCSI initiator GUI front-end...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.2 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2012-07-16T18:43:38Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|kmoore&lt;br /&gt;
|&lt;br /&gt;
|Obsolete now, with meta-pkg support for Jails&lt;br /&gt;
|9.1 (7-16-2012)&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|kmoore&lt;br /&gt;
|&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|7-5-12 [[http://trac.pcbsd.org/changeset/17643 17643]]&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|DONE&lt;br /&gt;
|In 9.0&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|5-31-2012 [[http://trac.pcbsd.org/changeset/17119 17119]]&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|kris&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|1-16-2012 [[http://trac.pcbsd.org/changeset/14866 14866]]&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|2-17-2012 [[http://trac.pcbsd.org/changeset/15467 15467]]&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Merge Warden® into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|Kris&lt;br /&gt;
|C++&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|[[http://trac.pcbsd.org/changeset/15467 15467]]&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|kmoore&lt;br /&gt;
|&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add setting to automatically create desktop / menu icons upon appcafe installations &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|In pc-sysinstaller GUI, show native language strings when selecting the initial language, not the english version. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create sound mixer control panel app, let user pick default sound device, mixer settings&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|7-16-2012 [[http://trac.pcbsd.org/changeset/17653 17653]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Meta_Package_Manager</id>
		<title>Meta Package Manager</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Meta_Package_Manager"/>
				<updated>2012-04-30T16:50:16Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{NavHeader|back=Update Manager|forward=Control Panel}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
pc-metapkgmanger is the CLI utility used by the PC-BSD system manager and update utilities for managing collections of FreeBSD packages in PC-BSD, also know as a &amp;quot;meta-package&amp;quot;. It includes the ability to switch between pkgsets, such as &amp;quot;pcbsd&amp;quot; for the desktop, or &amp;quot;warden&amp;quot; for jailed environments or a PC-BSD server installation. &lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
pc-metapkgmanager [options]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
  add pkg1,pkg2 &amp;lt;loc&amp;gt;	 -- Add the specified list of meta-packages &lt;br /&gt;
  &amp;lt;loc&amp;gt; should be a FTP / HTTP url where pkg_add can fetch packages, or an absolute path to location of pkg files on disk.&lt;br /&gt;
  checkup		 -- Check for updates to pkgs&lt;br /&gt;
  del pkg1,pkg2	  	 -- Delete the specified list of meta-packages&lt;br /&gt;
  list     	         -- List the available meta-packages&lt;br /&gt;
  status &amp;lt;pkg&amp;gt;    	 -- List the status of the specified meta-packages&lt;br /&gt;
  update pkg1,pkg2 &amp;lt;loc&amp;gt; -- Update all system packages, or just &amp;lt;pkg&amp;gt; if specified&lt;br /&gt;
  &amp;lt;loc&amp;gt; should be a FTP / HTTP url where pkg_add can fetch packages, or an absolute path to location of pkg files on disk.&lt;br /&gt;
  --pkgset &amp;lt;pkgset&amp;gt;	 -- Change default pkgset we are using&lt;br /&gt;
  --chroot &amp;lt;dir&amp;gt;	 -- Operate on the directory specififed using chroot&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
The default pkgset can be changed by editing /usr/local/etc/pcbsd.conf and editing the PCBSD_METAPKGSET variable. &lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
pc-metapkgmanger add LXDE,XFCE,GNOME http://mirrors.isc.org/pub/pcbsd/9.0/amd64/netinstall/packages/&lt;br /&gt;
&lt;br /&gt;
pc-metapkgmanager del LXDE,GNOME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[category:handbook]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide</id>
		<title>PBI Module Builder Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide"/>
				<updated>2012-02-22T16:28:49Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* PBI Module Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{NavHeader|back=Test PBIs|forward=Purchase PC-BSD Swag}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
PC-BSD provides a unique file format known as a PBI (push button installer). PBI files end with the .pbi extension and are self-contained installation programs. This means that even novice users can safely install and uninstall PBIs without inadvertently overwriting or deleting files needed by the operating system or other applications.&lt;br /&gt;
&lt;br /&gt;
A PBI file includes all the runtime and library dependencies required by the application. This means that a PBI is a large file, but this does not necessarily mean that the installed PBI will be that large. During installation, the PBI system compares the currently installed libraries and files with the ones contained within the PBI file and only installs the ones that are not already installed on the system. A hash database is used to eliminate dependency problems while allowing the computer to share libraries between different programs. &lt;br /&gt;
&lt;br /&gt;
On PC-BSD, PBIs can be installed using the graphical [[Using AppCafe™ | AppCafe™]] utility or from the command line using [[PBI Manager]].&lt;br /&gt;
&lt;br /&gt;
The PBI format changed between PC-BSD 8.x and 9.x. This section demonstrates how to create PBIs for PC-BSD 9.x and higher. [[Building PBIs for PC-BSD 8.x and Earlier]] describes the old format, but is considered to be deprecated.&lt;br /&gt;
&lt;br /&gt;
=== Building PBIs for PC-BSD 9.x and higher ===&lt;br /&gt;
&lt;br /&gt;
Creating a PBI from an existing FreeBSD port is a surprisingly easy and automated process that does not require development skills. Some ports are effortless to convert while more complex ports may require some thought and simple scripting.&lt;br /&gt;
&lt;br /&gt;
Two utilities are available for converting FreeBSD ports into PBIs. EasyPBI provides a graphical interface and '''pbi_makeport''' provides a command line utility. This section demonstrates how to use both of these tools, explains the components of a PBI module, and provides some troubleshooting tips.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' before creating a PBI, check to see if one exists using the instructions in [[Submit PBI Requests]]. If you decide that you prefer to request a PBI that you need rather than to create one, that page also contains instructions for submitting a PBI request.&lt;br /&gt;
&lt;br /&gt;
====Using EasyPBI====&lt;br /&gt;
&lt;br /&gt;
EasyPBI is a new GUI application created by Jesse Smith and Ken Moore. It streamlines the process of building a PBI from a FreeBSD port. EasyPBI can be installed using AppCafe™ without any additional requirements on a PC-BSD system. For a pure FreeBSD system, you will need to install both the ''sysutils/easypbi'' and ''ports-mgmt/pbi-manager'' ports.&lt;br /&gt;
&lt;br /&gt;
To run the program, either double-click the EasyPBI desktop icon or type '''EasyPBI''' as your regular user account. This will open the screen shown in Figure 10.7a. Depending upon whether or not ports is installed, you may first receive a pop-up message.&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7a: EasyPBI Graphical Interface'''&lt;br /&gt;
&lt;br /&gt;
[[File:Easypbi.jpeg]]&lt;br /&gt;
&lt;br /&gt;
To build a PBI using EasyPBI:&lt;br /&gt;
&lt;br /&gt;
'''1. Create a module for the desired FreeBSD port:''' when you first start EasyPBI, it will check to see if the FreeBSD ports tree is installed into ''/usr/ports''. If it is not, a pop-up message will indicate that you have a choice on how to install the ports tree. If you want the system ports tree to be available for any user, go to Control Panel ➜ System Manager ➜ Tasks ➜ Fetch System Ports Tree. Use this method if multiple users will be using the EasyPBI utility. Alternatively, if you only want the ports tree to be available to the current user, click File ➜ Get Ports from within EasyPBI; this will fetch the ports tree and place it in the user's home directory. &lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' when determining which PBIs need to be built, refer to the [http://forums.pcbsd.org/forumdisplay.php?f=61 PBI Requests forum] to determine which PBI's have been requested by users. You should also check that a module does not already exist on the [http://trac.pcbsd.org/browser#pbi/modules PBI Modules] section of trac.&lt;br /&gt;
&lt;br /&gt;
To create a new module, click the &amp;quot;New Module&amp;quot; button and use the browser to select the desired port from the FreeBSD ports tree. Once a port is selected, EasyPBI will attempt to automatically supply the port information for the PBI and display the results on the GUI. In the example shown in Figure 10.7b, the ''net/xrdesktop'' port has been selected and the fields have been auto-filled in. &lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7b: Reviewing the Port's Information'''&lt;br /&gt;
&lt;br /&gt;
[[File:EasyPBI1a.jpeg]]&lt;br /&gt;
&lt;br /&gt;
You should review these fields for accuracy. In this example, the port's website had changed and an email was sent to the port author so that the URL could be corrected in the port.&lt;br /&gt;
&lt;br /&gt;
If you click &amp;quot;Get Port Info&amp;quot; [http://freshports.org FreshPorts.org] will open in the default web browser so that you can view additional information about the port. &lt;br /&gt;
&lt;br /&gt;
A generic icon will be supplied for the module; you can change the default icon by clicking the &amp;quot;Choose Icon&amp;quot; button. When using a custom icon, use 64x64 .png files with transparent backgrounds. &lt;br /&gt;
&lt;br /&gt;
If the program provides a GUI, check the box &amp;quot;GUI App&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Once the port information is complete, click the &amp;quot;Create Module&amp;quot; button and EasyPBI will produce a generic PBI module. A message will indicate the location of the module, as seen in the example in Figure 10.7c:&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7c: PBI Module Created'''&lt;br /&gt;
&lt;br /&gt;
[[File:EasyPBI2a.jpeg]]&lt;br /&gt;
&lt;br /&gt;
'''2. Build a PBI from the module:''' once your module is created, click on the &amp;quot;Build PBI&amp;quot; tab and click the Select Module button to browse to the module you just created. You should then review the default settings. Figure 10.7d shows the default settings for our example PBI.&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7d: The Build PBI Tab'''&lt;br /&gt;
&lt;br /&gt;
[[File:EasyPBI3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
The options in this tab allow you to do the following:&lt;br /&gt;
&lt;br /&gt;
'''Save Settings as Defaults:''' once you are satisfied with the settings, click this button to have EasyPBI remember your settings between uses.&lt;br /&gt;
&lt;br /&gt;
'''Change Directory:''' allows you to save the output of the build to a different directory.&lt;br /&gt;
&lt;br /&gt;
'''Change File:''' the PBIs available from the PC-BSD repositories are digitally signed by the PC-BSD project's signature file. If you are creating your own repository, you can use your own digital signature file by browing to its location.&lt;br /&gt;
&lt;br /&gt;
'''Use TMPFS:''' if your build system has a lot of RAM, selecting this option can speed up the build.&lt;br /&gt;
&lt;br /&gt;
'''Select Module:''' select the previously created module which you would like to build.&lt;br /&gt;
&lt;br /&gt;
'''Build PBI:''' starts the build of the PBI using the settings contained within the PBI module. It will prompt you for the superuser password and requires a working Internet connection to build the PBI. This process may take quite a while, depending upon the port selected and the speed of your computer. The build messages will be displayed in the window at the bottom of the tab. EasyPBI will inform you when the PBI build is finished, and whether it was successful or not.&lt;br /&gt;
&lt;br /&gt;
'''Stop Build:''' stops the build process. Click the &amp;quot;Build PBI&amp;quot; button to resume the build.&lt;br /&gt;
&lt;br /&gt;
'''Save Build Log:''' useful if the build fails.&lt;br /&gt;
&lt;br /&gt;
You can produce additional modules from the &amp;quot;Create Module&amp;quot; tab while a PBI build is running. &lt;br /&gt;
&lt;br /&gt;
If the PBI build fails for some reason, you may need to modify the module. Use the build log to determine the error and modify the module as needed. If you are unsure how to fix the module, send the build log for the failure as well as the module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev pbi-dev mailing list].&lt;br /&gt;
&lt;br /&gt;
'''3. Test the PBI:''' once the PBI build is complete, a pop-up message will indicate that the PBI finished building successfully. You will find the PBI in the output directory that you specified in Figure 10.7c. To continue with our example, the following commands will install the PBI so that it can be tested. Note the error message that occurs since the PBI has not been signed yet.&lt;br /&gt;
&lt;br /&gt;
 '''cd /home/dru/EasyPBI/PBI'''&lt;br /&gt;
 '''pbi_add xrdesktop-1.2_2-i386.pbi'''&lt;br /&gt;
 pbi_add: No digital signature! If you are *SURE* you trust this PBI, re-install with --no-checksig option.&lt;br /&gt;
 '''pbi_add --no-checksig xrdesktop-1.2_2-i386.pbi'''&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to /usr/pbi/xrdesktop-i386&lt;br /&gt;
 Installed: xrdesktop-1.2.2&lt;br /&gt;
&lt;br /&gt;
 '''rehash'''&lt;br /&gt;
 '''/usr/pbi/xrdesktop-i386/bin/xrdesktop'''&lt;br /&gt;
&lt;br /&gt;
Once installed, specify the full path to the application's binary to make sure that you are testing the PBI's binary. If the application starts and is a GUI, try using all of the menu items to make sure they work as expected. If you encounter any error messages in either starting or using the application, record them. If the fix for resolving the error messages is not clear to you after some Googling, send the error report the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev pbi-dev mailing list].&lt;br /&gt;
&lt;br /&gt;
Alternately, if everything seems to be working, send the tarball of the PBI to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev pbi-dev mailing list]. You will find it in the ''EasyPBI/Modules/'' subdirectory. In our example, the name of the tarball is ''/home/dru/EasyPBI/Modules/xrdesktop.tar.gz''.&lt;br /&gt;
&lt;br /&gt;
==== Creating a New PBI with '''pbi_makeport''' ====&lt;br /&gt;
&lt;br /&gt;
Starting in PC-BSD 9.x and higher, '''pbi_makeport''' is included with the operating system. This utility provides an easy way for a user to convert an existing FreeBSD port into a PBI module. The PBI build server builds modules into PBIs which are then made available to users through AppCafe™. '''man pbi_makeport''' provides details on this application's various usage options. &lt;br /&gt;
&lt;br /&gt;
When running '''pbi_makeport''' it is possible to supply an optional metadata configuration directory which contains additional data used to supplement the port building and the final PBI file. This configuration directory may contain extra icon data for the desktop, install/uninstall scripts, custom '''make''' options and more. &lt;br /&gt;
&lt;br /&gt;
Examples of 9.x modules can be found at [http://trac.pcbsd.org/browser/pcbsd/current/src-sh/pbi-manager/module-examples Examples in Subversion].&lt;br /&gt;
&lt;br /&gt;
FreeBSD ports may contain build dependencies, runtime dependencies, and required libraries. When building a PBI, '''pbi_makeport''' automatically&lt;br /&gt;
compiles all of the required dependencies, and, when finished compiling, prunes the build dependencies before packaging the PBI file, leaving only the runtime packages and libraries that are required for the program to work. This means that any files which are included in the PBI are necessary for the program to run, and manually removing them will cause the program to fail.&lt;br /&gt;
&lt;br /&gt;
====PBI Module Components====&lt;br /&gt;
&lt;br /&gt;
A PBI module contains the following components. When creating a PBI module, create a directory on your computer to hold the module's components. For example, if you are creating a PBI module for firefox, create a directory called ''firefox/'' and place the following files within that directory. The directory that you create is referred to as ''%PBI_APPDIR%%''. &lt;br /&gt;
&lt;br /&gt;
'''1. LICENSE File'''&lt;br /&gt;
&lt;br /&gt;
The text of a license agreement you want the user to click to accept before installation. This file is optional unless the underlying port is restricted and requires the user to accept a license in order to install and use the software.&lt;br /&gt;
&lt;br /&gt;
'''2. pbi.conf'''&lt;br /&gt;
&lt;br /&gt;
The ''pbi.conf'' file is mandatory. It is a simple shell script that contains the information needed to build the PBI. Typically this file requires you to modify a few simple variables, such as the name of the program, its location in the ports tree, and the name of its icon. Sometimes you will need to set a few additional variables in order to make sure that required dependencies are included in the PBI. If you get stuck when creating your own ''pbi.conf'', you can view the ''pbi.conf'' file for every PBI module in [http://trac.pcbsd.org/browser#pbi/modules this section] of the PC-BSD trac repository. Here is an example of the ''pbi.conf'' file for firefox: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# PBI Build Configuration&lt;br /&gt;
# Place over-rides and settings here&lt;br /&gt;
#&lt;br /&gt;
# XDG Desktop Menu Spec:&lt;br /&gt;
# http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html&lt;br /&gt;
##############################################################################&lt;br /&gt;
&lt;br /&gt;
# Program Name&lt;br /&gt;
PBI_PROGNAME=&amp;quot;Firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Website&lt;br /&gt;
PBI_PROGWEB=&amp;quot;http://www.mozilla.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Author / Vendor&lt;br /&gt;
PBI_PROGAUTHOR=&amp;quot;The Mozilla Foundation&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Default Icon (Relative to %%PBI_APPDIR%% or resources/)&lt;br /&gt;
PBI_PROGICON=&amp;quot;share/pixmaps/FireFox-128.png&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# The target port we are building&lt;br /&gt;
PBI_MAKEPORT=&amp;quot;www/firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Additional options for make.conf&lt;br /&gt;
PBI_MAKEOPTS=&amp;quot;PACKAGE_BUILDING=Y&lt;br /&gt;
WITH_CUPS=yes&lt;br /&gt;
WITH_GECKO=libxul&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Ports to build before / after&lt;br /&gt;
PBI_MKPORTBEFORE=&amp;quot;&amp;quot;&lt;br /&gt;
PBI_MKPORTAFTER=&amp;quot;audio/esound x11-fonts/dejavu x11-themes/qtcurve-gtk2 devel/gconf2 www/firefox-i18n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Exclude List&lt;br /&gt;
PBI_EXCLUDELIST=&amp;quot;./include ./share/doc&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Increment to trigger rebuild of PBI on build servers&lt;br /&gt;
PBI_BUILDKEY=&amp;quot;04&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# This app needs to install as root&lt;br /&gt;
PBI_REQUIRESROOT=&amp;quot;YES&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set the priority of this build &lt;br /&gt;
PBI_AB_PRIORITY=&amp;quot;50&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set the files we want to exclude from the shared hashdir&lt;br /&gt;
PBI_HASH_EXCLUDES=&amp;quot;lib/firefox/firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
export PBI_PROGNAME PBI_PROGWEB PBI_PROGAUTHOR PBI_PROGICON PBI_MAKEPORT PBI_MAKEOPTS &lt;br /&gt;
PBI_MKPORTBEFORE PBI_MKPORTAFTER PBI_BUILDKEY PBI_REQUIRESROOT PBI_EXCLUDELIST&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Table 10.7a describes the most commonly used variables. When creating your ''pbi.conf'' file, you will want to refer to the FreeBSD port's ''Makefile'' and ''pkg-descr'' to determine which values to use.&lt;br /&gt;
&lt;br /&gt;
'''Table 10.7a: Commonly Used pbi.conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Variable'''}}  &lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; should be the same value as PORTNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's ''Makefile'', but capitalized}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGWEB&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory unless does not exist; should be the same value as WWW&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's ''pkg-descr''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGAUTHOR&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; often found in the port's ''pkg-descr'' or at the website for the application}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGICON&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory path, relative to %PBI_APPDIR%%, to application icon file in png format}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGREVISION&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|bump up a PBI's revision number; useful when rebuilding a port with new PBI specific options}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_MAKEPORT&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory; the path to the port within ''/usr/ports/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_MAKEOPTS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|optional; set this to the options that you want saved into ''make.conf'' for the port building process (e.g. WITH_CUPS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;YES)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_MKPORTBEFORE&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|optional; port(s) to build before starting the target port PBI_MAKEPORT}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_MKPORTAFTER&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|optional; port(s) to build after finishing the target port PBI_MAKEPORT}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_BUILDKEY&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|should not be included; this variable is used on the PBI build server to force the rebuild of a PBI that has failed to build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_REQUIRESROOT&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|set to to YES to require this app to be installed as root; default is NO which allows it to be installed as a regular user }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_EXCLUDELIST&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|list of files or directories to exclude from the final archive, such as ''./include'' or ''./share''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_AB_PRIORITY&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|may be set by build server administrator; a higher number indicates a greater priority and will be built before lower priority PBIs}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_AB_NOTMPFS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|set to YES to disable using tmpfs when doing auto-builds on a server}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_HASH_EXCLUDES&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|set to a space delimited list of files to exclude from merging into the shared hash-dir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''export'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; followed by a list of all of the variables that will be included when the PBI is built}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''3. external-links'''&lt;br /&gt;
&lt;br /&gt;
The optional ''external-links'' file contains a list of targets to link into the system's LOCALBASE at PBI installation time. This is useful for placing binaries and files in the user's PATH. When building PBIs from a FreeBSD port, this file is usually not needed, as most binaries and files are auto-detected and placed in the LOCALBASE. Example 10.7a shows an example usage:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7a: Example external-links File'''&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Files to be Sym-Linked into the default LOCALBASE&lt;br /&gt;
# One per-line, relative to %%PBI_APPDIR%% and LOCALBASE&lt;br /&gt;
# Defaults to keeping any existing files in LOCALBASE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# TARGET                LINK IN LOCALBASE       ACTION&lt;br /&gt;
#etc/rc.d/servfoo       etc/rc.d/servfoo        keep&lt;br /&gt;
#include/libfoo.h       include/libfoo.h        replace&lt;br /&gt;
#etc/rc.d/servfoo       etc/rc.d/servfoo        keep&lt;br /&gt;
bin/firefox3            bin/firefox3            binary,nocrash&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The flags in the ACTION column are as follows:&lt;br /&gt;
&lt;br /&gt;
* '''keep''': if this file already exists in LOCALBASE, don't overwrite it&lt;br /&gt;
&lt;br /&gt;
* '''replace''': replace this file in LOCALBASE if it exists&lt;br /&gt;
&lt;br /&gt;
* '''binary''': this file is an executable&lt;br /&gt;
&lt;br /&gt;
* '''nocrash''': used for binary files; don't display crash handler if program exits with non-0 status&lt;br /&gt;
&lt;br /&gt;
* '''linux''': used for binary files; indicates that this is a Linux application, and needs to be run with Linux compat&lt;br /&gt;
&lt;br /&gt;
'''4. resources/'''&lt;br /&gt;
&lt;br /&gt;
The ''resources/'' directory can contain extra files you wish copied into the PBI application directory. This is often the best place for icons and other files not included with a port. &lt;br /&gt;
&lt;br /&gt;
'''5. scripts/'''&lt;br /&gt;
&lt;br /&gt;
This directory can contain the following scripts:&lt;br /&gt;
&lt;br /&gt;
* '''post-install.sh''': script run immediately after the extraction of PBI contents to disk&lt;br /&gt;
&lt;br /&gt;
* '''post-portmake.sh''': script run during building of the PBI file, after the port compile is finished&lt;br /&gt;
&lt;br /&gt;
* '''pre-portmake.sh''': script run during building of the PBI file, prior to the port compile&lt;br /&gt;
&lt;br /&gt;
* '''pre-install.sh''': script run before installation of the PBI; return non-0 to halt installation&lt;br /&gt;
&lt;br /&gt;
* '''pre-remove.sh''': script run before deletion of the PBI file&lt;br /&gt;
&lt;br /&gt;
Table 10.7b summarizes the variables that may be used in these scripts:&lt;br /&gt;
&lt;br /&gt;
'''Table 10.7b Supported Variables&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Variable'''}}  &lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; should be the same value as PORTNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's ''Makefile'', but capitalized}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGDIRNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|name of the subdirectory that is created for the PBI in ''/usr/pbi/'' (e.g. &amp;quot;firefox-amd64&amp;quot; for the 64-bit Firefox PBI)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGDIRPATH&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|full path to the PBI install directory (e.g. ''/usr/pbi/firefox-amd64/'' for the 64-bit Firefox PBI)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGVERSION&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|version of the program - should be the same value as the DISTVERSION in the port's Makefile }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_RCDIR&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|location of ''rc.d/'' directory used by PBIs, usually ''/usr/local/etc/rc.d'' }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''SYS_LOCALBASE&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|LOCALBASE of the default system, typically ''/usr/local'' }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_FAKEBIN_DIR&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|the binary wrapper directory, typically ''/usr/pbi/&amp;lt;pbidir&amp;gt;/.sbin/'' }}&lt;br /&gt;
|-&lt;br /&gt;
|}        &lt;br /&gt;
&lt;br /&gt;
'''6. xdg-menu/ and xdg-desktop/'''&lt;br /&gt;
&lt;br /&gt;
The ''xdg-menu/'' and ''xdg-desktop/'' directories can be used to supply menu and desktop icons, respectively. The file that you place in these directories should be in the format ''pbiname.desktop''. Example 10.7b shows the ''firefox.desktop'' files for the firefox PBI:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7b: firefox.desktop File'''&lt;br /&gt;
 &lt;br /&gt;
 '''more xdg-menu/firefox.desktop'''&lt;br /&gt;
 #!/usr/bin/env xdg-open&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Value=1.0&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=FireFox&lt;br /&gt;
 GenericName=FireFox&lt;br /&gt;
 Exec=%%PBI_EXEDIR%%/firefox %U&lt;br /&gt;
 Path=%%PBI_APPDIR%%&lt;br /&gt;
 Icon=%%PBI_APPDIR%%/share/pixmaps/FireFox-128.png&lt;br /&gt;
 StartupNotify=true&lt;br /&gt;
 Categories=Network;&lt;br /&gt;
 &lt;br /&gt;
 '''more xdg-desktop/firefox.desktop'''&lt;br /&gt;
 #!/usr/bin/env xdg-open&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Value=1.0&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=FireFox&lt;br /&gt;
 GenericName=FireFox&lt;br /&gt;
 Exec=%%PBI_EXEDIR%%/firefox %U&lt;br /&gt;
 Path=%%PBI_APPDIR%%&lt;br /&gt;
 Icon=%%PBI_APPDIR%%/share/pixmaps/FireFox-128.png&lt;br /&gt;
 StartupNotify=true &lt;br /&gt;
&lt;br /&gt;
%%PBI_EXEDIR%% should reference the PBI's executable and any required switches.&lt;br /&gt;
&lt;br /&gt;
For more details on the XDG menu specifications, please refer to the [http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html freedesktop specifications]. &lt;br /&gt;
&lt;br /&gt;
'''7. xdg-mime/'''&lt;br /&gt;
&lt;br /&gt;
The ''xdg-mime/'' directory is used to register file associations according to the [http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html freedesktop MIME specs]. This requires the creation of an XML file. The example shown in Figure 10.7c adds the MIME information for gimp, so that it can be available as an application choice in a web browser:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7c: Gimp MIME Info'''&lt;br /&gt;
&lt;br /&gt;
 '''more xdg-mime/gimp-xdg.xml'''&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;mime-info xmlns='&amp;lt;nowiki&amp;gt;http://www.freedesktop.org/standards/shared-mime-info&amp;lt;/nowiki&amp;gt;'&amp;gt;&lt;br /&gt;
  &amp;lt;mime-type type=&amp;quot;application/x-gimp&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Gimp - XCF File&amp;lt;/comment&amp;gt;&lt;br /&gt;
   &amp;lt;glob weight=&amp;quot;100&amp;quot; pattern=&amp;quot;*.xcf&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;glob weight=&amp;quot;100&amp;quot; pattern=&amp;quot;*.XCF&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/mime-type&amp;gt;&lt;br /&gt;
 &amp;lt;/mime-info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Useful Tips====&lt;br /&gt;
&lt;br /&gt;
If your PBI's executable does not run, it may be because the program executable is actually a wrapper script rather than a binary file. If so, check the first line of the script to make sure it is using the right path for the scripting language. For example, ''#!/bin/python'' is an incorrect path which should be changed to ''#!/usr/pbi/(pbi-name)/bin/python''.&lt;br /&gt;
&lt;br /&gt;
The suggested path works because each program is packaged with the proper version of the language it uses and you want to make sure it uses that one. This is usually accomplished by putting a quick '''sed''' line in the ''post-install.sh'' script to fix the first line as seen in [http://trac.pcbsd.org/browser/pbi/modules/games/fretsonfire/scripts/post-install.sh?rev=13019 this example].&lt;br /&gt;
&lt;br /&gt;
When testing the executable, use the one located in ''/usr/pbi/(pbi-name)/bin/'' so all the linking will be properly set up. Otherwise you&lt;br /&gt;
can get some interesting errors about missing files.&lt;br /&gt;
&lt;br /&gt;
= Getting Help =&lt;br /&gt;
&lt;br /&gt;
The [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers mailing list] can help if you:&lt;br /&gt;
&lt;br /&gt;
* get stuck building a PBI&lt;br /&gt;
* need to ask a question about your PBI &lt;br /&gt;
* are ready to submit a new module&lt;br /&gt;
* find a bug in an existing PBI&lt;br /&gt;
* have a bugfix for an existing PBI&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[category:handbook]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide</id>
		<title>PBI Module Builder Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide"/>
				<updated>2012-02-22T16:20:10Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* PBI Module Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{NavHeader|back=Test PBIs|forward=Purchase PC-BSD Swag}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
PC-BSD provides a unique file format known as a PBI (push button installer). PBI files end with the .pbi extension and are self-contained installation programs. This means that even novice users can safely install and uninstall PBIs without inadvertently overwriting or deleting files needed by the operating system or other applications.&lt;br /&gt;
&lt;br /&gt;
A PBI file includes all the runtime and library dependencies required by the application. This means that a PBI is a large file, but this does not necessarily mean that the installed PBI will be that large. During installation, the PBI system compares the currently installed libraries and files with the ones contained within the PBI file and only installs the ones that are not already installed on the system. A hash database is used to eliminate dependency problems while allowing the computer to share libraries between different programs. &lt;br /&gt;
&lt;br /&gt;
On PC-BSD, PBIs can be installed using the graphical [[Using AppCafe™ | AppCafe™]] utility or from the command line using [[PBI Manager]].&lt;br /&gt;
&lt;br /&gt;
The PBI format changed between PC-BSD 8.x and 9.x. This section demonstrates how to create PBIs for PC-BSD 9.x and higher. [[Building PBIs for PC-BSD 8.x and Earlier]] describes the old format, but is considered to be deprecated.&lt;br /&gt;
&lt;br /&gt;
=== Building PBIs for PC-BSD 9.x and higher ===&lt;br /&gt;
&lt;br /&gt;
Creating a PBI from an existing FreeBSD port is a surprisingly easy and automated process that does not require development skills. Some ports are effortless to convert while more complex ports may require some thought and simple scripting.&lt;br /&gt;
&lt;br /&gt;
Two utilities are available for converting FreeBSD ports into PBIs. EasyPBI provides a graphical interface and '''pbi_makeport''' provides a command line utility. This section demonstrates how to use both of these tools, explains the components of a PBI module, and provides some troubleshooting tips.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' before creating a PBI, check to see if one exists using the instructions in [[Submit PBI Requests]]. If you decide that you prefer to request a PBI that you need rather than to create one, that page also contains instructions for submitting a PBI request.&lt;br /&gt;
&lt;br /&gt;
====Using EasyPBI====&lt;br /&gt;
&lt;br /&gt;
EasyPBI is a new GUI application created by Jesse Smith and Ken Moore. It streamlines the process of building a PBI from a FreeBSD port. EasyPBI can be installed using AppCafe™ without any additional requirements on a PC-BSD system. For a pure FreeBSD system, you will need to install both the ''sysutils/easypbi'' and ''ports-mgmt/pbi-manager'' ports.&lt;br /&gt;
&lt;br /&gt;
To run the program, either double-click the EasyPBI desktop icon or type '''EasyPBI''' as your regular user account. This will open the screen shown in Figure 10.7a. Depending upon whether or not ports is installed, you may first receive a pop-up message.&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7a: EasyPBI Graphical Interface'''&lt;br /&gt;
&lt;br /&gt;
[[File:Easypbi.jpeg]]&lt;br /&gt;
&lt;br /&gt;
To build a PBI using EasyPBI:&lt;br /&gt;
&lt;br /&gt;
'''1. Create a module for the desired FreeBSD port:''' when you first start EasyPBI, it will check to see if the FreeBSD ports tree is installed into ''/usr/ports''. If it is not, a pop-up message will indicate that you have a choice on how to install the ports tree. If you want the system ports tree to be available for any user, go to Control Panel ➜ System Manager ➜ Tasks ➜ Fetch System Ports Tree. Use this method if multiple users will be using the EasyPBI utility. Alternatively, if you only want the ports tree to be available to the current user, click File ➜ Get Ports from within EasyPBI; this will fetch the ports tree and place it in the user's home directory. &lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' when determining which PBIs need to be built, refer to the [http://forums.pcbsd.org/forumdisplay.php?f=61 PBI Requests forum] to determine which PBI's have been requested by users. You should also check that a module does not already exist on the [http://trac.pcbsd.org/browser#pbi/modules PBI Modules] section of trac.&lt;br /&gt;
&lt;br /&gt;
To create a new module, click the &amp;quot;New Module&amp;quot; button and use the browser to select the desired port from the FreeBSD ports tree. Once a port is selected, EasyPBI will attempt to automatically supply the port information for the PBI and display the results on the GUI. In the example shown in Figure 10.7b, the ''net/xrdesktop'' port has been selected and the fields have been auto-filled in. &lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7b: Reviewing the Port's Information'''&lt;br /&gt;
&lt;br /&gt;
[[File:EasyPBI1a.jpeg]]&lt;br /&gt;
&lt;br /&gt;
You should review these fields for accuracy. In this example, the port's website had changed and an email was sent to the port author so that the URL could be corrected in the port.&lt;br /&gt;
&lt;br /&gt;
If you click &amp;quot;Get Port Info&amp;quot; [http://freshports.org FreshPorts.org] will open in the default web browser so that you can view additional information about the port. &lt;br /&gt;
&lt;br /&gt;
A generic icon will be supplied for the module; you can change the default icon by clicking the &amp;quot;Choose Icon&amp;quot; button. When using a custom icon, use 64x64 .png files with transparent backgrounds. &lt;br /&gt;
&lt;br /&gt;
If the program provides a GUI, check the box &amp;quot;GUI App&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Once the port information is complete, click the &amp;quot;Create Module&amp;quot; button and EasyPBI will produce a generic PBI module. A message will indicate the location of the module, as seen in the example in Figure 10.7c:&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7c: PBI Module Created'''&lt;br /&gt;
&lt;br /&gt;
[[File:EasyPBI2a.jpeg]]&lt;br /&gt;
&lt;br /&gt;
'''2. Build a PBI from the module:''' once your module is created, click on the &amp;quot;Build PBI&amp;quot; tab and click the Select Module button to browse to the module you just created. You should then review the default settings. Figure 10.7d shows the default settings for our example PBI.&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7d: The Build PBI Tab'''&lt;br /&gt;
&lt;br /&gt;
[[File:EasyPBI3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
The options in this tab allow you to do the following:&lt;br /&gt;
&lt;br /&gt;
'''Save Settings as Defaults:''' once you are satisfied with the settings, click this button to have EasyPBI remember your settings between uses.&lt;br /&gt;
&lt;br /&gt;
'''Change Directory:''' allows you to save the output of the build to a different directory.&lt;br /&gt;
&lt;br /&gt;
'''Change File:''' the PBIs available from the PC-BSD repositories are digitally signed by the PC-BSD project's signature file. If you are creating your own repository, you can use your own digital signature file by browing to its location.&lt;br /&gt;
&lt;br /&gt;
'''Use TMPFS:''' if your build system has a lot of RAM, selecting this option can speed up the build.&lt;br /&gt;
&lt;br /&gt;
'''Select Module:''' select the previously created module which you would like to build.&lt;br /&gt;
&lt;br /&gt;
'''Build PBI:''' starts the build of the PBI using the settings contained within the PBI module. It will prompt you for the superuser password and requires a working Internet connection to build the PBI. This process may take quite a while, depending upon the port selected and the speed of your computer. The build messages will be displayed in the window at the bottom of the tab. EasyPBI will inform you when the PBI build is finished, and whether it was successful or not.&lt;br /&gt;
&lt;br /&gt;
'''Stop Build:''' stops the build process. Click the &amp;quot;Build PBI&amp;quot; button to resume the build.&lt;br /&gt;
&lt;br /&gt;
'''Save Build Log:''' useful if the build fails.&lt;br /&gt;
&lt;br /&gt;
You can produce additional modules from the &amp;quot;Create Module&amp;quot; tab while a PBI build is running. &lt;br /&gt;
&lt;br /&gt;
If the PBI build fails for some reason, you may need to modify the module. Use the build log to determine the error and modify the module as needed. If you are unsure how to fix the module, send the build log for the failure as well as the module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev pbi-dev mailing list].&lt;br /&gt;
&lt;br /&gt;
'''3. Test the PBI:''' once the PBI build is complete, a pop-up message will indicate that the PBI finished building successfully. You will find the PBI in the output directory that you specified in Figure 10.7c. To continue with our example, the following commands will install the PBI so that it can be tested. Note the error message that occurs since the PBI has not been signed yet.&lt;br /&gt;
&lt;br /&gt;
 '''cd /home/dru/EasyPBI/PBI'''&lt;br /&gt;
 '''pbi_add xrdesktop-1.2_2-i386.pbi'''&lt;br /&gt;
 pbi_add: No digital signature! If you are *SURE* you trust this PBI, re-install with --no-checksig option.&lt;br /&gt;
 '''pbi_add --no-checksig xrdesktop-1.2_2-i386.pbi'''&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to /usr/pbi/xrdesktop-i386&lt;br /&gt;
 Installed: xrdesktop-1.2.2&lt;br /&gt;
&lt;br /&gt;
 '''rehash'''&lt;br /&gt;
 '''/usr/pbi/xrdesktop-i386/bin/xrdesktop'''&lt;br /&gt;
&lt;br /&gt;
Once installed, specify the full path to the application's binary to make sure that you are testing the PBI's binary. If the application starts and is a GUI, try using all of the menu items to make sure they work as expected. If you encounter any error messages in either starting or using the application, record them. If the fix for resolving the error messages is not clear to you after some Googling, send the error report the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev pbi-dev mailing list].&lt;br /&gt;
&lt;br /&gt;
Alternately, if everything seems to be working, send the tarball of the PBI to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev pbi-dev mailing list]. You will find it in the ''EasyPBI/Modules/'' subdirectory. In our example, the name of the tarball is ''/home/dru/EasyPBI/Modules/xrdesktop.tar.gz''.&lt;br /&gt;
&lt;br /&gt;
==== Creating a New PBI with '''pbi_makeport''' ====&lt;br /&gt;
&lt;br /&gt;
Starting in PC-BSD 9.x and higher, '''pbi_makeport''' is included with the operating system. This utility provides an easy way for a user to convert an existing FreeBSD port into a PBI module. The PBI build server builds modules into PBIs which are then made available to users through AppCafe™. '''man pbi_makeport''' provides details on this application's various usage options. &lt;br /&gt;
&lt;br /&gt;
When running '''pbi_makeport''' it is possible to supply an optional metadata configuration directory which contains additional data used to supplement the port building and the final PBI file. This configuration directory may contain extra icon data for the desktop, install/uninstall scripts, custom '''make''' options and more. &lt;br /&gt;
&lt;br /&gt;
Examples of 9.x modules can be found at [http://trac.pcbsd.org/browser/pcbsd/current/src-sh/pbi-manager/module-examples Examples in Subversion].&lt;br /&gt;
&lt;br /&gt;
FreeBSD ports may contain build dependencies, runtime dependencies, and required libraries. When building a PBI, '''pbi_makeport''' automatically&lt;br /&gt;
compiles all of the required dependencies, and, when finished compiling, prunes the build dependencies before packaging the PBI file, leaving only the runtime packages and libraries that are required for the program to work. This means that any files which are included in the PBI are necessary for the program to run, and manually removing them will cause the program to fail.&lt;br /&gt;
&lt;br /&gt;
====PBI Module Components====&lt;br /&gt;
&lt;br /&gt;
A PBI module contains the following components. When creating a PBI module, create a directory on your computer to hold the module's components. For example, if you are creating a PBI module for firefox, create a directory called ''firefox/'' and place the following files within that directory. The directory that you create is referred to as ''%PBI_APPDIR%%''. &lt;br /&gt;
&lt;br /&gt;
'''1. LICENSE File'''&lt;br /&gt;
&lt;br /&gt;
The text of a license agreement you want the user to click to accept before installation. This file is optional unless the underlying port is restricted and requires the user to accept a license in order to install and use the software.&lt;br /&gt;
&lt;br /&gt;
'''2. pbi.conf'''&lt;br /&gt;
&lt;br /&gt;
The ''pbi.conf'' file is mandatory. It is a simple shell script that contains the information needed to build the PBI. Typically this file requires you to modify a few simple variables, such as the name of the program, its location in the ports tree, and the name of its icon. Sometimes you will need to set a few additional variables in order to make sure that required dependencies are included in the PBI. If you get stuck when creating your own ''pbi.conf'', you can view the ''pbi.conf'' file for every PBI module in [http://trac.pcbsd.org/browser#pbi/modules this section] of the PC-BSD trac repository. Here is an example of the ''pbi.conf'' file for firefox: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# PBI Build Configuration&lt;br /&gt;
# Place over-rides and settings here&lt;br /&gt;
#&lt;br /&gt;
# XDG Desktop Menu Spec:&lt;br /&gt;
# http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html&lt;br /&gt;
##############################################################################&lt;br /&gt;
&lt;br /&gt;
# Program Name&lt;br /&gt;
PBI_PROGNAME=&amp;quot;Firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Website&lt;br /&gt;
PBI_PROGWEB=&amp;quot;http://www.mozilla.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Author / Vendor&lt;br /&gt;
PBI_PROGAUTHOR=&amp;quot;The Mozilla Foundation&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Default Icon (Relative to %%PBI_APPDIR%% or resources/)&lt;br /&gt;
PBI_PROGICON=&amp;quot;share/pixmaps/FireFox-128.png&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# The target port we are building&lt;br /&gt;
PBI_MAKEPORT=&amp;quot;www/firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Additional options for make.conf&lt;br /&gt;
PBI_MAKEOPTS=&amp;quot;PACKAGE_BUILDING=Y&lt;br /&gt;
WITH_CUPS=yes&lt;br /&gt;
WITH_GECKO=libxul&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Ports to build before / after&lt;br /&gt;
PBI_MKPORTBEFORE=&amp;quot;&amp;quot;&lt;br /&gt;
PBI_MKPORTAFTER=&amp;quot;audio/esound x11-fonts/dejavu x11-themes/qtcurve-gtk2 devel/gconf2 www/firefox-i18n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Exclude List&lt;br /&gt;
PBI_EXCLUDELIST=&amp;quot;./include ./share/doc&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Increment to trigger rebuild of PBI on build servers&lt;br /&gt;
PBI_BUILDKEY=&amp;quot;04&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# This app needs to install as root&lt;br /&gt;
PBI_REQUIRESROOT=&amp;quot;YES&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set the priority of this build &lt;br /&gt;
PBI_AB_PRIORITY=&amp;quot;50&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set the files we want to exclude from the shared hashdir&lt;br /&gt;
PBI_HASH_EXCLUDES=&amp;quot;lib/firefox/firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
export PBI_PROGNAME PBI_PROGWEB PBI_PROGAUTHOR PBI_PROGICON PBI_MAKEPORT PBI_MAKEOPTS &lt;br /&gt;
PBI_MKPORTBEFORE PBI_MKPORTAFTER PBI_BUILDKEY PBI_REQUIRESROOT PBI_EXCLUDELIST&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Table 10.7a describes the most commonly used variables. When creating your ''pbi.conf'' file, you will want to refer to the FreeBSD port's ''Makefile'' and ''pkg-descr'' to determine which values to use.&lt;br /&gt;
&lt;br /&gt;
'''Table 10.7a: Commonly Used pbi.conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Variable'''}}  &lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; should be the same value as PORTNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's ''Makefile'', but capitalized}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGWEB&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory unless does not exist; should be the same value as WWW&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's ''pkg-descr''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGAUTHOR&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; often found in the port's ''pkg-descr'' or at the website for the application}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGICON&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory path, relative to %PBI_APPDIR%%, to application icon file in png format}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGREVISION&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|bump up a PBI's revision number; useful when rebuilding a port with new PBI specific options}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_MAKEPORT&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory; the path to the port within ''/usr/ports/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_MAKEOPTS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|optional; set this to the options that you want saved into ''make.conf'' for the port building process (e.g. WITH_CUPS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;YES)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_MKPORTBEFORE&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|optional; port(s) to build before starting the target port PBI_MAKEPORT}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_MKPORTAFTER&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|optional; port(s) to build after finishing the target port PBI_MAKEPORT}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_BUILDKEY&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|should not be included; this variable is used on the PBI build server to force the rebuild of a PBI that has failed to build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_REQUIRESROOT&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|set to to YES to require this app to be installed as root; default is NO which allows it to be installed as a regular user }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_EXCLUDELIST&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|list of files or directories to exclude from the final archive, such as ''./include'' or ''./share''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_AB_PRIORITY&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|may be set by build server administrator; a higher number indicates a greater priority and will be built before lower priority PBIs}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_AB_NOTMPFS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|set to YES to disable using tmpfs when doing auto-builds on a server}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_HASH_EXCLUDES&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|set to a space delimited list of files to exclude from merging into the shared hash-dir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''export'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; followed by a list of all of the variables that will be included when the PBI is built}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''3. external-links'''&lt;br /&gt;
&lt;br /&gt;
The optional ''external-links'' file contains a list of targets to link into the system's LOCALBASE at PBI installation time. This is useful for placing binaries and files in the user's PATH. When building PBIs from a FreeBSD port, this file is usually not needed, as most binaries and files are auto-detected and placed in the LOCALBASE. Example 10.7a shows an example usage:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7a: Example external-links File'''&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Files to be Sym-Linked into the default LOCALBASE&lt;br /&gt;
# One per-line, relative to %%PBI_APPDIR%% and LOCALBASE&lt;br /&gt;
# Defaults to keeping any existing files in LOCALBASE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# TARGET                LINK IN LOCALBASE       ACTION&lt;br /&gt;
#etc/rc.d/servfoo       etc/rc.d/servfoo        keep&lt;br /&gt;
#include/libfoo.h       include/libfoo.h        replace&lt;br /&gt;
#etc/rc.d/servfoo       etc/rc.d/servfoo        keep&lt;br /&gt;
bin/firefox3            bin/firefox3            binary,nocrash&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The flags in the ACTION column are as follows:&lt;br /&gt;
&lt;br /&gt;
* '''keep''': if this file already exists in LOCALBASE, don't overwrite it&lt;br /&gt;
&lt;br /&gt;
* '''replace''': replace this file in LOCALBASE if it exists&lt;br /&gt;
&lt;br /&gt;
* '''binary''': this file is an executable&lt;br /&gt;
&lt;br /&gt;
* '''nocrash''': used for binary files; don't display crash handler if program exits with non-0 status&lt;br /&gt;
&lt;br /&gt;
* '''linux''': used for binary files; Indicates that this is a linux application, and needs to run with Linux compat&lt;br /&gt;
&lt;br /&gt;
'''4. resources/'''&lt;br /&gt;
&lt;br /&gt;
The ''resources/'' directory can contain extra files you wish copied into the PBI application directory. This is often the best place for icons and other files not included with a port. &lt;br /&gt;
&lt;br /&gt;
'''5. scripts/'''&lt;br /&gt;
&lt;br /&gt;
This directory can contain the following scripts:&lt;br /&gt;
&lt;br /&gt;
* '''post-install.sh''': script run immediately after the extraction of PBI contents to disk&lt;br /&gt;
&lt;br /&gt;
* '''post-portmake.sh''': script run during building of the PBI file, after the port compile is finished&lt;br /&gt;
&lt;br /&gt;
* '''pre-install.sh''': script run before installation of the PBI; return non-0 to halt installation&lt;br /&gt;
&lt;br /&gt;
* '''pre-remove.sh''': script run before deletion of the PBI file&lt;br /&gt;
&lt;br /&gt;
Table 10.7b summarizes the variables that may be used in these scripts:&lt;br /&gt;
&lt;br /&gt;
'''Table 10.7b Supported Variables&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Variable'''}}  &lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; should be the same value as PORTNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's ''Makefile'', but capitalized}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGDIRNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|name of the subdirectory that is created for the PBI in ''/usr/pbi/'' (e.g. &amp;quot;firefox-amd64&amp;quot; for the 64-bit Firefox PBI)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGDIRPATH&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|full path to the PBI install directory (e.g. ''/usr/pbi/firefox-amd64/'' for the 64-bit Firefox PBI)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGVERSION&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|version of the program - should be the same value as the DISTVERSION in the port's Makefile }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_RCDIR&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|location of ''rc.d/'' directory used by PBIs, usually ''/usr/local/etc/rc.d'' }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''SYS_LOCALBASE&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|LOCALBASE of the default system, typically ''/usr/local'' }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_FAKEBIN_DIR&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|the binary wrapper directory, typically ''/usr/pbi/&amp;lt;pbidir&amp;gt;/.sbin/'' }}&lt;br /&gt;
|-&lt;br /&gt;
|}        &lt;br /&gt;
&lt;br /&gt;
'''6. xdg-menu/ and xdg-desktop/'''&lt;br /&gt;
&lt;br /&gt;
The ''xdg-menu/'' and ''xdg-desktop/'' directories can be used to supply menu and desktop icons, respectively. The file that you place in these directories should be in the format ''pbiname.desktop''. Example 10.7b shows the ''firefox.desktop'' files for the firefox PBI:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7b: firefox.desktop File'''&lt;br /&gt;
 &lt;br /&gt;
 '''more xdg-menu/firefox.desktop'''&lt;br /&gt;
 #!/usr/bin/env xdg-open&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Value=1.0&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=FireFox&lt;br /&gt;
 GenericName=FireFox&lt;br /&gt;
 Exec=%%PBI_EXEDIR%%/firefox %U&lt;br /&gt;
 Path=%%PBI_APPDIR%%&lt;br /&gt;
 Icon=%%PBI_APPDIR%%/share/pixmaps/FireFox-128.png&lt;br /&gt;
 StartupNotify=true&lt;br /&gt;
 Categories=Network;&lt;br /&gt;
 &lt;br /&gt;
 '''more xdg-desktop/firefox.desktop'''&lt;br /&gt;
 #!/usr/bin/env xdg-open&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Value=1.0&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=FireFox&lt;br /&gt;
 GenericName=FireFox&lt;br /&gt;
 Exec=%%PBI_EXEDIR%%/firefox %U&lt;br /&gt;
 Path=%%PBI_APPDIR%%&lt;br /&gt;
 Icon=%%PBI_APPDIR%%/share/pixmaps/FireFox-128.png&lt;br /&gt;
 StartupNotify=true &lt;br /&gt;
&lt;br /&gt;
%%PBI_EXEDIR%% should reference the PBI's executable and any required switches.&lt;br /&gt;
&lt;br /&gt;
For more details on the XDG menu specifications, please refer to the [http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html freedesktop specifications]. &lt;br /&gt;
&lt;br /&gt;
'''7. xdg-mime/'''&lt;br /&gt;
&lt;br /&gt;
The ''xdg-mime/'' directory is used to register file associations according to the [http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html freedesktop MIME specs]. This requires the creation of an XML file. The example shown in Figure 10.7c adds the MIME information for gimp, so that it can be available as an application choice in a web browser:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7c: Gimp MIME Info'''&lt;br /&gt;
&lt;br /&gt;
 '''more xdg-mime/gimp-xdg.xml'''&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;mime-info xmlns='&amp;lt;nowiki&amp;gt;http://www.freedesktop.org/standards/shared-mime-info&amp;lt;/nowiki&amp;gt;'&amp;gt;&lt;br /&gt;
  &amp;lt;mime-type type=&amp;quot;application/x-gimp&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Gimp - XCF File&amp;lt;/comment&amp;gt;&lt;br /&gt;
   &amp;lt;glob weight=&amp;quot;100&amp;quot; pattern=&amp;quot;*.xcf&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;glob weight=&amp;quot;100&amp;quot; pattern=&amp;quot;*.XCF&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/mime-type&amp;gt;&lt;br /&gt;
 &amp;lt;/mime-info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Useful Tips====&lt;br /&gt;
&lt;br /&gt;
If your PBI's executable does not run, it may be because the program executable is actually a wrapper script rather than a binary file. If so, check the first line of the script to make sure it is using the right path for the scripting language. For example, ''#!/bin/python'' is an incorrect path which should be changed to ''#!/usr/pbi/(pbi-name)/bin/python''.&lt;br /&gt;
&lt;br /&gt;
The suggested path works because each program is packaged with the proper version of the language it uses and you want to make sure it uses that one. This is usually accomplished by putting a quick '''sed''' line in the ''post-install.sh'' script to fix the first line as seen in [http://trac.pcbsd.org/browser/pbi/modules/games/fretsonfire/scripts/post-install.sh?rev=13019 this example].&lt;br /&gt;
&lt;br /&gt;
When testing the executable, use the one located in ''/usr/pbi/(pbi-name)/bin/'' so all the linking will be properly set up. Otherwise you&lt;br /&gt;
can get some interesting errors about missing files.&lt;br /&gt;
&lt;br /&gt;
= Getting Help =&lt;br /&gt;
&lt;br /&gt;
The [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers mailing list] can help if you:&lt;br /&gt;
&lt;br /&gt;
* get stuck building a PBI&lt;br /&gt;
* need to ask a question about your PBI &lt;br /&gt;
* are ready to submit a new module&lt;br /&gt;
* find a bug in an existing PBI&lt;br /&gt;
* have a bugfix for an existing PBI&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[category:handbook]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2012-02-17T18:54:23Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create PBI or inmate for BBB&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|DONE&lt;br /&gt;
|In 9.0&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|kris&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|1-16-2012 [[http://trac.pcbsd.org/changeset/14866 14866]]&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|2-17-2012 [[http://trac.pcbsd.org/changeset/15467 15467]]&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Merge Warden® into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|Kris&lt;br /&gt;
|C++&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|[[http://trac.pcbsd.org/changeset/15467 15467]]&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add setting to automatically create desktop / menu icons upon appcafe installations &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|In pc-sysinstaller GUI, show native language strings when selecting the initial language, not the english version. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create sound mixer control panel app, let user pick default sound device, mixer settings&lt;br /&gt;
|&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2012-02-17T17:53:47Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create PBI or inmate for BBB&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|DONE&lt;br /&gt;
|In 9.0&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|kris&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|1-16-2012 [[http://trac.pcbsd.org/changeset/14866 14866]]&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|2-17-2012 [[http://trac.pcbsd.org/changeset/15467 15467]]&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Merge Warden® into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|Kris&lt;br /&gt;
|C++&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|[[http://trac.pcbsd.org/changeset/15467 15467]]&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add setting to automatically create desktop / menu icons upon appcafe installations &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show download spec during system installation, and give option to try another mirror if a failure occurs. Also test mirror connection before starting.&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|In pc-sysinstaller GUI, show native language strings when selecting the initial language, not the english version. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create sound mixer control panel app, let user pick default sound device, mixer settings&lt;br /&gt;
|&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
[[category:PC-BSD Wiki]]&lt;br /&gt;
[[category:TODO Lists]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2012-01-26T18:17:06Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create PBI or inmate for BBB&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|DONE&lt;br /&gt;
|In 9.0&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|kris&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|1-16-2012 [[http://trac.pcbsd.org/changeset/14866 14866]]&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Merge Warden® into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Pre-select keyboard layout / timezone based upon language selection&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add setting to automatically create desktop / menu icons upon appcafe installations &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show download spec during system installation, and give option to try another mirror if a failure occurs. Also test mirror connection before starting.&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|In pc-sysinstaller GUI, show native language strings when selecting the initial language, not the english version. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create sound mixer control panel app, let user pick default sound device, mixer settings&lt;br /&gt;
|&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2012-01-26T18:16:49Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create PBI or inmate for BBB&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|DONE&lt;br /&gt;
|In 9.0&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|jpaetzel&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|'''DONE'''&lt;br /&gt;
|1-16-2012 [[http://trac.pcbsd.org/changeset/14866 14866]]&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Merge Warden® into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Pre-select keyboard layout / timezone based upon language selection&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add setting to automatically create desktop / menu icons upon appcafe installations &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show download spec during system installation, and give option to try another mirror if a failure occurs. Also test mirror connection before starting.&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|In pc-sysinstaller GUI, show native language strings when selecting the initial language, not the english version. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add option to wireless settings in network manager to select country code&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create sound mixer control panel app, let user pick default sound device, mixer settings&lt;br /&gt;
|&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2011-12-28T18:31:44Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create PBI or inmate for BBB&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|jpaetzel&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Merge &amp;quot;The Warden&amp;quot; into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Pre-select keyboard layout / timezone based upon language selection&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add setting to automatically create desktop / menu icons upon appcafe installations &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show download spec during system installation, and give option to try another mirror if a failure occurs. Also test mirror connection before starting.&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|In pc-sysinstaller GUI, show native language strings when selecting the initial language, not the english version. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2011-12-28T15:57:05Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create PBI or inmate for BBB&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|jpaetzel&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Merge &amp;quot;The Warden&amp;quot; into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Pre-select keyboard layout / timezone based upon language selection&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add setting to automatically create desktop / menu icons upon appcafe installations &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show download spec during system installation, and give option to try another mirror if a failure occurs. Also test mirror connection before starting.&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2011-12-28T15:35:14Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create PBI or inmate for BBB&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|jpaetzel&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Merge &amp;quot;The Warden&amp;quot; into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Pre-select keyboard layout / timezone based upon language selection&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add setting to automatically create desktop / menu icons upon appcafe installations &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++/QT&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide</id>
		<title>PBI Module Builder Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide"/>
				<updated>2011-12-22T21:22:47Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* PBI Module Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Test PBIs|forward=Purchase PC-BSD Swag}}&lt;br /&gt;
PC-BSD provides a unique file format known as a PBI (push button installer). PBI files end with the .pbi extension and are self-contained installation programs. This means that even novice users can safely install and uninstall PBIs without inadvertently overwriting or deleting files needed by the operating system or other applications.&lt;br /&gt;
&lt;br /&gt;
A PBI file includes all the runtime and library dependencies required by the application. This means that a PBI is a large file, but this does not necessarily mean that the installed PBI will be that large. During installation, the PBI system compares the currently installed libraries and files with the ones contained within the PBI file and only installs the ones that are not already installed on the system. A hash database is used to eliminate dependency problems while allowing the computer to share libraries between different programs. &lt;br /&gt;
&lt;br /&gt;
On PC-BSD, PBIs can be installed using the graphical [[Using AppCafe™ | AppCafe™]] utility or from the command line using [[PBI Manager]].&lt;br /&gt;
&lt;br /&gt;
The PBI format changed between PC-BSD 8.x and 9.x. This means that you should follow the instructions for the PBI format that you wish to create.&lt;br /&gt;
&lt;br /&gt;
=== Building PBIs for PC-BSD 9.x and higher ===&lt;br /&gt;
&lt;br /&gt;
Creating a PBI from an existing FreeBSD port is a surprisingly easy and automated process that does not require development skills. Some ports are effortless to convert while more complex ports may require some thought and simple scripting.&lt;br /&gt;
&lt;br /&gt;
Two utilities are available for converting FreeBSD ports into PBIs. EasyPBI provides a graphical interface and '''pbi_makeport''' provides a command line utility. This section demonstrates how to use both of these tools, explains the components of a PBI module, and provides some troubleshooting tips.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' before creating a PBI, check to see if one exists using the instructions in [[Submit PBI Requests]]. If you decide that you prefer to request a PBI that you need rather than to create one, that page also contains instructions for submitting a PBI request.&lt;br /&gt;
&lt;br /&gt;
====Using EasyPBI====&lt;br /&gt;
&lt;br /&gt;
EasyPBI is a new GUI application created by Jesse Smith and Ken Moore. It streamlines the process of building a PBI from a FreeBSD port. To use EasyPBI, the following need to be installed on your PC-BSD system:&lt;br /&gt;
&lt;br /&gt;
1. Use Control Panel -&amp;gt; System Manager -&amp;gt; System Packages to install the Development -&amp;gt; Development-Qt package.&lt;br /&gt;
&lt;br /&gt;
2. Use AppCafe™ to install the EasyPBI PBI.&lt;br /&gt;
&lt;br /&gt;
To run the program, either double-click the EasyPBI desktop icon or type '''EasyPBI''' as your regular user account. This will open the screen shown in Figure 10.7a. Depending upon whether or not ports is installed, you may first receive a pop-up message.&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7a: EasyPBI Graphical Interface'''&lt;br /&gt;
&lt;br /&gt;
[[File:Easypbi.jpeg]]&lt;br /&gt;
&lt;br /&gt;
The two main components to building a PBI are reflected in EasyPBI:&lt;br /&gt;
&lt;br /&gt;
'''1. Create a module for the desired FreeBSD port:''' when you first start EasyPBI, it will check to see if the FreeBSD ports tree is installed into ''/usr/ports''. If it is not, a pop-up message will indicate that you have a choice on how to install the ports tree. If you want the system ports tree to be available for any user, go to Control Panel -&amp;gt; System Manager -&amp;gt; Tasks -&amp;gt; Fetch System Ports Tree. Use this method if multiple users will be using the EasyPBI utility. Alternatively, if you only want the ports tree to be available to the current user, click File -&amp;gt; Get Ports from within EasyPBI; this will fetch the ports tree and place it in the user's home directory. &lt;br /&gt;
&lt;br /&gt;
To create a new module, click the &amp;quot;New Module&amp;quot; button and use the browser to select the desired port from the FreeBSD ports tree. Once a port is selected, EasyPBI will attempt to automatically supply the port information for the PBI and display the results on the GUI. In the example shown in Figure 10.7b, the ''multimedia/handbrake'' port has been selected and the fields other than &amp;quot;Port's website&amp;quot; have been auto-filled in. &lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7b: Reviewing the Port's Information'''&lt;br /&gt;
&lt;br /&gt;
[[File:EasyPBI1.jpeg]]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' when determining which PBIs need to be built, refer to the [http://forums.pcbsd.org/forumdisplay.php?f=61 PBI Requests forum] to determine which PBI's have been requested by users. You should also check that a module does not already exist on the [http://trac.pcbsd.org/browser#pbi/modules PBI Modules] section of trac.&lt;br /&gt;
&lt;br /&gt;
If you click &amp;quot;Get Port Info&amp;quot; [http://freshports.org FreshPorts.org] will open in the default web browser so that you can view additional information about the port. In this example, FreshPorts does not indicate the port's website, but the [http://forums.pcbsd.org/showthread.php?t=15357 PBI request] does.&lt;br /&gt;
&lt;br /&gt;
A generic icon will be supplied for the module; you can change the default icon by clicking the &amp;quot;Choose Icon&amp;quot; button. When using a custom icon, use 64x64 .png files with transparent backgrounds. &lt;br /&gt;
&lt;br /&gt;
If the program provides a GUI, check the box &amp;quot;GUI App&amp;quot;. Since handbrake is a command line program, this box is left unchecked in this example.&lt;br /&gt;
&lt;br /&gt;
Once the port information is complete, click the &amp;quot;Create Module&amp;quot; button and EasyPBI will produce a generic PBI module. A message will indicate the location of the module, as seen in the example in Figure 10.7c:&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7c: PBI Module Created'''&lt;br /&gt;
&lt;br /&gt;
[[File:Easypbi2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
'''2. Build a PBI from the module:''' once your module is created, click on the &amp;quot;Build PBI&amp;quot; tab in EasyPBI and review the default settings. Figure 10.7d shows the default settings for our example PBI.&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7d: The Build PBI Tab'''&lt;br /&gt;
&lt;br /&gt;
[[File:Easypbi3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
The options in this tab allow you to do the following:&lt;br /&gt;
&lt;br /&gt;
'''Save Settings as Defaults:''' once you are satisfied with the settings, click this button to have EasyPBI remember your settings between uses.&lt;br /&gt;
&lt;br /&gt;
'''Change Directory:'''&lt;br /&gt;
&lt;br /&gt;
'''Change File:'''&lt;br /&gt;
&lt;br /&gt;
'''Use TMPFS:'''&lt;br /&gt;
&lt;br /&gt;
'''Select Module:''' select the previously created module which you would like to build.&lt;br /&gt;
&lt;br /&gt;
'''Build PBI:''' starts the build of the PBI using the settings contained within the PBI module. It will prompt you for the superuser password and requires a working Internet connection to build the PBI. This process may take quite a while, depending upon the port selected and the speed of your computer. The build messages will be displayed in the window at the bottom of the tab. EasyPBI will inform you when the PBI build is finished, and whether it was successful or not.&lt;br /&gt;
&lt;br /&gt;
'''Stop Build:''' stops the build process. Click the &amp;quot;Build PBI&amp;quot; button to resume the build.&lt;br /&gt;
&lt;br /&gt;
'''Save Build Log:''' useful if the build fails.&lt;br /&gt;
&lt;br /&gt;
You can produce additional modules from the &amp;quot;Create Module&amp;quot; tab while a PBI build is running. &lt;br /&gt;
&lt;br /&gt;
If the PBI build fails for some reason, you may need to modify the module. Use the build log to determine the error and modify the module as needed. If you are unsure how to fix the module, send the build log for the failure as well as the module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev pbi-dev mailing list].&lt;br /&gt;
&lt;br /&gt;
==== Creating a New PBI with '''pbi_makeport''' ====&lt;br /&gt;
&lt;br /&gt;
Starting in PC-BSD 9.x and higher, '''pbi_makeport''' is included with the operating system. This utility provides an easy way for a user to convert an existing FreeBSD port into a PBI module. The PBI build server builds modules into PBIs which are then made available to users through AppCafe™. '''man pbi_makeport''' provides details on this application's various usage options. &lt;br /&gt;
&lt;br /&gt;
When running '''pbi_makeport''' it is possible to supply an optional metadata configuration directory which contains additional data used to supplement the port building and the final PBI file. This configuration directory may contain extra icon data for the desktop, install/uninstall scripts, custom '''make''' options and more. &lt;br /&gt;
&lt;br /&gt;
Examples of 9.x modules can be found at [http://trac.pcbsd.org/browser/pcbsd/current/src-sh/pbi-manager/module-examples Examples in Subversion].&lt;br /&gt;
&lt;br /&gt;
FreeBSD ports may contain build dependencies, runtime dependencies, and required libraries. When building a PBI, '''pbi_makeport''' automatically&lt;br /&gt;
compiles all of the required dependencies, and, when finished compiling, prunes the build dependencies before packaging the PBI file, leaving only the runtime packages and libraries that are required for the program to work. This means that any files which are included in the PBI are necessary for the program to run, and manually removing them will cause the program to fail.&lt;br /&gt;
&lt;br /&gt;
====PBI Module Components====&lt;br /&gt;
&lt;br /&gt;
A PBI module contains the following components. When creating a PBI module, create a directory on your computer to hold the module's components. For example, if you are creating a PBI module for firefox, create a directory called ''firefox/'' and place the following files within that directory. The directory that you create is referred to as ''%PBI_APPDIR%%''. &lt;br /&gt;
&lt;br /&gt;
'''1. LICENSE File'''&lt;br /&gt;
&lt;br /&gt;
The text of a license agreement you want the user to click to accept before installation. This file is optional unless the underlying port is restricted and requires the user to accept a license in order to install and use the software.&lt;br /&gt;
&lt;br /&gt;
'''2. pbi.conf'''&lt;br /&gt;
&lt;br /&gt;
The ''pbi.conf'' file is mandatory. It is a simple shell script that contains the information needed to build the PBI. Typically this file requires you to modify a few simple variables, such as the name of the program, its location in the ports tree, and the name of its icon. Sometimes you will need to set a few additional variables in order to make sure that required dependencies are included in the PBI. If you get stuck when creating your own ''pbi.conf'', you can view the ''pbi.conf'' file for every PBI module in [http://trac.pcbsd.org/browser#pbi/modules this section] of the PC-BSD trac repository. Here is an example of the ''pbi.conf'' file for firefox: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# PBI Build Configuration&lt;br /&gt;
# Place over-rides and settings here&lt;br /&gt;
#&lt;br /&gt;
# XDG Desktop Menu Spec:&lt;br /&gt;
# http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html&lt;br /&gt;
##############################################################################&lt;br /&gt;
&lt;br /&gt;
# Program Name&lt;br /&gt;
PBI_PROGNAME=&amp;quot;Firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Website&lt;br /&gt;
PBI_PROGWEB=&amp;quot;http://www.mozilla.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Author / Vendor&lt;br /&gt;
PBI_PROGAUTHOR=&amp;quot;The Mozilla Foundation&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Default Icon (Relative to %%PBI_APPDIR%% or resources/)&lt;br /&gt;
PBI_PROGICON=&amp;quot;share/pixmaps/FireFox-128.png&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# The target port we are building&lt;br /&gt;
PBI_MAKEPORT=&amp;quot;www/firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Additional options for make.conf&lt;br /&gt;
PBI_MAKEOPTS=&amp;quot;PACKAGE_BUILDING=Y&lt;br /&gt;
WITH_CUPS=yes&lt;br /&gt;
WITH_GECKO=libxul&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Ports to build before / after&lt;br /&gt;
PBI_MKPORTBEFORE=&amp;quot;&amp;quot;&lt;br /&gt;
PBI_MKPORTAFTER=&amp;quot;audio/esound x11-fonts/dejavu x11-themes/qtcurve-gtk2 devel/gconf2 www/firefox-i18n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Exclude List&lt;br /&gt;
PBI_EXCLUDELIST=&amp;quot;./include ./share/doc&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Increment to trigger rebuild of PBI on build servers&lt;br /&gt;
PBI_BUILDKEY=&amp;quot;04&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# This app needs to install as root&lt;br /&gt;
PBI_REQUIRESROOT=&amp;quot;YES&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set the priority of this build &lt;br /&gt;
PBI_AB_PRIORITY=&amp;quot;50&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set the files we want to exclude from the shared hashdir&lt;br /&gt;
PBI_HASH_EXCLUDES=&amp;quot;lib/firefox/firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
export PBI_PROGNAME PBI_PROGWEB PBI_PROGAUTHOR PBI_PROGICON PBI_MAKEPORT PBI_MAKEOPTS &lt;br /&gt;
PBI_MKPORTBEFORE PBI_MKPORTAFTER PBI_BUILDKEY PBI_REQUIRESROOT PBI_EXCLUDELIST&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Table 10.7a describes the most commonly used variables. When creating your ''pbi.conf'' file, you will want to refer to the FreeBSD port's ''Makefile'' and ''pkg-descr'' to determine which values to use.&lt;br /&gt;
&lt;br /&gt;
'''Table 10.7a: Commonly Used pbi.conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=100%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Variable'''}}  &lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; should be the same value as PORTNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's ''Makefile'', but capitalized}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGWEB&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory unless does not exist; should be the same value as WWW&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's ''pkg-descr''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGAUTHOR&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; often found in the port's ''pkg-descr'' or at the website for the application}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGICON&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory path, relative to %PBI_APPDIR%%, to application icon file in png format}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGREVISION&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|bump up a PBI's revision number; useful when rebuilding a port with new PBI specific options}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_MAKEPORT&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|mandatory; the path to the port within ''/usr/ports/''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_MAKEOPTS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|optional; set this to the options that you want saved into ''make.conf'' for the port building process (e.g. WITH_CUPS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;YES)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_MKPORTBEFORE&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|optional; port(s) to build before starting the target port PBI_MAKEPORT}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_MKPORTAFTER&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|optional; port(s) to build after finishing the target port PBI_MAKEPORT}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_BUILDKEY&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|should not be included; this variable is used on the PBI build server to force the rebuild of a PBI that has failed to build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_REQUIRESROOT&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|set to to YES to require this app to be installed as root; default is NO which allows it to be installed as a regular user }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_EXCLUDELIST&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|list of files or directories to exclude from the final archive, such as ''./include'' or ''./share''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_AB_PRIORITY&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|may be set by build server administrator; a higher number indicates a greater priority and will be built before lower priority PBIs}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_AB_NOTMPFS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|set to YES to disable using tmpfs when doing auto-builds on a server}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_HASH_EXCLUDES&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|set to a space delimited list of files to exclude from merging into the shared hash-dir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''export'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; followed by a list of all of the variables that will be included when the PBI is built}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''3. external-links'''&lt;br /&gt;
&lt;br /&gt;
The optional ''external-links'' file contains a list of targets to link into the system's LOCALBASE at PBI installation time. This is useful for placing binaries and files in the user's PATH. When building PBIs from a FreeBSD port, this file is usually not needed, as most binaries and files are auto-detected and placed in the LOCALBASE. Example 10.7a shows an example usage:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7a: Example external-links File'''&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Files to be Sym-Linked into the default LOCALBASE&lt;br /&gt;
# One per-line, relative to %%PBI_APPDIR%% and LOCALBASE&lt;br /&gt;
# Defaults to keeping any existing files in LOCALBASE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# TARGET                LINK IN LOCALBASE       ACTION&lt;br /&gt;
#etc/rc.d/servfoo       etc/rc.d/servfoo        keep&lt;br /&gt;
#include/libfoo.h       include/libfoo.h        replace&lt;br /&gt;
#etc/rc.d/servfoo       etc/rc.d/servfoo        keep&lt;br /&gt;
bin/firefox3            bin/firefox3            binary,nocrash&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The flags in the ACTION column are as follows:&lt;br /&gt;
&lt;br /&gt;
* '''keep''': if this file already exists in LOCALBASE, don't overwrite it&lt;br /&gt;
&lt;br /&gt;
* '''replace''': replace this file in LOCALBASE if it exists&lt;br /&gt;
&lt;br /&gt;
* '''binary''': this file is an executable&lt;br /&gt;
&lt;br /&gt;
* '''nocrash''': used for binary files; don't display crash handler if program exits with non-0 status&lt;br /&gt;
&lt;br /&gt;
'''4. resources/'''&lt;br /&gt;
&lt;br /&gt;
The ''resources/'' directory can contain extra files you wish copied into the PBI application directory. This is often the best place for icons and other files not included with a port. &lt;br /&gt;
&lt;br /&gt;
'''5. scripts/'''&lt;br /&gt;
&lt;br /&gt;
This directory can contain the following scripts:&lt;br /&gt;
&lt;br /&gt;
* '''post-install.sh''': script run immediately after the extraction of PBI contents to disk&lt;br /&gt;
&lt;br /&gt;
* '''post-portmake.sh''': script run during building of the PBI file, after the port compile is finished&lt;br /&gt;
&lt;br /&gt;
* '''pre-install.sh''': script run before installation of the PBI; return non-0 to halt installation&lt;br /&gt;
&lt;br /&gt;
* '''pre-remove.sh''': script run before deletion of the PBI file&lt;br /&gt;
&lt;br /&gt;
Table 10.7b summarizes the variables that may be used in these scripts:&lt;br /&gt;
&lt;br /&gt;
'''Table 10.7b Supported Variables&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=100%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Variable'''}}  &lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|mandatory; should be the same value as PORTNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's ''Makefile'', but capitalized}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGDIRNAME'''}}&lt;br /&gt;
{{Tbl-line|align=left|name of the subdirectory that is created for the PBI in ''/usr/pbi/'' (e.g. &amp;quot;firefox-amd64&amp;quot; for the 64-bit Firefox PBI)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGDIRPATH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|full path to the PBI install directory (e.g. ''/usr/pbi/firefox-amd64/'' for the 64-bit Firefox PBI)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGVERSION'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|version of the program - should be the same value as the DISTVERSION in the port's Makefile }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_RCDIR'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Location of rc.d directory used by PBIs, usually /usr/local/etc/rc.d }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''SYS_LOCALBASE'''}}&lt;br /&gt;
{{Tbl-line|align=left|The LOCALBASE of the default system, typically /usr/local }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_FAKEBIN_DIR'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|The binary wrapper directory, typically /usr/pbi/&amp;lt;pbidir&amp;gt;/.sbin/ }}&lt;br /&gt;
|-&lt;br /&gt;
|}        &lt;br /&gt;
&lt;br /&gt;
'''6. xdg-menu/ and xdg-desktop/'''&lt;br /&gt;
&lt;br /&gt;
The ''xdg-menu/'' and ''xdg-desktop/'' directories can be used to supply menu and desktop icons, respectively. The file that you place in these directories should be in the format ''pbiname.desktop''. Example 10.7b shows the ''firefox.desktop'' files for the firefox PBI:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7b: firefox.desktop File'''&lt;br /&gt;
 &lt;br /&gt;
 '''more xdg-menu/firefox.desktop'''&lt;br /&gt;
 #!/usr/bin/env xdg-open&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Value=1.0&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=FireFox&lt;br /&gt;
 GenericName=FireFox&lt;br /&gt;
 Exec=%%PBI_EXEDIR%%/firefox %U&lt;br /&gt;
 Path=%%PBI_APPDIR%%&lt;br /&gt;
 Icon=%%PBI_APPDIR%%/share/pixmaps/FireFox-128.png&lt;br /&gt;
 StartupNotify=true&lt;br /&gt;
 Categories=Network;&lt;br /&gt;
 &lt;br /&gt;
 '''more xdg-desktop/firefox.desktop'''&lt;br /&gt;
 #!/usr/bin/env xdg-open&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Value=1.0&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=FireFox&lt;br /&gt;
 GenericName=FireFox&lt;br /&gt;
 Exec=%%PBI_EXEDIR%%/firefox %U&lt;br /&gt;
 Path=%%PBI_APPDIR%%&lt;br /&gt;
 Icon=%%PBI_APPDIR%%/share/pixmaps/FireFox-128.png&lt;br /&gt;
 StartupNotify=true &lt;br /&gt;
&lt;br /&gt;
%%PBI_EXEDIR%% should reference the PBI's executable and any required switches.&lt;br /&gt;
&lt;br /&gt;
For more details on the XDG menu specifications, please refer to the [http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html freedesktop specifications]. &lt;br /&gt;
&lt;br /&gt;
'''7. xdg-mime/'''&lt;br /&gt;
&lt;br /&gt;
The ''xdg-mime/'' directory is used to register file associations according to the [http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html freedesktop MIME specs]. This requires the creation of an XML file. The example shown in Figure 10.7c adds the MIME information for gimp, so that it can be available as an application choice in a web browser:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7c: Gimp MIME Info'''&lt;br /&gt;
&lt;br /&gt;
 '''more xdg-mime/gimp-xdg.xml'''&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;mime-info xmlns='&amp;lt;nowiki&amp;gt;http://www.freedesktop.org/standards/shared-mime-info&amp;lt;/nowiki&amp;gt;'&amp;gt;&lt;br /&gt;
  &amp;lt;mime-type type=&amp;quot;application/x-gimp&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Gimp - XCF File&amp;lt;/comment&amp;gt;&lt;br /&gt;
   &amp;lt;glob weight=&amp;quot;100&amp;quot; pattern=&amp;quot;*.xcf&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;glob weight=&amp;quot;100&amp;quot; pattern=&amp;quot;*.XCF&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/mime-type&amp;gt;&lt;br /&gt;
 &amp;lt;/mime-info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Useful Tips====&lt;br /&gt;
&lt;br /&gt;
If your PBI's executable does not run, it may be because the program executable is actually a wrapper script rather than a binary file. If so, check the first line of the script to make sure it is using the right path for the scripting language. For example, ''#!/bin/python'' is an incorrect path which should be changed to ''#!/usr/pbi/(pbi-name)/bin/python''.&lt;br /&gt;
&lt;br /&gt;
The suggested path works because each program is packaged with the proper version of the language it uses and you want to make sure it uses that one. This is usually accomplished by putting a quick '''sed''' line in the ''post-install.sh'' script to fix the first line as seen in [http://trac.pcbsd.org/browser/pbi/modules/games/fretsonfire/scripts/post-install.sh?rev=13019 this example].&lt;br /&gt;
&lt;br /&gt;
When testing the executable, use the one located in ''/usr/pbi/(pbi-name)/bin/'' so all the linking will be properly set up. Otherwise you&lt;br /&gt;
can get some interesting errors about missing files.&lt;br /&gt;
&lt;br /&gt;
=== Building PBIs for PC-BSD 8.x and Earlier ===&lt;br /&gt;
&lt;br /&gt;
Earlier PBI versions were created using the PBI Builder Software. The PBI Builder Software automates the process of converting an existing FreeBSD package into a PBI. Anyone with a bit of time, the willingness to learn new things, and the desire to increase the number of PBIs available to PC-BSD users is welcome to create and submit new PBIs.&lt;br /&gt;
&lt;br /&gt;
Installing the PBI Builder software relatively easy, simply download the tbz package for you architecture and version of PC-BSD from the [http://www.pcbsd.org/development/get-involved/pbi-porting PBI Builder Homepage], and place it somewhere on your system with several GB of free space. Next run these commands (as root):&lt;br /&gt;
&lt;br /&gt;
 # '''tar xvjpf pbibuild*.tbz'''&lt;br /&gt;
 # '''ln -s `pwd`/pbi-build /pbi-build'''&lt;br /&gt;
&lt;br /&gt;
==== PBI Building Concepts ====&lt;br /&gt;
&lt;br /&gt;
The PBI Builder software relies on the following concepts:&lt;br /&gt;
&lt;br /&gt;
'''1. Modules:'''a directory containing the files needed by the PBI. The next section will explain how to configure a module for a new PBI.&lt;br /&gt;
&lt;br /&gt;
'''2. PBI Sandbox:''' in order to create a clean build environment that does not affect the software running on the host system, all PBI creation is done in the /pbi-build/pbisandbox directory. This is a complete buildworld environment, and you may chroot into it in order to tweak a port build, or inspect the built contents of a port by using this command as the superuser:&lt;br /&gt;
&lt;br /&gt;
 # '''chroot /pbi-build/pbisandbox'''&lt;br /&gt;
&lt;br /&gt;
'''3. Build command:''' once you have a module, simply cd into the pbi-build directory and specify which module to build. Depending upon the size of the application, the build may take some time to finish. The following example will build the firefox PBI:&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build'''&lt;br /&gt;
 # '''./buildpbi.sh webbrowsers/firefox '''&lt;br /&gt;
&lt;br /&gt;
'''4. Recreate command:''' during the creation of a new module, it may become necessary to recreate the PBI file to test new configurations. If the PBI has already been compiled once, a change often does not require the complete rebuilding of the port from source. By skipping the source build, a new PBI may be generated within moments. To skip the building simply run the 3.makepbi.sh script in /pbi-build/scripts/3.makepbi.sh as shown:&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build/scripts'''&lt;br /&gt;
 # '''./3.makepbi.sh webbrowsers/firefox'''&lt;br /&gt;
&lt;br /&gt;
'''5. Distfiles:''' when running a port build, many files will be downloaded and stored in /usr/ports/distfiles within the /pbi-build/pbisandbox directory. The pbisandbox is removed between builds of modules, but starting in PBI Builder 2.0, the distfiles contents are preserved in the /pbi-build/distfiles directory.&lt;br /&gt;
&lt;br /&gt;
==== Working with Modules ====&lt;br /&gt;
&lt;br /&gt;
When starting the process of creating a new module for the PBI Builder, you should start with an existing module and modify it to suit your program's needs. You can either copy a module from /pbi-build/docs/module-examples, download a module from SVN, or download a template from SVN.&lt;br /&gt;
&lt;br /&gt;
Modules currently in the PC-BSD Subversion repo can be browsed via the [http://trac.pcbsd.org/browser/pbibuild/modules web].&lt;br /&gt;
&lt;br /&gt;
To download a specific module, use the following commands, replacing &amp;quot;firefox&amp;quot; with the specific module you intend to checkout.&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build/modules'''&lt;br /&gt;
 # '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pbibuild/modules/webbrowsers/firefox&amp;lt;/nowiki&amp;gt; webbrowsers/firefox'''&lt;br /&gt;
&lt;br /&gt;
If you wish to start with a blank module template, you may download by using these commands:&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build/modules'''&lt;br /&gt;
 # '''fetch &amp;lt;nowiki&amp;gt;http://www.pcbsd.org/files/templates/module-template.tgz&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 # '''tar xvzf module-template.tgz'''&lt;br /&gt;
&lt;br /&gt;
A proper module will contain several files and directories:&lt;br /&gt;
&lt;br /&gt;
'''Required files / directories'''&lt;br /&gt;
&lt;br /&gt;
* '''pbi.conf:''' the main configuration file for the module.&lt;br /&gt;
&lt;br /&gt;
* '''copy-files:''' listing of the files and directories you wish to copy from the pbisandbox environment to your finished PBI file.&lt;br /&gt;
 &lt;br /&gt;
* '''kmenu-dir:''' directory of configuration entries for the K menu.&lt;br /&gt;
&lt;br /&gt;
* '''overlay-dir:''' directory of contents to be applied to base PBI directory. Icons, PBI setup scripts, and most other files not added via copy-files are placed here.&lt;br /&gt;
&lt;br /&gt;
'''Optional Files used on a per-need basis'''&lt;br /&gt;
&lt;br /&gt;
* '''build.sh:''' script to run after the port make and copy-files are processed. &lt;br /&gt;
&lt;br /&gt;
* '''preportmake.sh:''' script to run in pbisandbox prior to the port make being executed. &lt;br /&gt;
&lt;br /&gt;
* '''mime-dir:''' directory of mime entries for your PBI.&lt;br /&gt;
&lt;br /&gt;
==== The pbi.conf file ====&lt;br /&gt;
&lt;br /&gt;
This file is the first thing you read for each module.&lt;br /&gt;
The available variables are explained with the example of &amp;quot;FireFox&amp;quot; below:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Program Name&lt;br /&gt;
# The name of the PBI file being built&lt;br /&gt;
PROGNAME=&amp;quot;Firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Website&lt;br /&gt;
# Website of the program the module is building&lt;br /&gt;
PROGWEB=&amp;quot;http://www.mozilla.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Author&lt;br /&gt;
# Who created / maintains the program being built&lt;br /&gt;
PROGAUTHOR=&amp;quot;The Mozilla Foundation&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Default Icon&lt;br /&gt;
# Relative to overlay-dir, the main icon you want to show up for this PBI&lt;br /&gt;
PROGICON=&amp;quot;share/pixmaps/FireFox-128.png&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Port we want to build&lt;br /&gt;
# The port the server will track to determine when it's time for a rebuild&lt;br /&gt;
PBIPORT=&amp;quot;/usr/ports/www/firefox/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set to &amp;quot;Auto or NONE&amp;quot; to have the PBI creator auto-populate libs or not&lt;br /&gt;
# This allows you to also use the autolibs/ directory in your overlay-dir as a location for extra&lt;br /&gt;
# library files&lt;br /&gt;
PROGLIBS=&amp;quot;Auto&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# PBI Update URL set to &amp;quot;&amp;quot; or the http:// URL of update checker&lt;br /&gt;
# Leave this as update.pbidir.com normally&lt;br /&gt;
PBIUPDATE=&amp;quot;http://update.pbidir.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Other Ports we need built&lt;br /&gt;
# One per line, any additional ports that need to be built for this PBI&lt;br /&gt;
OTHERPORT=&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Enter your custom make options here&lt;br /&gt;
# Options that will be put into the make.conf for the build of this port&lt;br /&gt;
# Options get inserted into the build's /etc/make.conf file and effect all the ports built for that PBI&lt;br /&gt;
MAKEOPTS=&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# FBSD7BASE - (7.1 or 7.2)&lt;br /&gt;
# This variable can be used to set the specific version of FreeBSD this port needs to be compiled&lt;br /&gt;
# under. Use this is a port is known to not build / work when compiled on FreeBSD 7.0 (the default)&lt;br /&gt;
FBSD7BASE=&amp;quot;7.2&amp;quot;; export FBSD7BASE&lt;br /&gt;
 &lt;br /&gt;
# This option determines if the pbi-builder will auto-copy files from the target port&lt;br /&gt;
# Can be set to YES/NO/FULL&lt;br /&gt;
# YES - Copy only target port files automatically&lt;br /&gt;
# No - Don't copy any target port files (will need to use copy-files config instead)&lt;br /&gt;
# FULL - Copy target port files, and recursive dependency files as well (Makes very large PBI)&lt;br /&gt;
PBIAUTOPOPULATE=&amp;quot;YES&amp;quot; ; export PBIAUTOPOPULATE&lt;br /&gt;
 &lt;br /&gt;
# Can be set to OFF/NO to disable copying all files from ports made with the OTHERPORT variable&lt;br /&gt;
# Leaving this unset will have the builder auto-copy all files from OTHERPORT targets&lt;br /&gt;
PBIAUTOPOPULATE_OTHERPORT=&amp;quot;&amp;quot; ; export PBIAUTOPOPULATE_OTHERPORT&lt;br /&gt;
 &lt;br /&gt;
# Set this variable to any target ports you want to autopopulate files from, in addition to&lt;br /&gt;
# the main target port&lt;br /&gt;
# List additional ports one-per-line&lt;br /&gt;
PBIAUTOPOPULATE_PORTS=&amp;quot;/usr/ports/www/mplayer-plugin/&amp;quot; ; export PBIAUTOPOPULATE_PORTS&lt;br /&gt;
 &lt;br /&gt;
# By default the PBI will remove any xorg-fonts, and create a symlink to the the users system fonts&lt;br /&gt;
# Setting this to YES keeps the PBIs internal fonts and doesn't create a link&lt;br /&gt;
# PBIDISABLEFONTLINK=&amp;quot;&amp;quot; ; export PBIDISABLEFONTLINK&lt;br /&gt;
 &lt;br /&gt;
# By default the libGL* libraries will be removed from a PBI in order to use the systems libGL&lt;br /&gt;
# Set this to YES to keep the PBIs libGL* libraries, and not use the system's&lt;br /&gt;
# PBIKEEPGL=&amp;quot;&amp;quot; ; export PBIKEEPGL&lt;br /&gt;
 &lt;br /&gt;
# By default we prune any include/ files used for building,&lt;br /&gt;
# Set this to NO to keep any include/ directories in the resulting PBI&lt;br /&gt;
# PBIPRUNEINCLUDE=&amp;quot;&amp;quot; ; export PBIPRUNEINCLUDE&lt;br /&gt;
 &lt;br /&gt;
# By default we prune the python files used for building,&lt;br /&gt;
# Set this to NO to keep any python files in the resulting PBI&lt;br /&gt;
# PBIPRUNEPYTHON=&amp;quot;&amp;quot; ; export PBIPRUNEPYTHON&lt;br /&gt;
 &lt;br /&gt;
# By default we prune any perl files used for building,&lt;br /&gt;
# Set this to NO to keep any perl files in the resulting PBI&lt;br /&gt;
# PBIPRUNEPERL=&amp;quot;&amp;quot; ; export PBIPRUNEPERL&lt;br /&gt;
 &lt;br /&gt;
# By default we prune any doc files (such as man, info, share/doc)&lt;br /&gt;
# Set this to NO to keep any doc files in the resulting PBI&lt;br /&gt;
# PBIPRUNEDOC=&amp;quot;&amp;quot; ; export PBIPRUNEDOC&lt;br /&gt;
 &lt;br /&gt;
# Build Key - Change this to anything else to trigger a rebuild&lt;br /&gt;
#           - The rebuild will take place even if port is still the same ver&lt;br /&gt;
BUILDKEY=&amp;quot;01&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
===== The copy-files configuration =====&lt;br /&gt;
&lt;br /&gt;
This file is very straight forward, simply list the files you want to copy from the installed port, and where they should go in your PBI directory structure. The first argument should be the file/directory you wish to copy, and the 2nd argument will be the directory within the PBI it needs to be copied to. &lt;br /&gt;
&lt;br /&gt;
Example copy-files from FileZilla:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/filezilla bin/&lt;br /&gt;
 /usr/local/bin/fzsftp bin/&lt;br /&gt;
 /usr/local/bin/gst-* bin/&lt;br /&gt;
 /usr/local/bin/wxrc* bin/&lt;br /&gt;
 /usr/local/bin/wxgtk2* bin/&lt;br /&gt;
 /usr/local/share/filezilla share/filezilla&lt;br /&gt;
&lt;br /&gt;
==== The preportmake.sh script ====&lt;br /&gt;
&lt;br /&gt;
This script, if it present is run right before starting the &amp;quot;make install&amp;quot; of your port. This allows you to make modifications to the pbisandbox environment or to the port building source itself. Normally this won't be&lt;br /&gt;
necessary, unless working with a very tricky program to get compiled.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# Script to grab the java files and place them in the right directory&lt;br /&gt;
# before starting the build&lt;br /&gt;
 &lt;br /&gt;
cd /usr/ports/distfiles&lt;br /&gt;
 &lt;br /&gt;
fetch ftp://ftp.pcbsd.org/pub/autobuildpkgs/javapack.tbz&lt;br /&gt;
tar xvjf javapack.tbz&lt;br /&gt;
 &lt;br /&gt;
cd /usr/ports/java/jdk16/&lt;br /&gt;
echo &amp;quot;#!/bin/sh&lt;br /&gt;
exit 0&amp;quot; &amp;gt; /usr/ports/java/jdk16/files/license.sh&lt;br /&gt;
 &lt;br /&gt;
cd /usr/ports/devel/automake15&lt;br /&gt;
make install clean&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== The build.sh script ====&lt;br /&gt;
&lt;br /&gt;
Below is the example of the build.sh script, which runs after all the files have been copied to your PBI directory. This allows you to make mods to specific things for your PBI to work properly. In this example we modify the uninstall script to use the right version.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # PBI building script&lt;br /&gt;
 # This will run after your port build is complete&lt;br /&gt;
 # Build your PBI here, and exit 0 on success, or exit 1 on failure.&lt;br /&gt;
 ##############################################################################&lt;br /&gt;
 # Available Variables&lt;br /&gt;
 #    PBIDIR = The location of where you can populate your PBI directory&lt;br /&gt;
 # MODULEDIR = The location of the module directory for this PBI&lt;br /&gt;
 #   PORTVER = Version number of the port we used to build&lt;br /&gt;
 ##############################################################################&lt;br /&gt;
 &lt;br /&gt;
 # Save the right version number in the removepbi.sh script&lt;br /&gt;
 sed -e &amp;quot;s,CHANGEME,Firefox${PORTVER},g&amp;quot; ${PBIDIR}/scripts/removepbi.sh &amp;gt; /tmp/removepbi.sh&lt;br /&gt;
 mv /tmp/removepbi.sh ${PBIDIR}/scripts/removepbi.sh&lt;br /&gt;
 chmod 755 ${PBIDIR}/scripts/removepbi.sh&lt;br /&gt;
&lt;br /&gt;
==== The kmenu-dir directory ====&lt;br /&gt;
&lt;br /&gt;
In this directory you may make any number of files, which contain the .pbc configuration for your kmenu icons. This defines where you would like icons created for your users desktop&lt;br /&gt;
&lt;br /&gt;
Example of kmenu-dir/firefox file:&lt;br /&gt;
&lt;br /&gt;
 ExePath: bin/firefox&lt;br /&gt;
 ExeIcon: share/pixmaps/FireFox-128.png&lt;br /&gt;
 ExeDescr: FireFox&lt;br /&gt;
 ExeNoDesktop: 0&lt;br /&gt;
 ExeNoMenu: 0&lt;br /&gt;
 ExeNoCrashHandler: 0&lt;br /&gt;
 ExeRunRoot: 0&lt;br /&gt;
 ExeRunShell: 0&lt;br /&gt;
 ExeNotify: 1&lt;br /&gt;
 ExeLink: 0&lt;br /&gt;
 ExeWebLink: 0&lt;br /&gt;
 ExeTaskbar: 0&lt;br /&gt;
 ExeOwndir: 1&lt;br /&gt;
 ExeKdeCat: Internet&lt;br /&gt;
&lt;br /&gt;
Line-By-Line description of each entry:&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''ExePath''': bin/firefox&lt;br /&gt;
&lt;br /&gt;
This line indicates the binary / script we want this icon to run when the user clicks it. This is relative to the PBI directory, so we use bin/firefox&lt;br /&gt;
&lt;br /&gt;
'''ExeIcon''': share/pixmaps/FireFox-128.png&lt;br /&gt;
&lt;br /&gt;
This is the icon you want to show up for this program, again it is relative to the PBI directory&lt;br /&gt;
&lt;br /&gt;
'''ExeDescr''': FireFox&lt;br /&gt;
&lt;br /&gt;
This would be the name of the icon in the kmenu or on the users desktop.&lt;br /&gt;
&lt;br /&gt;
'''ExeNoDesktop''': 0&lt;br /&gt;
&lt;br /&gt;
This allows you to disable creating a desktop icon for this entry. Set it to '0' if you want a desktop icon, or '1' if you don't wish an icon.&lt;br /&gt;
&lt;br /&gt;
'''ExeNoMenu''': 0&lt;br /&gt;
&lt;br /&gt;
This allows you to disable creating a kmenu icon for this entry. Set it to '0' if you want a kmenu icon, or '1' if you don't wish an icon.&lt;br /&gt;
&lt;br /&gt;
'''ExeNoCrashHandler''': 0&lt;br /&gt;
&lt;br /&gt;
This option enables / disables the usage of the PC-BSD CrashHandler program. This dialog warns the user that the application has crashed if it returns status non-zero (0), and provides the option to save the output of stdout and stderr from the application. Setting this to &amp;quot;1&amp;quot; disables the CrashHandler helper, which is useful for programs which normally return non-0, such as Window Managers and various apps.  &lt;br /&gt;
&lt;br /&gt;
'''ExeRunRoot''': 0&lt;br /&gt;
&lt;br /&gt;
This indicates if you want your program to be run as &amp;quot;root&amp;quot; when the user clicks it. Set it to '0' to run as a regular user, or '1' to run kdesu and switch to &amp;quot;root&amp;quot; Set this to '0'&lt;br /&gt;
&lt;br /&gt;
'''ExeRunShell''': 0&lt;br /&gt;
&lt;br /&gt;
This indicates if you want your program to be executed in a console session, which may be useful for command-line applications. Set it to '0' if you dont want it to run in console, or set it to '1' if you do.&lt;br /&gt;
&lt;br /&gt;
'''ExeNotify''': 1&lt;br /&gt;
&lt;br /&gt;
This indicates if you want to enable launch feedback in KDE, which is the bouncing icon, showing that the program is loading. Set it to '0' to disable launch feedback, or set it to '1' if you want this enabled. Normally it is&lt;br /&gt;
best to leave this enabled.&lt;br /&gt;
&lt;br /&gt;
'''ExeLink''': 0&lt;br /&gt;
&lt;br /&gt;
This is used to indicate if the ExePath variable was set to a local file / document you want opened with konqueror insetead of just being &amp;quot;run&amp;quot;. This is useful for README type documents. Set this to '1' if you want your document opened with konq, or '0' to just run it as normal.&lt;br /&gt;
&lt;br /&gt;
'''ExeWebLink''': 0&lt;br /&gt;
&lt;br /&gt;
This is similar to above, and instead indicates that the ExePath being opened is actual a web URL. Set this to '1' to open it the ExePath with Konq, or '0' to just run it as normal.&lt;br /&gt;
&lt;br /&gt;
'''ExeTaskbar''': 0&lt;br /&gt;
&lt;br /&gt;
This indicates if you want this application icon added to the taskbar. Set it to '1' to add it, or '0' to leave it disabled. (THIS FEATURE IS CURRENTLY UNAVAILABLE, BUT WILL BE ADDED DOWN THE ROAD)&lt;br /&gt;
&lt;br /&gt;
'''ExeOwndir''': 1&lt;br /&gt;
&lt;br /&gt;
This option is used to specify where you want your Kmenu icon to be placed, and may be set to 0, 1, 2&lt;br /&gt;
 0 = Place kmenu icon directory in top level. &lt;br /&gt;
     I.E.  Kmenu -&amp;gt; Firefox -&amp;gt; Firefox&lt;br /&gt;
 1 = Place kmenu icon in its own directory in the sub category indicated by ExeKdeCat:&lt;br /&gt;
     I.E.  Kmenu -&amp;gt; Internet -&amp;gt; Firefox -&amp;gt; Firefox&lt;br /&gt;
 2 = Place kmenu icon directly in the sub category indicated by ExeKdeCat:  &lt;br /&gt;
     I.E.  Kmenu -&amp;gt; Internet -&amp;gt; Firefox&lt;br /&gt;
&lt;br /&gt;
'''ExeKdeCat''': Internet&lt;br /&gt;
&lt;br /&gt;
This allows you to choose a kmenu sub-directory to place your icons / directory into, when ExeOwnDir is set to 1 or 2. &lt;br /&gt;
Available options are:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ExeKdeCat: Development&lt;br /&gt;
ExeKdeCat: Editors&lt;br /&gt;
ExeKdeCat: Edutainment/Languages&lt;br /&gt;
ExeKdeCat: Edutainment/Math&lt;br /&gt;
ExeKdeCat: Edutainment/Misc&lt;br /&gt;
ExeKdeCat: Edutainment/Science&lt;br /&gt;
ExeKdeCat: Edutainment/Teaching&lt;br /&gt;
ExeKdeCat: Games/Arcade&lt;br /&gt;
ExeKdeCat: Games/Board&lt;br /&gt;
ExeKdeCat: Games/Card&lt;br /&gt;
ExeKdeCat: Games/Kidsgames&lt;br /&gt;
ExeKdeCat: Games/TacticStrategy&lt;br /&gt;
ExeKdeCat: Games&lt;br /&gt;
ExeKdeCat: Graphics&lt;br /&gt;
ExeKdeCat: Internet&lt;br /&gt;
ExeKdeCat: Multimedia&lt;br /&gt;
ExeKdeCat: Office&lt;br /&gt;
ExeKdeCat: System&lt;br /&gt;
ExeKdeCat: Toys&lt;br /&gt;
ExeKdeCat: Utilities&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== The mime-dir directory ====&lt;br /&gt;
&lt;br /&gt;
This directory allows to you specify mime types for your applications defined in the kmenu-dir entries.&lt;br /&gt;
&lt;br /&gt;
Example of mime-dir/exe file:&lt;br /&gt;
&lt;br /&gt;
 MimeExt: *.exe; *.EXE&lt;br /&gt;
 MimeIcon: win_apps.png&lt;br /&gt;
 MimeProg: 0&lt;br /&gt;
&lt;br /&gt;
The only catch to this is to note that the &amp;quot;MimeProg: 0&amp;quot; is a pointer to a file in the kmenu-dir structure. In this case you would have to ensure that the application you want to open .exe files gets added first to the template&lt;br /&gt;
the server creates. Files in the kmenu-dir are added in the order of a &amp;quot;ls&amp;quot; listing, so if you have a wine-exe entry, you may wish to rename it to 00wine-exe to ensure it is added first, which would make this MimeProg: 0&lt;br /&gt;
entry work with it.&lt;br /&gt;
&lt;br /&gt;
If you have more than 1 mime-type, you would then increment the MimeProg: 0 number to MimeProg: 1, MimeProg: 2, and so forth. Then you would do the same with your kmenu-dir entries, such as 00wine-exe, 01wine-bat, 02wine-msi&lt;br /&gt;
&lt;br /&gt;
==== The overlay-dir directory ====&lt;br /&gt;
&lt;br /&gt;
This folder contains any of the files you wish placed into your PBI program directory. Here is an example from firefox:&lt;br /&gt;
&lt;br /&gt;
 leftside.png&lt;br /&gt;
 PBI.FirstRun.sh         autolibs                lib&lt;br /&gt;
 PBI.RemoveScript.sh     bin                     scripts&lt;br /&gt;
 PBI.SetupScript.sh      header.png              share&lt;br /&gt;
&lt;br /&gt;
In this example you see we have added our PBI.* setup scripts, and the custom graphics we want for the PBI installer. You may also create directories that will be populated with the copy-files configuration, such as share/ or others you may need.&lt;br /&gt;
&lt;br /&gt;
==== Useful Tips ====&lt;br /&gt;
&lt;br /&gt;
'''If the program uses the python programming language:''' use [PBIPRUNEPYTHON=&amp;quot;NO&amp;quot; ; export PBIPRUNEPYTHON]  (usually the file is called py-(something) if that file is written in python)&lt;br /&gt;
 &lt;br /&gt;
'''If the program uses the perl programming language:''' use [PBIPRUNEPERL=&amp;quot;NO&amp;quot; ; export PBIPRUNEPERL]  (harder to spot, usually the filename has &amp;quot;perl&amp;quot; in it somewhere)&lt;br /&gt;
 &lt;br /&gt;
'''The installed program does not work:''' this is usually because the python or perl option was not set appropriately. This is only noticed at runtime because after building, python and perl files are removed unless instructed otherwise.&lt;br /&gt;
&lt;br /&gt;
'''If your program path needs to be /usr/local/sbin:''' first, make a kmenu-dir entry similar to the one used by [http://trac.pcbsd.org/browser/pbibuild/modules/archivers/cabextract/kmenu-dir/cabextract cabextract]. Next, make sure that the &amp;quot;ExeNoDesktop&amp;quot; and &amp;quot;ExeNoMenu&amp;quot; options are both set to &amp;quot;1&amp;quot;. Then, in your PBI.SetupScript.sh, you can symlink the wrapper script into /Programs/bin as in [http://trac.pcbsd.org/browser/pbibuild/modules/archivers/cabextract/overlay-dir/PBI.SetupScript.sh this example].&lt;br /&gt;
&lt;br /&gt;
'''If the underlying port pauses to wait for user acceptance of license agreement:''' put this setting into the MAKEOPTS variable:&lt;br /&gt;
 &lt;br /&gt;
MAKEOPTS=&amp;quot;DISABLE_LICENSES=yes&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Don't forget to include the license text in the file overlay-dir/LICENSE so the user can read and accept the license during the PBI installation.&lt;br /&gt;
&lt;br /&gt;
'''If you don't have reliable Internet access and want to avoid running portsnap and build a PBI with pre-fetched distfiles:''' use this variable in /pbi-build/conf/pbibuild.conf:&lt;br /&gt;
&lt;br /&gt;
PORTSNAP=NO&lt;br /&gt;
&lt;br /&gt;
Place all of your distfiles into /pbi-build/distfiles; with this variable set, that directory will be nullfs mounted into the PBI sandbox when doing builds.&lt;br /&gt;
&lt;br /&gt;
'''How does the builder know which port the module is associated with?'''&lt;br /&gt;
&lt;br /&gt;
The PBI build system will look at the module path first, so if in SVN we are using the module www/firefox, it'll look for a port at www/firefox. However, in some cases a module doesn't use the same port or directory name. In that case, set this variable:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &lt;br /&gt;
# The target port we are building&lt;br /&gt;
PBI_MAKEPORT=&amp;quot;www/firefox&amp;quot;&lt;br /&gt;
export PBI_MAKEPORT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
That'll let the build server know which specific port this is building.&lt;br /&gt;
&lt;br /&gt;
= Getting Help =&lt;br /&gt;
&lt;br /&gt;
The [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers mailing list] can help if you:&lt;br /&gt;
&lt;br /&gt;
* get stuck building a PBI&lt;br /&gt;
* need to ask a question about your PBI &lt;br /&gt;
* are ready to submit a new module&lt;br /&gt;
* find a bug in an existing PBI&lt;br /&gt;
* have a bugfix for an existing PBI&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide</id>
		<title>PBI Module Builder Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide"/>
				<updated>2011-12-19T15:49:19Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Module Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Test PBIs|forward=Purchase PC-BSD Swag}}&lt;br /&gt;
PC-BSD provides a unique file format known as a PBI (push button installer). PBI files end with the .pbi extension and are self-contained installation programs. This means that even novice users can safely install and uninstall PBIs without inadvertently overwriting or deleting files needed by the operating system or other applications.&lt;br /&gt;
&lt;br /&gt;
A PBI file includes all the runtime and library dependencies required by the application. This means that a PBI is a large file, but this does not necessarily mean that the installed PBI will be that large. During installation, the PBI system compares the currently installed libraries and files with the ones contained within the PBI file and only installs the ones that are not already installed on the system. A hash database is used to eliminate dependency problems while allowing the computer to share libraries between different programs. &lt;br /&gt;
&lt;br /&gt;
On PC-BSD, PBIs can be installed using the graphical [[Using AppCafe™ | AppCafe™]] utility or from the command line using [[PBI Manager]].&lt;br /&gt;
&lt;br /&gt;
The PBI format changed between PC-BSD 8.x and 9.x. This means that you should follow the instructions for the PBI format that you wish to create.&lt;br /&gt;
&lt;br /&gt;
=== Building PBIs for PC-BSD 9.x and higher ===&lt;br /&gt;
&lt;br /&gt;
Creating a PBI from an existing FreeBSD port is a surprisingly easy and automated process that does not require development skills. Some ports are effortless to convert while more complex ports may require some thought and simple scripting.&lt;br /&gt;
&lt;br /&gt;
Two utilities are available for converting FreeBSD ports into PBIs. EasyPBI provides a graphical interface and '''pbi_makeport''' provides a command line utility. This section demonstrates how to use both of these tools, explains the components of a PBI module, and provides some troubleshooting tips.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' before creating a PBI, check to see if one exists using the instructions in [[Submit PBI Requests]]. If you decide that you prefer to request a PBI that you need rather than to create one, that page also contains instructions for submitting a PBI request.&lt;br /&gt;
&lt;br /&gt;
====Using EasyPBI====&lt;br /&gt;
&lt;br /&gt;
EasyPBI is a new GUI application created by Jesse Smith and Ken Moore. It streamlines the process of building a PBI from a FreeBSD port. Once this application is available in the FreeBSD ports tree, a PBI will be created. Until then, you can install this application as follows:&lt;br /&gt;
&lt;br /&gt;
1. Use Control Panel -&amp;gt; System Manager -&amp;gt; System Packages to install the Development -&amp;gt; Development-Qt package.&lt;br /&gt;
&lt;br /&gt;
2. Use AppCafe™ to install the subversion PBI.&lt;br /&gt;
&lt;br /&gt;
3. Become the superuser and download the EasyPBI source after '''cd'''ing into your regular user's home directory. These commands are used to download and compile the EasyPBI program:&lt;br /&gt;
&lt;br /&gt;
 '''su'''&lt;br /&gt;
 Password:&lt;br /&gt;
 '''cd ~dru'''&lt;br /&gt;
 '''svn co &amp;lt;nowiki&amp;gt;http://makeapbi.svn.sourceforge.net/svnroot/makeapbi&amp;lt;/nowiki&amp;gt; EasyPBI'''&lt;br /&gt;
 A    EasyPBI/defaulticon.png&lt;br /&gt;
 A    EasyPBI/pbi.h&lt;br /&gt;
 A    EasyPBI/LICENSE&lt;br /&gt;
 A    EasyPBI/mainwindow.h&lt;br /&gt;
 A    EasyPBI/main.cpp&lt;br /&gt;
 A    EasyPBI/EasyPBI.pro.user&lt;br /&gt;
 A    EasyPBI/mainwindow.ui&lt;br /&gt;
 A    EasyPBI/EasyPBI.pro&lt;br /&gt;
 A    EasyPBI/pbi.cpp&lt;br /&gt;
 A    EasyPBI/Makefile&lt;br /&gt;
 A    EasyPBI/mainwindow.cpp&lt;br /&gt;
 Checked out revision 10.&lt;br /&gt;
 '''cd EasyPBI/'''&lt;br /&gt;
 '''qmake-qt4 *.pro'''&lt;br /&gt;
 '''make'''&lt;br /&gt;
&lt;br /&gt;
4. If you wish to update EasyPBI to the latest version at a later date, run this command from your regular user's home directory:&lt;br /&gt;
&lt;br /&gt;
 '''svn update EasyPBI/'''&lt;br /&gt;
&lt;br /&gt;
To run the program, give your user account permission to the EasyPBI contents, leave the superuser account, then run the EasyPBI executable as your regular user from the EasyPBI directory:&lt;br /&gt;
&lt;br /&gt;
 '''chown -R dru ~dru/EasyPBI'''&lt;br /&gt;
 '''exit'''&lt;br /&gt;
 '''EasyPBI/EasyPBI'''&lt;br /&gt;
&lt;br /&gt;
This will open the screen shown in Figure 10.7a. Depending upon whether or not ports is installed, you may first receive a pop-up message.&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7a: EasyPBI Graphical Interface'''&lt;br /&gt;
&lt;br /&gt;
[[File:Easypbi.jpeg]]&lt;br /&gt;
&lt;br /&gt;
The two main components to building a PBI are reflected in EasyPBI:&lt;br /&gt;
&lt;br /&gt;
'''1. Create a module for the desired FreeBSD port:''' when you first start EasyPBI, it will check to see if the FreeBSD ports tree is installed into ''/usr/ports''. If it is not, a pop-up message will indicate that you have a choice on how to install the ports tree. If you want the system ports tree to be available for any user, go to Control Panel -&amp;gt; System Manager -&amp;gt; Tasks -&amp;gt; Fetch System Ports Tree. Use this method if multiple users will be using the EasyPBI utility. Alternatively, if you only want the ports tree to be available to the current user, click File -&amp;gt; Get Ports from within EasyPBI; this will fetch the ports tree and place it in the user's home directory. &lt;br /&gt;
&lt;br /&gt;
To create a new module, click the &amp;quot;New Module&amp;quot; button and use the browser to select the desired port from the FreeBSD ports tree. Once a port is selected, EasyPBI will attempt to automatically supply the port information for the PBI and display the results on the GUI. In the example shown in Figure 10.7b, the ''multimedia/handbrake'' port has been selected and the fields other than &amp;quot;Port's website&amp;quot; have been auto-filled in. &lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7b: Reviewing the Port's Information'''&lt;br /&gt;
&lt;br /&gt;
[[File:EasyPBI1.jpeg]]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' when determining which PBIs need to be built, refer to the [http://forums.pcbsd.org/forumdisplay.php?f=61 PBI Requests forum] to determine which PBI's have been requested by users. You should also check that a module does not already exist on the [http://trac.pcbsd.org/browser#pbi/modules PBI Modules] section of trac.&lt;br /&gt;
&lt;br /&gt;
If you click &amp;quot;Get Port Info&amp;quot; [http://freshports.org FreshPorts.org] will open in the default web browser so that you can view additional information about the port. In this example, FreshPorts does not indicate the port's website, but the [http://forums.pcbsd.org/showthread.php?t=15357 PBI request] does.&lt;br /&gt;
&lt;br /&gt;
A generic icon will be supplied for the module; you can change the default icon by clicking the &amp;quot;Choose Icon&amp;quot; button. When using a custom icon, use 64x64 .png files with transparent backgrounds. &lt;br /&gt;
&lt;br /&gt;
If the program provides a GUI, check the box &amp;quot;GUI App&amp;quot;. Since handbrake is a command line program, this box is left unchecked in this example.&lt;br /&gt;
&lt;br /&gt;
Once the port information is complete, click the &amp;quot;Create Module&amp;quot; button and EasyPBI will produce a generic PBI module. A message will indicate the location of the module, as seen in the example in Figure 10.7c:&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7c: PBI Module Created'''&lt;br /&gt;
&lt;br /&gt;
[[File:Easypbi2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
'''2. Build a PBI from the module:''' once your module is created, click on the &amp;quot;Build PBI&amp;quot; tab in EasyPBI and review the default settings. Figure 10.7d shows the default settings for our example PBI.&lt;br /&gt;
&lt;br /&gt;
'''Figure 10.7d: The Build PBI Tab'''&lt;br /&gt;
&lt;br /&gt;
[[File:Easypbi3.jpeg]]&lt;br /&gt;
&lt;br /&gt;
The options in this tab allow you to do the following:&lt;br /&gt;
&lt;br /&gt;
'''Save Settings as Defaults:''' once you are satisfied with the settings, click this button to have EasyPBI remember your settings between uses.&lt;br /&gt;
&lt;br /&gt;
'''Change Directory:'''&lt;br /&gt;
&lt;br /&gt;
'''Change File:'''&lt;br /&gt;
&lt;br /&gt;
'''Use TMPFS:'''&lt;br /&gt;
&lt;br /&gt;
'''Select Module:''' select the previously created module which you would like to build.&lt;br /&gt;
&lt;br /&gt;
'''Build PBI:''' starts the build of the PBI using the settings contained within the PBI module. It will prompt you for the superuser password and requires a working Internet connection to build the PBI. This process may take quite a while, depending upon the port selected and the speed of your computer. The build messages will be displayed in the window at the bottom of the tab. EasyPBI will inform you when the PBI build is finished, and whether it was successful or not.&lt;br /&gt;
&lt;br /&gt;
'''Stop Build:''' stops the build process. Click the &amp;quot;Build PBI&amp;quot; button to resume the build.&lt;br /&gt;
&lt;br /&gt;
'''Save Build Log:''' useful if the build fails.&lt;br /&gt;
&lt;br /&gt;
You can produce additional modules from the &amp;quot;Create Module&amp;quot; tab while a PBI build is running. &lt;br /&gt;
&lt;br /&gt;
If the PBI build fails for some reason, you may need to modify the module. Use the build log to determine the error and modify the module as needed. If you are unsure how to fix the module, send the build log for the failure as well as the module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev pbi-dev mailing list].&lt;br /&gt;
&lt;br /&gt;
==== Creating a New PBI with '''pbi_makeport''' ====&lt;br /&gt;
&lt;br /&gt;
Starting in PC-BSD 9.x and higher, '''pbi_makeport''' is included with the operating system. This utility provides an easy way for a user to convert an existing FreeBSD port into a PBI module. The PBI build server builds modules into PBIs which are then made available to users through AppCafe™. '''man pbi_makeport''' provides details on this application's various usage options. &lt;br /&gt;
&lt;br /&gt;
When running '''pbi_makeport''' it is possible to supply an optional meta-data configuration directory which contains additional data used to supplement the port building and the final PBI file. This conf directory may contain extra icon data for the desktop, install/uninstall scripts, custom make options and more. &lt;br /&gt;
&lt;br /&gt;
Examples of 9.x modules can be found at [http://trac.pcbsd.org/browser/pcbsd/current/src-sh/pbi-manager/module-examples Examples in Subversion].&lt;br /&gt;
&lt;br /&gt;
FreeBSD ports may contain build dependencies, runtime dependencies, and required libraries. When building a PBI, '''pbi_makeport''' automatically&lt;br /&gt;
compiles all of the required dependencies, and, when finished compiling, prunes the build dependencies before packaging the PBI file, leaving only the runtime packages and libraries that are required for the program to work. This means that any files which are included in the PBI are necessary for the program to run, and manually removing them will cause the program to fail.&lt;br /&gt;
&lt;br /&gt;
====Module Components====&lt;br /&gt;
&lt;br /&gt;
A PBI module contains the following components. When creating a PBI module, create a directory on your computer to hold the module's components. For example, if you are creating a PBI module for firefox, create a directory called firefox and place the following files within that directory. The directory that you create is referred to as %PBI_APPDIR%%. &lt;br /&gt;
&lt;br /&gt;
'''1. LICENSE File'''&lt;br /&gt;
&lt;br /&gt;
The text of a license agreement you want the user to click to accept before installation. This file is optional unless the underlying port is restricted and requires the user to accept a license in order to install and use the software.&lt;br /&gt;
&lt;br /&gt;
'''2. pbi.conf'''&lt;br /&gt;
&lt;br /&gt;
The pbi.conf file is mandatory. It is a simple shell script that contains the information needed to build the PBI. Typically this file requires you to modify a few simple variables, such as the name of the program, its location in the ports tree, and the name of its icon. Sometimes you will need to set a few additional variables in order to make sure that required dependencies are included in the PBI. If you get stuck when creating your own pbi.conf, you can view the pbi.conf file for every PBI module in [http://trac.pcbsd.org/browser#pbi/modules this section] of the PC-BSD trac repository. Here is an example of the pbi.conf file for firefox: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# PBI Build Configuration&lt;br /&gt;
# Place over-rides and settings here&lt;br /&gt;
#&lt;br /&gt;
# XDG Desktop Menu Spec:&lt;br /&gt;
# http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html&lt;br /&gt;
##############################################################################&lt;br /&gt;
&lt;br /&gt;
# Program Name&lt;br /&gt;
PBI_PROGNAME=&amp;quot;Firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Website&lt;br /&gt;
PBI_PROGWEB=&amp;quot;http://www.mozilla.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Author / Vendor&lt;br /&gt;
PBI_PROGAUTHOR=&amp;quot;The Mozilla Foundation&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Default Icon (Relative to %%PBI_APPDIR%% or resources/)&lt;br /&gt;
PBI_PROGICON=&amp;quot;share/pixmaps/FireFox-128.png&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# The target port we are building&lt;br /&gt;
PBI_MAKEPORT=&amp;quot;www/firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Additional options for make.conf&lt;br /&gt;
PBI_MAKEOPTS=&amp;quot;PACKAGE_BUILDING=Y&lt;br /&gt;
WITH_CUPS=yes&lt;br /&gt;
WITH_GECKO=libxul&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Ports to build before / after&lt;br /&gt;
PBI_MKPORTBEFORE=&amp;quot;&amp;quot;&lt;br /&gt;
PBI_MKPORTAFTER=&amp;quot;audio/esound x11-fonts/dejavu x11-themes/qtcurve-gtk2 devel/gconf2 www/firefox-i18n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Exclude List&lt;br /&gt;
PBI_EXCLUDELIST=&amp;quot;./include ./share/doc&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Increment to trigger rebuild of PBI on build servers&lt;br /&gt;
PBI_BUILDKEY=&amp;quot;04&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# This app needs to install as root&lt;br /&gt;
PBI_REQUIRESROOT=&amp;quot;YES&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set the priority of this build &lt;br /&gt;
PBI_AB_PRIORITY=&amp;quot;50&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set the files we want to exclude from the shared hashdir&lt;br /&gt;
PBI_HASH_EXCLUDES=&amp;quot;lib/firefox/firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
export PBI_PROGNAME PBI_PROGWEB PBI_PROGAUTHOR PBI_PROGICON PBI_MAKEPORT PBI_MAKEOPTS &lt;br /&gt;
PBI_MKPORTBEFORE PBI_MKPORTAFTER PBI_BUILDKEY PBI_REQUIRESROOT PBI_EXCLUDELIST&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Table 10.7a describes the most commonly used variables. When creating your pbi.conf file, you will want to refer to the port's FreeBSD Makefile and pkg-descr so that you will know which values to input.&lt;br /&gt;
&lt;br /&gt;
'''Table 10.7a: Commonly Used pbi.conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=100%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Variable'''}}  &lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Mandatory. Should be the same value as PORTNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's Makefile, but capitalized.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGWEB&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|Mandatory unless does not exist. Should be the same value as WWW&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's pkg-descr.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGAUTHOR&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Mandatory. Often found in the port's pkg-descr or at the website for the application.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGICON&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|Mandatory. Path, relative to %PBI_APPDIR%%, to application icon file in png format.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGREVISION&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Bump up a PBI's revision number. Useful when rebuilding a port with new PBI specific options.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_MAKEPORT&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|Mandatory. The path to the port within /usr/ports/.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_MAKEOPTS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Optional. Set this to the options that you want saved into make.conf for the port building process. For example: WITH_CUPS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;YES}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_MKPORTBEFORE&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|Optional. Port(s) to build before starting the target port PBI_MAKEPORT.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_MKPORTAFTER&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Optional. Port(s) to build after finishing the target port PBI_MAKEPORT.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_BUILDKEY&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|Should not be included. This variable is used on the PBI build server to force the rebuild of a PBI that has failed to build.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_REQUIRESROOT&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Set to to YES to require this app to be installed as root, default is NO which allows to be installed as user or root mode.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_EXCLUDELIST&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|List of files / directories to exclude from the final archive, such as ./include ./share}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_AB_PRIORITY&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Set this to a number, the higher indicates greater priority and will be built before lower priority PBIs.}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_AB_NOTMPFS&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Set to YES to disable using tmpfs when doing auto-builds on a server.}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_HASH_EXCLUDES&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|align=left|Set to a space delimited list of files to exclude from merging into the shared hash-dir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''export'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Mandatory. Followed by a list of all of the variables that you have set so that they will be included when the PBI is built.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''3. external-links'''&lt;br /&gt;
&lt;br /&gt;
The optional external-links file contains a list of targets to link into the system's LOCALBASE at PBI installation time. This is useful for placing binaries and files in the user's PATH. When building PBIs from a FreeBSD port, this file is usually not needed, as most binaries and files are auto-detected and placed in the LOCALBASE. Example 10.7.1.3 shows an example usage:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7.1.3: Example external-links File'''&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Files to be Sym-Linked into the default LOCALBASE&lt;br /&gt;
# One per-line, relative to %%PBI_APPDIR%% and LOCALBASE&lt;br /&gt;
# Defaults to keeping any existing files in LOCALBASE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# TARGET                LINK IN LOCALBASE       ACTION&lt;br /&gt;
#etc/rc.d/servfoo       etc/rc.d/servfoo        keep&lt;br /&gt;
#include/libfoo.h       include/libfoo.h        replace&lt;br /&gt;
#etc/rc.d/servfoo       etc/rc.d/servfoo        keep&lt;br /&gt;
bin/firefox3            bin/firefox3            binary,nocrash&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The flags in the ACTION column are as follows:&lt;br /&gt;
&lt;br /&gt;
* '''keep''': if this file already exists in LOCALBASE, don't overwrite it&lt;br /&gt;
&lt;br /&gt;
* '''replace''': replace this file in LOCALBASE if it exists&lt;br /&gt;
&lt;br /&gt;
* '''binary''': this file is an executable&lt;br /&gt;
&lt;br /&gt;
* '''nocrash''': used for binary files; don't display crash handler if program exits with non-0 status&lt;br /&gt;
&lt;br /&gt;
'''4. resources/'''&lt;br /&gt;
&lt;br /&gt;
The resources directory can contain extra files you wish copied into the PBI application directory. This is often the best place for icons and other files not included with a port. &lt;br /&gt;
&lt;br /&gt;
'''5. scripts/'''&lt;br /&gt;
&lt;br /&gt;
This directory can contain the following scripts:&lt;br /&gt;
&lt;br /&gt;
* '''post-install.sh''': script run immediately after the extraction of PBI contents to disk&lt;br /&gt;
&lt;br /&gt;
* '''post-portmake.sh''': script run during building of the PBI file, after the port-compile is finished&lt;br /&gt;
&lt;br /&gt;
* '''pre-install.sh''': script run before installation of the PBI; return non-0 to halt installation&lt;br /&gt;
&lt;br /&gt;
* '''pre-remove.sh''': script run before deletion of the PBI file&lt;br /&gt;
&lt;br /&gt;
Table 10.7.1.5 summarizes the variables that may be used in these scripts:&lt;br /&gt;
&lt;br /&gt;
'''Table 10.7.1.5 Supported Variables&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=100%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Variable'''}}  &lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Mandatory. Should be the same value as PORTNAME&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; in the port's Makefile, but capitalized.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGDIRNAME'''}}&lt;br /&gt;
{{Tbl-line|align=left|This is the name of the directory that is created for the PBI in the /usr/pbi/ directory.&amp;lt;br&amp;gt;(example: &amp;quot;firefox-amd64&amp;quot; for the 64-bit Firefox PBI)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROGDIRPATH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|This is the full path to the PBI install directory&amp;lt;br&amp;gt;(example: &amp;quot;/usr/pbi/firefox-amd64/&amp;quot; for the 64-bit Firefox PBI)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROGVERSION'''}}&lt;br /&gt;
{{Tbl-line|align=left|This is the version of the program. Should be the same value as the DISTVERSION= in the port's Makefile.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_RCDIR'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left| }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''SYS_LOCALBASE'''}}&lt;br /&gt;
{{Tbl-line|align=left| }}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_FAKEBIN_DIR'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left| }}&lt;br /&gt;
|-&lt;br /&gt;
|}        &lt;br /&gt;
&lt;br /&gt;
'''6. xdg-menu/ and xdg-desktop/'''&lt;br /&gt;
&lt;br /&gt;
The xdg-menu and xdg-desktop directories can be used to supply menu and desktop icons, respectively. The file that you place in these directories should be in the format pbiname.desktop. Example 10.7.1.6 shows the firefox.desktop files for the firefox PBI:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7.1.6: firefox.desktop File'''&lt;br /&gt;
 &lt;br /&gt;
 '''more xdg-menu/firefox.desktop'''&lt;br /&gt;
 #!/usr/bin/env xdg-open&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Value=1.0&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=FireFox&lt;br /&gt;
 GenericName=FireFox&lt;br /&gt;
 Exec=%%PBI_EXEDIR%%/firefox %U&lt;br /&gt;
 Path=%%PBI_APPDIR%%&lt;br /&gt;
 Icon=%%PBI_APPDIR%%/share/pixmaps/FireFox-128.png&lt;br /&gt;
 StartupNotify=true&lt;br /&gt;
 Categories=Network;&lt;br /&gt;
 &lt;br /&gt;
 '''more xdg-desktop/firefox.desktop'''&lt;br /&gt;
 #!/usr/bin/env xdg-open&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Value=1.0&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=FireFox&lt;br /&gt;
 GenericName=FireFox&lt;br /&gt;
 Exec=%%PBI_EXEDIR%%/firefox %U&lt;br /&gt;
 Path=%%PBI_APPDIR%%&lt;br /&gt;
 Icon=%%PBI_APPDIR%%/share/pixmaps/FireFox-128.png&lt;br /&gt;
 StartupNotify=true &lt;br /&gt;
&lt;br /&gt;
%%PBI_EXEDIR%% should reference the PBI's executable and any required switches.&lt;br /&gt;
&lt;br /&gt;
For more details on the XDG menu specifications, please refer to the [http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html freedesktop specifications]. &lt;br /&gt;
&lt;br /&gt;
'''7. xdg-mime/'''&lt;br /&gt;
&lt;br /&gt;
The xdg-mime directory is used to register file associations according to the [http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html freedesktop MIME specs]. This requires the creation of an XML file. The example shown in Figure 10.7.1.7 adds the MIME information for gimp, so that it can be available as an application choice in a web browser:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7.1.7: Gimp MIME Info'''&lt;br /&gt;
&lt;br /&gt;
 '''more xdg-mime/gimp-xdg.xml'''&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;mime-info xmlns='&amp;lt;nowiki&amp;gt;http://www.freedesktop.org/standards/shared-mime-info&amp;lt;/nowiki&amp;gt;'&amp;gt;&lt;br /&gt;
  &amp;lt;mime-type type=&amp;quot;application/x-gimp&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Gimp - XCF File&amp;lt;/comment&amp;gt;&lt;br /&gt;
   &amp;lt;glob weight=&amp;quot;100&amp;quot; pattern=&amp;quot;*.xcf&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;glob weight=&amp;quot;100&amp;quot; pattern=&amp;quot;*.XCF&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/mime-type&amp;gt;&lt;br /&gt;
 &amp;lt;/mime-info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Useful Tips====&lt;br /&gt;
&lt;br /&gt;
If your PBI's executable does not run, it may be because the program executable is actually a wrapper script rather than a binary file. If so, check the first line of the script to make sure it is using the right path for the scripting language. For example, ''#!/bin/python'' is an incorrect path which should be changed to ''#!/usr/pbi/(pbi-name)/bin/python''.&lt;br /&gt;
&lt;br /&gt;
The suggested path works because each program is packaged with the proper version of the language it uses and you want to make sure it uses that one. This is usually accomplished by putting a quick '''sed''' line in the ''post-install.sh'' script to fix the first line as seen in [http://trac.pcbsd.org/browser/pbi/modules/games/fretsonfire/scripts/post-install.sh?rev=13019 this example].&lt;br /&gt;
&lt;br /&gt;
When testing the executable, use the one located in ''/usr/pbi/(pbi-name)/bin/'' so all the linking will be properly set up. Otherwise you&lt;br /&gt;
can get some interesting errors about missing files.&lt;br /&gt;
&lt;br /&gt;
=== Building PBIs for PC-BSD 8.x and Earlier ===&lt;br /&gt;
&lt;br /&gt;
Earlier PBI versions were created using the PBI Builder Software. The PBI Builder Software automates the process of converting an existing FreeBSD package into a PBI. Anyone with a bit of time, the willingness to learn new things, and the desire to increase the number of PBIs available to PC-BSD users is welcome to create and submit new PBIs.&lt;br /&gt;
&lt;br /&gt;
Installing the PBI Builder software relatively easy, simply download the tbz package for you architecture and version of PC-BSD from the [http://www.pcbsd.org/development/get-involved/pbi-porting PBI Builder Homepage], and place it somewhere on your system with several GB of free space. Next run these commands (as root):&lt;br /&gt;
&lt;br /&gt;
 # '''tar xvjpf pbibuild*.tbz'''&lt;br /&gt;
 # '''ln -s `pwd`/pbi-build /pbi-build'''&lt;br /&gt;
&lt;br /&gt;
==== PBI Building Concepts ====&lt;br /&gt;
&lt;br /&gt;
The PBI Builder software relies on the following concepts:&lt;br /&gt;
&lt;br /&gt;
'''1. Modules:'''a directory containing the files needed by the PBI. The next section will explain how to configure a module for a new PBI.&lt;br /&gt;
&lt;br /&gt;
'''2. PBI Sandbox:''' in order to create a clean build environment that does not affect the software running on the host system, all PBI creation is done in the /pbi-build/pbisandbox directory. This is a complete buildworld environment, and you may chroot into it in order to tweak a port build, or inspect the built contents of a port by using this command as the superuser:&lt;br /&gt;
&lt;br /&gt;
 # '''chroot /pbi-build/pbisandbox'''&lt;br /&gt;
&lt;br /&gt;
'''3. Build command:''' once you have a module, simply cd into the pbi-build directory and specify which module to build. Depending upon the size of the application, the build may take some time to finish. The following example will build the firefox PBI:&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build'''&lt;br /&gt;
 # '''./buildpbi.sh webbrowsers/firefox '''&lt;br /&gt;
&lt;br /&gt;
'''4. Recreate command:''' during the creation of a new module, it may become necessary to recreate the PBI file to test new configurations. If the PBI has already been compiled once, a change often does not require the complete rebuilding of the port from source. By skipping the source build, a new PBI may be generated within moments. To skip the building simply run the 3.makepbi.sh script in /pbi-build/scripts/3.makepbi.sh as shown:&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build/scripts'''&lt;br /&gt;
 # '''./3.makepbi.sh webbrowsers/firefox'''&lt;br /&gt;
&lt;br /&gt;
'''5. Distfiles:''' when running a port build, many files will be downloaded and stored in /usr/ports/distfiles within the /pbi-build/pbisandbox directory. The pbisandbox is removed between builds of modules, but starting in PBI Builder 2.0, the distfiles contents are preserved in the /pbi-build/distfiles directory.&lt;br /&gt;
&lt;br /&gt;
==== Working with Modules ====&lt;br /&gt;
&lt;br /&gt;
When starting the process of creating a new module for the PBI Builder, you should start with an existing module and modify it to suit your program's needs. You can either copy a module from /pbi-build/docs/module-examples, download a module from SVN, or download a template from SVN.&lt;br /&gt;
&lt;br /&gt;
Modules currently in the PC-BSD Subversion repo can be browsed via the [http://trac.pcbsd.org/browser/pbibuild/modules web].&lt;br /&gt;
&lt;br /&gt;
To download a specific module, use the following commands, replacing &amp;quot;firefox&amp;quot; with the specific module you intend to checkout.&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build/modules'''&lt;br /&gt;
 # '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pbibuild/modules/webbrowsers/firefox&amp;lt;/nowiki&amp;gt; webbrowsers/firefox'''&lt;br /&gt;
&lt;br /&gt;
If you wish to start with a blank module template, you may download by using these commands:&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build/modules'''&lt;br /&gt;
 # '''fetch &amp;lt;nowiki&amp;gt;http://www.pcbsd.org/files/templates/module-template.tgz&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 # '''tar xvzf module-template.tgz'''&lt;br /&gt;
&lt;br /&gt;
A proper module will contain several files and directories:&lt;br /&gt;
&lt;br /&gt;
'''Required files / directories'''&lt;br /&gt;
&lt;br /&gt;
* '''pbi.conf:''' the main configuration file for the module.&lt;br /&gt;
&lt;br /&gt;
* '''copy-files:''' listing of the files and directories you wish to copy from the pbisandbox environment to your finished PBI file.&lt;br /&gt;
 &lt;br /&gt;
* '''kmenu-dir:''' directory of configuration entries for the K menu.&lt;br /&gt;
&lt;br /&gt;
* '''overlay-dir:''' directory of contents to be applied to base PBI directory. Icons, PBI setup scripts, and most other files not added via copy-files are placed here.&lt;br /&gt;
&lt;br /&gt;
'''Optional Files used on a per-need basis'''&lt;br /&gt;
&lt;br /&gt;
* '''build.sh:''' script to run after the port make and copy-files are processed. &lt;br /&gt;
&lt;br /&gt;
* '''preportmake.sh:''' script to run in pbisandbox prior to the port make being executed. &lt;br /&gt;
&lt;br /&gt;
* '''mime-dir:''' directory of mime entries for your PBI.&lt;br /&gt;
&lt;br /&gt;
==== The pbi.conf file ====&lt;br /&gt;
&lt;br /&gt;
This file is the first thing you read for each module.&lt;br /&gt;
The available variables are explained with the example of &amp;quot;FireFox&amp;quot; below:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Program Name&lt;br /&gt;
# The name of the PBI file being built&lt;br /&gt;
PROGNAME=&amp;quot;Firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Website&lt;br /&gt;
# Website of the program the module is building&lt;br /&gt;
PROGWEB=&amp;quot;http://www.mozilla.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Author&lt;br /&gt;
# Who created / maintains the program being built&lt;br /&gt;
PROGAUTHOR=&amp;quot;The Mozilla Foundation&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Default Icon&lt;br /&gt;
# Relative to overlay-dir, the main icon you want to show up for this PBI&lt;br /&gt;
PROGICON=&amp;quot;share/pixmaps/FireFox-128.png&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Port we want to build&lt;br /&gt;
# The port the server will track to determine when it's time for a rebuild&lt;br /&gt;
PBIPORT=&amp;quot;/usr/ports/www/firefox/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set to &amp;quot;Auto or NONE&amp;quot; to have the PBI creator auto-populate libs or not&lt;br /&gt;
# This allows you to also use the autolibs/ directory in your overlay-dir as a location for extra&lt;br /&gt;
# library files&lt;br /&gt;
PROGLIBS=&amp;quot;Auto&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# PBI Update URL set to &amp;quot;&amp;quot; or the http:// URL of update checker&lt;br /&gt;
# Leave this as update.pbidir.com normally&lt;br /&gt;
PBIUPDATE=&amp;quot;http://update.pbidir.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Other Ports we need built&lt;br /&gt;
# One per line, any additional ports that need to be built for this PBI&lt;br /&gt;
OTHERPORT=&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Enter your custom make options here&lt;br /&gt;
# Options that will be put into the make.conf for the build of this port&lt;br /&gt;
# Options get inserted into the build's /etc/make.conf file and effect all the ports built for that PBI&lt;br /&gt;
MAKEOPTS=&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# FBSD7BASE - (7.1 or 7.2)&lt;br /&gt;
# This variable can be used to set the specific version of FreeBSD this port needs to be compiled&lt;br /&gt;
# under. Use this is a port is known to not build / work when compiled on FreeBSD 7.0 (the default)&lt;br /&gt;
FBSD7BASE=&amp;quot;7.2&amp;quot;; export FBSD7BASE&lt;br /&gt;
 &lt;br /&gt;
# This option determines if the pbi-builder will auto-copy files from the target port&lt;br /&gt;
# Can be set to YES/NO/FULL&lt;br /&gt;
# YES - Copy only target port files automatically&lt;br /&gt;
# No - Don't copy any target port files (will need to use copy-files config instead)&lt;br /&gt;
# FULL - Copy target port files, and recursive dependency files as well (Makes very large PBI)&lt;br /&gt;
PBIAUTOPOPULATE=&amp;quot;YES&amp;quot; ; export PBIAUTOPOPULATE&lt;br /&gt;
 &lt;br /&gt;
# Can be set to OFF/NO to disable copying all files from ports made with the OTHERPORT variable&lt;br /&gt;
# Leaving this unset will have the builder auto-copy all files from OTHERPORT targets&lt;br /&gt;
PBIAUTOPOPULATE_OTHERPORT=&amp;quot;&amp;quot; ; export PBIAUTOPOPULATE_OTHERPORT&lt;br /&gt;
 &lt;br /&gt;
# Set this variable to any target ports you want to autopopulate files from, in addition to&lt;br /&gt;
# the main target port&lt;br /&gt;
# List additional ports one-per-line&lt;br /&gt;
PBIAUTOPOPULATE_PORTS=&amp;quot;/usr/ports/www/mplayer-plugin/&amp;quot; ; export PBIAUTOPOPULATE_PORTS&lt;br /&gt;
 &lt;br /&gt;
# By default the PBI will remove any xorg-fonts, and create a symlink to the the users system fonts&lt;br /&gt;
# Setting this to YES keeps the PBIs internal fonts and doesn't create a link&lt;br /&gt;
# PBIDISABLEFONTLINK=&amp;quot;&amp;quot; ; export PBIDISABLEFONTLINK&lt;br /&gt;
 &lt;br /&gt;
# By default the libGL* libraries will be removed from a PBI in order to use the systems libGL&lt;br /&gt;
# Set this to YES to keep the PBIs libGL* libraries, and not use the system's&lt;br /&gt;
# PBIKEEPGL=&amp;quot;&amp;quot; ; export PBIKEEPGL&lt;br /&gt;
 &lt;br /&gt;
# By default we prune any include/ files used for building,&lt;br /&gt;
# Set this to NO to keep any include/ directories in the resulting PBI&lt;br /&gt;
# PBIPRUNEINCLUDE=&amp;quot;&amp;quot; ; export PBIPRUNEINCLUDE&lt;br /&gt;
 &lt;br /&gt;
# By default we prune the python files used for building,&lt;br /&gt;
# Set this to NO to keep any python files in the resulting PBI&lt;br /&gt;
# PBIPRUNEPYTHON=&amp;quot;&amp;quot; ; export PBIPRUNEPYTHON&lt;br /&gt;
 &lt;br /&gt;
# By default we prune any perl files used for building,&lt;br /&gt;
# Set this to NO to keep any perl files in the resulting PBI&lt;br /&gt;
# PBIPRUNEPERL=&amp;quot;&amp;quot; ; export PBIPRUNEPERL&lt;br /&gt;
 &lt;br /&gt;
# By default we prune any doc files (such as man, info, share/doc)&lt;br /&gt;
# Set this to NO to keep any doc files in the resulting PBI&lt;br /&gt;
# PBIPRUNEDOC=&amp;quot;&amp;quot; ; export PBIPRUNEDOC&lt;br /&gt;
 &lt;br /&gt;
# Build Key - Change this to anything else to trigger a rebuild&lt;br /&gt;
#           - The rebuild will take place even if port is still the same ver&lt;br /&gt;
BUILDKEY=&amp;quot;01&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
===== The copy-files configuration =====&lt;br /&gt;
&lt;br /&gt;
This file is very straight forward, simply list the files you want to copy from the installed port, and where they should go in your PBI directory structure. The first argument should be the file/directory you wish to copy, and the 2nd argument will be the directory within the PBI it needs to be copied to. &lt;br /&gt;
&lt;br /&gt;
Example copy-files from FileZilla:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/filezilla bin/&lt;br /&gt;
 /usr/local/bin/fzsftp bin/&lt;br /&gt;
 /usr/local/bin/gst-* bin/&lt;br /&gt;
 /usr/local/bin/wxrc* bin/&lt;br /&gt;
 /usr/local/bin/wxgtk2* bin/&lt;br /&gt;
 /usr/local/share/filezilla share/filezilla&lt;br /&gt;
&lt;br /&gt;
==== The preportmake.sh script ====&lt;br /&gt;
&lt;br /&gt;
This script, if it present is run right before starting the &amp;quot;make install&amp;quot; of your port. This allows you to make modifications to the pbisandbox environment or to the port building source itself. Normally this won't be&lt;br /&gt;
necessary, unless working with a very tricky program to get compiled.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# Script to grab the java files and place them in the right directory&lt;br /&gt;
# before starting the build&lt;br /&gt;
 &lt;br /&gt;
cd /usr/ports/distfiles&lt;br /&gt;
 &lt;br /&gt;
fetch ftp://ftp.pcbsd.org/pub/autobuildpkgs/javapack.tbz&lt;br /&gt;
tar xvjf javapack.tbz&lt;br /&gt;
 &lt;br /&gt;
cd /usr/ports/java/jdk16/&lt;br /&gt;
echo &amp;quot;#!/bin/sh&lt;br /&gt;
exit 0&amp;quot; &amp;gt; /usr/ports/java/jdk16/files/license.sh&lt;br /&gt;
 &lt;br /&gt;
cd /usr/ports/devel/automake15&lt;br /&gt;
make install clean&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== The build.sh script ====&lt;br /&gt;
&lt;br /&gt;
Below is the example of the build.sh script, which runs after all the files have been copied to your PBI directory. This allows you to make mods to specific things for your PBI to work properly. In this example we modify the uninstall script to use the right version.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # PBI building script&lt;br /&gt;
 # This will run after your port build is complete&lt;br /&gt;
 # Build your PBI here, and exit 0 on success, or exit 1 on failure.&lt;br /&gt;
 ##############################################################################&lt;br /&gt;
 # Available Variables&lt;br /&gt;
 #    PBIDIR = The location of where you can populate your PBI directory&lt;br /&gt;
 # MODULEDIR = The location of the module directory for this PBI&lt;br /&gt;
 #   PORTVER = Version number of the port we used to build&lt;br /&gt;
 ##############################################################################&lt;br /&gt;
 &lt;br /&gt;
 # Save the right version number in the removepbi.sh script&lt;br /&gt;
 sed -e &amp;quot;s,CHANGEME,Firefox${PORTVER},g&amp;quot; ${PBIDIR}/scripts/removepbi.sh &amp;gt; /tmp/removepbi.sh&lt;br /&gt;
 mv /tmp/removepbi.sh ${PBIDIR}/scripts/removepbi.sh&lt;br /&gt;
 chmod 755 ${PBIDIR}/scripts/removepbi.sh&lt;br /&gt;
&lt;br /&gt;
==== The kmenu-dir directory ====&lt;br /&gt;
&lt;br /&gt;
In this directory you may make any number of files, which contain the .pbc configuration for your kmenu icons. This defines where you would like icons created for your users desktop&lt;br /&gt;
&lt;br /&gt;
Example of kmenu-dir/firefox file:&lt;br /&gt;
&lt;br /&gt;
 ExePath: bin/firefox&lt;br /&gt;
 ExeIcon: share/pixmaps/FireFox-128.png&lt;br /&gt;
 ExeDescr: FireFox&lt;br /&gt;
 ExeNoDesktop: 0&lt;br /&gt;
 ExeNoMenu: 0&lt;br /&gt;
 ExeNoCrashHandler: 0&lt;br /&gt;
 ExeRunRoot: 0&lt;br /&gt;
 ExeRunShell: 0&lt;br /&gt;
 ExeNotify: 1&lt;br /&gt;
 ExeLink: 0&lt;br /&gt;
 ExeWebLink: 0&lt;br /&gt;
 ExeTaskbar: 0&lt;br /&gt;
 ExeOwndir: 1&lt;br /&gt;
 ExeKdeCat: Internet&lt;br /&gt;
&lt;br /&gt;
Line-By-Line description of each entry:&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''ExePath''': bin/firefox&lt;br /&gt;
&lt;br /&gt;
This line indicates the binary / script we want this icon to run when the user clicks it. This is relative to the PBI directory, so we use bin/firefox&lt;br /&gt;
&lt;br /&gt;
'''ExeIcon''': share/pixmaps/FireFox-128.png&lt;br /&gt;
&lt;br /&gt;
This is the icon you want to show up for this program, again it is relative to the PBI directory&lt;br /&gt;
&lt;br /&gt;
'''ExeDescr''': FireFox&lt;br /&gt;
&lt;br /&gt;
This would be the name of the icon in the kmenu or on the users desktop.&lt;br /&gt;
&lt;br /&gt;
'''ExeNoDesktop''': 0&lt;br /&gt;
&lt;br /&gt;
This allows you to disable creating a desktop icon for this entry. Set it to '0' if you want a desktop icon, or '1' if you don't wish an icon.&lt;br /&gt;
&lt;br /&gt;
'''ExeNoMenu''': 0&lt;br /&gt;
&lt;br /&gt;
This allows you to disable creating a kmenu icon for this entry. Set it to '0' if you want a kmenu icon, or '1' if you don't wish an icon.&lt;br /&gt;
&lt;br /&gt;
'''ExeNoCrashHandler''': 0&lt;br /&gt;
&lt;br /&gt;
This option enables / disables the usage of the PC-BSD CrashHandler program. This dialog warns the user that the application has crashed if it returns status non-zero (0), and provides the option to save the output of stdout and stderr from the application. Setting this to &amp;quot;1&amp;quot; disables the CrashHandler helper, which is useful for programs which normally return non-0, such as Window Managers and various apps.  &lt;br /&gt;
&lt;br /&gt;
'''ExeRunRoot''': 0&lt;br /&gt;
&lt;br /&gt;
This indicates if you want your program to be run as &amp;quot;root&amp;quot; when the user clicks it. Set it to '0' to run as a regular user, or '1' to run kdesu and switch to &amp;quot;root&amp;quot; Set this to '0'&lt;br /&gt;
&lt;br /&gt;
'''ExeRunShell''': 0&lt;br /&gt;
&lt;br /&gt;
This indicates if you want your program to be executed in a console session, which may be useful for command-line applications. Set it to '0' if you dont want it to run in console, or set it to '1' if you do.&lt;br /&gt;
&lt;br /&gt;
'''ExeNotify''': 1&lt;br /&gt;
&lt;br /&gt;
This indicates if you want to enable launch feedback in KDE, which is the bouncing icon, showing that the program is loading. Set it to '0' to disable launch feedback, or set it to '1' if you want this enabled. Normally it is&lt;br /&gt;
best to leave this enabled.&lt;br /&gt;
&lt;br /&gt;
'''ExeLink''': 0&lt;br /&gt;
&lt;br /&gt;
This is used to indicate if the ExePath variable was set to a local file / document you want opened with konqueror insetead of just being &amp;quot;run&amp;quot;. This is useful for README type documents. Set this to '1' if you want your document opened with konq, or '0' to just run it as normal.&lt;br /&gt;
&lt;br /&gt;
'''ExeWebLink''': 0&lt;br /&gt;
&lt;br /&gt;
This is similar to above, and instead indicates that the ExePath being opened is actual a web URL. Set this to '1' to open it the ExePath with Konq, or '0' to just run it as normal.&lt;br /&gt;
&lt;br /&gt;
'''ExeTaskbar''': 0&lt;br /&gt;
&lt;br /&gt;
This indicates if you want this application icon added to the taskbar. Set it to '1' to add it, or '0' to leave it disabled. (THIS FEATURE IS CURRENTLY UNAVAILABLE, BUT WILL BE ADDED DOWN THE ROAD)&lt;br /&gt;
&lt;br /&gt;
'''ExeOwndir''': 1&lt;br /&gt;
&lt;br /&gt;
This option is used to specify where you want your Kmenu icon to be placed, and may be set to 0, 1, 2&lt;br /&gt;
 0 = Place kmenu icon directory in top level. &lt;br /&gt;
     I.E.  Kmenu -&amp;gt; Firefox -&amp;gt; Firefox&lt;br /&gt;
 1 = Place kmenu icon in its own directory in the sub category indicated by ExeKdeCat:&lt;br /&gt;
     I.E.  Kmenu -&amp;gt; Internet -&amp;gt; Firefox -&amp;gt; Firefox&lt;br /&gt;
 2 = Place kmenu icon directly in the sub category indicated by ExeKdeCat:  &lt;br /&gt;
     I.E.  Kmenu -&amp;gt; Internet -&amp;gt; Firefox&lt;br /&gt;
&lt;br /&gt;
'''ExeKdeCat''': Internet&lt;br /&gt;
&lt;br /&gt;
This allows you to choose a kmenu sub-directory to place your icons / directory into, when ExeOwnDir is set to 1 or 2. &lt;br /&gt;
Available options are:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ExeKdeCat: Development&lt;br /&gt;
ExeKdeCat: Editors&lt;br /&gt;
ExeKdeCat: Edutainment/Languages&lt;br /&gt;
ExeKdeCat: Edutainment/Math&lt;br /&gt;
ExeKdeCat: Edutainment/Misc&lt;br /&gt;
ExeKdeCat: Edutainment/Science&lt;br /&gt;
ExeKdeCat: Edutainment/Teaching&lt;br /&gt;
ExeKdeCat: Games/Arcade&lt;br /&gt;
ExeKdeCat: Games/Board&lt;br /&gt;
ExeKdeCat: Games/Card&lt;br /&gt;
ExeKdeCat: Games/Kidsgames&lt;br /&gt;
ExeKdeCat: Games/TacticStrategy&lt;br /&gt;
ExeKdeCat: Games&lt;br /&gt;
ExeKdeCat: Graphics&lt;br /&gt;
ExeKdeCat: Internet&lt;br /&gt;
ExeKdeCat: Multimedia&lt;br /&gt;
ExeKdeCat: Office&lt;br /&gt;
ExeKdeCat: System&lt;br /&gt;
ExeKdeCat: Toys&lt;br /&gt;
ExeKdeCat: Utilities&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== The mime-dir directory ====&lt;br /&gt;
&lt;br /&gt;
This directory allows to you specify mime types for your applications defined in the kmenu-dir entries.&lt;br /&gt;
&lt;br /&gt;
Example of mime-dir/exe file:&lt;br /&gt;
&lt;br /&gt;
 MimeExt: *.exe; *.EXE&lt;br /&gt;
 MimeIcon: win_apps.png&lt;br /&gt;
 MimeProg: 0&lt;br /&gt;
&lt;br /&gt;
The only catch to this is to note that the &amp;quot;MimeProg: 0&amp;quot; is a pointer to a file in the kmenu-dir structure. In this case you would have to ensure that the application you want to open .exe files gets added first to the template&lt;br /&gt;
the server creates. Files in the kmenu-dir are added in the order of a &amp;quot;ls&amp;quot; listing, so if you have a wine-exe entry, you may wish to rename it to 00wine-exe to ensure it is added first, which would make this MimeProg: 0&lt;br /&gt;
entry work with it.&lt;br /&gt;
&lt;br /&gt;
If you have more than 1 mime-type, you would then increment the MimeProg: 0 number to MimeProg: 1, MimeProg: 2, and so forth. Then you would do the same with your kmenu-dir entries, such as 00wine-exe, 01wine-bat, 02wine-msi&lt;br /&gt;
&lt;br /&gt;
==== The overlay-dir directory ====&lt;br /&gt;
&lt;br /&gt;
This folder contains any of the files you wish placed into your PBI program directory. Here is an example from firefox:&lt;br /&gt;
&lt;br /&gt;
 leftside.png&lt;br /&gt;
 PBI.FirstRun.sh         autolibs                lib&lt;br /&gt;
 PBI.RemoveScript.sh     bin                     scripts&lt;br /&gt;
 PBI.SetupScript.sh      header.png              share&lt;br /&gt;
&lt;br /&gt;
In this example you see we have added our PBI.* setup scripts, and the custom graphics we want for the PBI installer. You may also create directories that will be populated with the copy-files configuration, such as share/ or others you may need.&lt;br /&gt;
&lt;br /&gt;
==== Useful Tips ====&lt;br /&gt;
&lt;br /&gt;
'''If the program uses the python programming language:''' use [PBIPRUNEPYTHON=&amp;quot;NO&amp;quot; ; export PBIPRUNEPYTHON]  (usually the file is called py-(something) if that file is written in python)&lt;br /&gt;
 &lt;br /&gt;
'''If the program uses the perl programming language:''' use [PBIPRUNEPERL=&amp;quot;NO&amp;quot; ; export PBIPRUNEPERL]  (harder to spot, usually the filename has &amp;quot;perl&amp;quot; in it somewhere)&lt;br /&gt;
 &lt;br /&gt;
'''The installed program does not work:''' this is usually because the python or perl option was not set appropriately. This is only noticed at runtime because after building, python and perl files are removed unless instructed otherwise.&lt;br /&gt;
&lt;br /&gt;
'''If your program path needs to be /usr/local/sbin:''' first, make a kmenu-dir entry similar to the one used by [http://trac.pcbsd.org/browser/pbibuild/modules/archivers/cabextract/kmenu-dir/cabextract cabextract]. Next, make sure that the &amp;quot;ExeNoDesktop&amp;quot; and &amp;quot;ExeNoMenu&amp;quot; options are both set to &amp;quot;1&amp;quot;. Then, in your PBI.SetupScript.sh, you can symlink the wrapper script into /Programs/bin as in [http://trac.pcbsd.org/browser/pbibuild/modules/archivers/cabextract/overlay-dir/PBI.SetupScript.sh this example].&lt;br /&gt;
&lt;br /&gt;
'''If the underlying port pauses to wait for user acceptance of license agreement:''' put this setting into the MAKEOPTS variable:&lt;br /&gt;
 &lt;br /&gt;
MAKEOPTS=&amp;quot;DISABLE_LICENSES=yes&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Don't forget to include the license text in the file overlay-dir/LICENSE so the user can read and accept the license during the PBI installation.&lt;br /&gt;
&lt;br /&gt;
'''If you don't have reliable Internet access and want to avoid running portsnap and build a PBI with pre-fetched distfiles:''' use this variable in /pbi-build/conf/pbibuild.conf:&lt;br /&gt;
&lt;br /&gt;
PORTSNAP=NO&lt;br /&gt;
&lt;br /&gt;
Place all of your distfiles into /pbi-build/distfiles; with this variable set, that directory will be nullfs mounted into the PBI sandbox when doing builds.&lt;br /&gt;
&lt;br /&gt;
'''How does the builder know which port the module is associated with?'''&lt;br /&gt;
&lt;br /&gt;
The PBI build system will look at the module path first, so if in SVN we are using the module www/firefox, it'll look for a port at www/firefox. However, in some cases a module doesn't use the same port or directory name. In that case, set this variable:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt; &lt;br /&gt;
# The target port we are building&lt;br /&gt;
PBI_MAKEPORT=&amp;quot;www/firefox&amp;quot;&lt;br /&gt;
export PBI_MAKEPORT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
That'll let the build server know which specific port this is building.&lt;br /&gt;
&lt;br /&gt;
= Getting Help =&lt;br /&gt;
&lt;br /&gt;
The [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers mailing list] can help if you:&lt;br /&gt;
&lt;br /&gt;
* get stuck building a PBI&lt;br /&gt;
* need to ask a question about your PBI &lt;br /&gt;
* are ready to submit a new module&lt;br /&gt;
* find a bug in an existing PBI&lt;br /&gt;
* have a bugfix for an existing PBI&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2011-12-09T15:22:42Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create PBI or inmate for BBB&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|jpaetzel&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Merge &amp;quot;The Warden&amp;quot; into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Pre-select keyboard layout / timezone based upon language selection&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Update network GUI to set DNS manually in /etc/dhclient.conf when not using static IPs. &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO</id>
		<title>PC-BSD® 9.1 TODO</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_9.1_TODO"/>
				<updated>2011-12-09T15:17:50Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* New Features / Tools planned for 9.1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==== New Features / Tools planned for 9.1 ====&lt;br /&gt;
{| border=1&lt;br /&gt;
|'''Feature'''&lt;br /&gt;
|'''Owner'''&lt;br /&gt;
|'''Skills'''&lt;br /&gt;
|'''Status'''&lt;br /&gt;
|'''Completion Date'''&lt;br /&gt;
|-&lt;br /&gt;
|add inmate browser to Warden GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add iSCSI initiator GUI front-end to iscontrol(8) for connecting to FreeNAS™ systems&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|replace firewall GUI with fwbuilder and document how to use&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Info button to Service Manager containing description&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|should really be a DESCRIPTION field in rc.d scripts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Animated splash screen&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create PBI or inmate for BBB&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add system info desktop icon to live mode&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add help buttons to custom menus, write help text and add to Pootle&lt;br /&gt;
|dru&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Use the [http://wiki.freebsd.org/OliverFromme/BootLoader Graphical Boot Loader] from OliverFromme&lt;br /&gt;
|&lt;br /&gt;
|C / FreeBSD Commit Access / ?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Front-end to text installer&lt;br /&gt;
|jhixson&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add options for proxy settings in network page of installer&lt;br /&gt;
|kris&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Speed up installed boot-time, background system services / load desktop immediately?&lt;br /&gt;
|jpaetzel&lt;br /&gt;
|FreeBSD rc.d / Scripting?&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Create new Disk Management GUI for post-install usage, ZFS, Advanced FS tasks such as ZFS snapshots, ZFS quota/compression&lt;br /&gt;
|&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add manual disk configuration to installer and install to specific mount-point&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add option to play some simple games while waiting for installation&lt;br /&gt;
|kris&lt;br /&gt;
|C++ / QT4 / shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add ability to backup ZFS datasets (in life preserver?)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Merge &amp;quot;The Warden&amp;quot; into PC-BSD SVN as a built-in tool for managing jails&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4 / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Pre-select keyboard layout / timezone based upon language selection&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add password strength meter to installer and warn if root / user are same. &lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / QT4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Localize the meta-pkg descriptions&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Show meta-pkg port lists in installer / system tool&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|C++ / QT CUPS GUI&lt;br /&gt;
| Loic Maury&lt;br /&gt;
|C++ / C&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Switch LifePreserver to use /var/ for its backend files&lt;br /&gt;
|kmoore&lt;br /&gt;
|C++ / Shell&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Bluetooth GUI&lt;br /&gt;
|ken&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|allow pc-sysinstall to import existing ZFS layout&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| changing default language / locale for GDM in pc-sysinstall&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|add Update All to Appcafe&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Add TRIM support to pc-sysinstall / GUI&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Manager</id>
		<title>PBI Manager</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Manager"/>
				<updated>2011-12-07T20:35:42Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Release History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Using AppCafe™|forward=Update Manager}}&lt;br /&gt;
PC-BSD 9.0 introduced PBI Manager, a suite of command line utilities for managing PBIs. PBI Manager's command-line tools can be used to install, remove, create and manage PBIs. It is also available for  [[#Installing_PBI_Manager|FreeBSD systems]]. The PBI Manager is released under the [http://www.freebsd.org/copyright/freebsd-license.html BSD license].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
The new PBI format introduces the following features:&lt;br /&gt;
&lt;br /&gt;
* '''Upgrade deltas:''' since PBIs are self-contained, installation files tend to be large. In the previous implementation, updating a PBI required the re-downloading of the entire installation archive. For larger applications this could be a time-consuming process, especially over low bandwidth connections. The new PBI specification performs updates using binary diff patches known as PBP (Push Button Patch) files. PBPs are a fraction of the PBI's size; in some cases less than 5% of the original PBI archive. An upgrade automatically checks for for the presence of a PBP file and attempts to use it, only falling back to the original archive should the process fail.&lt;br /&gt;
&lt;br /&gt;
* '''Library and file sharing:''' in the previous implementation of the PBI format it was common that identical files existed between various applications. These duplicates, while necessary to provide self-contained functionality, wasted both disk and runtime memory. This waste of space has been greatly reduced through the use of a hash-dir directory where libraries and common files are shared through a system of hard links. When an identical file is found in a PBI, the original will be removed and a hard-link stored in the hash-dir. After a PBI has been removed, any unneeded files left in the hash-dir are cleaned up by the pbid(8) daemon which monitors and maintains the integrity of the shared files.&lt;br /&gt;
&lt;br /&gt;
* '''Repository management:''' allows administrators and PBI builders to create and manage their own repositories of PBIs. This repository system provides a number of tools for PBI distribution, release management, and repository browsing. &lt;br /&gt;
&lt;br /&gt;
* '''Digitally signed PBIs:''' each repository includes an openssl public key file which is installed on the end user's system. Each PBI includes several signatures for the content archive and installation and removal scripts. During the PBI installation process, these signatures are checked to confirm that the archive has not been tampered with during transit. This key file is also used to associate a particular PBI with a parent repository for upgrade purposes, since it is possible that multiple repositories will have the same applications.&lt;br /&gt;
&lt;br /&gt;
* '''Root password not required:''' most applications can be installed and upgraded by user (non-root) accounts. This allows enhanced security in office or home situations, where users can now add/remove desktop applications without needing access to the root account. PBIs that impact on the security of the system (e.g. installing a web server) will require root access.&lt;br /&gt;
&lt;br /&gt;
* '''Implementation:''' the previous PBI design was developed in QT/KDE C++, making it inappropriate for use at the command line. The new format is implemented 100% in shell and is comprised of command-line utilities, each with an associated man page. These utilities are discussed in more detail in the rest of this section.&lt;br /&gt;
&lt;br /&gt;
'''Additional Resources:'''&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/pbi9-slides.pdf The PBI Format Re-implemented for Free/PC-BSD (conference slides)]&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/asiabsdcon2011-pbi9.pdf The PBI Format Re-implemented for Free/PC-BSD (formal paper)]&lt;br /&gt;
&lt;br /&gt;
[[PBI9 Format|The PBI Format for 9.0 and Beyond]]&lt;br /&gt;
&lt;br /&gt;
=== Release History ===&lt;br /&gt;
* '''0.9.7''' (12-07-11) - Kris Moore&lt;br /&gt;
- Use -a flag for fetch to retry after soft failures&lt;br /&gt;
&lt;br /&gt;
- Don't create binary patch files, if they are larger than the source&lt;br /&gt;
&lt;br /&gt;
- Add ability to use /etc/pbi-make.conf on system, letting us set universal make options&lt;br /&gt;
&lt;br /&gt;
- Simplify the startup with less parsing commands&lt;br /&gt;
&lt;br /&gt;
- Add new -R flag for pbi_add, which only downloads a PBI from a mirror, without installing it&lt;br /&gt;
&lt;br /&gt;
- Add support for using &amp;quot;ccache&amp;quot; automatically if configured on the host system&lt;br /&gt;
&lt;br /&gt;
- Fixed a bug using &amp;quot;pbi_create&amp;quot; on a directory manually, make sure file end up in proper PBI application directory&lt;br /&gt;
&lt;br /&gt;
- Make sure we use the systems share/icons directory to use shared cursors / icons across all PBIs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.6''' (11-07-11)&lt;br /&gt;
- Fix some bugs doing cleanup of stagedir / build directories&lt;br /&gt;
&lt;br /&gt;
- Properly kill fetch process when canceling a download&lt;br /&gt;
&lt;br /&gt;
- Improve buildworld on FreeBSD to use /usr/src if it already has source&lt;br /&gt;
&lt;br /&gt;
- Fix some random warnings when building via sudo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.5''' (11-03-11)&lt;br /&gt;
- Add sizes of PBIs to the meta index files&lt;br /&gt;
&lt;br /&gt;
- Fix bug adding default icon to PBIs when none is specified&lt;br /&gt;
&lt;br /&gt;
- Fix handling of PBI_PROGREVISION&lt;br /&gt;
&lt;br /&gt;
- Make sure we unmount nullfs mounts completely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.4''' (10-19-11)&lt;br /&gt;
- Fix issue using system-fonts in PBIs&lt;br /&gt;
&lt;br /&gt;
- Fix issue removing files which have been set r--&lt;br /&gt;
&lt;br /&gt;
- Slow down fetch process to fix issues with fetch protocol errors&lt;br /&gt;
&lt;br /&gt;
- Fix bug coping linux libraries into final PBI file&lt;br /&gt;
&lt;br /&gt;
- Allow user settings in external-links to overwrite auto-detected values&lt;br /&gt;
&lt;br /&gt;
- Fix bug running &amp;quot;stat&amp;quot; on files with spaces in name&lt;br /&gt;
&lt;br /&gt;
- Validate the build checksum before doing patching&lt;br /&gt;
&lt;br /&gt;
- Speed up builds with optional --tmpfs flags&lt;br /&gt;
&lt;br /&gt;
- Add priority system to building modules&lt;br /&gt;
&lt;br /&gt;
- Fix issues setting proxy support from pbi.conf / pcbsd.conf files&lt;br /&gt;
&lt;br /&gt;
- Validate repo URL's when creating .rpo file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.3''' (07-18-11)&lt;br /&gt;
- Unset variables between auto-builds&lt;br /&gt;
&lt;br /&gt;
- Fixed some warnings with 'cut' when parsing i18n strings&lt;br /&gt;
&lt;br /&gt;
- When doing auto-builds, run through alphabetically&lt;br /&gt;
&lt;br /&gt;
- Increase check frequency when first trying to download index's&lt;br /&gt;
&lt;br /&gt;
- Speed up the hashdir merging&lt;br /&gt;
&lt;br /&gt;
- Show repo MD5 with listings&lt;br /&gt;
&lt;br /&gt;
- If no index files, do not fail on listing, just show empty repo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.2''' (05-23-11)&lt;br /&gt;
- Fixed usage errors with &amp;quot;tr&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
- Syntax fixes when trying to install app with no meta-data&lt;br /&gt;
  &lt;br /&gt;
- Fixed some bugs with binary patching&lt;br /&gt;
  &lt;br /&gt;
- Fixed auto-builder using the PBI_BUILDKEY in modules pbi.conf file&lt;br /&gt;
  &lt;br /&gt;
- When building ports, don't export PREFIX since it confuses some linux ports&lt;br /&gt;
  &lt;br /&gt;
- Perform check if user is root, if PBI is flagged root-only&lt;br /&gt;
  &lt;br /&gt;
- Auto-builder now checks if port is compatible with arch type of system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.1''' - Initial public release (05/3/11)&lt;br /&gt;
&lt;br /&gt;
=== What is the PBI format? ===&lt;br /&gt;
&lt;br /&gt;
The idea behind the PBI format is that one of the things holding back mainstream adoption of open source desktops is the package management format. With almost all open source desktops, software is simply treated as part of the operating system. Thus, when performing an update of some seemingly trivial application, you run the risk of potentially needing to upgrade other packages which could break other critical parts of your desktop. &lt;br /&gt;
&lt;br /&gt;
While package management systems have gotten better at resolving these dependency issues, trying to fix conflicts and prevent breakage before it occurs, they still don't address the underlying problem: every software package is a part of the system, and pulling on any one thread has the potential of causing a break somewhere farther down the line.&lt;br /&gt;
&lt;br /&gt;
The PBI format tries to correct this underlying flaw. Rather than making every application a part of the base system, PBIs are self-contained, including their own dependent library tree and related data. As a result, when you install a PBI there are no dependency issues to resolve, and applications can be added or removed freely, without fear of causing breakage to the desktop or any other installed software.&lt;br /&gt;
&lt;br /&gt;
=== Installing PBI Manager ===&lt;br /&gt;
&lt;br /&gt;
If you are running PC-BSD 9 or higher, then the PBI Manager is already installed, and you can use it via the command-line, or a front-end such as the AppCafe™. &lt;br /&gt;
&lt;br /&gt;
FreeBSD users can install it from the [http://www.freshports.org/ports-mgmt/pbi-manager ports tree]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users interested in installing the development version from our [http://trac.pcbsd.org/brower/pcbsd/current/src-sh/pbi-manager/ SVN repository] can do so with the following commands:&lt;br /&gt;
&lt;br /&gt;
 '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pcbsd/current/src-sh/pbi-manager&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 '''cd pbi-manager'''&lt;br /&gt;
 '''make install'''&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The development version may be unstable / buggy, use at your own risk'''&lt;br /&gt;
&lt;br /&gt;
=== Getting PBI Files ===&lt;br /&gt;
&lt;br /&gt;
The PC-BSD project has begun building PBIs which work with PBI Manager for FreeBSD/PC-BSD 9. A list of approved &amp;amp; available PBIs can be viewed with '''pbi_info -i''' or '''pbi_browser''', and then installed with '''pbi_add -r &amp;lt;pbiname&amp;gt;'''. Until 9.0 is released the number of available PBIs will remain small but may be downloaded directly from the build server:&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild.pcbsd.org/index.php?ver=9 9.x i386 PBIs]&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild64.pcbsd.org/index.php?ver=9 9.x amd64 PBIs]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' PBI files previously created for PC-BSD 7.x/8.x will NOT work with PBI Manager, these are specific to PC-BSD 7/8.&lt;br /&gt;
&lt;br /&gt;
===Underlying File / Directory Structure===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The underlying files / directories used by PBI Manager are as follows:&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/etc/pbi.conf''': location of the PBI Manager configuration file &lt;br /&gt;
&lt;br /&gt;
'''/usr/pbi/''': where PBIs are installed on the system&lt;br /&gt;
&lt;br /&gt;
'''/var/db/pbi/''': contains data files related to installed PBIs and repositories &lt;br /&gt;
&lt;br /&gt;
'''/usr/local/sbin/pbi_*''': location of the PBI Manager commands&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/share/pbi-manager/module-examples/convertoldmod.sh''': script which can be used to convert an existing 7.x/8.x PBI module to the new 9.x format.&lt;br /&gt;
&lt;br /&gt;
=== Feedback / Reporting Problems ===&lt;br /&gt;
&lt;br /&gt;
Feedback, problem reports, and general discussion are welcome on the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers Mailing list]. &lt;br /&gt;
&lt;br /&gt;
=== Command Reference ===&lt;br /&gt;
&lt;br /&gt;
The following is a list of commands installed by the pbi-manager, along with a small synopsis of each. For more details, please refer to the command's man page.&lt;br /&gt;
&lt;br /&gt;
==== pbi_add(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_add''', the '''pbi_add''' command is used for adding/installing PBIs on a system, either from a local file or remotely from a repository. This utility supports the options listed in Table 6.2.4.1: &lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.1: pbi_add Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-f'''}}            &lt;br /&gt;
{{Tbl-line|align=left|Force installation, overwriting an already installed copy of the application}}&lt;br /&gt;
|- &lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt; &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-g'''}}            &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Get and show path to icon/images for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|'''-i'''}}            &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|Display information about specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-l'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display LICENSE for specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remote fetch installation file from update server. The system architecture and version will be automatically determined to fetch the correct file.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-v'''}}             &lt;br /&gt;
{{Tbl-line|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 9 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation/removal of this PBI file.}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 10 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''--licagree'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Agree to LICENSE terms and conditions.  Viewing the license can be done with -l flag}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 11 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-checksig'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 12 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksum'''}}  &lt;br /&gt;
{{Tbl-line|align=left|Skip the checksum verification of the archive data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 13 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using shared hash dir which uses hard-links to share files between applications}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 14 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--repo repoid'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which repository to use}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 15 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--rArch arch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Manually specify the PBI architecture type of i386 or amd64}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 16 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--rVer version'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which version of the PBI to install}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommend that users first use the -e and --checkscript options to view archive contents and installation scripts prior to installing a PBI file.&lt;br /&gt;
&lt;br /&gt;
To install a PBI, use: '''pbi_add -r PBINAME'''. The following example will install the alpine PBI:&lt;br /&gt;
&lt;br /&gt;
 '''pbi_add -r alpine'''&lt;br /&gt;
 Downloading ftp://ftp.pcbsd.org/pub/mirror/PBI/mail/alpine/9/x32/alpine-2.00_3-i386.pbi&lt;br /&gt;
 /usr/pbi/.alpine-2.00_3-i386.pbi.42391   100% of  11 MB 295 kBps 00m00s&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to: /usr/pbi/alpine-i386&lt;br /&gt;
 Installed: Alpine-2.00_3&lt;br /&gt;
&lt;br /&gt;
==== pbi_addrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_addrepo''' command is used to register a new PBI repository on a system. If the '''pbid''' daemon is running, the repository's index and meta files will be automatically fetched and made ready for browsing. The command has one argument, the name of the repository file. Repository files have a .rpo extension and are created with the '''pbi_makerepo''' command.&lt;br /&gt;
&lt;br /&gt;
==== pbi_autobuild(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_autobuild''' command is used on the PBI build system to build any out-of-date or new packages. The utility is also of interest to PBI testers and system administrators who create and maintain their own internal repository of PBIs. It can traverse the FreeBSD ports and Meta-data trees, building missing PBI files or PBIs in which the target port version has been updated. Table 6.2.4.3 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.3: pbi_autobuild Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the directory containing the PBI configuration modules data to traverse. Any found pbi.conf files will be parsed, and if PBI_MAKEPORT is set, the target port will be used for the build. If PBI_MAKEPORT is unset, the auto-build will attempt to match the module to a FreeBSD port based upon the dirname of pbi.conf}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir; defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-h script'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a helper script to call after building a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|The directory to place the finished PBI files. Also used to determine which apps are in need of a rebuild if the associated FreeBSD port has been updated.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--genpatch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|When building a new PBI, check for archived copies, and generate smaller patch updates to the new version (*.pbp files)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--keep num'''}}&lt;br /&gt;
{{Tbl-line|align=left|When building new PBIs, keep &amp;lt;num&amp;gt; copies of past versions of working PBI in &amp;lt;outdir&amp;gt;/archived/ folder. These archived copies can be used with the --genpatch command to generate update patch files.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any PBIs which no longer have an associated module in confdir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}            &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_browser(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_browser''' command provides a CLI front-end to browsing a repository's available PBIs. Options for viewing categories and searching by keyword are available, and once the desired PBI is located, it will show the '''pbi_add''' command which can be used to install the application. Table 6.2.4.4 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.4: pbi_browser Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Displays a list of PBIs in the specified category}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-s search'''}}&lt;br /&gt;
{{Tbl-line|align=left|Search for PBIs containing the specified string in the name, description, or keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--listcats'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List the available categories}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--viewall'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi.conf(5)====&lt;br /&gt;
&lt;br /&gt;
pbi.conf is an ASCII text configuration file containing values that are used by the various '''pbi_*''' commands. Table 6.2.4.5 lists the supported variables.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.5: pbi_conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=20%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=80%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_INDEXREFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Number of hours. How often pbid refreshes the index/meta files from repos. Default is every 24 hours.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYPASS'''}}&lt;br /&gt;
{{Tbl-line|align=left|Password used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYPORT'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server port number.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYTYPE'''}}&lt;br /&gt;
{{Tbl-line|align=left|Can be HTTP or SOCKS5.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYURL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server IP address.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYUSER'''}}&lt;br /&gt;
{{Tbl-line|align=left|Username used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBID_REFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Wakeup time in seconds for pbid to run its checks.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_create(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_create''' command provides a way for packagers to manually specify a target directory to be compressed into a PBI file. The option '''-b''' can also be used to re-package an already installed PBI back to an archive. This command replaces the 8.x PBI Module Builder functionality. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.6 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.6: pbi_create Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the author for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-b'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Make a backup of an installed PBI. When using this option specify the target PBI name instead of [pbidir]}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a default icon for this PBI, relative to pbidir/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a name for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Place the finished .pbi file into the specified directory. Defaults to $HOME/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p port'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the given port to get PBI name / version from}}&lt;br /&gt;
|-   &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r version'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a version for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-u weburl'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a website URL for the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating a PBI with the '''pbi_create''' command is relatively simple. First, make sure you are &amp;quot;su&amp;quot; to root. Next you will need to run &amp;quot;pbi_create -a &amp;lt;author&amp;gt; -n &amp;lt;name&amp;gt; -r &amp;lt;version&amp;gt; -w &amp;lt;weburl&amp;gt; &amp;lt;target directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside the target directory you will need to have your binaries / scripts or other executable ready to run, along with any required dependencies. To indicate which files are going to be the runtime commands, you will need to create a file named &amp;quot;'''external-links'''&amp;quot; in your target directory, with an entry such as this:&lt;br /&gt;
&lt;br /&gt;
 # Files to be Sym-Linked into the default LOCALBASE&lt;br /&gt;
 # One per-line, relative to %%PBI_APPDIR%% and LOCALBASE&lt;br /&gt;
 # Defaults to keeping any existing files in LOCALBASE&lt;br /&gt;
 # Use bin-files/ for binaries that need wrapper functionality&lt;br /&gt;
 &lt;br /&gt;
 # TARGET                LINK IN LOCALBASE       ACTION&lt;br /&gt;
 bin/myapp               bin/myapp               binary,nocrash&lt;br /&gt;
&lt;br /&gt;
This will instruct pbi_creator to make the wrapper scripts for the &amp;quot;myapp&amp;quot; binary, along with placing it in the users PATH at install time.&lt;br /&gt;
&lt;br /&gt;
It is also possible to include desktop icons / mime entries using the xdg-mime, xdg-desktop and xdg-menu directories. For more details about creating these files, take a look at the [[PBI_Module_Builder_Guide]]. In this case the xdg-mime/ and other directories would also go directly into the target directory of your application.&lt;br /&gt;
&lt;br /&gt;
==== pbi_delete(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_delete''', the '''pbi_delete''' command removes an installed PBI from the system. It also schedules cleaning for the shared library directory, which is performed by '''pbid'''. Table 6.2.4.7 summarizes its options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.7: pbi_delete Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--clean-hdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Perform a full cleaning of the shared-hash dir, removing any unused files. This should only need to be done after a system crash or failure in removing a PBI via normal methods.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When removing a PBI, you must give its full name. The full name can be found in the output of '''pbi_info'''. The following example searches for the emacs PBI and removes it:&lt;br /&gt;
 &lt;br /&gt;
 '''pbi_info | grep ntop'''&lt;br /&gt;
 ntop-4.0.1_1-i386&lt;br /&gt;
 '''pbi_delete -v ntop-4.0.1_1-i386'''&lt;br /&gt;
 Running pre-removal script: /var/db/pbi/installed/ntop-4.0.1_1-i386/pre-remove.sh&lt;br /&gt;
 Removing: /usr/pbi/ntop-i386&lt;br /&gt;
 Removing: /var/db/pbi/installed/ntop-4.0.1_1-i386&lt;br /&gt;
&lt;br /&gt;
==== pbi_deleterepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_deleterepo''' command can be used to remove a registered repository from the system. It takes the repository's ID as the only command argument.&lt;br /&gt;
&lt;br /&gt;
==== pbi_icon(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_icon''' command provides a number of options for adding desktop icons, menu entries, and mime data for an installed PBI. Not all PBIs will contain desktop/menu/mime data. Additionally, the window manager must be [http://en.wikipedia.org/wiki/Xdg XDG]-compliant to understand a PBI's icon and mime settings. Table 6.2.4.9 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.9: pbi_icon Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant mime information, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any PATH links to ~/bin as user or to LOCALBASE as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any any PATH links to ~/bin as user or to LOCALBASE as root}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_indextool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_indextool''' command is useful for repository maintainers. It allows the adding/removing of PBI files available in a particular repository INDEX file without needing to hand-edit the file. Table 6.2.4.10 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.10: pbi_indextool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a PBI to the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes a PBI from the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_info(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_info''' command, the '''pbi_info''' command is used to determine which PBIs are currently installed. Table 6.2.4.11 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.11: pbi_info Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List all PBIs installed on the system, same as running pbi_info without an argument.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs from any repo}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}     &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_listrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_listrepo''' command manages installed repositories on a system. Table 6.2.4.12 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.12: pbi_listrepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--down'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid down a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-mirror URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Change the specified repoid's mirror URL}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--up'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid up a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command without any options to list the IDs of the available repositories.&lt;br /&gt;
&lt;br /&gt;
==== pbi_makepatch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makepatch''' command is automatically used by '''pbi_autobuild''' to create small *.pbp (Push Button Patch) files. These files can be downloaded to a user's system and used to update a PBI's version without re-downloading the entire archive. This allows users to download only the incremental changes when a PBI is upgraded. The command can also be run manually by providing two PBI archives to compare and generate a patch file for.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.13 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.13: pbi_makepatch Options&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Save the resulting .PBP file to the specified directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the specified openssl key to digitally sign the patch file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makeport(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makeport''' command can be used by packagers to build a target FreeBSD port and convert it into a PBI file. Many options are provided to fine-tune the build process, and meta-data modules can also be specified to further improve the resulting PBI file. The first time this command is run, it will build a fresh chroot sandbox environment which can be used for clean-room building of the target port without affecting the host system. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Starting in version '''0.9.7''' the pbi_makeport command has support for using [http://www.freshports.org/devel/ccache/ ccache] to speed up the compile process. If '''ccache''' is installed on the host system, and the CCACHE_DIR variable is set, the pbi_makeport command will automatically utilize it for the port compile phase. This can be disabled by setting NO_CCACHE=yes in /etc/pbi-make.conf on the host system, or as an optional make flag in a modules pbi.conf file. &lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.14 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.14: pbi_makeport Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-B'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Build-only, after the port make process has finished, do not generate the PBI file. Generally used with -k to build a port before running pbi_create manually.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-k'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Keep the build files after a success or failure compiling/building the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|The directory to place the finished PBI file, defaults to user's $HOME directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p prefix'''}}&lt;br /&gt;
{{Tbl-line|align=left|Manually provide a PREFIX, which determines the location where the PBI will end up being installed on the end-user's system.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--delbuild'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any existing build dirs before starting the build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--mkdebug'''}}&lt;br /&gt;
{{Tbl-line|align=left|Will drop to a debugging shell should the port make fail}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-pruning of non REQUIREDBY ports after the compile phase.  By default any ports which are used solely for building and which are not required for program execution will be pruned.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makerepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makerepo''' command allows repository maintainers to create a single *.rpo file containing various information about the new repository. This .rpo file can then be installed on the target system with '''pbi_addrepo'''. Table 6.2.4.15 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.15: pbi_makerepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--desc description'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. Description of the repo to be shown in the repo list}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--key keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. OpenSSL public key used to verify the digital signature of PBIs installed from this repo}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--mirror URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. The URL to download PBIs and updates from}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--url URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. The URL to use when downloading the master INDEX files of available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_metatool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_metatool''' command provides a way for repository maintainers to modify the PBI meta-data in their repository in order to add or remove application categories or specified PBIs. This meta-data may contain information such as Name, Description, Icon, Keywords, License and more for the respective PBI file. Table 6.2.4.16 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.16: pbi_metatool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Remove a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_patch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_patch''' command is used to update an installed PBI to a different version using the small diff Push Button Patch *.pbp file. This allows the user to perform an incremental upgrade of an installed PBI. The available options are summarized in Table 6.2.4.17.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.17: pbi_patch Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-g'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Extract image data from header, commonly used for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display information about this PBI file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when only extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation / removal of this PBI file.  Recommended that these be checked if the PBI file is suspect in any way.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksig'''}}&lt;br /&gt;
{{Tbl-line|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir, which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_update(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update''' command is used to display information about which PBIs have available updates from their repository and to perform the updates. Table 6.2.4.18 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.18: pbi_update Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Check-only the specified PBI for available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--check-all'''}}&lt;br /&gt;
{{Tbl-line|align=left|Run a full check of all installed PBIs and display list of available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-disable-auto'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--enable-auto'''}}&lt;br /&gt;
{{Tbl-line|align=left|Enable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--update-all'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Update all installed PBIs to the latest versions available.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi_update_hashdir(1)====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update_hashdir''' command is used by the '''pbid''' daemon to merge the contents of a PBI into the hashdir.&lt;br /&gt;
&lt;br /&gt;
==== pbid(8) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbid''' command runs a small daemon which performs maintenance of installed PBIs, merges files into the shared hashdir, fetches the repository INDEX and meta files, and makes the adding and removing of PBIs much faster. It will automatically be started from the /usr/local/etc/rc.d/pbid startup script if pbid_enable=&amp;quot;YES&amp;quot; is in the /etc/rc.conf file.&lt;br /&gt;
&lt;br /&gt;
This utility supports the option summarized in table 6.2.4.19:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.19: pbid Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output when the daemon starts}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This command logs its output to /var/log/pbid.log. Check this log for errors should you experience any problems with PBI maintenance.&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Java,_Flash,_and_Fonts</id>
		<title>Java, Flash, and Fonts</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Java,_Flash,_and_Fonts"/>
				<updated>2011-12-05T16:35:26Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Common Tasks|forward=Multimedia}}&lt;br /&gt;
&lt;br /&gt;
==Java==&lt;br /&gt;
&lt;br /&gt;
AppCafe™ also allows you to install the Open Java Development Kit (OpenJDK, used by Java developers) and the Java Runtime Environment (JRE, used by java applications). Simply search for &amp;quot;java&amp;quot; within AppCafe™ if you wish to install these applications. The OpenJDK PBI includes the IcedTea browser plugin, which will work on FireFox, Chrome and Opera without any additional setup.&lt;br /&gt;
&lt;br /&gt;
==Flash==&lt;br /&gt;
PC-BSD installs and configures the Adobe Flash player (version 10) plugin for you. This means that flash should &amp;quot;just work&amp;quot; when browsing the web. You'll find several web browsers in the Web Browsers category of [[Using AppCafe|AppCafe™]], including Firefox, Opera, and Chromium.&lt;br /&gt;
&lt;br /&gt;
If flash does not seem to be working, running the following command as your regular user account should fix the problem:  &lt;br /&gt;
&lt;br /&gt;
 '''flashpluginctl on'''&lt;br /&gt;
&lt;br /&gt;
==Fonts==&lt;br /&gt;
&lt;br /&gt;
===Installing Microsoft True Type Fonts===&lt;br /&gt;
&lt;br /&gt;
If you would like to install Microsoft True Type fonts, click on the AppCafe™ icon on your Desktop. Search for &amp;quot;fonts&amp;quot; in the search bar and you should see a result similar to Figure 8.1a:&lt;br /&gt;
&lt;br /&gt;
'''Figure 8.1a: Using AppCafe™ to Install MS TrueType Fonts'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Fonts1a.png]]&lt;br /&gt;
&lt;br /&gt;
Click the download button to install the fonts PBI. It will automatically setup your system to use these fonts.&lt;br /&gt;
&lt;br /&gt;
===Installing Fonts in KDE===&lt;br /&gt;
&lt;br /&gt;
If you already have a collection of fonts that you have downloaded or purchased, you can configure your PC-BSD system to use these as well using the Font Installer utility.&lt;br /&gt;
&lt;br /&gt;
Click the KDE menu → System Settings → Font Installer to start this utility. In Figure 8.1b, &amp;quot;All Fonts&amp;quot; is currently selected under the Group column, showing all of the fonts installed on this system.&lt;br /&gt;
&lt;br /&gt;
'''Figure i.1b: Using Font Installer to Install Fonts'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Fonts1.png]]&lt;br /&gt;
&lt;br /&gt;
To install your fonts, highlight &amp;quot;Personal Fonts&amp;quot; under the Group column, then click the +Add button. This will allow you to browse to the font you wish to add. You can add multiple fonts in the same directory by holding down the Ctrl key while making your selection. Click the Open button, which will install the font for you. When it is finished, you will see the message in Figure 8.1c:&lt;br /&gt;
&lt;br /&gt;
'''Figure 8.1c: Fonts Have Been Successfully Installed'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Fonts3.png]]&lt;br /&gt;
&lt;br /&gt;
Your newly installed font(s) should now show up in the &amp;quot;Personal Fonts&amp;quot; section in the Groups column and be available to the applications you use.&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Manager</id>
		<title>PBI Manager</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Manager"/>
				<updated>2011-12-02T21:51:55Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* pbi_create(1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Using AppCafe™|forward=Update Manager}}&lt;br /&gt;
PC-BSD 9.0 introduced PBI Manager, a suite of command line utilities for managing PBIs. PBI Manager's command-line tools can be used to install, remove, create and manage PBIs. It is also available for  [[#Installing_PBI_Manager|FreeBSD systems]]. The PBI Manager is released under the [http://www.freebsd.org/copyright/freebsd-license.html BSD license].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
The new PBI format introduces the following features:&lt;br /&gt;
&lt;br /&gt;
* '''Upgrade deltas:''' since PBIs are self-contained, installation files tend to be large. In the previous implementation, updating a PBI required the re-downloading of the entire installation archive. For larger applications this could be a time-consuming process, especially over low bandwidth connections. The new PBI specification performs updates using binary diff patches known as PBP (Push Button Patch) files. PBPs are a fraction of the PBI's size; in some cases less than 5% of the original PBI archive. An upgrade automatically checks for for the presence of a PBP file and attempts to use it, only falling back to the original archive should the process fail.&lt;br /&gt;
&lt;br /&gt;
* '''Library and file sharing:''' in the previous implementation of the PBI format it was common that identical files existed between various applications. These duplicates, while necessary to provide self-contained functionality, wasted both disk and runtime memory. This waste of space has been greatly reduced through the use of a hash-dir directory where libraries and common files are shared through a system of hard links. When an identical file is found in a PBI, the original will be removed and a hard-link stored in the hash-dir. After a PBI has been removed, any unneeded files left in the hash-dir are cleaned up by the pbid(8) daemon which monitors and maintains the integrity of the shared files.&lt;br /&gt;
&lt;br /&gt;
* '''Repository management:''' allows administrators and PBI builders to create and manage their own repositories of PBIs. This repository system provides a number of tools for PBI distribution, release management, and repository browsing. &lt;br /&gt;
&lt;br /&gt;
* '''Digitally signed PBIs:''' each repository includes an openssl public key file which is installed on the end user's system. Each PBI includes several signatures for the content archive and installation and removal scripts. During the PBI installation process, these signatures are checked to confirm that the archive has not been tampered with during transit. This key file is also used to associate a particular PBI with a parent repository for upgrade purposes, since it is possible that multiple repositories will have the same applications.&lt;br /&gt;
&lt;br /&gt;
* '''Root password not required:''' most applications can be installed and upgraded by user (non-root) accounts. This allows enhanced security in office or home situations, where users can now add/remove desktop applications without needing access to the root account. PBIs that impact on the security of the system (e.g. installing a web server) will require root access.&lt;br /&gt;
&lt;br /&gt;
* '''Implementation:''' the previous PBI design was developed in QT/KDE C++, making it inappropriate for use at the command line. The new format is implemented 100% in shell and is comprised of command-line utilities, each with an associated man page. These utilities are discussed in more detail in the rest of this section.&lt;br /&gt;
&lt;br /&gt;
'''Additional Resources:'''&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/pbi9-slides.pdf The PBI Format Re-implemented for Free/PC-BSD (conference slides)]&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/asiabsdcon2011-pbi9.pdf The PBI Format Re-implemented for Free/PC-BSD (formal paper)]&lt;br /&gt;
&lt;br /&gt;
[[PBI9 Format|The PBI Format for 9.0 and Beyond]]&lt;br /&gt;
&lt;br /&gt;
=== Release History ===&lt;br /&gt;
* '''0.9.6''' (11-07-11)&lt;br /&gt;
- Fix some bugs doing cleanup of stagedir / build directories&lt;br /&gt;
&lt;br /&gt;
- Properly kill fetch process when canceling a download&lt;br /&gt;
&lt;br /&gt;
- Improve buildworld on FreeBSD to use /usr/src if it already has source&lt;br /&gt;
&lt;br /&gt;
- Fix some random warnings when building via sudo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.5''' (11-03-11)&lt;br /&gt;
- Add sizes of PBIs to the meta index files&lt;br /&gt;
&lt;br /&gt;
- Fix bug adding default icon to PBIs when none is specified&lt;br /&gt;
&lt;br /&gt;
- Fix handling of PBI_PROGREVISION&lt;br /&gt;
&lt;br /&gt;
- Make sure we unmount nullfs mounts completely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.4''' (10-19-11)&lt;br /&gt;
- Fix issue using system-fonts in PBIs&lt;br /&gt;
&lt;br /&gt;
- Fix issue removing files which have been set r--&lt;br /&gt;
&lt;br /&gt;
- Slow down fetch process to fix issues with fetch protocol errors&lt;br /&gt;
&lt;br /&gt;
- Fix bug coping linux libraries into final PBI file&lt;br /&gt;
&lt;br /&gt;
- Allow user settings in external-links to overwrite auto-detected values&lt;br /&gt;
&lt;br /&gt;
- Fix bug running &amp;quot;stat&amp;quot; on files with spaces in name&lt;br /&gt;
&lt;br /&gt;
- Validate the build checksum before doing patching&lt;br /&gt;
&lt;br /&gt;
- Speed up builds with optional --tmpfs flags&lt;br /&gt;
&lt;br /&gt;
- Add priority system to building modules&lt;br /&gt;
&lt;br /&gt;
- Fix issues setting proxy support from pbi.conf / pcbsd.conf files&lt;br /&gt;
&lt;br /&gt;
- Validate repo URL's when creating .rpo file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.3''' (07-18-11)&lt;br /&gt;
- Unset variables between auto-builds&lt;br /&gt;
&lt;br /&gt;
- Fixed some warnings with 'cut' when parsing i18n strings&lt;br /&gt;
&lt;br /&gt;
- When doing auto-builds, run through alphabetically&lt;br /&gt;
&lt;br /&gt;
- Increase check frequency when first trying to download index's&lt;br /&gt;
&lt;br /&gt;
- Speed up the hashdir merging&lt;br /&gt;
&lt;br /&gt;
- Show repo MD5 with listings&lt;br /&gt;
&lt;br /&gt;
- If no index files, do not fail on listing, just show empty repo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.2''' (05-23-11)&lt;br /&gt;
- Fixed usage errors with &amp;quot;tr&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
- Syntax fixes when trying to install app with no meta-data&lt;br /&gt;
  &lt;br /&gt;
- Fixed some bugs with binary patching&lt;br /&gt;
  &lt;br /&gt;
- Fixed auto-builder using the PBI_BUILDKEY in modules pbi.conf file&lt;br /&gt;
  &lt;br /&gt;
- When building ports, don't export PREFIX since it confuses some linux ports&lt;br /&gt;
  &lt;br /&gt;
- Perform check if user is root, if PBI is flagged root-only&lt;br /&gt;
  &lt;br /&gt;
- Auto-builder now checks if port is compatible with arch type of system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.1''' - Initial public release (05/3/11)&lt;br /&gt;
&lt;br /&gt;
=== What is the PBI format? ===&lt;br /&gt;
&lt;br /&gt;
The idea behind the PBI format is that one of the things holding back mainstream adoption of open source desktops is the package management format. With almost all open source desktops, software is simply treated as part of the operating system. Thus, when performing an update of some seemingly trivial application, you run the risk of potentially needing to upgrade other packages which could break other critical parts of your desktop. &lt;br /&gt;
&lt;br /&gt;
While package management systems have gotten better at resolving these dependency issues, trying to fix conflicts and prevent breakage before it occurs, they still don't address the underlying problem: every software package is a part of the system, and pulling on any one thread has the potential of causing a break somewhere farther down the line.&lt;br /&gt;
&lt;br /&gt;
The PBI format tries to correct this underlying flaw. Rather than making every application a part of the base system, PBIs are self-contained, including their own dependent library tree and related data. As a result, when you install a PBI there are no dependency issues to resolve, and applications can be added or removed freely, without fear of causing breakage to the desktop or any other installed software.&lt;br /&gt;
&lt;br /&gt;
=== Installing PBI Manager ===&lt;br /&gt;
&lt;br /&gt;
If you are running PC-BSD 9 or higher, then the PBI Manager is already installed, and you can use it via the command-line, or a front-end such as the AppCafe™. &lt;br /&gt;
&lt;br /&gt;
FreeBSD users can install it from the [http://www.freshports.org/ports-mgmt/pbi-manager ports tree]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users interested in installing the development version from our [http://trac.pcbsd.org/brower/pcbsd/current/src-sh/pbi-manager/ SVN repository] can do so with the following commands:&lt;br /&gt;
&lt;br /&gt;
 '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pcbsd/current/src-sh/pbi-manager&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 '''cd pbi-manager'''&lt;br /&gt;
 '''make install'''&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The development version may be unstable / buggy, use at your own risk'''&lt;br /&gt;
&lt;br /&gt;
=== Getting PBI Files ===&lt;br /&gt;
&lt;br /&gt;
The PC-BSD project has begun building PBIs which work with PBI Manager for FreeBSD/PC-BSD 9. A list of approved &amp;amp; available PBIs can be viewed with '''pbi_info -i''' or '''pbi_browser''', and then installed with '''pbi_add -r &amp;lt;pbiname&amp;gt;'''. Until 9.0 is released the number of available PBIs will remain small but may be downloaded directly from the build server:&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild.pcbsd.org/index.php?ver=9 9.x i386 PBIs]&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild64.pcbsd.org/index.php?ver=9 9.x amd64 PBIs]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' PBI files previously created for PC-BSD 7.x/8.x will NOT work with PBI Manager, these are specific to PC-BSD 7/8.&lt;br /&gt;
&lt;br /&gt;
===Underlying File / Directory Structure===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The underlying files / directories used by PBI Manager are as follows:&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/etc/pbi.conf''': location of the PBI Manager configuration file &lt;br /&gt;
&lt;br /&gt;
'''/usr/pbi/''': where PBIs are installed on the system&lt;br /&gt;
&lt;br /&gt;
'''/var/db/pbi/''': contains data files related to installed PBIs and repositories &lt;br /&gt;
&lt;br /&gt;
'''/usr/local/sbin/pbi_*''': location of the PBI Manager commands&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/share/pbi-manager/module-examples/convertoldmod.sh''': script which can be used to convert an existing 7.x/8.x PBI module to the new 9.x format.&lt;br /&gt;
&lt;br /&gt;
=== Feedback / Reporting Problems ===&lt;br /&gt;
&lt;br /&gt;
Feedback, problem reports, and general discussion are welcome on the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers Mailing list]. &lt;br /&gt;
&lt;br /&gt;
=== Command Reference ===&lt;br /&gt;
&lt;br /&gt;
The following is a list of commands installed by the pbi-manager, along with a small synopsis of each. For more details, please refer to the command's man page.&lt;br /&gt;
&lt;br /&gt;
==== pbi_add(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_add''', the '''pbi_add''' command is used for adding/installing PBIs on a system, either from a local file or remotely from a repository. This utility supports the options listed in Table 6.2.4.1: &lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.1: pbi_add Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-f'''}}            &lt;br /&gt;
{{Tbl-line|align=left|Force installation, overwriting an already installed copy of the application}}&lt;br /&gt;
|- &lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt; &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-g'''}}            &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Get and show path to icon/images for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|'''-i'''}}            &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|Display information about specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-l'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display LICENSE for specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remote fetch installation file from update server. The system architecture and version will be automatically determined to fetch the correct file.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-v'''}}             &lt;br /&gt;
{{Tbl-line|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 9 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation/removal of this PBI file.}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 10 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''--licagree'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Agree to LICENSE terms and conditions.  Viewing the license can be done with -l flag}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 11 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-checksig'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 12 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksum'''}}  &lt;br /&gt;
{{Tbl-line|align=left|Skip the checksum verification of the archive data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 13 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using shared hash dir which uses hard-links to share files between applications}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 14 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--repo repoid'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which repository to use}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 15 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--rArch arch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Manually specify the PBI architecture type of i386 or amd64}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 16 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--rVer version'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which version of the PBI to install}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommend that users first use the -e and --checkscript options to view archive contents and installation scripts prior to installing a PBI file.&lt;br /&gt;
&lt;br /&gt;
To install a PBI, use: '''pbi_add -r PBINAME'''. The following example will install the alpine PBI:&lt;br /&gt;
&lt;br /&gt;
 '''pbi_add -r alpine'''&lt;br /&gt;
 Downloading ftp://ftp.pcbsd.org/pub/mirror/PBI/mail/alpine/9/x32/alpine-2.00_3-i386.pbi&lt;br /&gt;
 /usr/pbi/.alpine-2.00_3-i386.pbi.42391   100% of  11 MB 295 kBps 00m00s&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to: /usr/pbi/alpine-i386&lt;br /&gt;
 Installed: Alpine-2.00_3&lt;br /&gt;
&lt;br /&gt;
==== pbi_addrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_addrepo''' command is used to register a new PBI repository on a system. If the '''pbid''' daemon is running, the repository's index and meta files will be automatically fetched and made ready for browsing. The command has one argument, the name of the repository file. Repository files have a .rpo extension and are created with the '''pbi_makerepo''' command.&lt;br /&gt;
&lt;br /&gt;
==== pbi_autobuild(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_autobuild''' command is used on the PBI build system to build any out-of-date or new packages. The utility is also of interest to PBI testers and system administrators who create and maintain their own internal repository of PBIs. It can traverse the FreeBSD ports and Meta-data trees, building missing PBI files or PBIs in which the target port version has been updated. Table 6.2.4.3 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.3: pbi_autobuild Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the directory containing the PBI configuration modules data to traverse. Any found pbi.conf files will be parsed, and if PBI_MAKEPORT is set, the target port will be used for the build. If PBI_MAKEPORT is unset, the auto-build will attempt to match the module to a FreeBSD port based upon the dirname of pbi.conf}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir; defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-h script'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a helper script to call after building a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|The directory to place the finished PBI files. Also used to determine which apps are in need of a rebuild if the associated FreeBSD port has been updated.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--genpatch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|When building a new PBI, check for archived copies, and generate smaller patch updates to the new version (*.pbp files)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--keep num'''}}&lt;br /&gt;
{{Tbl-line|align=left|When building new PBIs, keep &amp;lt;num&amp;gt; copies of past versions of working PBI in &amp;lt;outdir&amp;gt;/archived/ folder. These archived copies can be used with the --genpatch command to generate update patch files.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any PBIs which no longer have an associated module in confdir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}            &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_browser(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_browser''' command provides a CLI front-end to browsing a repository's available PBIs. Options for viewing categories and searching by keyword are available, and once the desired PBI is located, it will show the '''pbi_add''' command which can be used to install the application. Table 6.2.4.4 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.4: pbi_browser Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Displays a list of PBIs in the specified category}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-s search'''}}&lt;br /&gt;
{{Tbl-line|align=left|Search for PBIs containing the specified string in the name, description, or keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--listcats'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List the available categories}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--viewall'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi.conf(5)====&lt;br /&gt;
&lt;br /&gt;
pbi.conf is an ASCII text configuration file containing values that are used by the various '''pbi_*''' commands. Table 6.2.4.5 lists the supported variables.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.5: pbi_conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=20%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=80%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_INDEXREFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Number of hours. How often pbid refreshes the index/meta files from repos. Default is every 24 hours.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYPASS'''}}&lt;br /&gt;
{{Tbl-line|align=left|Password used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYPORT'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server port number.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYTYPE'''}}&lt;br /&gt;
{{Tbl-line|align=left|Can be HTTP or SOCKS5.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYURL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server IP address.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYUSER'''}}&lt;br /&gt;
{{Tbl-line|align=left|Username used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBID_REFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Wakeup time in seconds for pbid to run its checks.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_create(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_create''' command provides a way for packagers to manually specify a target directory to be compressed into a PBI file. The option '''-b''' can also be used to re-package an already installed PBI back to an archive. This command replaces the 8.x PBI Module Builder functionality. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.6 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.6: pbi_create Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the author for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-b'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Make a backup of an installed PBI. When using this option specify the target PBI name instead of [pbidir]}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a default icon for this PBI, relative to pbidir/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a name for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Place the finished .pbi file into the specified directory. Defaults to $HOME/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p port'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the given port to get PBI name / version from}}&lt;br /&gt;
|-   &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r version'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a version for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-u weburl'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a website URL for the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creating a PBI with the '''pbi_create''' command is relatively simple. First, make sure you are &amp;quot;su&amp;quot; to root. Next you will need to run &amp;quot;pbi_create -a &amp;lt;author&amp;gt; -n &amp;lt;name&amp;gt; -r &amp;lt;version&amp;gt; -w &amp;lt;weburl&amp;gt; &amp;lt;target directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inside the target directory you will need to have your binaries / scripts or other executable ready to run, along with any required dependencies. To indicate which files are going to be the runtime commands, you will need to create a file named &amp;quot;'''external-links'''&amp;quot; in your target directory, with an entry such as this:&lt;br /&gt;
&lt;br /&gt;
 # Files to be Sym-Linked into the default LOCALBASE&lt;br /&gt;
 # One per-line, relative to %%PBI_APPDIR%% and LOCALBASE&lt;br /&gt;
 # Defaults to keeping any existing files in LOCALBASE&lt;br /&gt;
 # Use bin-files/ for binaries that need wrapper functionality&lt;br /&gt;
 &lt;br /&gt;
 # TARGET                LINK IN LOCALBASE       ACTION&lt;br /&gt;
 bin/myapp               bin/myapp               binary,nocrash&lt;br /&gt;
&lt;br /&gt;
This will instruct pbi_creator to make the wrapper scripts for the &amp;quot;myapp&amp;quot; binary, along with placing it in the users PATH at install time.&lt;br /&gt;
&lt;br /&gt;
It is also possible to include desktop icons / mime entries using the xdg-mime, xdg-desktop and xdg-menu directories. For more details about creating these files, take a look at the [[PBI_Module_Builder_Guide]]. In this case the xdg-mime/ and other directories would also go directly into the target directory of your application.&lt;br /&gt;
&lt;br /&gt;
==== pbi_delete(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_delete''', the '''pbi_delete''' command removes an installed PBI from the system. It also schedules cleaning for the shared library directory, which is performed by '''pbid'''. Table 6.2.4.7 summarizes its options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.7: pbi_delete Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--clean-hdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Perform a full cleaning of the shared-hash dir, removing any unused files. This should only need to be done after a system crash or failure in removing a PBI via normal methods.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When removing a PBI, you must give its full name. The full name can be found in the output of '''pbi_info'''. The following example searches for the emacs PBI and removes it:&lt;br /&gt;
 &lt;br /&gt;
 '''pbi_info | grep ntop'''&lt;br /&gt;
 ntop-4.0.1_1-i386&lt;br /&gt;
 '''pbi_delete -v ntop-4.0.1_1-i386'''&lt;br /&gt;
 Running pre-removal script: /var/db/pbi/installed/ntop-4.0.1_1-i386/pre-remove.sh&lt;br /&gt;
 Removing: /usr/pbi/ntop-i386&lt;br /&gt;
 Removing: /var/db/pbi/installed/ntop-4.0.1_1-i386&lt;br /&gt;
&lt;br /&gt;
==== pbi_deleterepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_deleterepo''' command can be used to remove a registered repository from the system. It takes the repository's ID as the only command argument.&lt;br /&gt;
&lt;br /&gt;
==== pbi_icon(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_icon''' command provides a number of options for adding desktop icons, menu entries, and mime data for an installed PBI. Not all PBIs will contain desktop/menu/mime data. Additionally, the window manager must be [http://en.wikipedia.org/wiki/Xdg XDG]-compliant to understand a PBI's icon and mime settings. Table 6.2.4.9 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.9: pbi_icon Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant mime information, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any PATH links to ~/bin as user or to LOCALBASE as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any any PATH links to ~/bin as user or to LOCALBASE as root}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_indextool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_indextool''' command is useful for repository maintainers. It allows the adding/removing of PBI files available in a particular repository INDEX file without needing to hand-edit the file. Table 6.2.4.10 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.10: pbi_indextool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a PBI to the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes a PBI from the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_info(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_info''' command, the '''pbi_info''' command is used to determine which PBIs are currently installed. Table 6.2.4.11 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.11: pbi_info Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List all PBIs installed on the system, same as running pbi_info without an argument.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs from any repo}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}     &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_listrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_listrepo''' command manages installed repositories on a system. Table 6.2.4.12 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.12: pbi_listrepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--down'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid down a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-mirror URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Change the specified repoid's mirror URL}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--up'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid up a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command without any options to list the IDs of the available repositories.&lt;br /&gt;
&lt;br /&gt;
==== pbi_makepatch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makepatch''' command is automatically used by '''pbi_autobuild''' to create small *.pbp (Push Button Patch) files. These files can be downloaded to a user's system and used to update a PBI's version without re-downloading the entire archive. This allows users to download only the incremental changes when a PBI is upgraded. The command can also be run manually by providing two PBI archives to compare and generate a patch file for.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.13 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.13: pbi_makepatch Options&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Save the resulting .PBP file to the specified directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the specified openssl key to digitally sign the patch file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makeport(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makeport''' command can be used by packagers to build a target FreeBSD port and convert it into a PBI file. Many options are provided to fine-tune the build process, and meta-data modules can also be specified to further improve the resulting PBI file. The first time this command is run, it will build a fresh chroot sandbox environment which can be used for clean-room building of the target port without affecting the host system. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Starting in version '''0.9.7''' the pbi_makeport command has support for using [http://www.freshports.org/devel/ccache/ ccache] to speed up the compile process. If '''ccache''' is installed on the host system, and the CCACHE_DIR variable is set, the pbi_makeport command will automatically utilize it for the port compile phase. This can be disabled by setting NO_CCACHE=yes in /etc/pbi-make.conf on the host system, or as an optional make flag in a modules pbi.conf file. &lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.14 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.14: pbi_makeport Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-B'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Build-only, after the port make process has finished, do not generate the PBI file. Generally used with -k to build a port before running pbi_create manually.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-k'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Keep the build files after a success or failure compiling/building the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|The directory to place the finished PBI file, defaults to user's $HOME directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p prefix'''}}&lt;br /&gt;
{{Tbl-line|align=left|Manually provide a PREFIX, which determines the location where the PBI will end up being installed on the end-user's system.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--delbuild'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any existing build dirs before starting the build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--mkdebug'''}}&lt;br /&gt;
{{Tbl-line|align=left|Will drop to a debugging shell should the port make fail}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-pruning of non REQUIREDBY ports after the compile phase.  By default any ports which are used solely for building and which are not required for program execution will be pruned.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makerepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makerepo''' command allows repository maintainers to create a single *.rpo file containing various information about the new repository. This .rpo file can then be installed on the target system with '''pbi_addrepo'''. Table 6.2.4.15 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.15: pbi_makerepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--desc description'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. Description of the repo to be shown in the repo list}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--key keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. OpenSSL public key used to verify the digital signature of PBIs installed from this repo}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--mirror URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. The URL to download PBIs and updates from}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--url URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. The URL to use when downloading the master INDEX files of available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_metatool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_metatool''' command provides a way for repository maintainers to modify the PBI meta-data in their repository in order to add or remove application categories or specified PBIs. This meta-data may contain information such as Name, Description, Icon, Keywords, License and more for the respective PBI file. Table 6.2.4.16 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.16: pbi_metatool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Remove a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_patch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_patch''' command is used to update an installed PBI to a different version using the small diff Push Button Patch *.pbp file. This allows the user to perform an incremental upgrade of an installed PBI. The available options are summarized in Table 6.2.4.17.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.17: pbi_patch Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-g'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Extract image data from header, commonly used for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display information about this PBI file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when only extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation / removal of this PBI file.  Recommended that these be checked if the PBI file is suspect in any way.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksig'''}}&lt;br /&gt;
{{Tbl-line|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir, which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_update(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update''' command is used to display information about which PBIs have available updates from their repository and to perform the updates. Table 6.2.4.18 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.18: pbi_update Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Check-only the specified PBI for available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--check-all'''}}&lt;br /&gt;
{{Tbl-line|align=left|Run a full check of all installed PBIs and display list of available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-disable-auto'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--enable-auto'''}}&lt;br /&gt;
{{Tbl-line|align=left|Enable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--update-all'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Update all installed PBIs to the latest versions available.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi_update_hashdir(1)====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update_hashdir''' command is used by the '''pbid''' daemon to merge the contents of a PBI into the hashdir.&lt;br /&gt;
&lt;br /&gt;
==== pbid(8) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbid''' command runs a small daemon which performs maintenance of installed PBIs, merges files into the shared hashdir, fetches the repository INDEX and meta files, and makes the adding and removing of PBIs much faster. It will automatically be started from the /usr/local/etc/rc.d/pbid startup script if pbid_enable=&amp;quot;YES&amp;quot; is in the /etc/rc.conf file.&lt;br /&gt;
&lt;br /&gt;
This utility supports the option summarized in table 6.2.4.19:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.19: pbid Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output when the daemon starts}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This command logs its output to /var/log/pbid.log. Check this log for errors should you experience any problems with PBI maintenance.&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Manager</id>
		<title>PBI Manager</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Manager"/>
				<updated>2011-11-30T18:49:18Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* pbi_makeport(1) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Using AppCafe™|forward=Update Manager}}&lt;br /&gt;
PC-BSD 9.0 introduced PBI Manager, a suite of command line utilities for managing PBIs. PBI Manager's command-line tools can be used to install, remove, create and manage PBIs. It is also available for  [[#Installing_PBI_Manager|FreeBSD systems]]. The PBI Manager is released under the [http://www.freebsd.org/copyright/freebsd-license.html BSD license].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
The new PBI format introduces the following features:&lt;br /&gt;
&lt;br /&gt;
* '''Upgrade deltas:''' since PBIs are self-contained, installation files tend to be large. In the previous implementation, updating a PBI required the re-downloading of the entire installation archive. For larger applications this could be a time-consuming process, especially over low bandwidth connections. The new PBI specification performs updates using binary diff patches known as PBP (Push Button Patch) files. PBPs are a fraction of the PBI's size; in some cases less than 5% of the original PBI archive. An upgrade automatically checks for for the presence of a PBP file and attempts to use it, only falling back to the original archive should the process fail.&lt;br /&gt;
&lt;br /&gt;
* '''Library and file sharing:''' in the previous implementation of the PBI format it was common that identical files existed between various applications. These duplicates, while necessary to provide self-contained functionality, wasted both disk and runtime memory. This waste of space has been greatly reduced through the use of a hash-dir directory where libraries and common files are shared through a system of hard links. When an identical file is found in a PBI, the original will be removed and a hard-link stored in the hash-dir. After a PBI has been removed, any unneeded files left in the hash-dir are cleaned up by the pbid(8) daemon which monitors and maintains the integrity of the shared files.&lt;br /&gt;
&lt;br /&gt;
* '''Repository management:''' allows administrators and PBI builders to create and manage their own repositories of PBIs. This repository system provides a number of tools for PBI distribution, release management, and repository browsing. &lt;br /&gt;
&lt;br /&gt;
* '''Digitally signed PBIs:''' each repository includes an openssl public key file which is installed on the end user's system. Each PBI includes several signatures for the content archive and installation and removal scripts. During the PBI installation process, these signatures are checked to confirm that the archive has not been tampered with during transit. This key file is also used to associate a particular PBI with a parent repository for upgrade purposes, since it is possible that multiple repositories will have the same applications.&lt;br /&gt;
&lt;br /&gt;
* '''Root password not required:''' most applications can be installed and upgraded by user (non-root) accounts. This allows enhanced security in office or home situations, where users can now add/remove desktop applications without needing access to the root account. PBIs that impact on the security of the system (e.g. installing a web server) will require root access.&lt;br /&gt;
&lt;br /&gt;
* '''Implementation:''' the previous PBI design was developed in QT/KDE C++, making it inappropriate for use at the command line. The new format is implemented 100% in shell and is comprised of command-line utilities, each with an associated man page. These utilities are discussed in more detail in the rest of this section.&lt;br /&gt;
&lt;br /&gt;
'''Additional Resources:'''&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/pbi9-slides.pdf The PBI Format Re-implemented for Free/PC-BSD (conference slides)]&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/asiabsdcon2011-pbi9.pdf The PBI Format Re-implemented for Free/PC-BSD (formal paper)]&lt;br /&gt;
&lt;br /&gt;
[[PBI9 Format|The PBI Format for 9.0 and Beyond]]&lt;br /&gt;
&lt;br /&gt;
=== Release History ===&lt;br /&gt;
* '''0.9.6''' (11-07-11)&lt;br /&gt;
- Fix some bugs doing cleanup of stagedir / build directories&lt;br /&gt;
&lt;br /&gt;
- Properly kill fetch process when canceling a download&lt;br /&gt;
&lt;br /&gt;
- Improve buildworld on FreeBSD to use /usr/src if it already has source&lt;br /&gt;
&lt;br /&gt;
- Fix some random warnings when building via sudo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.5''' (11-03-11)&lt;br /&gt;
- Add sizes of PBIs to the meta index files&lt;br /&gt;
&lt;br /&gt;
- Fix bug adding default icon to PBIs when none is specified&lt;br /&gt;
&lt;br /&gt;
- Fix handling of PBI_PROGREVISION&lt;br /&gt;
&lt;br /&gt;
- Make sure we unmount nullfs mounts completely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.4''' (10-19-11)&lt;br /&gt;
- Fix issue using system-fonts in PBIs&lt;br /&gt;
&lt;br /&gt;
- Fix issue removing files which have been set r--&lt;br /&gt;
&lt;br /&gt;
- Slow down fetch process to fix issues with fetch protocol errors&lt;br /&gt;
&lt;br /&gt;
- Fix bug coping linux libraries into final PBI file&lt;br /&gt;
&lt;br /&gt;
- Allow user settings in external-links to overwrite auto-detected values&lt;br /&gt;
&lt;br /&gt;
- Fix bug running &amp;quot;stat&amp;quot; on files with spaces in name&lt;br /&gt;
&lt;br /&gt;
- Validate the build checksum before doing patching&lt;br /&gt;
&lt;br /&gt;
- Speed up builds with optional --tmpfs flags&lt;br /&gt;
&lt;br /&gt;
- Add priority system to building modules&lt;br /&gt;
&lt;br /&gt;
- Fix issues setting proxy support from pbi.conf / pcbsd.conf files&lt;br /&gt;
&lt;br /&gt;
- Validate repo URL's when creating .rpo file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.3''' (07-18-11)&lt;br /&gt;
- Unset variables between auto-builds&lt;br /&gt;
&lt;br /&gt;
- Fixed some warnings with 'cut' when parsing i18n strings&lt;br /&gt;
&lt;br /&gt;
- When doing auto-builds, run through alphabetically&lt;br /&gt;
&lt;br /&gt;
- Increase check frequency when first trying to download index's&lt;br /&gt;
&lt;br /&gt;
- Speed up the hashdir merging&lt;br /&gt;
&lt;br /&gt;
- Show repo MD5 with listings&lt;br /&gt;
&lt;br /&gt;
- If no index files, do not fail on listing, just show empty repo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.2''' (05-23-11)&lt;br /&gt;
- Fixed usage errors with &amp;quot;tr&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
- Syntax fixes when trying to install app with no meta-data&lt;br /&gt;
  &lt;br /&gt;
- Fixed some bugs with binary patching&lt;br /&gt;
  &lt;br /&gt;
- Fixed auto-builder using the PBI_BUILDKEY in modules pbi.conf file&lt;br /&gt;
  &lt;br /&gt;
- When building ports, don't export PREFIX since it confuses some linux ports&lt;br /&gt;
  &lt;br /&gt;
- Perform check if user is root, if PBI is flagged root-only&lt;br /&gt;
  &lt;br /&gt;
- Auto-builder now checks if port is compatible with arch type of system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.1''' - Initial public release (05/3/11)&lt;br /&gt;
&lt;br /&gt;
=== What is the PBI format? ===&lt;br /&gt;
&lt;br /&gt;
The idea behind the PBI format is that one of the things holding back mainstream adoption of open source desktops is the package management format. With almost all open source desktops, software is simply treated as part of the operating system. Thus, when performing an update of some seemingly trivial application, you run the risk of potentially needing to upgrade other packages which could break other critical parts of your desktop. &lt;br /&gt;
&lt;br /&gt;
While package management systems have gotten better at resolving these dependency issues, trying to fix conflicts and prevent breakage before it occurs, they still don't address the underlying problem: every software package is a part of the system, and pulling on any one thread has the potential of causing a break somewhere farther down the line.&lt;br /&gt;
&lt;br /&gt;
The PBI format tries to correct this underlying flaw. Rather than making every application a part of the base system, PBIs are self-contained, including their own dependent library tree and related data. As a result, when you install a PBI there are no dependency issues to resolve, and applications can be added or removed freely, without fear of causing breakage to the desktop or any other installed software.&lt;br /&gt;
&lt;br /&gt;
=== Installing PBI Manager ===&lt;br /&gt;
&lt;br /&gt;
If you are running PC-BSD 9 or higher, then the PBI Manager is already installed, and you can use it via the command-line, or a front-end such as the AppCafe™. &lt;br /&gt;
&lt;br /&gt;
FreeBSD users can install it from the [http://www.freshports.org/ports-mgmt/pbi-manager ports tree]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users interested in installing the development version from our [http://trac.pcbsd.org/brower/pcbsd/current/src-sh/pbi-manager/ SVN repository] can do so with the following commands:&lt;br /&gt;
&lt;br /&gt;
 '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pcbsd/current/src-sh/pbi-manager&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 '''cd pbi-manager'''&lt;br /&gt;
 '''make install'''&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The development version may be unstable / buggy, use at your own risk'''&lt;br /&gt;
&lt;br /&gt;
=== Getting PBI Files ===&lt;br /&gt;
&lt;br /&gt;
The PC-BSD project has begun building PBIs which work with PBI Manager for FreeBSD/PC-BSD 9. A list of approved &amp;amp; available PBIs can be viewed with '''pbi_info -i''' or '''pbi_browser''', and then installed with '''pbi_add -r &amp;lt;pbiname&amp;gt;'''. Until 9.0 is released the number of available PBIs will remain small but may be downloaded directly from the build server:&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild.pcbsd.org/index.php?ver=9 9.x i386 PBIs]&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild64.pcbsd.org/index.php?ver=9 9.x amd64 PBIs]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' PBI files previously created for PC-BSD 7.x/8.x will NOT work with PBI Manager, these are specific to PC-BSD 7/8.&lt;br /&gt;
&lt;br /&gt;
===Underlying File / Directory Structure===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The underlying files / directories used by PBI Manager are as follows:&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/etc/pbi.conf''': location of the PBI Manager configuration file &lt;br /&gt;
&lt;br /&gt;
'''/usr/pbi/''': where PBIs are installed on the system&lt;br /&gt;
&lt;br /&gt;
'''/var/db/pbi/''': contains data files related to installed PBIs and repositories &lt;br /&gt;
&lt;br /&gt;
'''/usr/local/sbin/pbi_*''': location of the PBI Manager commands&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/share/pbi-manager/module-examples/convertoldmod.sh''': script which can be used to convert an existing 7.x/8.x PBI module to the new 9.x format.&lt;br /&gt;
&lt;br /&gt;
=== Feedback / Reporting Problems ===&lt;br /&gt;
&lt;br /&gt;
Feedback, problem reports, and general discussion are welcome on the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers Mailing list]. &lt;br /&gt;
&lt;br /&gt;
=== Command Reference ===&lt;br /&gt;
&lt;br /&gt;
The following is a list of commands installed by the pbi-manager, along with a small synopsis of each. For more details, please refer to the command's man page.&lt;br /&gt;
&lt;br /&gt;
==== pbi_add(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_add''', the '''pbi_add''' command is used for adding/installing PBIs on a system, either from a local file or remotely from a repository. This utility supports the options listed in Table 6.2.4.1: &lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.1: pbi_add Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-f'''}}            &lt;br /&gt;
{{Tbl-line|align=left|Force installation, overwriting an already installed copy of the application}}&lt;br /&gt;
|- &lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt; &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-g'''}}            &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Get and show path to icon/images for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|'''-i'''}}            &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|Display information about specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-l'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display LICENSE for specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remote fetch installation file from update server. The system architecture and version will be automatically determined to fetch the correct file.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-v'''}}             &lt;br /&gt;
{{Tbl-line|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 9 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation/removal of this PBI file.}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 10 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''--licagree'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Agree to LICENSE terms and conditions.  Viewing the license can be done with -l flag}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 11 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-checksig'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 12 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksum'''}}  &lt;br /&gt;
{{Tbl-line|align=left|Skip the checksum verification of the archive data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 13 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using shared hash dir which uses hard-links to share files between applications}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 14 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--repo repoid'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which repository to use}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 15 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--rArch arch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Manually specify the PBI architecture type of i386 or amd64}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 16 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--rVer version'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which version of the PBI to install}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommend that users first use the -e and --checkscript options to view archive contents and installation scripts prior to installing a PBI file.&lt;br /&gt;
&lt;br /&gt;
To install a PBI, use: '''pbi_add -r PBINAME'''. The following example will install the alpine PBI:&lt;br /&gt;
&lt;br /&gt;
 '''pbi_add -r alpine'''&lt;br /&gt;
 Downloading ftp://ftp.pcbsd.org/pub/mirror/PBI/mail/alpine/9/x32/alpine-2.00_3-i386.pbi&lt;br /&gt;
 /usr/pbi/.alpine-2.00_3-i386.pbi.42391   100% of  11 MB 295 kBps 00m00s&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to: /usr/pbi/alpine-i386&lt;br /&gt;
 Installed: Alpine-2.00_3&lt;br /&gt;
&lt;br /&gt;
==== pbi_addrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_addrepo''' command is used to register a new PBI repository on a system. If the '''pbid''' daemon is running, the repository's index and meta files will be automatically fetched and made ready for browsing. The command has one argument, the name of the repository file. Repository files have a .rpo extension and are created with the '''pbi_makerepo''' command.&lt;br /&gt;
&lt;br /&gt;
==== pbi_autobuild(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_autobuild''' command is used on the PBI build system to build any out-of-date or new packages. The utility is also of interest to PBI testers and system administrators who create and maintain their own internal repository of PBIs. It can traverse the FreeBSD ports and Meta-data trees, building missing PBI files or PBIs in which the target port version has been updated. Table 6.2.4.3 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.3: pbi_autobuild Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the directory containing the PBI configuration modules data to traverse. Any found pbi.conf files will be parsed, and if PBI_MAKEPORT is set, the target port will be used for the build. If PBI_MAKEPORT is unset, the auto-build will attempt to match the module to a FreeBSD port based upon the dirname of pbi.conf}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir; defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-h script'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a helper script to call after building a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|The directory to place the finished PBI files. Also used to determine which apps are in need of a rebuild if the associated FreeBSD port has been updated.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--genpatch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|When building a new PBI, check for archived copies, and generate smaller patch updates to the new version (*.pbp files)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--keep num'''}}&lt;br /&gt;
{{Tbl-line|align=left|When building new PBIs, keep &amp;lt;num&amp;gt; copies of past versions of working PBI in &amp;lt;outdir&amp;gt;/archived/ folder. These archived copies can be used with the --genpatch command to generate update patch files.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any PBIs which no longer have an associated module in confdir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}            &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_browser(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_browser''' command provides a CLI front-end to browsing a repository's available PBIs. Options for viewing categories and searching by keyword are available, and once the desired PBI is located, it will show the '''pbi_add''' command which can be used to install the application. Table 6.2.4.4 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.4: pbi_browser Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Displays a list of PBIs in the specified category}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-s search'''}}&lt;br /&gt;
{{Tbl-line|align=left|Search for PBIs containing the specified string in the name, description, or keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--listcats'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List the available categories}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--viewall'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi.conf(5)====&lt;br /&gt;
&lt;br /&gt;
pbi.conf is an ASCII text configuration file containing values that are used by the various '''pbi_*''' commands. Table 6.2.4.5 lists the supported variables.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.5: pbi_conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=20%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=80%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_INDEXREFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Number of hours. How often pbid refreshes the index/meta files from repos. Default is every 24 hours.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYPASS'''}}&lt;br /&gt;
{{Tbl-line|align=left|Password used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYPORT'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server port number.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYTYPE'''}}&lt;br /&gt;
{{Tbl-line|align=left|Can be HTTP or SOCKS5.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYURL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server IP address.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYUSER'''}}&lt;br /&gt;
{{Tbl-line|align=left|Username used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBID_REFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Wakeup time in seconds for pbid to run its checks.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_create(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_create''' command provides a way for packagers to manually specify a target directory to be compressed into a PBI file. The option '''-b''' can also be used to re-package an already installed PBI back to an archive. This command replaces the 8.x PBI Module Builder functionality. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.6 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.6: pbi_create Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the author for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-b'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Make a backup of an installed PBI. When using this option specify the target PBI name instead of [pbidir]}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a default icon for this PBI, relative to pbidir/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a name for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Place the finished .pbi file into the specified directory. Defaults to $HOME/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p port'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the given port to get PBI name / version from}}&lt;br /&gt;
|-   &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r version'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a version for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-u weburl'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a website URL for the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_delete(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_delete''', the '''pbi_delete''' command removes an installed PBI from the system. It also schedules cleaning for the shared library directory, which is performed by '''pbid'''. Table 6.2.4.7 summarizes its options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.7: pbi_delete Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--clean-hdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Perform a full cleaning of the shared-hash dir, removing any unused files. This should only need to be done after a system crash or failure in removing a PBI via normal methods.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When removing a PBI, you must give its full name. The full name can be found in the output of '''pbi_info'''. The following example searches for the emacs PBI and removes it:&lt;br /&gt;
 &lt;br /&gt;
 '''pbi_info | grep ntop'''&lt;br /&gt;
 ntop-4.0.1_1-i386&lt;br /&gt;
 '''pbi_delete -v ntop-4.0.1_1-i386'''&lt;br /&gt;
 Running pre-removal script: /var/db/pbi/installed/ntop-4.0.1_1-i386/pre-remove.sh&lt;br /&gt;
 Removing: /usr/pbi/ntop-i386&lt;br /&gt;
 Removing: /var/db/pbi/installed/ntop-4.0.1_1-i386&lt;br /&gt;
&lt;br /&gt;
==== pbi_deleterepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_deleterepo''' command can be used to remove a registered repository from the system. It takes the repository's ID as the only command argument.&lt;br /&gt;
&lt;br /&gt;
==== pbi_icon(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_icon''' command provides a number of options for adding desktop icons, menu entries, and mime data for an installed PBI. Not all PBIs will contain desktop/menu/mime data. Additionally, the window manager must be [http://en.wikipedia.org/wiki/Xdg XDG]-compliant to understand a PBI's icon and mime settings. Table 6.2.4.9 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.9: pbi_icon Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant mime information, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any PATH links to ~/bin as user or to LOCALBASE as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any any PATH links to ~/bin as user or to LOCALBASE as root}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_indextool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_indextool''' command is useful for repository maintainers. It allows the adding/removing of PBI files available in a particular repository INDEX file without needing to hand-edit the file. Table 6.2.4.10 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.10: pbi_indextool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a PBI to the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes a PBI from the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_info(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_info''' command, the '''pbi_info''' command is used to determine which PBIs are currently installed. Table 6.2.4.11 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.11: pbi_info Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List all PBIs installed on the system, same as running pbi_info without an argument.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs from any repo}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}     &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_listrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_listrepo''' command manages installed repositories on a system. Table 6.2.4.12 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.12: pbi_listrepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--down'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid down a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-mirror URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Change the specified repoid's mirror URL}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--up'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid up a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command without any options to list the IDs of the available repositories.&lt;br /&gt;
&lt;br /&gt;
==== pbi_makepatch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makepatch''' command is automatically used by '''pbi_autobuild''' to create small *.pbp (Push Button Patch) files. These files can be downloaded to a user's system and used to update a PBI's version without re-downloading the entire archive. This allows users to download only the incremental changes when a PBI is upgraded. The command can also be run manually by providing two PBI archives to compare and generate a patch file for.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.13 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.13: pbi_makepatch Options&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Save the resulting .PBP file to the specified directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the specified openssl key to digitally sign the patch file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makeport(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makeport''' command can be used by packagers to build a target FreeBSD port and convert it into a PBI file. Many options are provided to fine-tune the build process, and meta-data modules can also be specified to further improve the resulting PBI file. The first time this command is run, it will build a fresh chroot sandbox environment which can be used for clean-room building of the target port without affecting the host system. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Starting in version '''0.9.7''' the pbi_makeport command has support for using [http://www.freshports.org/devel/ccache/ ccache] to speed up the compile process. If '''ccache''' is installed on the host system, and the CCACHE_DIR variable is set, the pbi_makeport command will automatically utilize it for the port compile phase. This can be disabled by setting NO_CCACHE=yes in /etc/pbi-make.conf on the host system, or as an optional make flag in a modules pbi.conf file. &lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.14 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.14: pbi_makeport Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-B'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Build-only, after the port make process has finished, do not generate the PBI file. Generally used with -k to build a port before running pbi_create manually.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-k'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Keep the build files after a success or failure compiling/building the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|The directory to place the finished PBI file, defaults to user's $HOME directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p prefix'''}}&lt;br /&gt;
{{Tbl-line|align=left|Manually provide a PREFIX, which determines the location where the PBI will end up being installed on the end-user's system.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--delbuild'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any existing build dirs before starting the build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--mkdebug'''}}&lt;br /&gt;
{{Tbl-line|align=left|Will drop to a debugging shell should the port make fail}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-pruning of non REQUIREDBY ports after the compile phase.  By default any ports which are used solely for building and which are not required for program execution will be pruned.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makerepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makerepo''' command allows repository maintainers to create a single *.rpo file containing various information about the new repository. This .rpo file can then be installed on the target system with '''pbi_addrepo'''. Table 6.2.4.15 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.15: pbi_makerepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--desc description'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. Description of the repo to be shown in the repo list}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--key keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. OpenSSL public key used to verify the digital signature of PBIs installed from this repo}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--mirror URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. The URL to download PBIs and updates from}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--url URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. The URL to use when downloading the master INDEX files of available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_metatool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_metatool''' command provides a way for repository maintainers to modify the PBI meta-data in their repository in order to add or remove application categories or specified PBIs. This meta-data may contain information such as Name, Description, Icon, Keywords, License and more for the respective PBI file. Table 6.2.4.16 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.16: pbi_metatool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Remove a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_patch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_patch''' command is used to update an installed PBI to a different version using the small diff Push Button Patch *.pbp file. This allows the user to perform an incremental upgrade of an installed PBI. The available options are summarized in Table 6.2.4.17.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.17: pbi_patch Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-g'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Extract image data from header, commonly used for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display information about this PBI file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when only extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation / removal of this PBI file.  Recommended that these be checked if the PBI file is suspect in any way.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksig'''}}&lt;br /&gt;
{{Tbl-line|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir, which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_update(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update''' command is used to display information about which PBIs have available updates from their repository and to perform the updates. Table 6.2.4.18 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.18: pbi_update Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Check-only the specified PBI for available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--check-all'''}}&lt;br /&gt;
{{Tbl-line|align=left|Run a full check of all installed PBIs and display list of available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-disable-auto'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--enable-auto'''}}&lt;br /&gt;
{{Tbl-line|align=left|Enable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--update-all'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Update all installed PBIs to the latest versions available.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi_update_hashdir(1)====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update_hashdir''' command is used by the '''pbid''' daemon to merge the contents of a PBI into the hashdir.&lt;br /&gt;
&lt;br /&gt;
==== pbid(8) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbid''' command runs a small daemon which performs maintenance of installed PBIs, merges files into the shared hashdir, fetches the repository INDEX and meta files, and makes the adding and removing of PBIs much faster. It will automatically be started from the /usr/local/etc/rc.d/pbid startup script if pbid_enable=&amp;quot;YES&amp;quot; is in the /etc/rc.conf file.&lt;br /&gt;
&lt;br /&gt;
This utility supports the option summarized in table 6.2.4.19:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.19: pbid Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output when the daemon starts}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This command logs its output to /var/log/pbid.log. Check this log for errors should you experience any problems with PBI maintenance.&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Manager</id>
		<title>PBI Manager</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Manager"/>
				<updated>2011-11-07T19:00:01Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Release History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Using AppCafe™|forward=Update Manager}}&lt;br /&gt;
PC-BSD 9.0 introduced PBI Manager, a suite of command line utilities for managing PBIs. PBI Manager's command-line tools can be used to install, remove, create and manage PBIs. It is also available for  [[#Installing_PBI_Manager|FreeBSD systems]]. The PBI Manager is released under the [http://www.freebsd.org/copyright/freebsd-license.html BSD license].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
The new PBI format introduces the following features:&lt;br /&gt;
&lt;br /&gt;
* '''Upgrade deltas:''' since PBIs are self-contained, installation files tend to be large. In the previous implementation, updating a PBI required the re-downloading of the entire installation archive. For larger applications this could be a time-consuming process, especially over low bandwidth connections. The new PBI specification performs updates using binary diff patches known as PBP (Push Button Patch) files. PBPs are a fraction of the PBI's size; in some cases less than 5% of the original PBI archive. An upgrade automatically checks for for the presence of a PBP file and attempts to use it, only falling back to the original archive should the process fail.&lt;br /&gt;
&lt;br /&gt;
* '''Library and file sharing:''' in the previous implementation of the PBI format it was common that identical files existed between various applications. These duplicates, while necessary to provide self-contained functionality, wasted both disk and runtime memory. This waste of space has been greatly reduced through the use of a hash-dir directory where libraries and common files are shared through a system of hard links. When an identical file is found in a PBI, the original will be removed and a hard-link stored in the hash-dir. After a PBI has been removed, any unneeded files left in the hash-dir are cleaned up by the pbid(8) daemon which monitors and maintains the integrity of the shared files.&lt;br /&gt;
&lt;br /&gt;
* '''Repository management:''' allows administrators and PBI builders to create and manage their own repositories of PBIs. This repository system provides a number of tools for PBI distribution, release management, and repository browsing. &lt;br /&gt;
&lt;br /&gt;
* '''Digitally signed PBIs:''' each repository includes an openssl public key file which is installed on the end user's system. Each PBI includes several signatures for the content archive and installation and removal scripts. During the PBI installation process, these signatures are checked to confirm that the archive has not been tampered with during transit. This key file is also used to associate a particular PBI with a parent repository for upgrade purposes, since it is possible that multiple repositories will have the same applications.&lt;br /&gt;
&lt;br /&gt;
* '''Root password not required:''' most applications can be installed and upgraded by user (non-root) accounts. This allows enhanced security in office or home situations, where users can now add/remove desktop applications without needing access to the root account. PBIs that impact on the security of the system (e.g. installing a web server) will require root access.&lt;br /&gt;
&lt;br /&gt;
* '''Implementation:''' the previous PBI design was developed in QT/KDE C++, making it inappropriate for use at the command line. The new format is implemented 100% in shell and is comprised of command-line utilities, each with an associated man page. These utilities are discussed in more detail in the rest of this section.&lt;br /&gt;
&lt;br /&gt;
'''Additional Resources:'''&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/pbi9-slides.pdf The PBI Format Re-implemented for Free/PC-BSD (conference slides)]&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/asiabsdcon2011-pbi9.pdf The PBI Format Re-implemented for Free/PC-BSD (formal paper)]&lt;br /&gt;
&lt;br /&gt;
[[PBI9 Format|The PBI Format for 9.0 and Beyond]]&lt;br /&gt;
&lt;br /&gt;
=== Release History ===&lt;br /&gt;
* '''0.9.6''' (11-07-11)&lt;br /&gt;
- Fix some bugs doing cleanup of stagedir / build directories&lt;br /&gt;
&lt;br /&gt;
- Properly kill fetch process when canceling a download&lt;br /&gt;
&lt;br /&gt;
- Improve buildworld on FreeBSD to use /usr/src if it already has source&lt;br /&gt;
&lt;br /&gt;
- Fix some random warnings when building via sudo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.5''' (11-03-11)&lt;br /&gt;
- Add sizes of PBIs to the meta index files&lt;br /&gt;
&lt;br /&gt;
- Fix bug adding default icon to PBIs when none is specified&lt;br /&gt;
&lt;br /&gt;
- Fix handling of PBI_PROGREVISION&lt;br /&gt;
&lt;br /&gt;
- Make sure we unmount nullfs mounts completely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.4''' (10-19-11)&lt;br /&gt;
- Fix issue using system-fonts in PBIs&lt;br /&gt;
&lt;br /&gt;
- Fix issue removing files which have been set r--&lt;br /&gt;
&lt;br /&gt;
- Slow down fetch process to fix issues with fetch protocol errors&lt;br /&gt;
&lt;br /&gt;
- Fix bug coping linux libraries into final PBI file&lt;br /&gt;
&lt;br /&gt;
- Allow user settings in external-links to overwrite auto-detected values&lt;br /&gt;
&lt;br /&gt;
- Fix bug running &amp;quot;stat&amp;quot; on files with spaces in name&lt;br /&gt;
&lt;br /&gt;
- Validate the build checksum before doing patching&lt;br /&gt;
&lt;br /&gt;
- Speed up builds with optional --tmpfs flags&lt;br /&gt;
&lt;br /&gt;
- Add priority system to building modules&lt;br /&gt;
&lt;br /&gt;
- Fix issues setting proxy support from pbi.conf / pcbsd.conf files&lt;br /&gt;
&lt;br /&gt;
- Validate repo URL's when creating .rpo file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.3''' (07-18-11)&lt;br /&gt;
- Unset variables between auto-builds&lt;br /&gt;
&lt;br /&gt;
- Fixed some warnings with 'cut' when parsing i18n strings&lt;br /&gt;
&lt;br /&gt;
- When doing auto-builds, run through alphabetically&lt;br /&gt;
&lt;br /&gt;
- Increase check frequency when first trying to download index's&lt;br /&gt;
&lt;br /&gt;
- Speed up the hashdir merging&lt;br /&gt;
&lt;br /&gt;
- Show repo MD5 with listings&lt;br /&gt;
&lt;br /&gt;
- If no index files, do not fail on listing, just show empty repo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.2''' (05-23-11)&lt;br /&gt;
- Fixed usage errors with &amp;quot;tr&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
- Syntax fixes when trying to install app with no meta-data&lt;br /&gt;
  &lt;br /&gt;
- Fixed some bugs with binary patching&lt;br /&gt;
  &lt;br /&gt;
- Fixed auto-builder using the PBI_BUILDKEY in modules pbi.conf file&lt;br /&gt;
  &lt;br /&gt;
- When building ports, don't export PREFIX since it confuses some linux ports&lt;br /&gt;
  &lt;br /&gt;
- Perform check if user is root, if PBI is flagged root-only&lt;br /&gt;
  &lt;br /&gt;
- Auto-builder now checks if port is compatible with arch type of system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.1''' - Initial public release (05/3/11)&lt;br /&gt;
&lt;br /&gt;
=== What is the PBI format? ===&lt;br /&gt;
&lt;br /&gt;
The idea behind the PBI format is that one of the things holding back mainstream adoption of open source desktops is the package management format. With almost all open source desktops, software is simply treated as part of the operating system. Thus, when performing an update of some seemingly trivial application, you run the risk of potentially needing to upgrade other packages which could break other critical parts of your desktop. &lt;br /&gt;
&lt;br /&gt;
While package management systems have gotten better at resolving these dependency issues, trying to fix conflicts and prevent breakage before it occurs, they still don't address the underlying problem: every software package is a part of the system, and pulling on any one thread has the potential of causing a break somewhere farther down the line.&lt;br /&gt;
&lt;br /&gt;
The PBI format tries to correct this underlying flaw. Rather than making every application a part of the base system, PBIs are self-contained, including their own dependent library tree and related data. As a result, when you install a PBI there are no dependency issues to resolve, and applications can be added or removed freely, without fear of causing breakage to the desktop or any other installed software.&lt;br /&gt;
&lt;br /&gt;
=== Installing PBI Manager ===&lt;br /&gt;
&lt;br /&gt;
If you are running PC-BSD 9 or higher, then the PBI Manager is already installed, and you can use it via the command-line, or a front-end such as the AppCafe™. &lt;br /&gt;
&lt;br /&gt;
FreeBSD users can install it from the [http://www.freshports.org/ports-mgmt/pbi-manager ports tree]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users interested in installing the development version from our [http://trac.pcbsd.org/brower/pcbsd/current/src-sh/pbi-manager/ SVN repository] can do so with the following commands:&lt;br /&gt;
&lt;br /&gt;
 '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pcbsd/current/src-sh/pbi-manager&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 '''cd pbi-manager'''&lt;br /&gt;
 '''make install'''&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The development version may be unstable / buggy, use at your own risk'''&lt;br /&gt;
&lt;br /&gt;
=== Getting PBI Files ===&lt;br /&gt;
&lt;br /&gt;
The PC-BSD project has begun building PBIs which work with PBI Manager for FreeBSD/PC-BSD 9. A list of approved &amp;amp; available PBIs can be viewed with '''pbi_info -i''' or '''pbi_browser''', and then installed with '''pbi_add -r &amp;lt;pbiname&amp;gt;'''. Until 9.0 is released the number of available PBIs will remain small but may be downloaded directly from the build server:&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild.pcbsd.org/index.php?ver=9 9.x i386 PBIs]&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild64.pcbsd.org/index.php?ver=9 9.x amd64 PBIs]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' PBI files previously created for PC-BSD 7.x/8.x will NOT work with PBI Manager, these are specific to PC-BSD 7/8.&lt;br /&gt;
&lt;br /&gt;
===Underlying File / Directory Structure===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The underlying files / directories used by PBI Manager are as follows:&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/etc/pbi.conf''': location of the PBI Manager configuration file &lt;br /&gt;
&lt;br /&gt;
'''/usr/pbi/''': where PBIs are installed on the system&lt;br /&gt;
&lt;br /&gt;
'''/var/db/pbi/''': contains data files related to installed PBIs and repositories &lt;br /&gt;
&lt;br /&gt;
'''/usr/local/sbin/pbi_*''': location of the PBI Manager commands&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/share/pbi-manager/module-examples/convertoldmod.sh''': script which can be used to convert an existing 7.x/8.x PBI module to the new 9.x format.&lt;br /&gt;
&lt;br /&gt;
=== Feedback / Reporting Problems ===&lt;br /&gt;
&lt;br /&gt;
Feedback, problem reports, and general discussion are welcome on the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers Mailing list]. &lt;br /&gt;
&lt;br /&gt;
=== Command Reference ===&lt;br /&gt;
&lt;br /&gt;
The following is a list of commands installed by the pbi-manager, along with a small synopsis of each. For more details, please refer to the command's man page.&lt;br /&gt;
&lt;br /&gt;
==== pbi_add(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_add''', the '''pbi_add''' command is used for adding/installing PBIs on a system, either from a local file or remotely from a repository. This utility supports the options listed in Table 6.2.4.1: &lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.1: pbi_add Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=80%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-f'''}}            &lt;br /&gt;
{{Tbl-line|align=left|Force installation, overwriting an already installed copy of the application}}&lt;br /&gt;
|- &lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt; &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-g'''}}            &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Get and show path to icon/images for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|'''-i'''}}            &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|Display information about specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-l'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display LICENSE for specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remote fetch installation file from update server. The system architecture and version will be automatically determined to fetch the correct file.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-v'''}}             &lt;br /&gt;
{{Tbl-line|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 9 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation/removal of this PBI file.}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 10 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''--licagree'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Agree to LICENSE terms and conditions.  Viewing the license can be done with -l flag}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 11 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-checksig'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 12 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksum'''}}  &lt;br /&gt;
{{Tbl-line|align=left|Skip the checksum verification of the archive data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 13 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using shared hash dir which uses hard-links to share files between applications}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 14 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--repo repoid'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which repository to use}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 15 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--rArch arch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Manually specify the PBI architecture type of i386 or amd64}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 16 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--rVer version'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which version of the PBI to install}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommend that users first use the -e and --checkscript options to view archive contents and installation scripts prior to installing a PBI file.&lt;br /&gt;
&lt;br /&gt;
To install a PBI, use: '''pbi_add -r PBINAME'''. The following example will install the alpine PBI:&lt;br /&gt;
&lt;br /&gt;
 '''pbi_add -r alpine'''&lt;br /&gt;
 Downloading ftp://ftp.pcbsd.org/pub/mirror/PBI/mail/alpine/9/x32/alpine-2.00_3-i386.pbi&lt;br /&gt;
 /usr/pbi/.alpine-2.00_3-i386.pbi.42391   100% of  11 MB 295 kBps 00m00s&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to: /usr/pbi/alpine-i386&lt;br /&gt;
 Installed: Alpine-2.00_3&lt;br /&gt;
&lt;br /&gt;
==== pbi_addrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_addrepo''' command is used to register a new PBI repository on a system. If the '''pbid''' daemon is running, the repository's index and meta files will be automatically fetched and made ready for browsing. The command has one argument, the name of the repository file. Repository files have a .rpo extension and are created with the '''pbi_makerepo''' command.&lt;br /&gt;
&lt;br /&gt;
==== pbi_autobuild(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_autobuild''' command is used on the PBI build system to build any out-of-date or new packages. The utility is also of interest to PBI testers and system administrators who create and maintain their own internal repository of PBIs. It can traverse the FreeBSD ports and Meta-data trees, building missing PBI files or PBIs in which the target port version has been updated. Table 6.2.4.3 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.3: pbi_autobuild Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the directory containing the PBI configuration modules data to traverse. Any found pbi.conf files will be parsed, and if PBI_MAKEPORT is set, the target port will be used for the build. If PBI_MAKEPORT is unset, the auto-build will attempt to match the module to a FreeBSD port based upon the dirname of pbi.conf}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir; defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-h script'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a helper script to call after building a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|The directory to place the finished PBI files. Also used to determine which apps are in need of a rebuild if the associated FreeBSD port has been updated.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--genpatch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|When building a new PBI, check for archived copies, and generate smaller patch updates to the new version (*.pbp files)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--keep num'''}}&lt;br /&gt;
{{Tbl-line|align=left|When building new PBIs, keep &amp;lt;num&amp;gt; copies of past versions of working PBI in &amp;lt;outdir&amp;gt;/archived/ folder. These archived copies can be used with the --genpatch command to generate update patch files.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any PBIs which no longer have an associated module in confdir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}            &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_browser(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_browser''' command provides a CLI front-end to browsing a repository's available PBIs. Options for viewing categories and searching by keyword are available, and once the desired PBI is located, it will show the '''pbi_add''' command which can be used to install the application. Table 6.2.4.4 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.4: pbi_browser Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Displays a list of PBIs in the specified category}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-s search'''}}&lt;br /&gt;
{{Tbl-line|align=left|Search for PBIs containing the specified string in the name, description, or keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--listcats'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List the available categories}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--viewall'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi.conf(5)====&lt;br /&gt;
&lt;br /&gt;
pbi.conf is an ASCII text configuration file containing values that are used by the various '''pbi_*''' commands. Table 6.2.4.5 lists the supported variables.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.5: pbi_conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=75%}}&lt;br /&gt;
{{Tbl-title|width=20%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=80%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_INDEXREFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Number of hours. How often pbid refreshes the index/meta files from repos. Default is every 24 hours.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYPASS'''}}&lt;br /&gt;
{{Tbl-line|align=left|Password used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYPORT'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server port number.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYTYPE'''}}&lt;br /&gt;
{{Tbl-line|align=left|Can be HTTP or SOCKS5.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYURL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server IP address.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYUSER'''}}&lt;br /&gt;
{{Tbl-line|align=left|Username used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBID_REFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Wakeup time in seconds for pbid to run its checks.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_create(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_create''' command provides a way for packagers to manually specify a target directory to be compressed into a PBI file. The option '''-b''' can also be used to re-package an already installed PBI back to an archive. This command replaces the 8.x PBI Module Builder functionality. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.6 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.6: pbi_create Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the author for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-b'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Make a backup of an installed PBI. When using this option specify the target PBI name instead of [pbidir]}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a default icon for this PBI, relative to pbidir/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a name for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Place the finished .pbi file into the specified directory. Defaults to $HOME/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p port'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the given port to get PBI name / version from}}&lt;br /&gt;
|-   &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r version'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a version for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-u weburl'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a website URL for the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_delete(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_delete''', the '''pbi_delete''' command removes an installed PBI from the system. It also schedules cleaning for the shared library directory, which is performed by '''pbid'''. Table 6.2.4.7 summarizes its options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.7: pbi_delete Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--clean-hdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Perform a full cleaning of the shared-hash dir, removing any unused files. This should only need to be done after a system crash or failure in removing a PBI via normal methods.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When removing a PBI, you must give its full name. The full name can be found in the output of '''pbi_info'''. The following example searches for the emacs PBI and removes it:&lt;br /&gt;
 &lt;br /&gt;
 '''pbi_info | grep ntop'''&lt;br /&gt;
 ntop-4.0.1_1-i386&lt;br /&gt;
 '''pbi_delete -v ntop-4.0.1_1-i386'''&lt;br /&gt;
 Running pre-removal script: /var/db/pbi/installed/ntop-4.0.1_1-i386/pre-remove.sh&lt;br /&gt;
 Removing: /usr/pbi/ntop-i386&lt;br /&gt;
 Removing: /var/db/pbi/installed/ntop-4.0.1_1-i386&lt;br /&gt;
&lt;br /&gt;
==== pbi_deleterepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_deleterepo''' command can be used to remove a registered repository from the system. It takes the repository's ID as the only command argument.&lt;br /&gt;
&lt;br /&gt;
==== pbi_icon(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_icon''' command provides a number of options for adding desktop icons, menu entries, and mime data for an installed PBI. Not all PBIs will contain desktop/menu/mime data. Additionally, the window manager must be [http://en.wikipedia.org/wiki/Xdg XDG]-compliant to understand a PBI's icon and mime settings. Table 6.2.4.9 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.9: pbi_icon Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant mime information, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any PATH links to ~/bin as user or to LOCALBASE as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any any PATH links to ~/bin as user or to LOCALBASE as root}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_indextool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_indextool''' command is useful for repository maintainers. It allows the adding/removing of PBI files available in a particular repository INDEX file without needing to hand-edit the file. Table 6.2.4.10 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.10: pbi_indextool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a PBI to the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes a PBI from the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_info(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_info''' command, the '''pbi_info''' command is used to determine which PBIs are currently installed. Table 6.2.4.11 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.11: pbi_info Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List all PBIs installed on the system, same as running pbi_info without an argument.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs from any repo}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}     &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_listrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_listrepo''' command manages installed repositories on a system. Table 6.2.4.12 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.12: pbi_listrepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--down'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid down a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-mirror URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Change the specified repoid's mirror URL}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--up'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid up a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command without any options to list the IDs of the available repositories.&lt;br /&gt;
&lt;br /&gt;
==== pbi_makepatch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makepatch''' command is automatically used by '''pbi_autobuild''' to create small *.pbp (Push Button Patch) files. These files can be downloaded to a user's system and used to update a PBI's version without re-downloading the entire archive. This allows users to download only the incremental changes when a PBI is upgraded. The command can also be run manually by providing two PBI archives to compare and generate a patch file for.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.13 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.13: pbi_makepatch Options&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Save the resulting .PBP file to the specified directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the specified openssl key to digitally sign the patch file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makeport(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makeport''' command can be used by packagers to build a target FreeBSD port and convert it into a PBI file. Many options are provided to fine-tune the build process, and meta-data modules can also be specified to further improve the resulting PBI file. The first time this command is run, it will build a fresh chroot sandbox environment which can be used for clean-room building of the target port without affecting the host system. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.14 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.14: pbi_makeport Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-B'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Build-only, after the port make process has finished, do not generate the PBI file. Generally used with -k to build a port before running pbi_create manually.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-k'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Keep the build files after a success or failure compiling/building the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|The directory to place the finished PBI file, defaults to user's $HOME directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p prefix'''}}&lt;br /&gt;
{{Tbl-line|align=left|Manually provide a PREFIX, which determines the location where the PBI will end up being installed on the end-user's system.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--delbuild'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any existing build dirs before starting the build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--mkdebug'''}}&lt;br /&gt;
{{Tbl-line|align=left|Will drop to a debugging shell should the port make fail}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-pruning of non REQUIREDBY ports after the compile phase.  By default any ports which are used solely for building and which are not required for program execution will be pruned.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makerepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makerepo''' command allows repository maintainers to create a single *.rpo file containing various information about the new repository. This .rpo file can then be installed on the target system with '''pbi_addrepo'''. Table 6.2.4.15 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.15: pbi_makerepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--desc description'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. Description of the repo to be shown in the repo list}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--key keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. OpenSSL public key used to verify the digital signature of PBIs installed from this repo}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--mirror URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. The URL to download PBIs and updates from}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--url URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. The URL to use when downloading the master INDEX files of available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_metatool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_metatool''' command provides a way for repository maintainers to modify the PBI meta-data in their repository in order to add or remove application categories or specified PBIs. This meta-data may contain information such as Name, Description, Icon, Keywords, License and more for the respective PBI file. Table 6.2.4.16 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.16: pbi_metatool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Remove a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_patch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_patch''' command is used to update an installed PBI to a different version using the small diff Push Button Patch *.pbp file. This allows the user to perform an incremental upgrade of an installed PBI. The available options are summarized in Table 6.2.4.17.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.17: pbi_patch Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-g'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Extract image data from header, commonly used for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display information about this PBI file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when only extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation / removal of this PBI file.  Recommended that these be checked if the PBI file is suspect in any way.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksig'''}}&lt;br /&gt;
{{Tbl-line|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir, which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_update(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update''' command is used to display information about which PBIs have available updates from their repository and to perform the updates. Table 6.2.4.18 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.18: pbi_update Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Check-only the specified PBI for available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--check-all'''}}&lt;br /&gt;
{{Tbl-line|align=left|Run a full check of all installed PBIs and display list of available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-disable-auto'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--enable-auto'''}}&lt;br /&gt;
{{Tbl-line|align=left|Enable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--update-all'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Update all installed PBIs to the latest versions available.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi_update_hashdir(1)====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update_hashdir''' command is used by the '''pbid''' daemon to merge the contents of a PBI into the hashdir.&lt;br /&gt;
&lt;br /&gt;
==== pbid(8) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbid''' command runs a small daemon which performs maintenance of installed PBIs, merges files into the shared hashdir, fetches the repository INDEX and meta files, and makes the adding and removing of PBIs much faster. It will automatically be started from the /usr/local/etc/rc.d/pbid startup script if pbid_enable=&amp;quot;YES&amp;quot; is in the /etc/rc.conf file.&lt;br /&gt;
&lt;br /&gt;
This utility supports the option summarized in table 6.2.4.19:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.19: pbid Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output when the daemon starts}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This command logs its output to /var/log/pbid.log. Check this log for errors should you experience any problems with PBI maintenance.&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Manager</id>
		<title>PBI Manager</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Manager"/>
				<updated>2011-11-07T18:59:51Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Release History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Using AppCafe™|forward=Update Manager}}&lt;br /&gt;
PC-BSD 9.0 introduced PBI Manager, a suite of command line utilities for managing PBIs. PBI Manager's command-line tools can be used to install, remove, create and manage PBIs. It is also available for  [[#Installing_PBI_Manager|FreeBSD systems]]. The PBI Manager is released under the [http://www.freebsd.org/copyright/freebsd-license.html BSD license].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
The new PBI format introduces the following features:&lt;br /&gt;
&lt;br /&gt;
* '''Upgrade deltas:''' since PBIs are self-contained, installation files tend to be large. In the previous implementation, updating a PBI required the re-downloading of the entire installation archive. For larger applications this could be a time-consuming process, especially over low bandwidth connections. The new PBI specification performs updates using binary diff patches known as PBP (Push Button Patch) files. PBPs are a fraction of the PBI's size; in some cases less than 5% of the original PBI archive. An upgrade automatically checks for for the presence of a PBP file and attempts to use it, only falling back to the original archive should the process fail.&lt;br /&gt;
&lt;br /&gt;
* '''Library and file sharing:''' in the previous implementation of the PBI format it was common that identical files existed between various applications. These duplicates, while necessary to provide self-contained functionality, wasted both disk and runtime memory. This waste of space has been greatly reduced through the use of a hash-dir directory where libraries and common files are shared through a system of hard links. When an identical file is found in a PBI, the original will be removed and a hard-link stored in the hash-dir. After a PBI has been removed, any unneeded files left in the hash-dir are cleaned up by the pbid(8) daemon which monitors and maintains the integrity of the shared files.&lt;br /&gt;
&lt;br /&gt;
* '''Repository management:''' allows administrators and PBI builders to create and manage their own repositories of PBIs. This repository system provides a number of tools for PBI distribution, release management, and repository browsing. &lt;br /&gt;
&lt;br /&gt;
* '''Digitally signed PBIs:''' each repository includes an openssl public key file which is installed on the end user's system. Each PBI includes several signatures for the content archive and installation and removal scripts. During the PBI installation process, these signatures are checked to confirm that the archive has not been tampered with during transit. This key file is also used to associate a particular PBI with a parent repository for upgrade purposes, since it is possible that multiple repositories will have the same applications.&lt;br /&gt;
&lt;br /&gt;
* '''Root password not required:''' most applications can be installed and upgraded by user (non-root) accounts. This allows enhanced security in office or home situations, where users can now add/remove desktop applications without needing access to the root account. PBIs that impact on the security of the system (e.g. installing a web server) will require root access.&lt;br /&gt;
&lt;br /&gt;
* '''Implementation:''' the previous PBI design was developed in QT/KDE C++, making it inappropriate for use at the command line. The new format is implemented 100% in shell and is comprised of command-line utilities, each with an associated man page. These utilities are discussed in more detail in the rest of this section.&lt;br /&gt;
&lt;br /&gt;
'''Additional Resources:'''&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/pbi9-slides.pdf The PBI Format Re-implemented for Free/PC-BSD (conference slides)]&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/asiabsdcon2011-pbi9.pdf The PBI Format Re-implemented for Free/PC-BSD (formal paper)]&lt;br /&gt;
&lt;br /&gt;
[[PBI9 Format|The PBI Format for 9.0 and Beyond]]&lt;br /&gt;
&lt;br /&gt;
=== Release History ===&lt;br /&gt;
* '''0.9.6''' (11-07-11)&lt;br /&gt;
- Fix some bugs doing cleanup of stagedir / build directories&lt;br /&gt;
&lt;br /&gt;
- Properly kill fetch process when canceling a download&lt;br /&gt;
&lt;br /&gt;
- Improve buildworld on FreeBSD to use /usr/src if it already has source&lt;br /&gt;
&lt;br /&gt;
- Fix some random warnings when building via sudo&lt;br /&gt;
&lt;br /&gt;
* '''0.9.5''' (11-03-11)&lt;br /&gt;
- Add sizes of PBIs to the meta index files&lt;br /&gt;
&lt;br /&gt;
- Fix bug adding default icon to PBIs when none is specified&lt;br /&gt;
&lt;br /&gt;
- Fix handling of PBI_PROGREVISION&lt;br /&gt;
&lt;br /&gt;
- Make sure we unmount nullfs mounts completely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.4''' (10-19-11)&lt;br /&gt;
- Fix issue using system-fonts in PBIs&lt;br /&gt;
&lt;br /&gt;
- Fix issue removing files which have been set r--&lt;br /&gt;
&lt;br /&gt;
- Slow down fetch process to fix issues with fetch protocol errors&lt;br /&gt;
&lt;br /&gt;
- Fix bug coping linux libraries into final PBI file&lt;br /&gt;
&lt;br /&gt;
- Allow user settings in external-links to overwrite auto-detected values&lt;br /&gt;
&lt;br /&gt;
- Fix bug running &amp;quot;stat&amp;quot; on files with spaces in name&lt;br /&gt;
&lt;br /&gt;
- Validate the build checksum before doing patching&lt;br /&gt;
&lt;br /&gt;
- Speed up builds with optional --tmpfs flags&lt;br /&gt;
&lt;br /&gt;
- Add priority system to building modules&lt;br /&gt;
&lt;br /&gt;
- Fix issues setting proxy support from pbi.conf / pcbsd.conf files&lt;br /&gt;
&lt;br /&gt;
- Validate repo URL's when creating .rpo file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.3''' (07-18-11)&lt;br /&gt;
- Unset variables between auto-builds&lt;br /&gt;
&lt;br /&gt;
- Fixed some warnings with 'cut' when parsing i18n strings&lt;br /&gt;
&lt;br /&gt;
- When doing auto-builds, run through alphabetically&lt;br /&gt;
&lt;br /&gt;
- Increase check frequency when first trying to download index's&lt;br /&gt;
&lt;br /&gt;
- Speed up the hashdir merging&lt;br /&gt;
&lt;br /&gt;
- Show repo MD5 with listings&lt;br /&gt;
&lt;br /&gt;
- If no index files, do not fail on listing, just show empty repo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.2''' (05-23-11)&lt;br /&gt;
- Fixed usage errors with &amp;quot;tr&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
- Syntax fixes when trying to install app with no meta-data&lt;br /&gt;
  &lt;br /&gt;
- Fixed some bugs with binary patching&lt;br /&gt;
  &lt;br /&gt;
- Fixed auto-builder using the PBI_BUILDKEY in modules pbi.conf file&lt;br /&gt;
  &lt;br /&gt;
- When building ports, don't export PREFIX since it confuses some linux ports&lt;br /&gt;
  &lt;br /&gt;
- Perform check if user is root, if PBI is flagged root-only&lt;br /&gt;
  &lt;br /&gt;
- Auto-builder now checks if port is compatible with arch type of system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.1''' - Initial public release (05/3/11)&lt;br /&gt;
&lt;br /&gt;
=== What is the PBI format? ===&lt;br /&gt;
&lt;br /&gt;
The idea behind the PBI format is that one of the things holding back mainstream adoption of open source desktops is the package management format. With almost all open source desktops, software is simply treated as part of the operating system. Thus, when performing an update of some seemingly trivial application, you run the risk of potentially needing to upgrade other packages which could break other critical parts of your desktop. &lt;br /&gt;
&lt;br /&gt;
While package management systems have gotten better at resolving these dependency issues, trying to fix conflicts and prevent breakage before it occurs, they still don't address the underlying problem: every software package is a part of the system, and pulling on any one thread has the potential of causing a break somewhere farther down the line.&lt;br /&gt;
&lt;br /&gt;
The PBI format tries to correct this underlying flaw. Rather than making every application a part of the base system, PBIs are self-contained, including their own dependent library tree and related data. As a result, when you install a PBI there are no dependency issues to resolve, and applications can be added or removed freely, without fear of causing breakage to the desktop or any other installed software.&lt;br /&gt;
&lt;br /&gt;
=== Installing PBI Manager ===&lt;br /&gt;
&lt;br /&gt;
If you are running PC-BSD 9 or higher, then the PBI Manager is already installed, and you can use it via the command-line, or a front-end such as the AppCafe™. &lt;br /&gt;
&lt;br /&gt;
FreeBSD users can install it from the [http://www.freshports.org/ports-mgmt/pbi-manager ports tree]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users interested in installing the development version from our [http://trac.pcbsd.org/brower/pcbsd/current/src-sh/pbi-manager/ SVN repository] can do so with the following commands:&lt;br /&gt;
&lt;br /&gt;
 '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pcbsd/current/src-sh/pbi-manager&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 '''cd pbi-manager'''&lt;br /&gt;
 '''make install'''&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The development version may be unstable / buggy, use at your own risk'''&lt;br /&gt;
&lt;br /&gt;
=== Getting PBI Files ===&lt;br /&gt;
&lt;br /&gt;
The PC-BSD project has begun building PBIs which work with PBI Manager for FreeBSD/PC-BSD 9. A list of approved &amp;amp; available PBIs can be viewed with '''pbi_info -i''' or '''pbi_browser''', and then installed with '''pbi_add -r &amp;lt;pbiname&amp;gt;'''. Until 9.0 is released the number of available PBIs will remain small but may be downloaded directly from the build server:&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild.pcbsd.org/index.php?ver=9 9.x i386 PBIs]&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild64.pcbsd.org/index.php?ver=9 9.x amd64 PBIs]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' PBI files previously created for PC-BSD 7.x/8.x will NOT work with PBI Manager, these are specific to PC-BSD 7/8.&lt;br /&gt;
&lt;br /&gt;
===Underlying File / Directory Structure===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The underlying files / directories used by PBI Manager are as follows:&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/etc/pbi.conf''': location of the PBI Manager configuration file &lt;br /&gt;
&lt;br /&gt;
'''/usr/pbi/''': where PBIs are installed on the system&lt;br /&gt;
&lt;br /&gt;
'''/var/db/pbi/''': contains data files related to installed PBIs and repositories &lt;br /&gt;
&lt;br /&gt;
'''/usr/local/sbin/pbi_*''': location of the PBI Manager commands&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/share/pbi-manager/module-examples/convertoldmod.sh''': script which can be used to convert an existing 7.x/8.x PBI module to the new 9.x format.&lt;br /&gt;
&lt;br /&gt;
=== Feedback / Reporting Problems ===&lt;br /&gt;
&lt;br /&gt;
Feedback, problem reports, and general discussion are welcome on the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers Mailing list]. &lt;br /&gt;
&lt;br /&gt;
=== Command Reference ===&lt;br /&gt;
&lt;br /&gt;
The following is a list of commands installed by the pbi-manager, along with a small synopsis of each. For more details, please refer to the command's man page.&lt;br /&gt;
&lt;br /&gt;
==== pbi_add(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_add''', the '''pbi_add''' command is used for adding/installing PBIs on a system, either from a local file or remotely from a repository. This utility supports the options listed in Table 6.2.4.1: &lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.1: pbi_add Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=80%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-f'''}}            &lt;br /&gt;
{{Tbl-line|align=left|Force installation, overwriting an already installed copy of the application}}&lt;br /&gt;
|- &lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt; &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-g'''}}            &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Get and show path to icon/images for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|'''-i'''}}            &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|Display information about specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-l'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display LICENSE for specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remote fetch installation file from update server. The system architecture and version will be automatically determined to fetch the correct file.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-v'''}}             &lt;br /&gt;
{{Tbl-line|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 9 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation/removal of this PBI file.}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 10 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''--licagree'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Agree to LICENSE terms and conditions.  Viewing the license can be done with -l flag}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 11 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-checksig'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 12 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksum'''}}  &lt;br /&gt;
{{Tbl-line|align=left|Skip the checksum verification of the archive data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 13 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using shared hash dir which uses hard-links to share files between applications}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 14 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--repo repoid'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which repository to use}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 15 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--rArch arch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Manually specify the PBI architecture type of i386 or amd64}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 16 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--rVer version'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which version of the PBI to install}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommend that users first use the -e and --checkscript options to view archive contents and installation scripts prior to installing a PBI file.&lt;br /&gt;
&lt;br /&gt;
To install a PBI, use: '''pbi_add -r PBINAME'''. The following example will install the alpine PBI:&lt;br /&gt;
&lt;br /&gt;
 '''pbi_add -r alpine'''&lt;br /&gt;
 Downloading ftp://ftp.pcbsd.org/pub/mirror/PBI/mail/alpine/9/x32/alpine-2.00_3-i386.pbi&lt;br /&gt;
 /usr/pbi/.alpine-2.00_3-i386.pbi.42391   100% of  11 MB 295 kBps 00m00s&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to: /usr/pbi/alpine-i386&lt;br /&gt;
 Installed: Alpine-2.00_3&lt;br /&gt;
&lt;br /&gt;
==== pbi_addrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_addrepo''' command is used to register a new PBI repository on a system. If the '''pbid''' daemon is running, the repository's index and meta files will be automatically fetched and made ready for browsing. The command has one argument, the name of the repository file. Repository files have a .rpo extension and are created with the '''pbi_makerepo''' command.&lt;br /&gt;
&lt;br /&gt;
==== pbi_autobuild(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_autobuild''' command is used on the PBI build system to build any out-of-date or new packages. The utility is also of interest to PBI testers and system administrators who create and maintain their own internal repository of PBIs. It can traverse the FreeBSD ports and Meta-data trees, building missing PBI files or PBIs in which the target port version has been updated. Table 6.2.4.3 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.3: pbi_autobuild Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the directory containing the PBI configuration modules data to traverse. Any found pbi.conf files will be parsed, and if PBI_MAKEPORT is set, the target port will be used for the build. If PBI_MAKEPORT is unset, the auto-build will attempt to match the module to a FreeBSD port based upon the dirname of pbi.conf}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir; defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-h script'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a helper script to call after building a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|The directory to place the finished PBI files. Also used to determine which apps are in need of a rebuild if the associated FreeBSD port has been updated.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--genpatch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|When building a new PBI, check for archived copies, and generate smaller patch updates to the new version (*.pbp files)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--keep num'''}}&lt;br /&gt;
{{Tbl-line|align=left|When building new PBIs, keep &amp;lt;num&amp;gt; copies of past versions of working PBI in &amp;lt;outdir&amp;gt;/archived/ folder. These archived copies can be used with the --genpatch command to generate update patch files.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any PBIs which no longer have an associated module in confdir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}            &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_browser(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_browser''' command provides a CLI front-end to browsing a repository's available PBIs. Options for viewing categories and searching by keyword are available, and once the desired PBI is located, it will show the '''pbi_add''' command which can be used to install the application. Table 6.2.4.4 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.4: pbi_browser Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Displays a list of PBIs in the specified category}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-s search'''}}&lt;br /&gt;
{{Tbl-line|align=left|Search for PBIs containing the specified string in the name, description, or keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--listcats'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List the available categories}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--viewall'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi.conf(5)====&lt;br /&gt;
&lt;br /&gt;
pbi.conf is an ASCII text configuration file containing values that are used by the various '''pbi_*''' commands. Table 6.2.4.5 lists the supported variables.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.5: pbi_conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=75%}}&lt;br /&gt;
{{Tbl-title|width=20%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=80%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_INDEXREFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Number of hours. How often pbid refreshes the index/meta files from repos. Default is every 24 hours.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYPASS'''}}&lt;br /&gt;
{{Tbl-line|align=left|Password used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYPORT'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server port number.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYTYPE'''}}&lt;br /&gt;
{{Tbl-line|align=left|Can be HTTP or SOCKS5.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYURL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server IP address.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYUSER'''}}&lt;br /&gt;
{{Tbl-line|align=left|Username used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBID_REFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Wakeup time in seconds for pbid to run its checks.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_create(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_create''' command provides a way for packagers to manually specify a target directory to be compressed into a PBI file. The option '''-b''' can also be used to re-package an already installed PBI back to an archive. This command replaces the 8.x PBI Module Builder functionality. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.6 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.6: pbi_create Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the author for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-b'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Make a backup of an installed PBI. When using this option specify the target PBI name instead of [pbidir]}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a default icon for this PBI, relative to pbidir/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a name for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Place the finished .pbi file into the specified directory. Defaults to $HOME/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p port'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the given port to get PBI name / version from}}&lt;br /&gt;
|-   &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r version'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a version for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-u weburl'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a website URL for the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_delete(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_delete''', the '''pbi_delete''' command removes an installed PBI from the system. It also schedules cleaning for the shared library directory, which is performed by '''pbid'''. Table 6.2.4.7 summarizes its options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.7: pbi_delete Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--clean-hdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Perform a full cleaning of the shared-hash dir, removing any unused files. This should only need to be done after a system crash or failure in removing a PBI via normal methods.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When removing a PBI, you must give its full name. The full name can be found in the output of '''pbi_info'''. The following example searches for the emacs PBI and removes it:&lt;br /&gt;
 &lt;br /&gt;
 '''pbi_info | grep ntop'''&lt;br /&gt;
 ntop-4.0.1_1-i386&lt;br /&gt;
 '''pbi_delete -v ntop-4.0.1_1-i386'''&lt;br /&gt;
 Running pre-removal script: /var/db/pbi/installed/ntop-4.0.1_1-i386/pre-remove.sh&lt;br /&gt;
 Removing: /usr/pbi/ntop-i386&lt;br /&gt;
 Removing: /var/db/pbi/installed/ntop-4.0.1_1-i386&lt;br /&gt;
&lt;br /&gt;
==== pbi_deleterepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_deleterepo''' command can be used to remove a registered repository from the system. It takes the repository's ID as the only command argument.&lt;br /&gt;
&lt;br /&gt;
==== pbi_icon(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_icon''' command provides a number of options for adding desktop icons, menu entries, and mime data for an installed PBI. Not all PBIs will contain desktop/menu/mime data. Additionally, the window manager must be [http://en.wikipedia.org/wiki/Xdg XDG]-compliant to understand a PBI's icon and mime settings. Table 6.2.4.9 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.9: pbi_icon Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant mime information, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any PATH links to ~/bin as user or to LOCALBASE as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any any PATH links to ~/bin as user or to LOCALBASE as root}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_indextool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_indextool''' command is useful for repository maintainers. It allows the adding/removing of PBI files available in a particular repository INDEX file without needing to hand-edit the file. Table 6.2.4.10 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.10: pbi_indextool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a PBI to the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes a PBI from the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_info(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_info''' command, the '''pbi_info''' command is used to determine which PBIs are currently installed. Table 6.2.4.11 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.11: pbi_info Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List all PBIs installed on the system, same as running pbi_info without an argument.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs from any repo}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}     &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_listrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_listrepo''' command manages installed repositories on a system. Table 6.2.4.12 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.12: pbi_listrepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--down'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid down a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-mirror URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Change the specified repoid's mirror URL}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--up'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid up a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command without any options to list the IDs of the available repositories.&lt;br /&gt;
&lt;br /&gt;
==== pbi_makepatch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makepatch''' command is automatically used by '''pbi_autobuild''' to create small *.pbp (Push Button Patch) files. These files can be downloaded to a user's system and used to update a PBI's version without re-downloading the entire archive. This allows users to download only the incremental changes when a PBI is upgraded. The command can also be run manually by providing two PBI archives to compare and generate a patch file for.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.13 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.13: pbi_makepatch Options&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Save the resulting .PBP file to the specified directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the specified openssl key to digitally sign the patch file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makeport(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makeport''' command can be used by packagers to build a target FreeBSD port and convert it into a PBI file. Many options are provided to fine-tune the build process, and meta-data modules can also be specified to further improve the resulting PBI file. The first time this command is run, it will build a fresh chroot sandbox environment which can be used for clean-room building of the target port without affecting the host system. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.14 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.14: pbi_makeport Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-B'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Build-only, after the port make process has finished, do not generate the PBI file. Generally used with -k to build a port before running pbi_create manually.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-k'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Keep the build files after a success or failure compiling/building the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|The directory to place the finished PBI file, defaults to user's $HOME directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p prefix'''}}&lt;br /&gt;
{{Tbl-line|align=left|Manually provide a PREFIX, which determines the location where the PBI will end up being installed on the end-user's system.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--delbuild'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any existing build dirs before starting the build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--mkdebug'''}}&lt;br /&gt;
{{Tbl-line|align=left|Will drop to a debugging shell should the port make fail}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-pruning of non REQUIREDBY ports after the compile phase.  By default any ports which are used solely for building and which are not required for program execution will be pruned.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makerepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makerepo''' command allows repository maintainers to create a single *.rpo file containing various information about the new repository. This .rpo file can then be installed on the target system with '''pbi_addrepo'''. Table 6.2.4.15 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.15: pbi_makerepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--desc description'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. Description of the repo to be shown in the repo list}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--key keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. OpenSSL public key used to verify the digital signature of PBIs installed from this repo}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--mirror URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. The URL to download PBIs and updates from}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--url URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. The URL to use when downloading the master INDEX files of available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_metatool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_metatool''' command provides a way for repository maintainers to modify the PBI meta-data in their repository in order to add or remove application categories or specified PBIs. This meta-data may contain information such as Name, Description, Icon, Keywords, License and more for the respective PBI file. Table 6.2.4.16 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.16: pbi_metatool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Remove a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_patch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_patch''' command is used to update an installed PBI to a different version using the small diff Push Button Patch *.pbp file. This allows the user to perform an incremental upgrade of an installed PBI. The available options are summarized in Table 6.2.4.17.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.17: pbi_patch Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-g'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Extract image data from header, commonly used for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display information about this PBI file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when only extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation / removal of this PBI file.  Recommended that these be checked if the PBI file is suspect in any way.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksig'''}}&lt;br /&gt;
{{Tbl-line|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir, which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_update(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update''' command is used to display information about which PBIs have available updates from their repository and to perform the updates. Table 6.2.4.18 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.18: pbi_update Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Check-only the specified PBI for available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--check-all'''}}&lt;br /&gt;
{{Tbl-line|align=left|Run a full check of all installed PBIs and display list of available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-disable-auto'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--enable-auto'''}}&lt;br /&gt;
{{Tbl-line|align=left|Enable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--update-all'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Update all installed PBIs to the latest versions available.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi_update_hashdir(1)====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update_hashdir''' command is used by the '''pbid''' daemon to merge the contents of a PBI into the hashdir.&lt;br /&gt;
&lt;br /&gt;
==== pbid(8) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbid''' command runs a small daemon which performs maintenance of installed PBIs, merges files into the shared hashdir, fetches the repository INDEX and meta files, and makes the adding and removing of PBIs much faster. It will automatically be started from the /usr/local/etc/rc.d/pbid startup script if pbid_enable=&amp;quot;YES&amp;quot; is in the /etc/rc.conf file.&lt;br /&gt;
&lt;br /&gt;
This utility supports the option summarized in table 6.2.4.19:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.19: pbid Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output when the daemon starts}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This command logs its output to /var/log/pbid.log. Check this log for errors should you experience any problems with PBI maintenance.&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Manager</id>
		<title>PBI Manager</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Manager"/>
				<updated>2011-11-07T18:59:39Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Release History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Using AppCafe™|forward=Update Manager}}&lt;br /&gt;
PC-BSD 9.0 introduced PBI Manager, a suite of command line utilities for managing PBIs. PBI Manager's command-line tools can be used to install, remove, create and manage PBIs. It is also available for  [[#Installing_PBI_Manager|FreeBSD systems]]. The PBI Manager is released under the [http://www.freebsd.org/copyright/freebsd-license.html BSD license].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
The new PBI format introduces the following features:&lt;br /&gt;
&lt;br /&gt;
* '''Upgrade deltas:''' since PBIs are self-contained, installation files tend to be large. In the previous implementation, updating a PBI required the re-downloading of the entire installation archive. For larger applications this could be a time-consuming process, especially over low bandwidth connections. The new PBI specification performs updates using binary diff patches known as PBP (Push Button Patch) files. PBPs are a fraction of the PBI's size; in some cases less than 5% of the original PBI archive. An upgrade automatically checks for for the presence of a PBP file and attempts to use it, only falling back to the original archive should the process fail.&lt;br /&gt;
&lt;br /&gt;
* '''Library and file sharing:''' in the previous implementation of the PBI format it was common that identical files existed between various applications. These duplicates, while necessary to provide self-contained functionality, wasted both disk and runtime memory. This waste of space has been greatly reduced through the use of a hash-dir directory where libraries and common files are shared through a system of hard links. When an identical file is found in a PBI, the original will be removed and a hard-link stored in the hash-dir. After a PBI has been removed, any unneeded files left in the hash-dir are cleaned up by the pbid(8) daemon which monitors and maintains the integrity of the shared files.&lt;br /&gt;
&lt;br /&gt;
* '''Repository management:''' allows administrators and PBI builders to create and manage their own repositories of PBIs. This repository system provides a number of tools for PBI distribution, release management, and repository browsing. &lt;br /&gt;
&lt;br /&gt;
* '''Digitally signed PBIs:''' each repository includes an openssl public key file which is installed on the end user's system. Each PBI includes several signatures for the content archive and installation and removal scripts. During the PBI installation process, these signatures are checked to confirm that the archive has not been tampered with during transit. This key file is also used to associate a particular PBI with a parent repository for upgrade purposes, since it is possible that multiple repositories will have the same applications.&lt;br /&gt;
&lt;br /&gt;
* '''Root password not required:''' most applications can be installed and upgraded by user (non-root) accounts. This allows enhanced security in office or home situations, where users can now add/remove desktop applications without needing access to the root account. PBIs that impact on the security of the system (e.g. installing a web server) will require root access.&lt;br /&gt;
&lt;br /&gt;
* '''Implementation:''' the previous PBI design was developed in QT/KDE C++, making it inappropriate for use at the command line. The new format is implemented 100% in shell and is comprised of command-line utilities, each with an associated man page. These utilities are discussed in more detail in the rest of this section.&lt;br /&gt;
&lt;br /&gt;
'''Additional Resources:'''&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/pbi9-slides.pdf The PBI Format Re-implemented for Free/PC-BSD (conference slides)]&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/asiabsdcon2011-pbi9.pdf The PBI Format Re-implemented for Free/PC-BSD (formal paper)]&lt;br /&gt;
&lt;br /&gt;
[[PBI9 Format|The PBI Format for 9.0 and Beyond]]&lt;br /&gt;
&lt;br /&gt;
=== Release History ===&lt;br /&gt;
* '''0.9.6''' (11-03-11)&lt;br /&gt;
- Fix some bugs doing cleanup of stagedir / build directories&lt;br /&gt;
&lt;br /&gt;
- Properly kill fetch process when canceling a download&lt;br /&gt;
&lt;br /&gt;
- Improve buildworld on FreeBSD to use /usr/src if it already has source&lt;br /&gt;
&lt;br /&gt;
- Fix some random warnings when building via sudo&lt;br /&gt;
&lt;br /&gt;
* '''0.9.5''' (11-03-11)&lt;br /&gt;
- Add sizes of PBIs to the meta index files&lt;br /&gt;
&lt;br /&gt;
- Fix bug adding default icon to PBIs when none is specified&lt;br /&gt;
&lt;br /&gt;
- Fix handling of PBI_PROGREVISION&lt;br /&gt;
&lt;br /&gt;
- Make sure we unmount nullfs mounts completely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.4''' (10-19-11)&lt;br /&gt;
- Fix issue using system-fonts in PBIs&lt;br /&gt;
&lt;br /&gt;
- Fix issue removing files which have been set r--&lt;br /&gt;
&lt;br /&gt;
- Slow down fetch process to fix issues with fetch protocol errors&lt;br /&gt;
&lt;br /&gt;
- Fix bug coping linux libraries into final PBI file&lt;br /&gt;
&lt;br /&gt;
- Allow user settings in external-links to overwrite auto-detected values&lt;br /&gt;
&lt;br /&gt;
- Fix bug running &amp;quot;stat&amp;quot; on files with spaces in name&lt;br /&gt;
&lt;br /&gt;
- Validate the build checksum before doing patching&lt;br /&gt;
&lt;br /&gt;
- Speed up builds with optional --tmpfs flags&lt;br /&gt;
&lt;br /&gt;
- Add priority system to building modules&lt;br /&gt;
&lt;br /&gt;
- Fix issues setting proxy support from pbi.conf / pcbsd.conf files&lt;br /&gt;
&lt;br /&gt;
- Validate repo URL's when creating .rpo file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.3''' (07-18-11)&lt;br /&gt;
- Unset variables between auto-builds&lt;br /&gt;
&lt;br /&gt;
- Fixed some warnings with 'cut' when parsing i18n strings&lt;br /&gt;
&lt;br /&gt;
- When doing auto-builds, run through alphabetically&lt;br /&gt;
&lt;br /&gt;
- Increase check frequency when first trying to download index's&lt;br /&gt;
&lt;br /&gt;
- Speed up the hashdir merging&lt;br /&gt;
&lt;br /&gt;
- Show repo MD5 with listings&lt;br /&gt;
&lt;br /&gt;
- If no index files, do not fail on listing, just show empty repo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.2''' (05-23-11)&lt;br /&gt;
- Fixed usage errors with &amp;quot;tr&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
- Syntax fixes when trying to install app with no meta-data&lt;br /&gt;
  &lt;br /&gt;
- Fixed some bugs with binary patching&lt;br /&gt;
  &lt;br /&gt;
- Fixed auto-builder using the PBI_BUILDKEY in modules pbi.conf file&lt;br /&gt;
  &lt;br /&gt;
- When building ports, don't export PREFIX since it confuses some linux ports&lt;br /&gt;
  &lt;br /&gt;
- Perform check if user is root, if PBI is flagged root-only&lt;br /&gt;
  &lt;br /&gt;
- Auto-builder now checks if port is compatible with arch type of system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.1''' - Initial public release (05/3/11)&lt;br /&gt;
&lt;br /&gt;
=== What is the PBI format? ===&lt;br /&gt;
&lt;br /&gt;
The idea behind the PBI format is that one of the things holding back mainstream adoption of open source desktops is the package management format. With almost all open source desktops, software is simply treated as part of the operating system. Thus, when performing an update of some seemingly trivial application, you run the risk of potentially needing to upgrade other packages which could break other critical parts of your desktop. &lt;br /&gt;
&lt;br /&gt;
While package management systems have gotten better at resolving these dependency issues, trying to fix conflicts and prevent breakage before it occurs, they still don't address the underlying problem: every software package is a part of the system, and pulling on any one thread has the potential of causing a break somewhere farther down the line.&lt;br /&gt;
&lt;br /&gt;
The PBI format tries to correct this underlying flaw. Rather than making every application a part of the base system, PBIs are self-contained, including their own dependent library tree and related data. As a result, when you install a PBI there are no dependency issues to resolve, and applications can be added or removed freely, without fear of causing breakage to the desktop or any other installed software.&lt;br /&gt;
&lt;br /&gt;
=== Installing PBI Manager ===&lt;br /&gt;
&lt;br /&gt;
If you are running PC-BSD 9 or higher, then the PBI Manager is already installed, and you can use it via the command-line, or a front-end such as the AppCafe™. &lt;br /&gt;
&lt;br /&gt;
FreeBSD users can install it from the [http://www.freshports.org/ports-mgmt/pbi-manager ports tree]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users interested in installing the development version from our [http://trac.pcbsd.org/brower/pcbsd/current/src-sh/pbi-manager/ SVN repository] can do so with the following commands:&lt;br /&gt;
&lt;br /&gt;
 '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pcbsd/current/src-sh/pbi-manager&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 '''cd pbi-manager'''&lt;br /&gt;
 '''make install'''&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The development version may be unstable / buggy, use at your own risk'''&lt;br /&gt;
&lt;br /&gt;
=== Getting PBI Files ===&lt;br /&gt;
&lt;br /&gt;
The PC-BSD project has begun building PBIs which work with PBI Manager for FreeBSD/PC-BSD 9. A list of approved &amp;amp; available PBIs can be viewed with '''pbi_info -i''' or '''pbi_browser''', and then installed with '''pbi_add -r &amp;lt;pbiname&amp;gt;'''. Until 9.0 is released the number of available PBIs will remain small but may be downloaded directly from the build server:&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild.pcbsd.org/index.php?ver=9 9.x i386 PBIs]&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild64.pcbsd.org/index.php?ver=9 9.x amd64 PBIs]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' PBI files previously created for PC-BSD 7.x/8.x will NOT work with PBI Manager, these are specific to PC-BSD 7/8.&lt;br /&gt;
&lt;br /&gt;
===Underlying File / Directory Structure===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The underlying files / directories used by PBI Manager are as follows:&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/etc/pbi.conf''': location of the PBI Manager configuration file &lt;br /&gt;
&lt;br /&gt;
'''/usr/pbi/''': where PBIs are installed on the system&lt;br /&gt;
&lt;br /&gt;
'''/var/db/pbi/''': contains data files related to installed PBIs and repositories &lt;br /&gt;
&lt;br /&gt;
'''/usr/local/sbin/pbi_*''': location of the PBI Manager commands&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/share/pbi-manager/module-examples/convertoldmod.sh''': script which can be used to convert an existing 7.x/8.x PBI module to the new 9.x format.&lt;br /&gt;
&lt;br /&gt;
=== Feedback / Reporting Problems ===&lt;br /&gt;
&lt;br /&gt;
Feedback, problem reports, and general discussion are welcome on the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers Mailing list]. &lt;br /&gt;
&lt;br /&gt;
=== Command Reference ===&lt;br /&gt;
&lt;br /&gt;
The following is a list of commands installed by the pbi-manager, along with a small synopsis of each. For more details, please refer to the command's man page.&lt;br /&gt;
&lt;br /&gt;
==== pbi_add(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_add''', the '''pbi_add''' command is used for adding/installing PBIs on a system, either from a local file or remotely from a repository. This utility supports the options listed in Table 6.2.4.1: &lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.1: pbi_add Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=80%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-f'''}}            &lt;br /&gt;
{{Tbl-line|align=left|Force installation, overwriting an already installed copy of the application}}&lt;br /&gt;
|- &lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt; &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-g'''}}            &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Get and show path to icon/images for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|'''-i'''}}            &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|Display information about specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-l'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display LICENSE for specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remote fetch installation file from update server. The system architecture and version will be automatically determined to fetch the correct file.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-v'''}}             &lt;br /&gt;
{{Tbl-line|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 9 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation/removal of this PBI file.}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 10 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''--licagree'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Agree to LICENSE terms and conditions.  Viewing the license can be done with -l flag}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 11 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-checksig'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 12 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksum'''}}  &lt;br /&gt;
{{Tbl-line|align=left|Skip the checksum verification of the archive data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 13 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using shared hash dir which uses hard-links to share files between applications}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 14 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--repo repoid'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which repository to use}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 15 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--rArch arch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Manually specify the PBI architecture type of i386 or amd64}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 16 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--rVer version'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which version of the PBI to install}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommend that users first use the -e and --checkscript options to view archive contents and installation scripts prior to installing a PBI file.&lt;br /&gt;
&lt;br /&gt;
To install a PBI, use: '''pbi_add -r PBINAME'''. The following example will install the alpine PBI:&lt;br /&gt;
&lt;br /&gt;
 '''pbi_add -r alpine'''&lt;br /&gt;
 Downloading ftp://ftp.pcbsd.org/pub/mirror/PBI/mail/alpine/9/x32/alpine-2.00_3-i386.pbi&lt;br /&gt;
 /usr/pbi/.alpine-2.00_3-i386.pbi.42391   100% of  11 MB 295 kBps 00m00s&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to: /usr/pbi/alpine-i386&lt;br /&gt;
 Installed: Alpine-2.00_3&lt;br /&gt;
&lt;br /&gt;
==== pbi_addrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_addrepo''' command is used to register a new PBI repository on a system. If the '''pbid''' daemon is running, the repository's index and meta files will be automatically fetched and made ready for browsing. The command has one argument, the name of the repository file. Repository files have a .rpo extension and are created with the '''pbi_makerepo''' command.&lt;br /&gt;
&lt;br /&gt;
==== pbi_autobuild(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_autobuild''' command is used on the PBI build system to build any out-of-date or new packages. The utility is also of interest to PBI testers and system administrators who create and maintain their own internal repository of PBIs. It can traverse the FreeBSD ports and Meta-data trees, building missing PBI files or PBIs in which the target port version has been updated. Table 6.2.4.3 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.3: pbi_autobuild Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the directory containing the PBI configuration modules data to traverse. Any found pbi.conf files will be parsed, and if PBI_MAKEPORT is set, the target port will be used for the build. If PBI_MAKEPORT is unset, the auto-build will attempt to match the module to a FreeBSD port based upon the dirname of pbi.conf}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir; defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-h script'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a helper script to call after building a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|The directory to place the finished PBI files. Also used to determine which apps are in need of a rebuild if the associated FreeBSD port has been updated.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--genpatch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|When building a new PBI, check for archived copies, and generate smaller patch updates to the new version (*.pbp files)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--keep num'''}}&lt;br /&gt;
{{Tbl-line|align=left|When building new PBIs, keep &amp;lt;num&amp;gt; copies of past versions of working PBI in &amp;lt;outdir&amp;gt;/archived/ folder. These archived copies can be used with the --genpatch command to generate update patch files.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any PBIs which no longer have an associated module in confdir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}            &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_browser(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_browser''' command provides a CLI front-end to browsing a repository's available PBIs. Options for viewing categories and searching by keyword are available, and once the desired PBI is located, it will show the '''pbi_add''' command which can be used to install the application. Table 6.2.4.4 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.4: pbi_browser Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Displays a list of PBIs in the specified category}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-s search'''}}&lt;br /&gt;
{{Tbl-line|align=left|Search for PBIs containing the specified string in the name, description, or keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--listcats'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List the available categories}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--viewall'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi.conf(5)====&lt;br /&gt;
&lt;br /&gt;
pbi.conf is an ASCII text configuration file containing values that are used by the various '''pbi_*''' commands. Table 6.2.4.5 lists the supported variables.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.5: pbi_conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=75%}}&lt;br /&gt;
{{Tbl-title|width=20%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=80%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_INDEXREFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Number of hours. How often pbid refreshes the index/meta files from repos. Default is every 24 hours.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYPASS'''}}&lt;br /&gt;
{{Tbl-line|align=left|Password used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYPORT'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server port number.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYTYPE'''}}&lt;br /&gt;
{{Tbl-line|align=left|Can be HTTP or SOCKS5.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYURL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server IP address.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYUSER'''}}&lt;br /&gt;
{{Tbl-line|align=left|Username used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBID_REFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Wakeup time in seconds for pbid to run its checks.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_create(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_create''' command provides a way for packagers to manually specify a target directory to be compressed into a PBI file. The option '''-b''' can also be used to re-package an already installed PBI back to an archive. This command replaces the 8.x PBI Module Builder functionality. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.6 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.6: pbi_create Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the author for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-b'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Make a backup of an installed PBI. When using this option specify the target PBI name instead of [pbidir]}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a default icon for this PBI, relative to pbidir/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a name for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Place the finished .pbi file into the specified directory. Defaults to $HOME/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p port'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the given port to get PBI name / version from}}&lt;br /&gt;
|-   &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r version'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a version for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-u weburl'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a website URL for the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_delete(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_delete''', the '''pbi_delete''' command removes an installed PBI from the system. It also schedules cleaning for the shared library directory, which is performed by '''pbid'''. Table 6.2.4.7 summarizes its options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.7: pbi_delete Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--clean-hdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Perform a full cleaning of the shared-hash dir, removing any unused files. This should only need to be done after a system crash or failure in removing a PBI via normal methods.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When removing a PBI, you must give its full name. The full name can be found in the output of '''pbi_info'''. The following example searches for the emacs PBI and removes it:&lt;br /&gt;
 &lt;br /&gt;
 '''pbi_info | grep ntop'''&lt;br /&gt;
 ntop-4.0.1_1-i386&lt;br /&gt;
 '''pbi_delete -v ntop-4.0.1_1-i386'''&lt;br /&gt;
 Running pre-removal script: /var/db/pbi/installed/ntop-4.0.1_1-i386/pre-remove.sh&lt;br /&gt;
 Removing: /usr/pbi/ntop-i386&lt;br /&gt;
 Removing: /var/db/pbi/installed/ntop-4.0.1_1-i386&lt;br /&gt;
&lt;br /&gt;
==== pbi_deleterepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_deleterepo''' command can be used to remove a registered repository from the system. It takes the repository's ID as the only command argument.&lt;br /&gt;
&lt;br /&gt;
==== pbi_icon(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_icon''' command provides a number of options for adding desktop icons, menu entries, and mime data for an installed PBI. Not all PBIs will contain desktop/menu/mime data. Additionally, the window manager must be [http://en.wikipedia.org/wiki/Xdg XDG]-compliant to understand a PBI's icon and mime settings. Table 6.2.4.9 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.9: pbi_icon Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant mime information, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any PATH links to ~/bin as user or to LOCALBASE as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any any PATH links to ~/bin as user or to LOCALBASE as root}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_indextool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_indextool''' command is useful for repository maintainers. It allows the adding/removing of PBI files available in a particular repository INDEX file without needing to hand-edit the file. Table 6.2.4.10 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.10: pbi_indextool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a PBI to the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes a PBI from the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_info(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_info''' command, the '''pbi_info''' command is used to determine which PBIs are currently installed. Table 6.2.4.11 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.11: pbi_info Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List all PBIs installed on the system, same as running pbi_info without an argument.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs from any repo}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}     &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_listrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_listrepo''' command manages installed repositories on a system. Table 6.2.4.12 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.12: pbi_listrepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--down'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid down a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-mirror URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Change the specified repoid's mirror URL}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--up'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid up a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command without any options to list the IDs of the available repositories.&lt;br /&gt;
&lt;br /&gt;
==== pbi_makepatch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makepatch''' command is automatically used by '''pbi_autobuild''' to create small *.pbp (Push Button Patch) files. These files can be downloaded to a user's system and used to update a PBI's version without re-downloading the entire archive. This allows users to download only the incremental changes when a PBI is upgraded. The command can also be run manually by providing two PBI archives to compare and generate a patch file for.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.13 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.13: pbi_makepatch Options&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Save the resulting .PBP file to the specified directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the specified openssl key to digitally sign the patch file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makeport(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makeport''' command can be used by packagers to build a target FreeBSD port and convert it into a PBI file. Many options are provided to fine-tune the build process, and meta-data modules can also be specified to further improve the resulting PBI file. The first time this command is run, it will build a fresh chroot sandbox environment which can be used for clean-room building of the target port without affecting the host system. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.14 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.14: pbi_makeport Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-B'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Build-only, after the port make process has finished, do not generate the PBI file. Generally used with -k to build a port before running pbi_create manually.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-k'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Keep the build files after a success or failure compiling/building the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|The directory to place the finished PBI file, defaults to user's $HOME directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p prefix'''}}&lt;br /&gt;
{{Tbl-line|align=left|Manually provide a PREFIX, which determines the location where the PBI will end up being installed on the end-user's system.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--delbuild'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any existing build dirs before starting the build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--mkdebug'''}}&lt;br /&gt;
{{Tbl-line|align=left|Will drop to a debugging shell should the port make fail}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-pruning of non REQUIREDBY ports after the compile phase.  By default any ports which are used solely for building and which are not required for program execution will be pruned.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makerepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makerepo''' command allows repository maintainers to create a single *.rpo file containing various information about the new repository. This .rpo file can then be installed on the target system with '''pbi_addrepo'''. Table 6.2.4.15 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.15: pbi_makerepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--desc description'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. Description of the repo to be shown in the repo list}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--key keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. OpenSSL public key used to verify the digital signature of PBIs installed from this repo}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--mirror URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. The URL to download PBIs and updates from}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--url URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. The URL to use when downloading the master INDEX files of available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_metatool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_metatool''' command provides a way for repository maintainers to modify the PBI meta-data in their repository in order to add or remove application categories or specified PBIs. This meta-data may contain information such as Name, Description, Icon, Keywords, License and more for the respective PBI file. Table 6.2.4.16 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.16: pbi_metatool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Remove a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_patch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_patch''' command is used to update an installed PBI to a different version using the small diff Push Button Patch *.pbp file. This allows the user to perform an incremental upgrade of an installed PBI. The available options are summarized in Table 6.2.4.17.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.17: pbi_patch Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-g'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Extract image data from header, commonly used for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display information about this PBI file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when only extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation / removal of this PBI file.  Recommended that these be checked if the PBI file is suspect in any way.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksig'''}}&lt;br /&gt;
{{Tbl-line|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir, which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_update(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update''' command is used to display information about which PBIs have available updates from their repository and to perform the updates. Table 6.2.4.18 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.18: pbi_update Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Check-only the specified PBI for available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--check-all'''}}&lt;br /&gt;
{{Tbl-line|align=left|Run a full check of all installed PBIs and display list of available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-disable-auto'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--enable-auto'''}}&lt;br /&gt;
{{Tbl-line|align=left|Enable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--update-all'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Update all installed PBIs to the latest versions available.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi_update_hashdir(1)====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update_hashdir''' command is used by the '''pbid''' daemon to merge the contents of a PBI into the hashdir.&lt;br /&gt;
&lt;br /&gt;
==== pbid(8) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbid''' command runs a small daemon which performs maintenance of installed PBIs, merges files into the shared hashdir, fetches the repository INDEX and meta files, and makes the adding and removing of PBIs much faster. It will automatically be started from the /usr/local/etc/rc.d/pbid startup script if pbid_enable=&amp;quot;YES&amp;quot; is in the /etc/rc.conf file.&lt;br /&gt;
&lt;br /&gt;
This utility supports the option summarized in table 6.2.4.19:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.19: pbid Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output when the daemon starts}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This command logs its output to /var/log/pbid.log. Check this log for errors should you experience any problems with PBI maintenance.&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Manager</id>
		<title>PBI Manager</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Manager"/>
				<updated>2011-11-03T17:27:50Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Release History */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Using AppCafe™|forward=Update Manager}}&lt;br /&gt;
PC-BSD 9.0 introduced PBI Manager, a suite of command line utilities for managing PBIs. PBI Manager's command-line tools can be used to install, remove, create and manage PBIs. It is also available for  [[#Installing_PBI_Manager|FreeBSD systems]]. The PBI Manager is released under the [http://www.freebsd.org/copyright/freebsd-license.html BSD license].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===New Features===&lt;br /&gt;
&lt;br /&gt;
The new PBI format introduces the following features:&lt;br /&gt;
&lt;br /&gt;
* '''Upgrade deltas:''' since PBIs are self-contained, installation files tend to be large. In the previous implementation, updating a PBI required the re-downloading of the entire installation archive. For larger applications this could be a time-consuming process, especially over low bandwidth connections. The new PBI specification performs updates using binary diff patches known as PBP (Push Button Patch) files. PBPs are a fraction of the PBI's size; in some cases less than 5% of the original PBI archive. An upgrade automatically checks for for the presence of a PBP file and attempts to use it, only falling back to the original archive should the process fail.&lt;br /&gt;
&lt;br /&gt;
* '''Library and file sharing:''' in the previous implementation of the PBI format it was common that identical files existed between various applications. These duplicates, while necessary to provide self-contained functionality, wasted both disk and runtime memory. This waste of space has been greatly reduced through the use of a hash-dir directory where libraries and common files are shared through a system of hard links. When an identical file is found in a PBI, the original will be removed and a hard-link stored in the hash-dir. After a PBI has been removed, any unneeded files left in the hash-dir are cleaned up by the pbid(8) daemon which monitors and maintains the integrity of the shared files.&lt;br /&gt;
&lt;br /&gt;
* '''Repository management:''' allows administrators and PBI builders to create and manage their own repositories of PBIs. This repository system provides a number of tools for PBI distribution, release management, and repository browsing. &lt;br /&gt;
&lt;br /&gt;
* '''Digitally signed PBIs:''' each repository includes an openssl public key file which is installed on the end user's system. Each PBI includes several signatures for the content archive and installation and removal scripts. During the PBI installation process, these signatures are checked to confirm that the archive has not been tampered with during transit. This key file is also used to associate a particular PBI with a parent repository for upgrade purposes, since it is possible that multiple repositories will have the same applications.&lt;br /&gt;
&lt;br /&gt;
* '''Root password not required:''' most applications can be installed and upgraded by user (non-root) accounts. This allows enhanced security in office or home situations, where users can now add/remove desktop applications without needing access to the root account. PBIs that impact on the security of the system (e.g. installing a web server) will require root access.&lt;br /&gt;
&lt;br /&gt;
* '''Implementation:''' the previous PBI design was developed in QT/KDE C++, making it inappropriate for use at the command line. The new format is implemented 100% in shell and is comprised of command-line utilities, each with an associated man page. These utilities are discussed in more detail in the rest of this section.&lt;br /&gt;
&lt;br /&gt;
'''Additional Resources:'''&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/pbi9-slides.pdf The PBI Format Re-implemented for Free/PC-BSD (conference slides)]&lt;br /&gt;
&lt;br /&gt;
[http://www.pcbsd.org/~kris/asiabsdcon2011-pbi9.pdf The PBI Format Re-implemented for Free/PC-BSD (formal paper)]&lt;br /&gt;
&lt;br /&gt;
[[PBI9 Format|The PBI Format for 9.0 and Beyond]]&lt;br /&gt;
&lt;br /&gt;
=== Release History ===&lt;br /&gt;
* '''0.9.5''' (11-03-11)&lt;br /&gt;
- Add sizes of PBIs to the meta index files&lt;br /&gt;
&lt;br /&gt;
- Fix bug adding default icon to PBIs when none is specified&lt;br /&gt;
&lt;br /&gt;
- Fix handling of PBI_PROGREVISION&lt;br /&gt;
&lt;br /&gt;
- Make sure we unmount nullfs mounts completely&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.4''' (10-19-11)&lt;br /&gt;
- Fix issue using system-fonts in PBIs&lt;br /&gt;
&lt;br /&gt;
- Fix issue removing files which have been set r--&lt;br /&gt;
&lt;br /&gt;
- Slow down fetch process to fix issues with fetch protocol errors&lt;br /&gt;
&lt;br /&gt;
- Fix bug coping linux libraries into final PBI file&lt;br /&gt;
&lt;br /&gt;
- Allow user settings in external-links to overwrite auto-detected values&lt;br /&gt;
&lt;br /&gt;
- Fix bug running &amp;quot;stat&amp;quot; on files with spaces in name&lt;br /&gt;
&lt;br /&gt;
- Validate the build checksum before doing patching&lt;br /&gt;
&lt;br /&gt;
- Speed up builds with optional --tmpfs flags&lt;br /&gt;
&lt;br /&gt;
- Add priority system to building modules&lt;br /&gt;
&lt;br /&gt;
- Fix issues setting proxy support from pbi.conf / pcbsd.conf files&lt;br /&gt;
&lt;br /&gt;
- Validate repo URL's when creating .rpo file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.3''' (07-18-11)&lt;br /&gt;
- Unset variables between auto-builds&lt;br /&gt;
&lt;br /&gt;
- Fixed some warnings with 'cut' when parsing i18n strings&lt;br /&gt;
&lt;br /&gt;
- When doing auto-builds, run through alphabetically&lt;br /&gt;
&lt;br /&gt;
- Increase check frequency when first trying to download index's&lt;br /&gt;
&lt;br /&gt;
- Speed up the hashdir merging&lt;br /&gt;
&lt;br /&gt;
- Show repo MD5 with listings&lt;br /&gt;
&lt;br /&gt;
- If no index files, do not fail on listing, just show empty repo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.2''' (05-23-11)&lt;br /&gt;
- Fixed usage errors with &amp;quot;tr&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
- Syntax fixes when trying to install app with no meta-data&lt;br /&gt;
  &lt;br /&gt;
- Fixed some bugs with binary patching&lt;br /&gt;
  &lt;br /&gt;
- Fixed auto-builder using the PBI_BUILDKEY in modules pbi.conf file&lt;br /&gt;
  &lt;br /&gt;
- When building ports, don't export PREFIX since it confuses some linux ports&lt;br /&gt;
  &lt;br /&gt;
- Perform check if user is root, if PBI is flagged root-only&lt;br /&gt;
  &lt;br /&gt;
- Auto-builder now checks if port is compatible with arch type of system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''0.9.1''' - Initial public release (05/3/11)&lt;br /&gt;
&lt;br /&gt;
=== What is the PBI format? ===&lt;br /&gt;
&lt;br /&gt;
The idea behind the PBI format is that one of the things holding back mainstream adoption of open source desktops is the package management format. With almost all open source desktops, software is simply treated as part of the operating system. Thus, when performing an update of some seemingly trivial application, you run the risk of potentially needing to upgrade other packages which could break other critical parts of your desktop. &lt;br /&gt;
&lt;br /&gt;
While package management systems have gotten better at resolving these dependency issues, trying to fix conflicts and prevent breakage before it occurs, they still don't address the underlying problem: every software package is a part of the system, and pulling on any one thread has the potential of causing a break somewhere farther down the line.&lt;br /&gt;
&lt;br /&gt;
The PBI format tries to correct this underlying flaw. Rather than making every application a part of the base system, PBIs are self-contained, including their own dependent library tree and related data. As a result, when you install a PBI there are no dependency issues to resolve, and applications can be added or removed freely, without fear of causing breakage to the desktop or any other installed software.&lt;br /&gt;
&lt;br /&gt;
=== Installing PBI Manager ===&lt;br /&gt;
&lt;br /&gt;
If you are running PC-BSD 9 or higher, then the PBI Manager is already installed, and you can use it via the command-line, or a front-end such as the AppCafe™. &lt;br /&gt;
&lt;br /&gt;
FreeBSD users can install it from the [http://www.freshports.org/ports-mgmt/pbi-manager ports tree]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Users interested in installing the development version from our [http://trac.pcbsd.org/brower/pcbsd/current/src-sh/pbi-manager/ SVN repository] can do so with the following commands:&lt;br /&gt;
&lt;br /&gt;
 '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pcbsd/current/src-sh/pbi-manager&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 '''cd pbi-manager'''&lt;br /&gt;
 '''make install'''&lt;br /&gt;
&lt;br /&gt;
'''NOTE: The development version may be unstable / buggy, use at your own risk'''&lt;br /&gt;
&lt;br /&gt;
=== Getting PBI Files ===&lt;br /&gt;
&lt;br /&gt;
The PC-BSD project has begun building PBIs which work with PBI Manager for FreeBSD/PC-BSD 9. A list of approved &amp;amp; available PBIs can be viewed with '''pbi_info -i''' or '''pbi_browser''', and then installed with '''pbi_add -r &amp;lt;pbiname&amp;gt;'''. Until 9.0 is released the number of available PBIs will remain small but may be downloaded directly from the build server:&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild.pcbsd.org/index.php?ver=9 9.x i386 PBIs]&lt;br /&gt;
&lt;br /&gt;
[http://pbibuild64.pcbsd.org/index.php?ver=9 9.x amd64 PBIs]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' PBI files previously created for PC-BSD 7.x/8.x will NOT work with PBI Manager, these are specific to PC-BSD 7/8.&lt;br /&gt;
&lt;br /&gt;
===Underlying File / Directory Structure===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The underlying files / directories used by PBI Manager are as follows:&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/etc/pbi.conf''': location of the PBI Manager configuration file &lt;br /&gt;
&lt;br /&gt;
'''/usr/pbi/''': where PBIs are installed on the system&lt;br /&gt;
&lt;br /&gt;
'''/var/db/pbi/''': contains data files related to installed PBIs and repositories &lt;br /&gt;
&lt;br /&gt;
'''/usr/local/sbin/pbi_*''': location of the PBI Manager commands&lt;br /&gt;
&lt;br /&gt;
'''/usr/local/share/pbi-manager/module-examples/convertoldmod.sh''': script which can be used to convert an existing 7.x/8.x PBI module to the new 9.x format.&lt;br /&gt;
&lt;br /&gt;
=== Feedback / Reporting Problems ===&lt;br /&gt;
&lt;br /&gt;
Feedback, problem reports, and general discussion are welcome on the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers Mailing list]. &lt;br /&gt;
&lt;br /&gt;
=== Command Reference ===&lt;br /&gt;
&lt;br /&gt;
The following is a list of commands installed by the pbi-manager, along with a small synopsis of each. For more details, please refer to the command's man page.&lt;br /&gt;
&lt;br /&gt;
==== pbi_add(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_add''', the '''pbi_add''' command is used for adding/installing PBIs on a system, either from a local file or remotely from a repository. This utility supports the options listed in Table 6.2.4.1: &lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.1: pbi_add Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=80%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 2 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-f'''}}            &lt;br /&gt;
{{Tbl-line|align=left|Force installation, overwriting an already installed copy of the application}}&lt;br /&gt;
|- &lt;br /&gt;
&amp;lt;!-- row 3 --&amp;gt; &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-g'''}}            &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Get and show path to icon/images for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 4 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|'''-i'''}}            &lt;br /&gt;
{{Tbl-line|bg=ee|align=left|Display information about specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 5 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-l'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display LICENSE for specified PBI}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 6 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 7 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r'''}}             &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remote fetch installation file from update server. The system architecture and version will be automatically determined to fetch the correct file.}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 8 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''-v'''}}             &lt;br /&gt;
{{Tbl-line|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 9 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation/removal of this PBI file.}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 10 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|align=left|'''--licagree'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Agree to LICENSE terms and conditions.  Viewing the license can be done with -l flag}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 11 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-checksig'''}}  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 12 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksum'''}}  &lt;br /&gt;
{{Tbl-line|align=left|Skip the checksum verification of the archive data}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 13 --&amp;gt;  &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using shared hash dir which uses hard-links to share files between applications}} &lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 14 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--repo repoid'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which repository to use}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 15 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--rArch arch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Manually specify the PBI architecture type of i386 or amd64}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 16 --&amp;gt;&lt;br /&gt;
{{Tbl-line|align=left|'''--rVer version'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify which version of the PBI to install}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For security reasons, it is recommend that users first use the -e and --checkscript options to view archive contents and installation scripts prior to installing a PBI file.&lt;br /&gt;
&lt;br /&gt;
To install a PBI, use: '''pbi_add -r PBINAME'''. The following example will install the alpine PBI:&lt;br /&gt;
&lt;br /&gt;
 '''pbi_add -r alpine'''&lt;br /&gt;
 Downloading ftp://ftp.pcbsd.org/pub/mirror/PBI/mail/alpine/9/x32/alpine-2.00_3-i386.pbi&lt;br /&gt;
 /usr/pbi/.alpine-2.00_3-i386.pbi.42391   100% of  11 MB 295 kBps 00m00s&lt;br /&gt;
 Verifying Checksum...OK&lt;br /&gt;
 Extracting to: /usr/pbi/alpine-i386&lt;br /&gt;
 Installed: Alpine-2.00_3&lt;br /&gt;
&lt;br /&gt;
==== pbi_addrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_addrepo''' command is used to register a new PBI repository on a system. If the '''pbid''' daemon is running, the repository's index and meta files will be automatically fetched and made ready for browsing. The command has one argument, the name of the repository file. Repository files have a .rpo extension and are created with the '''pbi_makerepo''' command.&lt;br /&gt;
&lt;br /&gt;
==== pbi_autobuild(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_autobuild''' command is used on the PBI build system to build any out-of-date or new packages. The utility is also of interest to PBI testers and system administrators who create and maintain their own internal repository of PBIs. It can traverse the FreeBSD ports and Meta-data trees, building missing PBI files or PBIs in which the target port version has been updated. Table 6.2.4.3 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.3: pbi_autobuild Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;!-- row 1 --&amp;gt;&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the directory containing the PBI configuration modules data to traverse. Any found pbi.conf files will be parsed, and if PBI_MAKEPORT is set, the target port will be used for the build. If PBI_MAKEPORT is unset, the auto-build will attempt to match the module to a FreeBSD port based upon the dirname of pbi.conf}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir; defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-h script'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a helper script to call after building a PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|The directory to place the finished PBI files. Also used to determine which apps are in need of a rebuild if the associated FreeBSD port has been updated.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--genpatch'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|When building a new PBI, check for archived copies, and generate smaller patch updates to the new version (*.pbp files)}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--keep num'''}}&lt;br /&gt;
{{Tbl-line|align=left|When building new PBIs, keep &amp;lt;num&amp;gt; copies of past versions of working PBI in &amp;lt;outdir&amp;gt;/archived/ folder. These archived copies can be used with the --genpatch command to generate update patch files.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any PBIs which no longer have an associated module in confdir}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}            &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_browser(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_browser''' command provides a CLI front-end to browsing a repository's available PBIs. Options for viewing categories and searching by keyword are available, and once the desired PBI is located, it will show the '''pbi_add''' command which can be used to install the application. Table 6.2.4.4 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.4: pbi_browser Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c category'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Displays a list of PBIs in the specified category}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-s search'''}}&lt;br /&gt;
{{Tbl-line|align=left|Search for PBIs containing the specified string in the name, description, or keywords}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--listcats'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List the available categories}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--viewall'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi.conf(5)====&lt;br /&gt;
&lt;br /&gt;
pbi.conf is an ASCII text configuration file containing values that are used by the various '''pbi_*''' commands. Table 6.2.4.5 lists the supported variables.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.5: pbi_conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=75%}}&lt;br /&gt;
{{Tbl-title|width=20%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=80%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_INDEXREFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Number of hours. How often pbid refreshes the index/meta files from repos. Default is every 24 hours.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYPASS'''}}&lt;br /&gt;
{{Tbl-line|align=left|Password used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYPORT'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server port number.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYTYPE'''}}&lt;br /&gt;
{{Tbl-line|align=left|Can be HTTP or SOCKS5.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBI_PROXYURL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Proxy server IP address.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''PBI_PROXYUSER'''}}&lt;br /&gt;
{{Tbl-line|align=left|Username used to authenticate with proxy server.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''PBID_REFRESH'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Wakeup time in seconds for pbid to run its checks.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_create(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_create''' command provides a way for packagers to manually specify a target directory to be compressed into a PBI file. The option '''-b''' can also be used to re-package an already installed PBI back to an archive. This command replaces the 8.x PBI Module Builder functionality. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.6 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.6: pbi_create Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a author'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the author for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-b'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Make a backup of an installed PBI. When using this option specify the target PBI name instead of [pbidir]}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i icon'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a default icon for this PBI, relative to pbidir/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-n name'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a name for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Place the finished .pbi file into the specified directory. Defaults to $HOME/}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p port'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the given port to get PBI name / version from}}&lt;br /&gt;
|-   &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-r version'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify a version for this PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-u weburl'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify a website URL for the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_delete(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_delete''', the '''pbi_delete''' command removes an installed PBI from the system. It also schedules cleaning for the shared library directory, which is performed by '''pbid'''. Table 6.2.4.7 summarizes its options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.7: pbi_delete Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--clean-hdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Perform a full cleaning of the shared-hash dir, removing any unused files. This should only need to be done after a system crash or failure in removing a PBI via normal methods.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
When removing a PBI, you must give its full name. The full name can be found in the output of '''pbi_info'''. The following example searches for the emacs PBI and removes it:&lt;br /&gt;
 &lt;br /&gt;
 '''pbi_info | grep ntop'''&lt;br /&gt;
 ntop-4.0.1_1-i386&lt;br /&gt;
 '''pbi_delete -v ntop-4.0.1_1-i386'''&lt;br /&gt;
 Running pre-removal script: /var/db/pbi/installed/ntop-4.0.1_1-i386/pre-remove.sh&lt;br /&gt;
 Removing: /usr/pbi/ntop-i386&lt;br /&gt;
 Removing: /var/db/pbi/installed/ntop-4.0.1_1-i386&lt;br /&gt;
&lt;br /&gt;
==== pbi_deleterepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_deleterepo''' command can be used to remove a registered repository from the system. It takes the repository's ID as the only command argument.&lt;br /&gt;
&lt;br /&gt;
==== pbi_icon(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_icon''' command provides a number of options for adding desktop icons, menu entries, and mime data for an installed PBI. Not all PBIs will contain desktop/menu/mime data. Additionally, the window manager must be [http://en.wikipedia.org/wiki/Xdg XDG]-compliant to understand a PBI's icon and mime settings. Table 6.2.4.9 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.9: pbi_icon Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Installs any XDG compliant mime information, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''add-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Installs any PATH links to ~/bin as user or to LOCALBASE as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-desktop'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant desktop icons, should be run as user.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-menu'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''del-mime'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Removes any XDG compliant menu icons, should be run as root.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''del-pathlnk'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes any any PATH links to ~/bin as user or to LOCALBASE as root}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_indextool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_indextool''' command is useful for repository maintainers. It allows the adding/removing of PBI files available in a particular repository INDEX file without needing to hand-edit the file. Table 6.2.4.10 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.10: pbi_indextool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a PBI to the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Removes a PBI from the target INDEX file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_info(1) ====&lt;br /&gt;
&lt;br /&gt;
Similar to FreeBSD's '''pkg_info''' command, the '''pbi_info''' command is used to determine which PBIs are currently installed. Table 6.2.4.11 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.11: pbi_info Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-a'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|List all PBIs installed on the system, same as running pbi_info without an argument.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-i'''}}&lt;br /&gt;
{{Tbl-line|align=left|List all available PBIs from any repo}} &lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}     &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_listrepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_listrepo''' command manages installed repositories on a system. Table 6.2.4.12 summarizes this command's options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.12: pbi_listrepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--down'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid down a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-mirror URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Change the specified repoid's mirror URL}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--up'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Move the targeted repoid up a single number in priority}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command without any options to list the IDs of the available repositories.&lt;br /&gt;
&lt;br /&gt;
==== pbi_makepatch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makepatch''' command is automatically used by '''pbi_autobuild''' to create small *.pbp (Push Button Patch) files. These files can be downloaded to a user's system and used to update a PBI's version without re-downloading the entire archive. This allows users to download only the incremental changes when a PBI is upgraded. The command can also be run manually by providing two PBI archives to compare and generate a patch file for.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.13 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.13: pbi_makepatch Options&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Save the resulting .PBP file to the specified directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Use the specified openssl key to digitally sign the patch file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makeport(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makeport''' command can be used by packagers to build a target FreeBSD port and convert it into a PBI file. Many options are provided to fine-tune the build process, and meta-data modules can also be specified to further improve the resulting PBI file. The first time this command is run, it will build a fresh chroot sandbox environment which can be used for clean-room building of the target port without affecting the host system. PBI creators are encouraged to send a tarball of the resulting PBI module to the [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI-testing mailing list] so they can be added to the PC-BSD PBI repository and made available to other PC-BSD users.&lt;br /&gt;
&lt;br /&gt;
Table 6.2.4.14 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.14: pbi_makeport Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-B'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Build-only, after the port make process has finished, do not generate the PBI file. Generally used with -k to build a port before running pbi_create manually.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-c confdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the meta-data confdir to use. While not required for building a PBI, it is highly recommended. Without some configuration settings in the meta-data, icons and binary entry-points will not be created.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-d portsdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Specify an alternative ports-dir, defaults to /usr/ports}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-k'''}}      &lt;br /&gt;
{{Tbl-line|align=left|Keep the build files after a success or failure compiling/building the PBI}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|The directory to place the finished PBI file, defaults to user's $HOME directory}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-p prefix'''}}&lt;br /&gt;
{{Tbl-line|align=left|Manually provide a PREFIX, which determines the location where the PBI will end up being installed on the end-user's system.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--delbuild'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Remove any existing build dirs before starting the build}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--mkdebug'''}}&lt;br /&gt;
{{Tbl-line|align=left|Will drop to a debugging shell should the port make fail}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-prune'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-pruning of non REQUIREDBY ports after the compile phase.  By default any ports which are used solely for building and which are not required for program execution will be pruned.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--sign keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Digitially sign the PBI file with the specified openssl private key file}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_makerepo(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_makerepo''' command allows repository maintainers to create a single *.rpo file containing various information about the new repository. This .rpo file can then be installed on the target system with '''pbi_addrepo'''. Table 6.2.4.15 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.15: pbi_makerepo Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--desc description'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. Description of the repo to be shown in the repo list}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--key keyfile'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. OpenSSL public key used to verify the digital signature of PBIs installed from this repo}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--mirror URL'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Required. The URL to download PBIs and updates from}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--url URL'''}}&lt;br /&gt;
{{Tbl-line|align=left|Required. The URL to use when downloading the master INDEX files of available PBIs}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_metatool(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_metatool''' command provides a way for repository maintainers to modify the PBI meta-data in their repository in order to add or remove application categories or specified PBIs. This meta-data may contain information such as Name, Description, Icon, Keywords, License and more for the respective PBI file. Table 6.2.4.16 summarizes the available options:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.16: pbi_metatool Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''add'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Adds a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''rem'''}}&lt;br /&gt;
{{Tbl-line|align=left|Remove a category or application to the target metafile}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Run the command with the desired option to receive detailed usage.&lt;br /&gt;
&lt;br /&gt;
==== pbi_patch(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_patch''' command is used to update an installed PBI to a different version using the small diff Push Button Patch *.pbp file. This allows the user to perform an incremental upgrade of an installed PBI. The available options are summarized in Table 6.2.4.17.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.17: pbi_patch Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-e'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Extract only, do not install. Will extract the archive to ~/&amp;lt;pbidirname&amp;gt; unless the -o option is used.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-g'''}}     &lt;br /&gt;
{{Tbl-line|align=left|Extract image data from header, commonly used for GUI installations}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-i'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display information about this PBI file}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''-o outdir'''}}&lt;br /&gt;
{{Tbl-line|align=left|Specify the directory to use when only extracting the PBI with -e.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--checkscript'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Display any custom scripts used in the installation / removal of this PBI file.  Recommended that these be checked if the PBI file is suspect in any way.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--no-checksig'''}}&lt;br /&gt;
{{Tbl-line|align=left|Skip the openssl signature verification of the PBI data}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--no-hash'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable using the shared-hash dir, which uses hard-links to share files between applications}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== pbi_update(1) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update''' command is used to display information about which PBIs have available updates from their repository and to perform the updates. Table 6.2.4.18 summarizes the available options.&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.18: pbi_update Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-c'''}}      &lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Check-only the specified PBI for available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--check-all'''}}&lt;br /&gt;
{{Tbl-line|align=left|Run a full check of all installed PBIs and display list of available updates.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-disable-auto'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Disable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|align=left|'''--enable-auto'''}}&lt;br /&gt;
{{Tbl-line|align=left|Enable auto-updating of the target PBI.}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''--update-all'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Update all installed PBIs to the latest versions available.}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====pbi_update_hashdir(1)====&lt;br /&gt;
&lt;br /&gt;
The '''pbi_update_hashdir''' command is used by the '''pbid''' daemon to merge the contents of a PBI into the hashdir.&lt;br /&gt;
&lt;br /&gt;
==== pbid(8) ====&lt;br /&gt;
&lt;br /&gt;
The '''pbid''' command runs a small daemon which performs maintenance of installed PBIs, merges files into the shared hashdir, fetches the repository INDEX and meta files, and makes the adding and removing of PBIs much faster. It will automatically be started from the /usr/local/etc/rc.d/pbid startup script if pbid_enable=&amp;quot;YES&amp;quot; is in the /etc/rc.conf file.&lt;br /&gt;
&lt;br /&gt;
This utility supports the option summarized in table 6.2.4.19:&lt;br /&gt;
&lt;br /&gt;
'''Table 6.2.4.19: pbid Options'''&lt;br /&gt;
&lt;br /&gt;
{{Tbl-init|width=90%}}&lt;br /&gt;
{{Tbl-title|width=15%|'''Switch'''}}&lt;br /&gt;
{{Tbl-title|width=85%|'''Description'''}}&lt;br /&gt;
|-&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|'''-v'''}}&lt;br /&gt;
{{Tbl-line|bg=ff|align=left|Enable verbose output when the daemon starts}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This command logs its output to /var/log/pbid.log. Check this log for errors should you experience any problems with PBI maintenance.&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/Burning_the_Installation_Media</id>
		<title>Burning the Installation Media</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/Burning_the_Installation_Media"/>
				<updated>2011-11-01T14:17:09Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Writing the IMG File on a Linux or BSD System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Obtaining PC-BSD|forward=PC-BSD Live Mode}}&lt;br /&gt;
Once you have downloaded and verified the PC-BSD file, you will need to burn it to the correct media. This section demonstrates how to do so using several different applications and operating systems.&lt;br /&gt;
&lt;br /&gt;
===Burning the CD/DVD ISO File on Windows===&lt;br /&gt;
&lt;br /&gt;
Several burning applications are available for Windows. This section will demonstrate how to use Windows 7's Disc Image Burner, ImgBurn, Nero, and InfraRecorder.&lt;br /&gt;
&lt;br /&gt;
====Windows 7 Disc Image Burner====&lt;br /&gt;
&lt;br /&gt;
Windows 7 has built-in support for writing ISO images to disc. Right-click on the .iso file in Windows Explorer and select &amp;quot;Burn disc image&amp;quot; to launch Windows Disc Image Burner, shown in Figure 2.7.1a. Click &amp;quot;Burn&amp;quot; to write the disc. See the Microsoft article [http://windows.microsoft.com/en-US/windows7/Burn-a-CD-or-DVD-from-an-ISO-file Burn a CD or DVD from an ISO file] for more information.&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.1a: Windows Disc Image Burner'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Windows7discburner.png]]&lt;br /&gt;
&lt;br /&gt;
====ImgBurn====&lt;br /&gt;
&lt;br /&gt;
[http://www.imgburn.com/ ImgBurn] is an easy to use image burner for Windows that is available for free download. After installing and launching ImgBurn, insert a blank DVD media and select &amp;quot;Write image file to disk&amp;quot; from the main menu, seen in Figure 2.7.1b:&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.1b: Initial ImgBurn Screen'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Imgburn1a.png]]&lt;br /&gt;
&lt;br /&gt;
You can then use File -&amp;gt; Browse for a source file... to select the .iso file to burn; once selected, your screen should look similar to Figure 2.7.1c. Click the Write icon in the lower left corner to begin the burn.&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.1c: Selecting the Source File (.iso) and Destination (DVD burner) in ImgBurn&lt;br /&gt;
&lt;br /&gt;
[[Image:Imgburn2a.png]]&lt;br /&gt;
&lt;br /&gt;
ImgBurn will provide a status bar to indicate the progress of the burn. When it is finished, ImgBurn will eject the DVD tray then reclose it in order to verify the burn. If the tray does not return itself, which may occur on a laptop, push the tray back in if you wish to verify the burn.&lt;br /&gt;
&lt;br /&gt;
====Nero====&lt;br /&gt;
&lt;br /&gt;
[http://www.nero.com/ Nero] is a popular commercial burning application for Windows. Although it is commercial, there are several free trial versions available for download from the Nero website. Depending upon the version you download and install, your screens may vary slightly from those shown here. This section demonstrates using Nero BurnLite 10.&lt;br /&gt;
&lt;br /&gt;
To burn an ISO, launch Nero BurnLite, click the &amp;quot;Data Burning&amp;quot; tab, and then the + Add button to browse to the location of your .iso file. An example is seen in Figure 2.7.1d:&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.1d: Ready to Burn an ISO Using Nero BurnLite'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Nero1.png]]&lt;br /&gt;
&lt;br /&gt;
Click the Burn button and Nero will start burning your disk. When it is finished, Nero will alert you that the burning process is complete and will eject the DVD.&lt;br /&gt;
&lt;br /&gt;
====InfraRecorder====&lt;br /&gt;
&lt;br /&gt;
[http://infrarecorder.org/ InfraRecorder] is an open source burning application for both CDs and DVDs. Once installed, open InfraRecorder and click on the &amp;quot;Write Image&amp;quot; button shown in Figure 2.7.1e:&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.1e: Initial InfraRecorder Screen'''&lt;br /&gt;
&lt;br /&gt;
[[File:Pic1.png]]&lt;br /&gt;
&lt;br /&gt;
InfraRecorder will display a screen where you can browse to the location of the PC-BSD image. Once selected, you will be presented with an options screen shown in Figure 2.7.1f:&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.1f: Burn Options in InfraRecorder'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Infrarecorder1.png]]&lt;br /&gt;
&lt;br /&gt;
You can accept the defaults and click OK to start the burn. When finished, the tray with the DVD will open and a dialog box will appear indicating that the burning process has finished.&lt;br /&gt;
&lt;br /&gt;
===Burning the CD/DVD ISO File on a Unix System===&lt;br /&gt;
&lt;br /&gt;
This section demonstrates how to burn the installation ISO using the following tools that may be available on a Linux or BSD system: K3B, Brasero, and growisofs.&lt;br /&gt;
&lt;br /&gt;
====K3B====&lt;br /&gt;
    &lt;br /&gt;
The KDE desktop environment provides the [http://k3b.plainblack.com/ K3B] burning application. K3B has a similar interface to burning software found on Windows and is equally easy to use.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' depending upon your distribution, K3B may or may not be included with the installation of KDE. If it does not appear in the KDE application launcher, you should be able to install it using your operating system's software management system. On a FreeBSD system, you can install the K3B package. If you are running an older version of KDE, use the '''pkg_add -r k3b''' command. If you are running KDE4, use the '''pkg_add -r k3b-kde4''' command instead. On a PC-BSD system, you can install the K3B PBI using [[Using AppCafe™]].&lt;br /&gt;
&lt;br /&gt;
To burn your ISO, launch K3B and click &amp;quot;Tools → Burn Image...&amp;quot;. Figure 2.7.2a demonstrates this screen on a KDE4 system. On a KDE3 system, the menu item may appear as &amp;quot;Burn DVD ISO Image...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.2a: Selecting the Burn Image Tool Within K3B'''&lt;br /&gt;
&lt;br /&gt;
[[Image:K3b2a.png]]&lt;br /&gt;
&lt;br /&gt;
A new window, seen in Figure 2.7.2b, will launch. Click the blue folder to browse to the location of your .iso file. &lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.2b: K3B's Burn Image Screen'''&lt;br /&gt;
&lt;br /&gt;
[[Image:K3b2b.png]]&lt;br /&gt;
&lt;br /&gt;
Once your file is listed, ensure a blank DVD is inserted and click the &amp;quot;Start&amp;quot; button. K3B will automatically eject the DVD once the burn is complete.&lt;br /&gt;
&lt;br /&gt;
====Brasero====&lt;br /&gt;
&lt;br /&gt;
[http://gnomebaker.sourceforge.net/ Brasero] is an easy to use CD-ROM/DVD burner included with the GNOME desktop. To launch Brasero, click Applications -&amp;gt; Sound &amp;amp; Video -&amp;gt; Brasero Disk Burner and the dialog window shown in Figure 2.7.2c will be displayed.&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.2c: Brasero's Initial Screen'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Brasero1a.png]]&lt;br /&gt;
&lt;br /&gt;
If you click on Burn image -&amp;gt; Click here to select a disk image, you will be able to select your .iso file. Once selected, click &amp;quot;Open&amp;quot; to return to the screen seen in Figure 2.7.2d:&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.2d: Viewing the Image to Burn and the DVD Hardware Properties Within Brasero'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Brasero2.png]]&lt;br /&gt;
&lt;br /&gt;
The name and size of your .iso file should appear and, assuming a blank DVD is inserted, Brasero will indicate the size of the media. The lower portion of Figure 2.7.2d shows the menu that appears if you click on the Properties button. You can change these options if you wish, but it is fine to keep the default settings. When you are ready, click the &amp;quot;Burn&amp;quot; button and Brasero will burn your ISO.&lt;br /&gt;
&lt;br /&gt;
====growisofs====&lt;br /&gt;
&lt;br /&gt;
If you are familiar with using the command line on a FreeBSD system, you can use the '''growisofs''' command line utility to burn the DVD. This utility is included with the dvd+rw-tools FreeBSD port. If that software is not yet installed, issue this command as the superuser:&lt;br /&gt;
&lt;br /&gt;
 '''pkg_add -r dvd+rw-tools'''&lt;br /&gt;
&lt;br /&gt;
Depending upon the type of DVD burner hardware, you may have to configure the system to use it. If the device is ATAPI (i.e. not USB or SCSI), the ATAPI driver must be loaded. The superuser can issue this command:&lt;br /&gt;
&lt;br /&gt;
 '''kldload atapicam'''&lt;br /&gt;
&lt;br /&gt;
If you just get your prompt back, the driver successfully loaded. If you get the message &amp;quot;kldload: can't load atapicam: File exists&amp;quot;, this means that the driver was already loaded. If the device is USB or SCSI, no additional drivers need to be loaded if you are running the generic FreeBSD kernel. After inserting the DVD media into the device, you can start the burn using this command:&lt;br /&gt;
&lt;br /&gt;
  '''growisofs -Z /dev/cd0=PCBSD9.0-BETA2-x86-DVD.iso'''&lt;br /&gt;
&lt;br /&gt;
If your device is not the first CD device, change the number 0 accordingly. If your ISO has a different name, substitute the correct name in the command shown above.&lt;br /&gt;
&lt;br /&gt;
===Burning the CD/DVD ISO File on a Mac OSX System===&lt;br /&gt;
&lt;br /&gt;
To burn the ISO on a Mac OSX system, go to Finder -&amp;gt; Applications -&amp;gt; Utilities -&amp;gt; Disk Utility. With a blank media inserted into the burner, highlight the device representing the CD/DVD writer and click the Burn button. This will open up a browser where you can select the ISO that you with to burn. In the example shown in Figure 2.7.3a, the DVD ISO has been selected and the device is a Sony DVD writer.&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.3a: Using Disk Utility on Mac OSX'''&lt;br /&gt;
&lt;br /&gt;
[[Image:Mac.png]]&lt;br /&gt;
&lt;br /&gt;
Once the ISO is highlighted, click the Burn button. A pop-up message will indicate that the device is ready to burn. Click burn once more and Disk Utility will write the ISO to the CD/DVD media.&lt;br /&gt;
&lt;br /&gt;
===Creating a Bootable USB from an ISO using UNetbootin===&lt;br /&gt;
&lt;br /&gt;
[http://unetbootin.sourceforge.net/| UNetbootin] is a utility that converts an ISO to a bootable USB. This ability is handy if you don't have a CD/DVD device and prefer to use a graphical utility to manipulate an ISO rather than the command line '''dd''' utility to burn an .img file. To use UNetbootin you will need to download a PC-BSD ISO file (CD or DVD) and a USB thumb drive large enough to hold that file.&lt;br /&gt;
&lt;br /&gt;
UNetbootin downloads are available for Windows, Mac OSX, and Linux. This section demonstrates how to create a bootable USB using a Windows 7 system.&lt;br /&gt;
&lt;br /&gt;
After downloading and launching UNetbootin, you should see the screen shown in Figure 2.7.4a.&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.4a: Selecting the ISO in UNetbootin'''&lt;br /&gt;
&lt;br /&gt;
[[File:Unetbootin.png]]&lt;br /&gt;
&lt;br /&gt;
In the Diskimage section, use the ... browse button to locate the ISO that you downloaded. Insert the USB thumb drive and ensure that the drive letter for the USB thumb drive is the same as the one shown in Windows Explorer. Click the OK button to extract and copy the files to the thumb drive. The application will tell you when it is finished. You can now reboot the system with the USB thumb drive inserted to start the PC-BSD installer.&lt;br /&gt;
&lt;br /&gt;
NEEDS MODIFICATION OF SOMETHING FOR THIS TO WORK&lt;br /&gt;
&lt;br /&gt;
http://sourceforge.net/apps/trac/unetbootin/wiki&lt;br /&gt;
&lt;br /&gt;
===Writing an IMG File to USB===&lt;br /&gt;
&lt;br /&gt;
To write an .img.bz2 file you will need the following:&lt;br /&gt;
&lt;br /&gt;
* a utility that can extract bz2 zipped files&lt;br /&gt;
&lt;br /&gt;
* a utility that can write the image to a USB media&lt;br /&gt;
&lt;br /&gt;
* a USB thumb drive or hard drive large enough to hold the image. Be aware that some cheaper USB thumb drives do not have the capacity that they advertise. For example, a 4GB USB drive may actually contain less than the ~3.8GB required for a full image installation. If your installation fails, try using a larger capacity USB thumb drive.&lt;br /&gt;
&lt;br /&gt;
The utilities that you use will depend upon your operating system.&lt;br /&gt;
&lt;br /&gt;
Once the image is written, you can boot from the removable device and proceed with the [[Installing PC-BSD|installation]]. If you are using the boot-only img file, you will also need to refer to the section [[Install PC-BSD Over a Network]] as this image requires an Internet connection to download the rest of the files needed to complete the installation of PC-BSD.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' if the system does not boot from the removable device, check the boot order in your system BIOS. &lt;br /&gt;
&lt;br /&gt;
====Writing the IMG File on a Linux or BSD System====&lt;br /&gt;
&lt;br /&gt;
If you selected to download an .img.bz2 file instead of an ISO, you can write the image file to a flash card or removable USB drive using the '''bunzip2''' and '''dd''' command line utilities on a BSD or Linux system. On a FreeBSD system, the superuser can use these commands to extract the specified image and write it to the first plugged in USB device:&lt;br /&gt;
&lt;br /&gt;
 '''bunzip2 PCBSD9.0-BETA1.5-x86-USBFULL.img.bz2'''&lt;br /&gt;
 '''dd if=PCBSD9.0-BETA1.5-x86-USBFULL.img of=/dev/da0 bs=64k'''&lt;br /&gt;
 63200+0 records in&lt;br /&gt;
 63200+0 records out&lt;br /&gt;
 4141875200 bytes transferred in 1395.261087 secs (2968531 bytes/sec)&lt;br /&gt;
&lt;br /&gt;
When using the '''dd''' command:&lt;br /&gt;
&lt;br /&gt;
* '''if=''' refers to the input file; in our case, the name of the file to be written; it should end with an .img extension&lt;br /&gt;
&lt;br /&gt;
* '''of=''' refers to the output file; in our case, the device name of the flash card or removable USB drive. You may have to increment the number in the name if it is not the first USB device. On Linux the first USB device is usually /dev/sdb. When in doubt plug in the USB device, then run the command &amp;quot;dmesg&amp;quot;. The last paragraph of the dmesg output will provide the proper name. Probably &amp;quot;sdb&amp;quot; or &amp;quot;sdc&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
* '''bs=''' refers to the block size&lt;br /&gt;
&lt;br /&gt;
'''NOTE For Linux Users:''' On Linux, you will see two (or more, as the case may be) device nodes corresponding to the usb stick. For example, '''/dev/sdc''' and '''/dev/sdc1'''. ''You can get the device node corresponding to the usb stick from the output of '''mount'''''. The latter file '''/dev/sdc1''' corresponds to primary partition of the usb stick. Before using the '''dd''' command, ensure that the usb stick is unmounted. When using the '''dd''' command, remember to use '''/dev/sdc''' (device node without the number) as the option for the output file '''of='''. Also, remember that once the dd completes, you might not be able to mount the usb stick properly on Linux, for Linux has a very limited support of UFS, the BSD file system that gets created on the usb. Hence, it is not quite possible to even look at the files and directories created on the usb stick from Linux.&lt;br /&gt;
&lt;br /&gt;
====Writing the IMG File on a Windows System====&lt;br /&gt;
&lt;br /&gt;
To burn the .img file on a Windows system, you can use [https://launchpad.net/win32-image-writer win32-image-writer]. You'll also need a utility that can extract .bz2 files such as [http://www.7-zip.org/ 7-Zip].&lt;br /&gt;
&lt;br /&gt;
When downloading win32-image-writer, download the latest version that ends in -binary.zip and use a utility such as WinZip or 7zip to unzip the executable.&lt;br /&gt;
&lt;br /&gt;
To extract the PC-BSD image file using 7-Zip, browse to the location containing your downloaded .img.bz2 file, as seen in Figure 2.7.4a.&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.4a: Using 7-Zip to Extract Image File'''&lt;br /&gt;
&lt;br /&gt;
[[Image:7zip.jpeg]]&lt;br /&gt;
&lt;br /&gt;
Click the Extract button and browse to the location where you would like to save the extracted image. Once extracted, your image will end in .img and is now ready to be written to a USB device using the win32-image-writer application.&lt;br /&gt;
&lt;br /&gt;
If you launch win32-image-writer.exe, it will start the Win32 Disk Imager utility, shown in Figure 2.7.4b. Use the browse button to browse to the location of the .img file. Insert a USB thumb drive and select its drive letter (in this example, drive F). Click the Write button and the image will be written to the USB thumb drive.&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.4b: Using Win32 Disk Imager to Write the Image'''&lt;br /&gt;
&lt;br /&gt;
[[File:Image.jpeg]]&lt;br /&gt;
&lt;br /&gt;
====Writing the IMG File on a Mac OSX System====&lt;br /&gt;
&lt;br /&gt;
To extract the img.bz2 file on a Mac system, use Finder to browse to the location of the file, as seen in Figure 2.7.4c.&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.4c: Extracting the Image on Mac'''&lt;br /&gt;
&lt;br /&gt;
[[File:Mac1.png]]&lt;br /&gt;
&lt;br /&gt;
Simply double-click the file to extract it to the .img format. Finder will create a second file with the .img extension.&lt;br /&gt;
&lt;br /&gt;
To burn that .img file, insert a USB stick and open Terminal. Run the '''diskutil list''' command to find out the device name of the USB disk, unmount the USB disk, then use '''dd''' to write the image. In the example shown in Figure 2.7.4d, an 8GB USB stick has a device name of /dev/disk1.&lt;br /&gt;
&lt;br /&gt;
'''Figure 2.7.4d: Writing the Image File Within Terminal'''&lt;br /&gt;
&lt;br /&gt;
[[File:Mac2.png]]&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	<entry>
		<id>http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide</id>
		<title>PBI Module Builder Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.pcbsd.org/index.php/PBI_Module_Builder_Guide"/>
				<updated>2011-10-26T18:16:53Z</updated>
		
		<summary type="html">&lt;p&gt;Krismoore: /* Module Components */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavHeader|back=Test PBIs|forward=Purchase PC-BSD Swag}}&lt;br /&gt;
The PBI format changed between PC-BSD 8.x and 9.x. This means that you should follow the instructions for the PBI format that you wish to create.&lt;br /&gt;
&lt;br /&gt;
=== Building PBIs for PC-BSD 9.x and higher ===&lt;br /&gt;
&lt;br /&gt;
==== Creating a New PBI with '''pbi_makeport''' ====&lt;br /&gt;
&lt;br /&gt;
Starting in PC-BSD 9.x and higher, '''pbi_makeport''' is included with the operating system. This utility provides an easy way for a user to convert an existing FreeBSD port into a PBI module. The PBI build server builds modules into PBIs which are then made available to users through AppCafe™. '''man pbi_makeport''' provides details on this application's various usage options. &lt;br /&gt;
&lt;br /&gt;
When running '''pbi_makeport''' it is possible to supply an optional meta-data configuration directory which contains additional data used to supplement the port building and the final PBI file. This conf directory may contain extra icon data for the desktop, install/uninstall scripts, custom make options and more. &lt;br /&gt;
&lt;br /&gt;
Examples of 9.x modules can be found at [http://trac.pcbsd.org/browser/pcbsd/current/src-sh/pbi-manager/module-examples Examples in Subversion].&lt;br /&gt;
&lt;br /&gt;
====Module Components====&lt;br /&gt;
&lt;br /&gt;
A PBI module contains the following components. When creating a PBI module, create a directory on your computer to hold the module's components. For example, if you are creating a PBI module for firefox, create a directory called firefox and place the following files within that directory. The directory that you create is referred to as %PBI_APPDIR%%. &lt;br /&gt;
&lt;br /&gt;
'''1. LICENSE File'''&lt;br /&gt;
&lt;br /&gt;
The text of a license agreement you want the user to click to accept before installation. This file is optional unless the underlying port is restricted and requires the user to accept a license in order to install and use the software.&lt;br /&gt;
&lt;br /&gt;
'''2. pbi.conf'''&lt;br /&gt;
&lt;br /&gt;
The pbi.conf file is mandatory. It is a simple shell script that contains the information needed to build the PBI. Typically this file requires you to modify a few simple variables, such as the name of the program, its location in the ports tree, and the name of its icon. Sometimes you will need to set a few additional variables in order to make sure that required dependencies are included in the PBI. If you get stuck when creating your own pbi.conf, you can view the pbi.conf file for every PBI module in [http://trac.pcbsd.org/browser#pbi/modules this section] of the PC-BSD trac repository. Here is an example of the pbi.conf file for firefox: &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# PBI Build Configuration&lt;br /&gt;
# Place over-rides and settings here&lt;br /&gt;
#&lt;br /&gt;
# XDG Desktop Menu Spec:&lt;br /&gt;
# http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html&lt;br /&gt;
##############################################################################&lt;br /&gt;
&lt;br /&gt;
# Program Name&lt;br /&gt;
PBI_PROGNAME=&amp;quot;Firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Website&lt;br /&gt;
PBI_PROGWEB=&amp;quot;http://www.mozilla.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Author / Vendor&lt;br /&gt;
PBI_PROGAUTHOR=&amp;quot;The Mozilla Foundation&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Default Icon (Relative to %%PBI_APPDIR%% or resources/)&lt;br /&gt;
PBI_PROGICON=&amp;quot;share/pixmaps/FireFox-128.png&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# The target port we are building&lt;br /&gt;
PBI_MAKEPORT=&amp;quot;www/firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Additional options for make.conf&lt;br /&gt;
PBI_MAKEOPTS=&amp;quot;PACKAGE_BUILDING=Y&lt;br /&gt;
WITH_CUPS=yes&lt;br /&gt;
WITH_GECKO=libxul&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Ports to build before / after&lt;br /&gt;
PBI_MKPORTBEFORE=&amp;quot;&amp;quot;&lt;br /&gt;
PBI_MKPORTAFTER=&amp;quot;audio/esound x11-fonts/dejavu x11-themes/qtcurve-gtk2 devel/gconf2 www/firefox-i18n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Exclude List&lt;br /&gt;
PBI_EXCLUDELIST=&amp;quot;./include ./share/doc&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Increment to trigger rebuild of PBI on build servers&lt;br /&gt;
PBI_BUILDKEY=&amp;quot;04&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# This app needs to install as root&lt;br /&gt;
PBI_REQUIRESROOT=&amp;quot;YES&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set the priority of this build &lt;br /&gt;
PBI_AB_PRIORITY=&amp;quot;50&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set the files we want to exclude from the shared hashdir&lt;br /&gt;
PBI_HASH_EXCLUDES=&amp;quot;lib/firefox/firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
export PBI_PROGNAME PBI_PROGWEB PBI_PROGAUTHOR PBI_PROGICON PBI_MAKEPORT PBI_MAKEOPTS &lt;br /&gt;
PBI_MKPORTBEFORE PBI_MKPORTAFTER PBI_BUILDKEY PBI_REQUIRESROOT PBI_EXCLUDELIST&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Table 10.7a describes the most commonly used variables. When creating your pbi.conf file, you will want to refer to the port's FreeBSD Makefile and pkg-descr so that you will know which values to input.&lt;br /&gt;
&lt;br /&gt;
'''Table 10.7a: Commonly Used pbi.conf Variables'''&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Variable'''    &lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|PBI_PROGNAME=&lt;br /&gt;
|Mandatory. Should be the same value as PORTNAME= in the port's Makefile, but capitalized.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_PROGWEB=&lt;br /&gt;
|Mandatory unless does not exist. Should be the same value as WWW= in the port's pkg-descr.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_PROGAUTHOR=&lt;br /&gt;
|Mandatory. Often found in the port's pkg-descr or at the website for the application.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_PROGICON=&lt;br /&gt;
|Mandatory. Path, relative to %PBI_APPDIR%%, to application icon file in png format.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_PROGREVISION=&lt;br /&gt;
|Bump up a PBIs revision number. Useful when rebuilding a port with new PBI specific options. &lt;br /&gt;
|-&lt;br /&gt;
|PBI_MAKEPORT=&lt;br /&gt;
|Mandatory. The path to the port within /usr/ports/.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_MAKEOPTS=&lt;br /&gt;
|Optional. Set this to the options that you want saved into make.conf for the port building process. For example: WITH_CUPS=YES&lt;br /&gt;
|-&lt;br /&gt;
|PBI_MKPORTBEFORE=&lt;br /&gt;
|Optional. Port(s) to build before starting the target port PBI_MAKEPORT.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_MKPORTAFTER=&lt;br /&gt;
|Optional. Port(s) to build after finishing the target port PBI_MAKEPORT.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_BUILDKEY=&lt;br /&gt;
|Should not be included. This variable is used on the PBI build server to force the rebuild of a PBI that has failed to build.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_REQUIRESROOT=&lt;br /&gt;
|Set to to YES to require this app to be installed as root, default is NO which allows to be installed as user or root mode.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_EXCLUDELIST=&lt;br /&gt;
|List of files / directories to exclude from the final archive, such as ./include ./share&lt;br /&gt;
|-&lt;br /&gt;
|PBI_AB_PRIORITY=&lt;br /&gt;
|Set this to a number, the higher indicates greater priority and will be built before lower priority PBIs. &lt;br /&gt;
|-&lt;br /&gt;
|PBI_HASH_EXCLUDES=&lt;br /&gt;
|Set to a space delimited list of files to exclude from merging into the shared hash-dir&lt;br /&gt;
|-&lt;br /&gt;
|export&lt;br /&gt;
|Mandatory. Followed by a list of all of the variables that you have set so that they will be included when the PBI is built.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''3. external-links'''&lt;br /&gt;
&lt;br /&gt;
The optional external-links file contains a list of targets to link into the system's LOCALBASE at PBI installation time. This is useful for placing binaries and files in the user's PATH. When building PBIs from a FreeBSD port, this file is usually not needed, as most binaries and files are auto-detected and placed in the LOCALBASE. Example 10.7.1.3 shows an example usage:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7.1.3: Example external-links File'''&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Files to be Sym-Linked into the default LOCALBASE&lt;br /&gt;
# One per-line, relative to %%PBI_APPDIR%% and LOCALBASE&lt;br /&gt;
# Defaults to keeping any existing files in LOCALBASE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# TARGET                LINK IN LOCALBASE       ACTION&lt;br /&gt;
#etc/rc.d/servfoo       etc/rc.d/servfoo        keep&lt;br /&gt;
#include/libfoo.h       include/libfoo.h        replace&lt;br /&gt;
#etc/rc.d/servfoo       etc/rc.d/servfoo        keep&lt;br /&gt;
bin/firefox3            bin/firefox3            binary,nocrash&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The flags in the ACTION column are as follows:&lt;br /&gt;
&lt;br /&gt;
* '''keep''': if this file already exists in LOCALBASE, don't overwrite it&lt;br /&gt;
&lt;br /&gt;
* '''replace''': replace this file in LOCALBASE if it exists&lt;br /&gt;
&lt;br /&gt;
* '''binary''': this file is an executable&lt;br /&gt;
&lt;br /&gt;
* '''nocrash''': used for binary files; don't display crash handler if program exits with non-0 status&lt;br /&gt;
&lt;br /&gt;
'''4. resources/'''&lt;br /&gt;
&lt;br /&gt;
The resources directory can contain extra files you wish copied into the PBI application directory. This is often the best place for icons and other files not included with a port. &lt;br /&gt;
&lt;br /&gt;
'''5. scripts/'''&lt;br /&gt;
&lt;br /&gt;
This directory can contain the following scripts:&lt;br /&gt;
&lt;br /&gt;
* '''post-install.sh''': script run immediately after the extraction of PBI contents to disk&lt;br /&gt;
&lt;br /&gt;
* '''post-portmake.sh''': script run during building of the PBI file, after the port-compile is finished&lt;br /&gt;
&lt;br /&gt;
* '''pre-install.sh''': script run before installation of the PBI; return non-0 to halt installation&lt;br /&gt;
&lt;br /&gt;
* '''pre-remove.sh''': script run before deletion of the PBI file&lt;br /&gt;
&lt;br /&gt;
Table 10.7.1.5 summarizes the variables that may be used in these scripts:&lt;br /&gt;
&lt;br /&gt;
'''Table 10.7.1.5 Supported Variables&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|'''Variable'''    &lt;br /&gt;
|'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|PBI_PROGNAME=&lt;br /&gt;
|Should be the same value as PORTNAME= in the port's Makefile, but capitalized.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_PROGDIRNAME &lt;br /&gt;
|This is the name of the directory that is created for the PBI in the /usr/pbi/ directory.&lt;br /&gt;
(example: &amp;quot;firefox-amd64&amp;quot; for the 64-bit Firefox PBI)&lt;br /&gt;
|-&lt;br /&gt;
|PBI_PROGDIRPATH&lt;br /&gt;
|This is the full path to the PBI install directory &lt;br /&gt;
(example: &amp;quot;/usr/pbi/firefox-amd64/&amp;quot; for the 64-bit Firefox PBI)&lt;br /&gt;
|-&lt;br /&gt;
|PBI_PROGVERSION&lt;br /&gt;
|This is the version of the program. Should be the same value as the DISTVERSION= in the port's Makefile.&lt;br /&gt;
|-&lt;br /&gt;
|PBI_RCDIR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SYS_LOCALBASE&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|PBI_FAKEBIN_DIR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}        &lt;br /&gt;
&lt;br /&gt;
'''6. xdg-menu/ and xdg-desktop/'''&lt;br /&gt;
&lt;br /&gt;
The xdg-menu and xdg-desktop directories can be used to supply menu and desktop icons, respectively. The file that you place in these directories should be in the format pbiname.desktop. Example 10.7.1.6 shows the firefox.desktop files for the firefox PBI:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7.1.6: firefox.desktop File'''&lt;br /&gt;
 &lt;br /&gt;
 '''more xdg-menu/firefox.desktop'''&lt;br /&gt;
 #!/usr/bin/env xdg-open&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Value=1.0&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=FireFox&lt;br /&gt;
 GenericName=FireFox&lt;br /&gt;
 Exec=%%PBI_EXEDIR%%/firefox %U&lt;br /&gt;
 Path=%%PBI_APPDIR%%&lt;br /&gt;
 Icon=%%PBI_APPDIR%%/share/pixmaps/FireFox-128.png&lt;br /&gt;
 StartupNotify=true&lt;br /&gt;
 Categories=Network;&lt;br /&gt;
 &lt;br /&gt;
 '''more xdg-desktop/firefox.desktop'''&lt;br /&gt;
 #!/usr/bin/env xdg-open&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Value=1.0&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name=FireFox&lt;br /&gt;
 GenericName=FireFox&lt;br /&gt;
 Exec=%%PBI_EXEDIR%%/firefox %U&lt;br /&gt;
 Path=%%PBI_APPDIR%%&lt;br /&gt;
 Icon=%%PBI_APPDIR%%/share/pixmaps/FireFox-128.png&lt;br /&gt;
 StartupNotify=true &lt;br /&gt;
&lt;br /&gt;
%%PBI_EXEDIR%% should reference the PBI's executable and any required switches.&lt;br /&gt;
&lt;br /&gt;
For more details on the XDG menu specifications, please refer to the [http://standards.freedesktop.org/menu-spec/menu-spec-1.0.html freedesktop specifications]. &lt;br /&gt;
&lt;br /&gt;
'''7. xdg-mime/'''&lt;br /&gt;
&lt;br /&gt;
The xdg-mime directory is used to register file associations according to the [http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html freedesktop MIME specs]. This requires the creation of an XML file. The example shown in Figure 10.7.1.7 adds the MIME information for gimp, so that it can be available as an application choice in a web browser:&lt;br /&gt;
&lt;br /&gt;
'''Example 10.7.1.7: Gimp MIME Info'''&lt;br /&gt;
&lt;br /&gt;
 '''more xdg-mime/gimp-xdg.xml'''&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'&amp;gt;&lt;br /&gt;
  &amp;lt;mime-type type=&amp;quot;application/x-gimp&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;comment&amp;gt;Gimp - XCF File&amp;lt;/comment&amp;gt;&lt;br /&gt;
   &amp;lt;glob weight=&amp;quot;100&amp;quot; pattern=&amp;quot;*.xcf&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;glob weight=&amp;quot;100&amp;quot; pattern=&amp;quot;*.XCF&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/mime-type&amp;gt;&lt;br /&gt;
 &amp;lt;/mime-info&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building PBIs for PC-BSD 8.x and Earlier ===&lt;br /&gt;
&lt;br /&gt;
Earlier PBI versions were created using the PBI Builder Software. The PBI Builder Software automates the process of converting an existing FreeBSD package into a PBI. Anyone with a bit of time, the willingness to learn new things, and the desire to increase the number of PBIs available to PC-BSD users is welcome to create and submit new PBIs.&lt;br /&gt;
&lt;br /&gt;
Installing the PBI Builder software relatively easy, simply download the tbz package for you architecture and version of PC-BSD from the [http://www.pcbsd.org/development/get-involved/pbi-porting PBI Builder Homepage], and place it somewhere on your system with several GB of free space. Next run these commands (as root):&lt;br /&gt;
&lt;br /&gt;
 # '''tar xvjpf pbibuild*.tbz'''&lt;br /&gt;
 # '''ln -s `pwd`/pbi-build /pbi-build'''&lt;br /&gt;
&lt;br /&gt;
==== PBI Building Concepts ====&lt;br /&gt;
&lt;br /&gt;
The PBI Builder software relies on the following concepts:&lt;br /&gt;
&lt;br /&gt;
'''1. Modules:'''a directory containing the files needed by the PBI. The next section will explain how to configure a module for a new PBI.&lt;br /&gt;
&lt;br /&gt;
'''2. PBI Sandbox:''' in order to create a clean build environment that does not affect the software running on the host system, all PBI creation is done in the /pbi-build/pbisandbox directory. This is a complete buildworld environment, and you may chroot into it in order to tweak a port build, or inspect the built contents of a port by using this command as the superuser:&lt;br /&gt;
&lt;br /&gt;
 # '''chroot /pbi-build/pbisandbox'''&lt;br /&gt;
&lt;br /&gt;
'''3. Build command:''' once you have a module, simply cd into the pbi-build directory and specify which module to build. Depending upon the size of the application, the build may take some time to finish. The following example will build the firefox PBI:&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build'''&lt;br /&gt;
 # '''./buildpbi.sh webbrowsers/firefox '''&lt;br /&gt;
&lt;br /&gt;
'''4. Recreate command:''' during the creation of a new module, it may become necessary to recreate the PBI file to test new configurations. If the PBI has already been compiled once, a change often does not require the complete rebuilding of the port from source. By skipping the source build, a new PBI may be generated within moments. To skip the building simply run the 3.makepbi.sh script in /pbi-build/scripts/3.makepbi.sh as shown:&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build/scripts'''&lt;br /&gt;
 # '''./3.makepbi.sh webbrowsers/firefox'''&lt;br /&gt;
&lt;br /&gt;
'''5. Distfiles:''' when running a port build, many files will be downloaded and stored in /usr/ports/distfiles within the /pbi-build/pbisandbox directory. The pbisandbox is removed between builds of modules, but starting in PBI Builder 2.0, the distfiles contents are preserved in the /pbi-build/distfiles directory.&lt;br /&gt;
&lt;br /&gt;
==== Working with Modules ====&lt;br /&gt;
&lt;br /&gt;
When starting the process of creating a new module for the PBI Builder, you should start with an existing module and modify it to suit your program's needs. You can either copy a module from /pbi-build/docs/module-examples, download a module from SVN, or download a template from SVN.&lt;br /&gt;
&lt;br /&gt;
Modules currently in the PC-BSD Subversion repo can be browsed via the [http://trac.pcbsd.org/browser/pbibuild/modules web].&lt;br /&gt;
&lt;br /&gt;
To download a specific module, use the following commands, replacing &amp;quot;firefox&amp;quot; with the specific module you intend to checkout.&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build/modules'''&lt;br /&gt;
 # '''svn co &amp;lt;nowiki&amp;gt;svn://svn.pcbsd.org/pbibuild/modules/webbrowsers/firefox&amp;lt;/nowiki&amp;gt; webbrowsers/firefox'''&lt;br /&gt;
&lt;br /&gt;
If you wish to start with a blank module template, you may download by using these commands:&lt;br /&gt;
&lt;br /&gt;
 # '''cd /pbi-build/modules'''&lt;br /&gt;
 # '''fetch &amp;lt;nowiki&amp;gt;http://www.pcbsd.org/files/templates/module-template.tgz&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
 # '''tar xvzf module-template.tgz'''&lt;br /&gt;
&lt;br /&gt;
A proper module will contain several files and directories:&lt;br /&gt;
&lt;br /&gt;
'''Required files / directories'''&lt;br /&gt;
&lt;br /&gt;
* '''pbi.conf:''' the main configuration file for the module.&lt;br /&gt;
&lt;br /&gt;
* '''copy-files:''' listing of the files and directories you wish to copy from the pbisandbox environment to your finished PBI file.&lt;br /&gt;
 &lt;br /&gt;
* '''kmenu-dir:''' directory of configuration entries for the K menu.&lt;br /&gt;
&lt;br /&gt;
* '''overlay-dir:''' directory of contents to be applied to base PBI directory. Icons, PBI setup scripts, and most other files not added via copy-files are placed here.&lt;br /&gt;
&lt;br /&gt;
'''Optional Files used on a per-need basis'''&lt;br /&gt;
&lt;br /&gt;
* '''build.sh:''' script to run after the port make and copy-files are processed. &lt;br /&gt;
&lt;br /&gt;
* '''preportmake.sh:''' script to run in pbisandbox prior to the port make being executed. &lt;br /&gt;
&lt;br /&gt;
* '''mime-dir:''' directory of mime entries for your PBI.&lt;br /&gt;
&lt;br /&gt;
==== The pbi.conf file ====&lt;br /&gt;
&lt;br /&gt;
This file is the first thing you read for each module.&lt;br /&gt;
The available variables are explained with the example of &amp;quot;FireFox&amp;quot; below:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Program Name&lt;br /&gt;
# The name of the PBI file being built&lt;br /&gt;
PROGNAME=&amp;quot;Firefox&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Website&lt;br /&gt;
# Website of the program the module is building&lt;br /&gt;
PROGWEB=&amp;quot;http://www.mozilla.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Program Author&lt;br /&gt;
# Who created / maintains the program being built&lt;br /&gt;
PROGAUTHOR=&amp;quot;The Mozilla Foundation&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Default Icon&lt;br /&gt;
# Relative to overlay-dir, the main icon you want to show up for this PBI&lt;br /&gt;
PROGICON=&amp;quot;share/pixmaps/FireFox-128.png&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Port we want to build&lt;br /&gt;
# The port the server will track to determine when it's time for a rebuild&lt;br /&gt;
PBIPORT=&amp;quot;/usr/ports/www/firefox/&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Set to &amp;quot;Auto or NONE&amp;quot; to have the PBI creator auto-populate libs or not&lt;br /&gt;
# This allows you to also use the autolibs/ directory in your overlay-dir as a location for extra&lt;br /&gt;
# library files&lt;br /&gt;
PROGLIBS=&amp;quot;Auto&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# PBI Update URL set to &amp;quot;&amp;quot; or the http:// URL of update checker&lt;br /&gt;
# Leave this as update.pbidir.com normally&lt;br /&gt;
PBIUPDATE=&amp;quot;http://update.pbidir.com&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Other Ports we need built&lt;br /&gt;
# One per line, any additional ports that need to be built for this PBI&lt;br /&gt;
OTHERPORT=&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# Enter your custom make options here&lt;br /&gt;
# Options that will be put into the make.conf for the build of this port&lt;br /&gt;
# Options get inserted into the build's /etc/make.conf file and effect all the ports built for that PBI&lt;br /&gt;
MAKEOPTS=&amp;quot;&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# FBSD7BASE - (7.1 or 7.2)&lt;br /&gt;
# This variable can be used to set the specific version of FreeBSD this port needs to be compiled&lt;br /&gt;
# under. Use this is a port is known to not build / work when compiled on FreeBSD 7.0 (the default)&lt;br /&gt;
FBSD7BASE=&amp;quot;7.2&amp;quot;; export FBSD7BASE&lt;br /&gt;
 &lt;br /&gt;
# This option determines if the pbi-builder will auto-copy files from the target port&lt;br /&gt;
# Can be set to YES/NO/FULL&lt;br /&gt;
# YES - Copy only target port files automatically&lt;br /&gt;
# No - Don't copy any target port files (will need to use copy-files config instead)&lt;br /&gt;
# FULL - Copy target port files, and recursive dependency files as well (Makes very large PBI)&lt;br /&gt;
PBIAUTOPOPULATE=&amp;quot;YES&amp;quot; ; export PBIAUTOPOPULATE&lt;br /&gt;
 &lt;br /&gt;
# Can be set to OFF/NO to disable copying all files from ports made with the OTHERPORT variable&lt;br /&gt;
# Leaving this unset will have the builder auto-copy all files from OTHERPORT targets&lt;br /&gt;
PBIAUTOPOPULATE_OTHERPORT=&amp;quot;&amp;quot; ; export PBIAUTOPOPULATE_OTHERPORT&lt;br /&gt;
 &lt;br /&gt;
# Set this variable to any target ports you want to autopopulate files from, in addition to&lt;br /&gt;
# the main target port&lt;br /&gt;
# List additional ports one-per-line&lt;br /&gt;
PBIAUTOPOPULATE_PORTS=&amp;quot;/usr/ports/www/mplayer-plugin/&amp;quot; ; export PBIAUTOPOPULATE_PORTS&lt;br /&gt;
 &lt;br /&gt;
# By default the PBI will remove any xorg-fonts, and create a symlink to the the users system fonts&lt;br /&gt;
# Setting this to YES keeps the PBIs internal fonts and doesn't create a link&lt;br /&gt;
# PBIDISABLEFONTLINK=&amp;quot;&amp;quot; ; export PBIDISABLEFONTLINK&lt;br /&gt;
 &lt;br /&gt;
# By default the libGL* libraries will be removed from a PBI in order to use the systems libGL&lt;br /&gt;
# Set this to YES to keep the PBIs libGL* libraries, and not use the system's&lt;br /&gt;
# PBIKEEPGL=&amp;quot;&amp;quot; ; export PBIKEEPGL&lt;br /&gt;
 &lt;br /&gt;
# By default we prune any include/ files used for building,&lt;br /&gt;
# Set this to NO to keep any include/ directories in the resulting PBI&lt;br /&gt;
# PBIPRUNEINCLUDE=&amp;quot;&amp;quot; ; export PBIPRUNEINCLUDE&lt;br /&gt;
 &lt;br /&gt;
# By default we prune the python files used for building,&lt;br /&gt;
# Set this to NO to keep any python files in the resulting PBI&lt;br /&gt;
# PBIPRUNEPYTHON=&amp;quot;&amp;quot; ; export PBIPRUNEPYTHON&lt;br /&gt;
 &lt;br /&gt;
# By default we prune any perl files used for building,&lt;br /&gt;
# Set this to NO to keep any perl files in the resulting PBI&lt;br /&gt;
# PBIPRUNEPERL=&amp;quot;&amp;quot; ; export PBIPRUNEPERL&lt;br /&gt;
 &lt;br /&gt;
# By default we prune any doc files (such as man, info, share/doc)&lt;br /&gt;
# Set this to NO to keep any doc files in the resulting PBI&lt;br /&gt;
# PBIPRUNEDOC=&amp;quot;&amp;quot; ; export PBIPRUNEDOC&lt;br /&gt;
 &lt;br /&gt;
# Build Key - Change this to anything else to trigger a rebuild&lt;br /&gt;
#           - The rebuild will take place even if port is still the same ver&lt;br /&gt;
BUILDKEY=&amp;quot;01&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
===== The copy-files configuration =====&lt;br /&gt;
&lt;br /&gt;
This file is very straight forward, simply list the files you want to copy from the installed port, and where they should go in your PBI directory structure. The first argument should be the file/directory you wish to copy, and the 2nd argument will be the directory within the PBI it needs to be copied to. &lt;br /&gt;
&lt;br /&gt;
Example copy-files from FileZilla:&lt;br /&gt;
&lt;br /&gt;
 /usr/local/bin/filezilla bin/&lt;br /&gt;
 /usr/local/bin/fzsftp bin/&lt;br /&gt;
 /usr/local/bin/gst-* bin/&lt;br /&gt;
 /usr/local/bin/wxrc* bin/&lt;br /&gt;
 /usr/local/bin/wxgtk2* bin/&lt;br /&gt;
 /usr/local/share/filezilla share/filezilla&lt;br /&gt;
&lt;br /&gt;
==== The preportmake.sh script ====&lt;br /&gt;
&lt;br /&gt;
This script, if it present is run right before starting the &amp;quot;make install&amp;quot; of your port. This allows you to make modifications to the pbisandbox environment or to the port building source itself. Normally this won't be&lt;br /&gt;
necessary, unless working with a very tricky program to get compiled.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# Script to grab the java files and place them in the right directory&lt;br /&gt;
# before starting the build&lt;br /&gt;
 &lt;br /&gt;
cd /usr/ports/distfiles&lt;br /&gt;
 &lt;br /&gt;
fetch ftp://ftp.pcbsd.org/pub/autobuildpkgs/javapack.tbz&lt;br /&gt;
tar xvjf javapack.tbz&lt;br /&gt;
 &lt;br /&gt;
cd /usr/ports/java/jdk16/&lt;br /&gt;
echo &amp;quot;#!/bin/sh&lt;br /&gt;
exit 0&amp;quot; &amp;gt; /usr/ports/java/jdk16/files/license.sh&lt;br /&gt;
 &lt;br /&gt;
cd /usr/ports/devel/automake15&lt;br /&gt;
make install clean&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== The build.sh script ====&lt;br /&gt;
&lt;br /&gt;
Below is the example of the build.sh script, which runs after all the files have been copied to your PBI directory. This allows you to make mods to specific things for your PBI to work properly. In this example we modify the uninstall script to use the right version.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # PBI building script&lt;br /&gt;
 # This will run after your port build is complete&lt;br /&gt;
 # Build your PBI here, and exit 0 on success, or exit 1 on failure.&lt;br /&gt;
 ##############################################################################&lt;br /&gt;
 # Available Variables&lt;br /&gt;
 #    PBIDIR = The location of where you can populate your PBI directory&lt;br /&gt;
 # MODULEDIR = The location of the module directory for this PBI&lt;br /&gt;
 #   PORTVER = Version number of the port we used to build&lt;br /&gt;
 ##############################################################################&lt;br /&gt;
 &lt;br /&gt;
 # Save the right version number in the removepbi.sh script&lt;br /&gt;
 sed -e &amp;quot;s,CHANGEME,Firefox${PORTVER},g&amp;quot; ${PBIDIR}/scripts/removepbi.sh &amp;gt; /tmp/removepbi.sh&lt;br /&gt;
 mv /tmp/removepbi.sh ${PBIDIR}/scripts/removepbi.sh&lt;br /&gt;
 chmod 755 ${PBIDIR}/scripts/removepbi.sh&lt;br /&gt;
&lt;br /&gt;
==== The kmenu-dir directory ====&lt;br /&gt;
&lt;br /&gt;
In this directory you may make any number of files, which contain the .pbc configuration for your kmenu icons. This defines where you would like icons created for your users desktop&lt;br /&gt;
&lt;br /&gt;
Example of kmenu-dir/firefox file:&lt;br /&gt;
&lt;br /&gt;
 ExePath: bin/firefox&lt;br /&gt;
 ExeIcon: share/pixmaps/FireFox-128.png&lt;br /&gt;
 ExeDescr: FireFox&lt;br /&gt;
 ExeNoDesktop: 0&lt;br /&gt;
 ExeNoMenu: 0&lt;br /&gt;
 ExeNoCrashHandler: 0&lt;br /&gt;
 ExeRunRoot: 0&lt;br /&gt;
 ExeRunShell: 0&lt;br /&gt;
 ExeNotify: 1&lt;br /&gt;
 ExeLink: 0&lt;br /&gt;
 ExeWebLink: 0&lt;br /&gt;
 ExeTaskbar: 0&lt;br /&gt;
 ExeOwndir: 1&lt;br /&gt;
 ExeKdeCat: Internet&lt;br /&gt;
&lt;br /&gt;
Line-By-Line description of each entry:&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''ExePath''': bin/firefox&lt;br /&gt;
&lt;br /&gt;
This line indicates the binary / script we want this icon to run when the user clicks it. This is relative to the PBI directory, so we use bin/firefox&lt;br /&gt;
&lt;br /&gt;
'''ExeIcon''': share/pixmaps/FireFox-128.png&lt;br /&gt;
&lt;br /&gt;
This is the icon you want to show up for this program, again it is relative to the PBI directory&lt;br /&gt;
&lt;br /&gt;
'''ExeDescr''': FireFox&lt;br /&gt;
&lt;br /&gt;
This would be the name of the icon in the kmenu or on the users desktop.&lt;br /&gt;
&lt;br /&gt;
'''ExeNoDesktop''': 0&lt;br /&gt;
&lt;br /&gt;
This allows you to disable creating a desktop icon for this entry. Set it to '0' if you want a desktop icon, or '1' if you don't wish an icon.&lt;br /&gt;
&lt;br /&gt;
'''ExeNoMenu''': 0&lt;br /&gt;
&lt;br /&gt;
This allows you to disable creating a kmenu icon for this entry. Set it to '0' if you want a kmenu icon, or '1' if you don't wish an icon.&lt;br /&gt;
&lt;br /&gt;
'''ExeNoCrashHandler''': 0&lt;br /&gt;
&lt;br /&gt;
This option enables / disables the usage of the PC-BSD CrashHandler program. This dialog warns the user that the application has crashed if it returns status non-zero (0), and provides the option to save the output of stdout and stderr from the application. Setting this to &amp;quot;1&amp;quot; disables the CrashHandler helper, which is useful for programs which normally return non-0, such as Window Managers and various apps.  &lt;br /&gt;
&lt;br /&gt;
'''ExeRunRoot''': 0&lt;br /&gt;
&lt;br /&gt;
This indicates if you want your program to be run as &amp;quot;root&amp;quot; when the user clicks it. Set it to '0' to run as a regular user, or '1' to run kdesu and switch to &amp;quot;root&amp;quot; Set this to '0'&lt;br /&gt;
&lt;br /&gt;
'''ExeRunShell''': 0&lt;br /&gt;
&lt;br /&gt;
This indicates if you want your program to be executed in a console session, which may be useful for command-line applications. Set it to '0' if you dont want it to run in console, or set it to '1' if you do.&lt;br /&gt;
&lt;br /&gt;
'''ExeNotify''': 1&lt;br /&gt;
&lt;br /&gt;
This indicates if you want to enable launch feedback in KDE, which is the bouncing icon, showing that the program is loading. Set it to '0' to disable launch feedback, or set it to '1' if you want this enabled. Normally it is&lt;br /&gt;
best to leave this enabled.&lt;br /&gt;
&lt;br /&gt;
'''ExeLink''': 0&lt;br /&gt;
&lt;br /&gt;
This is used to indicate if the ExePath variable was set to a local file / document you want opened with konqueror insetead of just being &amp;quot;run&amp;quot;. This is useful for README type documents. Set this to '1' if you want your document opened with konq, or '0' to just run it as normal.&lt;br /&gt;
&lt;br /&gt;
'''ExeWebLink''': 0&lt;br /&gt;
&lt;br /&gt;
This is similar to above, and instead indicates that the ExePath being opened is actual a web URL. Set this to '1' to open it the ExePath with Konq, or '0' to just run it as normal.&lt;br /&gt;
&lt;br /&gt;
'''ExeTaskbar''': 0&lt;br /&gt;
&lt;br /&gt;
This indicates if you want this application icon added to the taskbar. Set it to '1' to add it, or '0' to leave it disabled. (THIS FEATURE IS CURRENTLY UNAVAILABLE, BUT WILL BE ADDED DOWN THE ROAD)&lt;br /&gt;
&lt;br /&gt;
'''ExeOwndir''': 1&lt;br /&gt;
&lt;br /&gt;
This option is used to specify where you want your Kmenu icon to be placed, and may be set to 0, 1, 2&lt;br /&gt;
 0 = Place kmenu icon directory in top level. &lt;br /&gt;
     I.E.  Kmenu -&amp;gt; Firefox -&amp;gt; Firefox&lt;br /&gt;
 1 = Place kmenu icon in its own directory in the sub category indicated by ExeKdeCat:&lt;br /&gt;
     I.E.  Kmenu -&amp;gt; Internet -&amp;gt; Firefox -&amp;gt; Firefox&lt;br /&gt;
 2 = Place kmenu icon directly in the sub category indicated by ExeKdeCat:  &lt;br /&gt;
     I.E.  Kmenu -&amp;gt; Internet -&amp;gt; Firefox&lt;br /&gt;
&lt;br /&gt;
'''ExeKdeCat''': Internet&lt;br /&gt;
&lt;br /&gt;
This allows you to choose a kmenu sub-directory to place your icons / directory into, when ExeOwnDir is set to 1 or 2. &lt;br /&gt;
Available options are:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ExeKdeCat: Development&lt;br /&gt;
ExeKdeCat: Editors&lt;br /&gt;
ExeKdeCat: Edutainment/Languages&lt;br /&gt;
ExeKdeCat: Edutainment/Math&lt;br /&gt;
ExeKdeCat: Edutainment/Misc&lt;br /&gt;
ExeKdeCat: Edutainment/Science&lt;br /&gt;
ExeKdeCat: Edutainment/Teaching&lt;br /&gt;
ExeKdeCat: Games/Arcade&lt;br /&gt;
ExeKdeCat: Games/Board&lt;br /&gt;
ExeKdeCat: Games/Card&lt;br /&gt;
ExeKdeCat: Games/Kidsgames&lt;br /&gt;
ExeKdeCat: Games/TacticStrategy&lt;br /&gt;
ExeKdeCat: Games&lt;br /&gt;
ExeKdeCat: Graphics&lt;br /&gt;
ExeKdeCat: Internet&lt;br /&gt;
ExeKdeCat: Multimedia&lt;br /&gt;
ExeKdeCat: Office&lt;br /&gt;
ExeKdeCat: System&lt;br /&gt;
ExeKdeCat: Toys&lt;br /&gt;
ExeKdeCat: Utilities&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== The mime-dir directory ====&lt;br /&gt;
&lt;br /&gt;
This directory allows to you specify mime types for your applications defined in the kmenu-dir entries.&lt;br /&gt;
&lt;br /&gt;
Example of mime-dir/exe file:&lt;br /&gt;
&lt;br /&gt;
 MimeExt: *.exe; *.EXE&lt;br /&gt;
 MimeIcon: win_apps.png&lt;br /&gt;
 MimeProg: 0&lt;br /&gt;
&lt;br /&gt;
The only catch to this is to note that the &amp;quot;MimeProg: 0&amp;quot; is a pointer to a file in the kmenu-dir structure. In this case you would have to ensure that the application you want to open .exe files gets added first to the template&lt;br /&gt;
the server creates. Files in the kmenu-dir are added in the order of a &amp;quot;ls&amp;quot; listing, so if you have a wine-exe entry, you may wish to rename it to 00wine-exe to ensure it is added first, which would make this MimeProg: 0&lt;br /&gt;
entry work with it.&lt;br /&gt;
&lt;br /&gt;
If you have more than 1 mime-type, you would then increment the MimeProg: 0 number to MimeProg: 1, MimeProg: 2, and so forth. Then you would do the same with your kmenu-dir entries, such as 00wine-exe, 01wine-bat, 02wine-msi&lt;br /&gt;
&lt;br /&gt;
==== The overlay-dir directory ====&lt;br /&gt;
&lt;br /&gt;
This folder contains any of the files you wish placed into your PBI program directory. Here is an example from firefox:&lt;br /&gt;
&lt;br /&gt;
 leftside.png&lt;br /&gt;
 PBI.FirstRun.sh         autolibs                lib&lt;br /&gt;
 PBI.RemoveScript.sh     bin                     scripts&lt;br /&gt;
 PBI.SetupScript.sh      header.png              share&lt;br /&gt;
&lt;br /&gt;
In this example you see we have added our PBI.* setup scripts, and the custom graphics we want for the PBI installer. You may also create directories that will be populated with the copy-files configuration, such as share/ or others you may need.&lt;br /&gt;
&lt;br /&gt;
==== Useful Tips ====&lt;br /&gt;
&lt;br /&gt;
'''If the program uses the python programming language:''' use [PBIPRUNEPYTHON=&amp;quot;NO&amp;quot; ; export PBIPRUNEPYTHON]  (usually the file is called py-(something) if that file is written in python)&lt;br /&gt;
 &lt;br /&gt;
'''If the program uses the perl programming language:''' use [PBIPRUNEPERL=&amp;quot;NO&amp;quot; ; export PBIPRUNEPERL]  (harder to spot, usually the filename has &amp;quot;perl&amp;quot; in it somewhere)&lt;br /&gt;
 &lt;br /&gt;
'''The installed program does not work:''' this is usually because the python or perl option was not set appropriately. This is only noticed at runtime because after building, python and perl files are removed unless instructed otherwise.&lt;br /&gt;
&lt;br /&gt;
'''If your program path needs to be /usr/local/sbin:''' first, make a kmenu-dir entry similar to the one used by [http://trac.pcbsd.org/browser/pbibuild/modules/archivers/cabextract/kmenu-dir/cabextract cabextract]. Next, make sure that the &amp;quot;ExeNoDesktop&amp;quot; and &amp;quot;ExeNoMenu&amp;quot; options are both set to &amp;quot;1&amp;quot;. Then, in your PBI.SetupScript.sh, you can symlink the wrapper script into /Programs/bin as in [http://trac.pcbsd.org/browser/pbibuild/modules/archivers/cabextract/overlay-dir/PBI.SetupScript.sh this example].&lt;br /&gt;
&lt;br /&gt;
'''If the underlying port pauses to wait for user acceptance of license agreement:''' put this setting into the MAKEOPTS variable:&lt;br /&gt;
 &lt;br /&gt;
MAKEOPTS=&amp;quot;DISABLE_LICENSES=yes&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Don't forget to include the license text in the file overlay-dir/LICENSE so the user can read and accept the license during the PBI installation.&lt;br /&gt;
&lt;br /&gt;
'''If you don't have reliable Internet access and want to avoid running portsnap and build a PBI with pre-fetched distfiles:''' use this variable in /pbi-build/conf/pbibuild.conf:&lt;br /&gt;
&lt;br /&gt;
PORTSNAP=NO&lt;br /&gt;
&lt;br /&gt;
Place all of your distfiles into /pbi-build/distfiles; with this variable set, that directory will be nullfs mounted into the PBI sandbox when doing builds.&lt;br /&gt;
&lt;br /&gt;
'''How does the builder know which port the module is associated with?'''&lt;br /&gt;
&lt;br /&gt;
The PBI build system will look at the module path first, so if in SVN we are using the module www/firefox, it'll look for a port at www/firefox. However, in some cases a module doesn't use the same port or directory name. In that case, set this variable:&lt;br /&gt;
 &lt;br /&gt;
# The target port we are building&lt;br /&gt;
PBI_MAKEPORT=&amp;quot;www/firefox&amp;quot;&lt;br /&gt;
export PBI_MAKEPORT&lt;br /&gt;
 &lt;br /&gt;
That'll let the build server know which specific port this is building.&lt;br /&gt;
&lt;br /&gt;
= Getting Help =&lt;br /&gt;
&lt;br /&gt;
The [http://lists.pcbsd.org/mailman/listinfo/pbi-dev PBI Developers mailing list] can help if you:&lt;br /&gt;
&lt;br /&gt;
* get stuck building a PBI&lt;br /&gt;
* need to ask a question about your PBI &lt;br /&gt;
* are ready to submit a new module&lt;br /&gt;
* find a bug in an existing PBI&lt;br /&gt;
* have a bugfix for an existing PBI&lt;/div&gt;</summary>
		<author><name>Krismoore</name></author>	</entry>

	</feed>