This also makes no sense. no config file is the best state to be in. The lack of a config file is a good thing.
Now this makes no sense. If I want to disable a default in a port config, or if I have to enable a different setting in a port, then config files are absolutely needed. If I didn't change the configs, I'd rely solely on
pkg
and not even bother with Synth.
Even if I'm not describing the process properly, Synth is clearly doing something wrong here. Here's another example, and I'll try to make it as clear as possible.
First, let's start with installing a brand-new port, say
dns/ddclient because it has only one config option.
Code:
root@wintermute-pts/2(3:01pm)~/:synth install dns/ddclient
The task is complete. Final tally:
Initial queue size: 1
packages built: 1
ignored: 0
skipped: 0
failed: 0
Duration: 00:00:10
The build logs can be found at: /var/log/synth
Stand by, prescanning existing packages.
Stand by, recursively scanning 246 ports serially.
Scanning existing packages.
Packages validated, rebuilding local repository.
Local repository successfully rebuilt
Updating Synth repository catalogue...
Fetching meta.txz: 100% 264 B 0.3kB/s 00:01
Fetching packagesite.txz: 100% 71 KiB 72.2kB/s 00:01
Processing entries: 100%
Synth repository update completed. 246 packages processed.
Checking integrity... done (0 conflicting)
The following 1 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
ddclient: 3.8.2_1
The process will require 178 KiB more space.
[1/1] Installing ddclient-3.8.2_1...
[1/1] Extracting ddclient-3.8.2_1: 100%
Message from ddclient-3.8.2_1:
***********************************************************
Copy
/usr/local/etc/ddclient.conf.sample
to
/usr/local/etc/ddclient.conf
and edit it to fit your needs.
If you would like to run ddclient as a daemon add the
following line to /etc/rc.conf
ddclient_enable="YES"
If you would like to force ddclient to update your account
daily regardless of IP changes add the following line to
your /etc/periodic.conf
daily_ddclient_force_enable="YES"
***********************************************************
root@wintermute-pts/2(3:02pm)~/:
So
dns/ddclient is now installed, and the package file exists in the repo.
Right now, no port options are manually set:
Code:
root@wintermute-pts/2(3:03pm)~/:ll /var/db/ports/dns_ddclient*
ls: No match.
root@wintermute-pts/2(3:04pm)~/:
Let's change the port's only option, SSL, by disabling it (it's enabled by default):
Code:
root@wintermute-pts/2(3:04pm)~/:make -C /usr/ports/dns/ddclient config
root@wintermute-pts/2(3:05pm)~/:ll /var/db/ports/dns_ddclient*
total 2
-rw-r--r-- 1 root wheel 166 Mar 19 15:05 options
root@wintermute-pts/2(3:05pm)~/:cat /var/db/ports/dns_ddclient/options
# This file is auto-generated by 'make config'.
# Options for ddclient-3.8.2_1
_OPTIONS_READ=ddclient-3.8.2_1
_FILE_COMPLETE_OPTIONS_LIST=SSL
OPTIONS_FILE_UNSET+=SSL
root@wintermute-pts/2(3:05pm)~/:
Now that we've changed a port option, let's rerun Synth and update the repository:
Code:
root@wintermute-pts/2(3:05pm)~/:synth prepare-system
Querying system about current package installations.
Stand by, comparing installed packages against the ports tree.
Scanning existing packages.
ddclient-3.8.2_1.txz failed option check.
progress: 86.72%
The task is complete. Final tally:
Initial queue size: 1
packages built: 1
ignored: 0
skipped: 0
failed: 0
Duration: 00:00:13
The build logs can be found at: /var/log/synth
Stand by, prescanning existing packages.
Stand by, recursively scanning 246 ports serially.
Scanning existing packages.
Packages validated, rebuilding local repository.
Local repository successfully rebuilt
root@wintermute-pts/2(3:07pm)~/:
So
dns/ddclient failed the option check when I disabled its one option, and the package should have been rebuilt with the new options selected (or deselected in this case). But the newly-built package is missing from the repository and cannot be installed by
pkg
.
Code:
root@wintermute-pts/2(3:07pm)~/:ll /var/synth/live_packages/All/ddclient*
ls: No match.
This, as I understand it, is wrong. Why is the package now missing from the repository after it was successfully built with
synth prepare-system
? Where did it go? Why do I have to run Synth twice to get the package file back in the repo and ready to be installed?
Code:
root@wintermute-pts/2(3:08pm)~/:synth prepare-system
Querying system about current package installations.
Stand by, comparing installed packages against the ports tree.
Scanning existing packages.
progress: 87.27%
The task is complete. Final tally:
Initial queue size: 1
packages built: 1
ignored: 0
skipped: 0
failed: 0
Duration: 00:00:13
The build logs can be found at: /var/log/synth
Stand by, prescanning existing packages.
Stand by, recursively scanning 246 ports serially.
Scanning existing packages.
Packages validated, rebuilding local repository.
Local repository successfully rebuilt
root@wintermute-pts/2(3:12pm)~/:ll /var/synth/live_packages/All/ddclient*
-rw-r--r-- 1 root wheel 40584 Mar 19 15:12 /var/synth/live_packages/All/ddclient-3.8.2_1.txz
root@wintermute-pts/2(3:12pm)~/:
Can you explain to me why this is normal?