Add links to tag commit messages
[ikiwiki.git] / docs / howtos / HowToDPorts / index.mdwn
index fab044a..1182671 100644 (file)
 
 Dports is DragonFly's own third-party software build system.  It is based on FreeBSD's Ports Collection.  Differences between ports and DPorts are intentionally kept to a minimum, both to maintain familiarity for mutual users of both operating systems and also to leverage the tremendous amount of work the FreeBSD contributors put into ports.  DPorts can and does feature ports unique to DragonFly, so it's truly a native system.
 
-The __pkgng__ tool called "pkg" is a modern and fast binary package manager.  It was developed for FreeBSD, but PC-BSD used it in production first, followed soon after by DragonFly.  In the future, it will be the only binary package manager on FreeBSD, just as DPorts is currently the only port manager.
+The __pkgng__ tool called "pkg" is a modern and fast binary package manager.  It was developed for FreeBSD, but PC-BSD used it in production first, followed soon after by DragonFly.  In the future, it will be the only binary package manager on FreeBSD, just it is the only port manager in DPorts.
 
-__pkgng__ is not a replacement for port management tools like `ports-mgmt/portmaster` or `ports-mgmt/portupgrade`. While `ports-mgmt/portmaster` and `ports-mgmt/portupgrade` can install third-party software from both binary packages and DPorts, __pkgng__ installs only binary packages.
+__pkgng__ is not a replacement for port management tools like `ports-mgmt/portmaster` or `ports-mgmt/portupgrade`. While `ports-mgmt/portmaster` and `ports-mgmt/portupgrade` can install third-party software from both binary packages and DPorts, __pkgng__ installs only binary packages.  On the other hand, many people use __pkgng__ by itself and never install the optional portupgrade or portmaster tools.
 
 ## Getting started with pkgng
 
-DragonFly daily snapshots and Releases (starting with 3.4) come with __pkgng__ already installed.  Upgrades from earlier releases, however, will not have it.  If the "pkg" program is missing on the system for any reason, it can be quickly bootstrapped without having to build it from source.
-
-To ensure  __pkgng__ on a DragonFly BSD 3.4 or higher system is  ready for use, run the following BEFORE you try to use `pkg` the first time:
-
-    # cd /usr
-    # make dports-create
-    # rm -rf /usr/pkg
-    # pkg upgrade
-    # rehash
-
-Since you may need to manually edit the configuration file `/usr/local/etc/pkg.conf`, here is the
-usual command to edit it using the vi editor:
-
-     # vi /usr/local/etc/pkg.conf
-
-Before using consult the man page (`man pkg`) and then try these examples:
-
-    # pkg search editors
-    # pkg install vim
-
-
-To bootstrap __pkgng__ with a download on a very old version of DragonFly that is still using `pkgsrc` run:
+DragonFly daily snapshots and Releases (starting with 3.4) come with __pkgng__ already installed.  Upgrades from earlier releases, however, will not have it.  If the "pkg" program is missing on the system for any reason, it can be quickly bootstrapped without having to build it from source or even having dports installed:
 
     # make pkg-bootstrap
     # rehash
     # pkg-static install -y pkg
     # rehash
 
-Note that this step is unnecessary for any newly installed release from DragonFly 3.4 onwards.
+If pkgsrc has ever been installed on the system, make sure all binaries produced by it have been removed:
+
+    # rm -rf /usr/pkg
+
+Currently it's necessary to manually install the configuration file, but this requirement should disappear in the future.  After installing the configuration file, you may want to open it up and edit it to select a different mirror.
 
 ## Configuring pkgng
 
-Information previously contained in here worked for older versions of pkg, but as pkgng has undergone some changes, so too have the configurations.
+Older versions of pkgng saved their configuration at /usr/local/etc/pkg.conf; this file made reference to a PACKAGESITE.  pkgng will still work based on this file, but will output errors:
 
-Previously, /usr/local/etc/pkg.conf was used and reference to a PACKAGESITE was made.  pkgng will still work, but a warning will pop up.
+    # pkg update
+    pkg: PACKAGESITE in pkg.conf is deprecated. Please create a repository configuration file
+    Updating repository catalogue
+    pkg: Warning: use of http:// URL scheme with SRV records is deprecated: switch to pkg+http://
 
-# pkg update
-pkg: PACKAGESITE in pkg.conf is deprecated. Please create a repository configuration file
-Updating repository catalogue
-pkg: Warning: use of http:// URL scheme with SRV records is deprecated: switch to pkg+http://
+If you do __not__ see these errors, then skip to "Now, navigate to `/usr/local/etc/pkg/repos/`", otherwise:
 
-Listen to the errors: hash out the packagesite line, save the file, and move on.
+Listen to the errors: hash out the packagesite line, save the file, and move on.  This can be done with vi:
 
