{"id":36130,"date":"2024-12-11T15:27:04","date_gmt":"2024-12-11T14:27:04","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=36130"},"modified":"2024-12-11T15:27:09","modified_gmt":"2024-12-11T14:27:09","slug":"freebsd-basics-6-the-ports-collection","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/","title":{"rendered":"FreeBSD basics \u2013 6 \u2013 The ports collection"},"content":{"rendered":"\n<p>If you followed the previous introduction posts about FreeBSD (<a href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>, <a href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-2-users-groups\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>, <a href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-3-services\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>, <a href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a> and <a href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-5-providing-services-using-jails\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>) you should already know how to install binary packages. On FreeBSD this is done using <a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=pkg&amp;apropos=0&amp;sektion=0&amp;manpath=FreeBSD+14.2-RELEASE+and+Ports&amp;arch=default&amp;format=html\" target=\"_blank\" rel=\"noreferrer noopener\">pkg<\/a>, and if you are familiar with <a href=\"https:\/\/en.wikipedia.org\/wiki\/APT_(software)\" target=\"_blank\" rel=\"noreferrer noopener\">apt<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/DNF_(software)\" target=\"_blank\" rel=\"noreferrer noopener\">dnf<\/a>, or <a href=\"https:\/\/en.wikipedia.org\/wiki\/ZYpp\" target=\"_blank\" rel=\"noreferrer noopener\">zypper<\/a> (or any other package manager on Linux)  this should not be a big deal. There is, however, another official way to get additional software onto FreeBSD and this are the so called &#8220;ports&#8221;. In contrast to the binary packages, ports are source code that comes with all the patches and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Make_(software)\" target=\"_blank\" rel=\"noreferrer noopener\">Makefiles<\/a> which are required to compile and install a specific piece of program on FreeBSD. Think of it as an automated way of compiling software for FreeBSD.<\/p>\n\n\n\n<p>Depending on how you installed FreeBSD the ports collection might already be there:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ ls -l \/usr\/ports\/ | wc -l\n      81\n<\/pre><\/div>\n\n\n<p>If it&#8217;s not there, you have a couple of options to get it installed. Either you get it with <a href=\"https:\/\/docs.freebsd.org\/en\/books\/handbook\/ports\/#ports-using\" target=\"_blank\" rel=\"noreferrer noopener\">git<\/a> (the following will get the HEAD branch, check the link for a description how to checkout a quarterly branch):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ pkg install git\nroot@freebsd14:~ $ git clone --depth 1 https:\/\/git.FreeBSD.org\/ports.git \/usr\/ports\n<\/pre><\/div>\n\n\n<p>&#8230; or you get it with portsnap:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; highlight: [1,2,3]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ mkdir -p \/var\/db\/portsnap\nroot@freebsd14:~ $ portsnap fetch\nroot@freebsd14:~ $ portsnap extract\n<\/pre><\/div>\n\n\n<p>&#8230; or you download the the tarball from the <a href=\"https:\/\/download.freebsd.org\/ftp\/ports\/ports\/\" target=\"_blank\" rel=\"noreferrer noopener\">website<\/a>. No matter how you do it, once the ports are available you&#8217;ll see something like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3]; title: ; notranslate\" title=\"\">\nroot@freebsd14:\/usr\/ports $ pwd\n\/usr\/ports\nroot@freebsd14:\/usr\/ports $ ls\n.arcconfig      Keywords        accessibility   comms           finance         japanese        net-im          science         x11-clocks\n.git            MOVED           arabic          converters      french          java            net-mgmt        security        x11-drivers\n.gitignore      Makefile        archivers       databases       ftp             korean          net-p2p         shells          x11-fm\n.hooks          Mk              astro           deskutils       games           lang            news            sysutils        x11-fonts\n.mailmap        README          audio           devel           german          mail            polish          textproc        x11-servers\nCHANGES         Templates       benchmarks      dns             graphics        math            ports-mgmt      ukrainian       x11-themes\nCONTRIBUTING.md Tools           biology         editors         hebrew          misc            portuguese      vietnamese      x11-toolkits\nCOPYRIGHT       UIDs            cad             emulators       hungarian       multimedia      print           www             x11-wm\nGIDs            UPDATING        chinese         filesystems     irc             net             russian         x11\n\n<\/pre><\/div>\n\n\n<p>Each of those directories is a category, and the categories contain the ports grouped into that category:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ ls \/usr\/ports\/databases\/\nMakefile                                        p5-DBIx-Log4perl                                py-aiosqlite\nR-cran-DBI                                      p5-DBIx-MySQLSequence                           py-alembic\nR-cran-RMySQL                                   p5-DBIx-NoSQL                                   py-apache-arrow\nR-cran-RPostgreSQL                              p5-DBIx-Password                                py-apsw\n...\np5-DBIx-Inspector                               py-aiopg                                        xtrabackup84\np5-DBIx-Introspector                            py-aioredis                                     zodb\np5-DBIx-Lite                                    py-aiosql\n<\/pre><\/div>\n\n\n<p>There are thousands of ports and looking for something in the directory tree might become time consuming. Searching for something can be done with e.g. &#8220;<a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=whereis&amp;apropos=0&amp;sektion=0&amp;manpath=FreeBSD+14.2-RELEASE+and+Ports&amp;arch=default&amp;format=html\" target=\"_blank\" rel=\"noreferrer noopener\">whereis<\/a>&#8220;:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ whereis puredb\npuredb: \/usr\/ports\/databases\/puredb\n<\/pre><\/div>\n\n\n<p>&#8230; or you search directly in the ports tree, but before you can do this you need to build the index file:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,7]; title: ; notranslate\" title=\"\">\nroot@freebsd14:\/usr\/ports $ make search postgres\nThe search target requires INDEX-14. Please run make index or make fetchindex.\nmake: don&#039;t know how to make postgres. Stop\n\nmake: stopped in \/usr\/ports\n\nroot@freebsd14:\/usr\/ports $ make index\nGenerating INDEX-14 - please wait..\n Done.\nroot@freebsd14:\/usr\/ports $ \n<\/pre><\/div>\n\n\n<p>This created the INDEX file which is used as the source for searches in the tree:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nroot@freebsd14:\/usr\/ports $ ls -l INDEX-14 \n-rw-r--r--  1 root wheel 48207086 Dec 11 10:13 INDEX-14\nroot@freebsd14:\/usr\/ports $ make search name=postgresql | less\nPort:   R-cran-RPostgreSQL-0.7.7\nPath:   \/usr\/ports\/databases\/R-cran-RPostgreSQL\nInfo:   R Interface to the &#039;PostgreSQL&#039; Database System\nMaint:  tota@FreeBSD.org\n...\nPort:   databases\/postgresql11-pgtcl\nMoved:  databases\/postgresql12-pgtcl\nDate:   2023-12-31\nReason: Has expired: Security support ended on 2023-11-09\n<\/pre><\/div>\n\n\n<p>The README comes with additional hints and information:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:\/usr\/ports $ cat README \nThis is the FreeBSD Ports Collection.  For an easy to use\nWEB-based interface to it, please see:\n\n        https:\/\/ports.FreeBSD.org\n\nFor general information on the Ports Collection, please see the\nFreeBSD Handbook ports section which is available from:\n\n        https:\/\/docs.freebsd.org\/en\/books\/handbook\/ports\/\n                for the latest official version\n        or:\n        The ports(7) manual page (man ports).\n\nThese will explain how to use ports and packages.\n\nIf you would like to search for a port, you can do so easily by\nsaying (in \/usr\/ports):\n\n        make search name=&quot;&lt;name&gt;&quot;\n        or:\n        make search key=&quot;&lt;keyword&gt;&quot;\n\nwhich will generate a list of all ports matching &lt;name&gt; or &lt;keyword&gt;.\nmake search also supports wildcards, such as:\n\n        make search name=&quot;gtk*&quot;\n\nFor information about contributing to FreeBSD ports, please see the Porter&#039;s\nHandbook, available at:\n\n        https:\/\/docs.freebsd.org\/en\/books\/porters-handbook\/\n\nNOTE:  This tree will GROW significantly in size during normal usage!\nThe distribution tar files can and do accumulate in \/usr\/ports\/distfiles,\nand the individual ports will also use up lots of space in their work\nsubdirectories unless you remember to &quot;make clean&quot; after you&#039;re done\nbuilding a given port.  \/usr\/ports\/distfiles can also be periodically\ncleaned without ill-effect.\n<\/pre><\/div>\n\n\n<p>Lets say we want to install PostgreSQL 17, what do we need to do. Actually this is quite easy. First, enter the ports directory:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nroot@freebsd14:\/usr\/ports $ cd databases\/postgresql17-server\/\nroot@freebsd14:\/usr\/ports\/databases\/postgresql17-server $\n<\/pre><\/div>\n\n\n<p>If you&#8217;re curious, have a look at the Makefile to see what will happen, otherwise just install the port (&#8220;clean&#8221; will cleanup afterwards to save space on disk):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nroot@freebsd14:\/usr\/ports\/databases\/postgresql17-server $ make install clean\n<\/pre><\/div>\n\n\n<p>This will bring up a new windows which gives you some options to either enable or disable:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"490\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png\" alt=\"\" class=\"wp-image-36179\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png 883w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728-300x166.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728-768x426.png 768w\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" \/><\/figure>\n\n\n\n<p>Once you&#8217;re happy with it, let it build and install. This will start downloading the PostgreSQL sources and then ask for options for bison:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"490\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103946.png\" alt=\"\" class=\"wp-image-36180\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103946.png 883w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103946-300x166.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103946-768x426.png 768w\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" \/><\/figure>\n\n\n\n<p>This goes on for all the tools required to build PostgreSQL:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"490\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104152.png\" alt=\"\" class=\"wp-image-36181\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104152.png 883w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104152-300x166.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104152-768x426.png 768w\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"490\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104226.png\" alt=\"\" class=\"wp-image-36182\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104226.png 883w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104226-300x166.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104226-768x426.png 768w\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"490\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104304.png\" alt=\"\" class=\"wp-image-36183\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104304.png 883w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104304-300x166.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_104304-768x426.png 768w\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" \/><\/figure>\n\n\n\n<p>&#8230; (and so on) and finally you&#8217;ll see the usual &#8220;configure&#8221; and &#8220;make&#8221; stuff on the screen (this will run the regression tests as well, so expect it to take some time). If you just want  to get a feeling about ports, maybe don&#8217;t chose PostgreSQL as your first port, because this really takes time as all the dependencies (llvm, &#8230;, ) get build from source as well.<\/p>\n\n\n\n<p>Once it is done you&#8217;ll find the binaries in &#8220;\/usr\/local\/bin\/&#8221;:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,9]; title: ; notranslate\" title=\"\">\nroot@freebsd14:\/usr\/ports\/databases\/postgresql17-server $ ls \/usr\/local\/bin\/pg*\n\/usr\/local\/bin\/pg_amcheck               \/usr\/local\/bin\/pg_ctl                   \/usr\/local\/bin\/pg_restore\n\/usr\/local\/bin\/pg_archivecleanup        \/usr\/local\/bin\/pg_dump                  \/usr\/local\/bin\/pg_rewind\n\/usr\/local\/bin\/pg_basebackup            \/usr\/local\/bin\/pg_dumpall               \/usr\/local\/bin\/pg_test_fsync\n\/usr\/local\/bin\/pg_checksums             \/usr\/local\/bin\/pg_isready               \/usr\/local\/bin\/pg_test_timing\n\/usr\/local\/bin\/pg_config                \/usr\/local\/bin\/pg_receivewal            \/usr\/local\/bin\/pg_upgrade\n\/usr\/local\/bin\/pg_controldata           \/usr\/local\/bin\/pg_recvlogical           \/usr\/local\/bin\/pg_waldump\n\/usr\/local\/bin\/pg_createsubscriber      \/usr\/local\/bin\/pg_resetwal              \/usr\/local\/bin\/pgbench\nroot@freebsd14:\/usr\/ports\/databases\/postgresql17-server $ \/usr\/local\/bin\/psql --version\npsql (PostgreSQL) 17.2\n<\/pre><\/div>\n\n\n<p>All the question which have been answered can also be given on the command line to automate the whole process (&#8216;-&#8216; means do not include, &#8216;+&#8217; means include):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:\/usr\/ports\/databases\/postgresql17-server $ make pretty-print-config\n-DEBUG +DOCS -DTRACE -GSSAPI -LDAP +LLVM +LZ4 +NLS -OPTIMIZED_CFLAGS -PAM +SSL -TZDATA +XML +ZSTD \n<\/pre><\/div>\n\n\n<p>A more verbose description of those can be shown like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:\/usr\/ports\/databases\/postgresql17-server $ make showconfig\n===&gt; The following configuration options are available for postgresql17-server-17.2:\n     DEBUG=off: Build with debugging support\n     DOCS=on: Build and\/or install documentation\n     DTRACE=off: Build with DTrace probes\n     GSSAPI=off: Build with GSSAPI support\n     LDAP=off: Build with LDAP authentication support\n     LLVM=on: Build with support for JIT-compiling expressions\n     LZ4=on: Build with LZ4 compression support\n     NLS=on: Use internationalized messages\n     OPTIMIZED_CFLAGS=off: Builds with compiler optimizations (-O3)\n     PAM=off: Build with PAM Support\n     SSL=on: Build with OpenSSL support\n     TZDATA=off: Use internal timezone database\n     XML=on: Build with XML data type\n     ZSTD=on: Build with ZSTD compression support\n===&gt; Use &#039;make config&#039; to modify these settings\n<\/pre><\/div>\n\n\n<p>To summarize: A lot of additional stuff is available in the ports collection. If something is not available as a package, have a look there.<\/p>\n\n\n\n<p>If you want to see what&#8217;s going in the ports collection, have a look at <a href=\"https:\/\/www.freshports.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">FreshPorts<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you followed the previous introduction posts about FreeBSD (here, here, here, here and here) you should already know how to install binary packages. On FreeBSD this is done using pkg, and if you are familiar with apt, dnf, or zypper (or any other package manager on Linux) this should not be a big deal. [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[42],"tags":[2718,2256,46],"type_dbi":[3471],"class_list":["post-36130","post","type-post","status-publish","format-standard","hentry","category-operating-systems","tag-bsd","tag-freebsd","tag-linux-unix","type-freebsd"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>FreeBSD basics \u2013 6 \u2013 The ports collection - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FreeBSD basics \u2013 6 \u2013 The ports collection\" \/>\n<meta property=\"og:description\" content=\"If you followed the previous introduction posts about FreeBSD (here, here, here, here and here) you should already know how to install binary packages. On FreeBSD this is done using pkg, and if you are familiar with apt, dnf, or zypper (or any other package manager on Linux) this should not be a big deal. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-11T14:27:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-11T14:27:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png\" \/>\n\t<meta property=\"og:image:width\" content=\"883\" \/>\n\t<meta property=\"og:image:height\" content=\"490\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"FreeBSD basics \u2013 6 \u2013 The ports collection\",\"datePublished\":\"2024-12-11T14:27:04+00:00\",\"dateModified\":\"2024-12-11T14:27:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/\"},\"wordCount\":562,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png\",\"keywords\":[\"BSD\",\"FreeBSD\",\"Linux\/UNIX\"],\"articleSection\":[\"Operating systems\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/\",\"name\":\"FreeBSD basics \u2013 6 \u2013 The ports collection - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png\",\"datePublished\":\"2024-12-11T14:27:04+00:00\",\"dateModified\":\"2024-12-11T14:27:09+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png\",\"width\":883,\"height\":490},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FreeBSD basics \u2013 6 \u2013 The ports collection\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"FreeBSD basics \u2013 6 \u2013 The ports collection - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/","og_locale":"en_US","og_type":"article","og_title":"FreeBSD basics \u2013 6 \u2013 The ports collection","og_description":"If you followed the previous introduction posts about FreeBSD (here, here, here, here and here) you should already know how to install binary packages. On FreeBSD this is done using pkg, and if you are familiar with apt, dnf, or zypper (or any other package manager on Linux) this should not be a big deal. [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/","og_site_name":"dbi Blog","article_published_time":"2024-12-11T14:27:04+00:00","article_modified_time":"2024-12-11T14:27:09+00:00","og_image":[{"width":883,"height":490,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png","type":"image\/png"}],"author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"FreeBSD basics \u2013 6 \u2013 The ports collection","datePublished":"2024-12-11T14:27:04+00:00","dateModified":"2024-12-11T14:27:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/"},"wordCount":562,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png","keywords":["BSD","FreeBSD","Linux\/UNIX"],"articleSection":["Operating systems"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/","url":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/","name":"FreeBSD basics \u2013 6 \u2013 The ports collection - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png","datePublished":"2024-12-11T14:27:04+00:00","dateModified":"2024-12-11T14:27:09+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2024\/12\/Screenshot_20241211_103728.png","width":883,"height":490},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-6-the-ports-collection\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FreeBSD basics \u2013 6 \u2013 The ports collection"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36130","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=36130"}],"version-history":[{"count":12,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36130\/revisions"}],"predecessor-version":[{"id":36189,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36130\/revisions\/36189"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=36130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=36130"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=36130"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=36130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}