Slides from my 2013 Ohio Linux Fest talk entitled:
PC-BSD: Ports, Packages, and PBI's
This covers all the different methods for installing applications on a PC-BSD system, with additional information about how to use these systems within the individualized jails via the "Warden" - the jail management utility in PC-BSD.
2. What is PC-BSD?
FreeBSD Simplified!
● Pre-configured desktop/server
installation
● Desktop-Environment agnostic
● Automatic ZFS setup
● Up-to-date package repositories
PC-BSD Additions
● Graphical Installer
● Warden (jail management)
● PBI package format w/ EasyPBI
● System backup/restore
functionality
● Many system administration
and device management utilities
3. FreeBSD Ports
Features
● ~25,000 applications
● Standardized method of
building/installing
applications.
● Independent of FreeBSD
version.
● FreeBSD Porters Handbook
Downsides
● Compiling from source
● Constant flux
● Size of the ports tree
4. FreeBSD Ports – Usage
● Ports tree management
– portsnap fetch extract: Install the ports tree
– portsnap fetch update: Update the ports tree
● Searching the ports tree
– http://www.freshports.org
● Installing a port
– cd /usr/ports/<category>/<portname>
– make install clean
5. FreeBSD pkgng
(Next Generation Packages)
Features
● Binary packages
● No ports tree
● Fast and easy
● Dependency
checking/resolving
Downsides
● No FreeBSD repo
● Security concerns
● Static compilation options
● FreeBSD series dependent
PC-BSD provides pkgng repositories for the release and stable branches of FreeBSD
These packages are digitally signed/sealed for secure digital transfer and use.
6. pkgng - Usage
● All interactions are run using the pkg command
– pkg add: install local package
– pkg install: download/install package from repo
– pkg delete: Uninstall a package
– pkg info: list information about installed packages
– pkg search: search the repo for package(s)
– pkg update: update local packages to the latest
versions on the repo
Many more pkg commands are available: use pkg help to
see the full list.
8. The PBI Package System
The Purpose
● Provide a safe, system package
independent, method of
installing/updating applications
Additional Goals
● Ensure that applications do not
require an internet connection
for installation
● Minimize library duplication to
preserve disk space
The Implementation
● Written in pure shell (/bin/sh)
● Intelligently shared libraries
between PBI's
● A single PBI contains all
libraries, files, and data needed
for an application to run.
● Completely independent of the
local system packages and other
PBI applications
9. Using PBI's – Command Line
● Full command-line usage for the PBI system is
available using the pbi_* commands.
– pbi_add: Install PBI (from local file or remote repo)
– pbi_remove: Uninstall PBI
– pbi_info: List information about current PBI(s)
– pbi_browser: List/search available PBI's in the repo
– pbi_update: Update an installed PBI
– pbi_create: Package a local directory into a PBI
– pbi_makeport: build a PBI from a FreeBSD port
Additional commands for running a repo are also available
11. Creating PBI's - EasyPBI
● Graphical front-end to the PBI
build system
– Generate build instructions
(a PBI “module”)
– Run the actual build process
● Tight (but optional) integration
with the FreeBSD ports
collection
● No technical experience required
● Average time to create a module
for a FreeBSD port: 5 minutes
start to finish
12. Summary of Formats
Ports Packages PBI's
Pre-Compiled No Yes Yes
Compile-time Options Yes No No
Plugin-aware Yes Yes No
Self-Contained No No Yes
Offline Installation No Yes* Yes
Delta Updates No No Yes
Reliability Poor Average Good
Installed To: /usr/local /usr/local/ /usr/pbi/<name>-<arch>
Available on FreeBSD Yes Yes** No
Available on PC-BSD Yes Yes Yes
* This is not recommended due to dependency resolution of pkgng
** FreeBSD does not provide any up-to-date package repositories
13. Examples
● Ports
– Best used for building customized drivers and/or
modifying the base system with specialized options
● Packages
– Generally used for any applications that require
integration within the system environment or highly
customizable with pre-compiled plugins
– Desktop environments, development platforms, system
hardware or administration utilities
● PBI's
– End-user or frequently updated applications
– Web browsers, email clients, games, audio/video, etc..
14. The Warden
What is it?
● Jail Managment Utility
● Powerful way to configure
and run a large number of
FreeBSD jails
● Simple sandboxing utility for
developers or users
● Secure environment for
running web services
Features
● ZFS snapshots
● Autostart jails on bootup
● Administer packages, services,
and users from outside the jail
● Import/export jails between
systems
● Traditional, ports, and Linux
jails possible
● Template system for customized
jail creation
15. Warden - Usage
● Command-line usage is all run via warden
– warden help: Show all the CLI options
– warden create/delete
– warden import/export: Uses a *.wdn file for transport
– warden list: list installed jails
– warden chroot: launch chroot into a jail
And many more for things like ZFS snapshot
management and jail configuration