-Go to /usr/local/etc/pkg/repos/
+    # vi /usr/local/etc/pkg.conf
 
-You should see something like this with an ls
+There will be two lines in the file like this:
 
-df-latest.conf.sample   df-releases.conf.sample
+    # Default Dports package server (California)
+    PACKAGESITE: http://mirror-master.dragonflybsd.org/dports/${ABI}/LATEST
 
-cp or mv one of them to be .conf
+Hash out the offending line:
 
-edit the one you choose and make the following changes. (I edited the latest version)
+    # Default Dports package server (California)
+    # PACKAGESITE: http://mirror-master.dragonflybsd.org/dports/${ABI}/LATEST
 
-Avalon: {
-        url             : pkg+http://mirror-master.dragonflybsd.org/dports/${ABI}/L\
-ATEST,
-        mirror_type     : SRV,
-        signature_type  : NONE,
-        pubkey          : NONE,
-        fingerprints    : /usr/share/fingerprints,
+Note that, as of time of writing, there are two working package repositories:
+
+    # Default Dports package server (California)
+    # PACKAGESITE: http://mirror-master.dragonflybsd.org/dports/${ABI}/LATEST
+    
+    # European mirrors
+    [...]
+    #PACKAGESITE: http://dfly.schlundtech.de/dports/${ABI}/LATEST
+
+Test their performance---we will be using the fastest one.  This may, or may not, be the one closest to you (the California site for the New World, the German site for the Old World).
+
+    # ping schlundtech.de
+    PING schlundtech.de (85.236.36.90): 56 data bytes
+    64 bytes from 85.236.36.90: icmp_seq=0 ttl=49 time=101.433 ms
+    64 bytes from 85.236.36.90: icmp_seq=1 ttl=49 time=59.177 ms
+    64 bytes from 85.236.36.90: icmp_seq=2 ttl=49 time=79.550 ms
+    64 bytes from 85.236.36.90: icmp_seq=3 ttl=49 time=88.268 ms
+    64 bytes from 85.236.36.90: icmp_seq=4 ttl=49 time=120.060 ms
+    [...]
+    --- schlundtech.de ping statistics ---
+    20 packets transmitted, 19 packets received, 5.0% packet loss
+    round-trip min/avg/max/stddev = 49.555/96.064/186.662/33.559 ms
+    # ping mirror-master.dragonflybsd.org
+    PING avalon.dragonflybsd.org (199.233.90.72): 56 data bytes
+    64 bytes from 199.233.90.72: icmp_seq=0 ttl=47 time=208.013 ms
+    64 bytes from 199.233.90.72: icmp_seq=1 ttl=47 time=256.441 ms
+    64 bytes from 199.233.90.72: icmp_seq=2 ttl=47 time=281.436 ms
+    64 bytes from 199.233.90.72: icmp_seq=3 ttl=47 time=281.103 ms
+    64 bytes from 199.233.90.72: icmp_seq=4 ttl=47 time=285.440 ms
+    [...]
+    --- avalon.dragonflybsd.org ping statistics ---
+    19 packets transmitted, 19 packets received, 0.0% packet loss
+    round-trip min/avg/max/stddev = 208.013/264.017/334.180/31.549 ms
+
+Now, navigate to `/usr/local/etc/pkg/repos/` and rename one of the configuration file samples you find there. `df-latest.conf` will make pkg use the newest available binaries while `df-release.conf` points to binaries built at the time of the release. The latter is frozen so you will not get any updates. Edit the one you renamed:
+
+    # cd /usr/local/etc/pkg/repos/
+    # ls
+    df-latest.conf.sample      df-releases.conf.sample
+    # cp -v df-latest.conf.sample df-latest.conf
+    df-latest.conf.sample -> df-latest.conf
+    # chmod -v 644 df-latest.conf
+    df-latest.conf
+    # vi df-latest.conf
+
+Enable whichever server was faster (Avalon is American, SchlundTech is German), and pkg+ to the url and SRV to mirror_type:
+
+    Avalon: {
+        url             : pkg+http://mirror-master.dragonflybsd.org/dports/${ABI}/LATEST,
+        mirror_type     : SRV
+        [...]
+        enabled         : no
+    }
+    SchlundTech: {
+        url             : pkg+http://dfly.schlundtech.de/dports/${ABI}/LATEST,
+        mirror_type     : SRV
+        [...]
         enabled         : yes
-}
+    }
+
+Before using, consult the man page (`man pkg`) and then try these examples:
 
-Depending on when and how you installed and/or upgraded, you may have to chmod 644 the file first to be able to edit it.
+    # pkg search editors
+    # pkg install vim
 
 ## Basic pkgng Operations