Indeed, installing a new package is relatively simple.
# ports+ -n /usr/ports/misc/shc
(cd /usr/ports/misc/shc && MAKEFLAGS="" MFLAGS="" lockf /var/db/pkg/shc-3.8.6+lo
ck make install && touch /var/db/pkg/shc-3.8.6/ports++install
Ports+ simply uses the FreeBSD port system to build and install. On the other hand, Ports+ will start building required packages as many as -j option where the Ports builds one by one.
Upgrading is rather more difficult. The Ports system doesn't have a way.
# ports+ -n /var/db/pkg/xterm-229_1
(cd /usr/ports/x11/xterm && echo xterm-229_1 to xterm-232 && MAKEFLAGS="" MFLAG
S="" lockf /var/db/pkg/xterm-232+lock make build && ( [ -f /usr/local/ports+/xt
erm-229_1.tar ] || (cd /usr/local/ports+/ && pkg_create -b xterm-229_1.tar)) &&
lockf /var/db/pkg/ports++pkg+lock sh -c '(MAKEFLAGS="" MFLAGS="" lockf /var/db/p
kg/xterm-232+lock make deinstall reinstall && find /var/db/pkg/ -name "+CONTENT
S" | xargs grep -l xterm-229_1 | xargs sed -i.ports+ -e "/pkgdep/s^xterm-229_1^x
term-232^g") || pkg_add -f /usr/local/ports+/xterm-229_1.tar'; ls -d /var/db/pkg
/xterm-232 >gt;/dev/null 2>gt;&1 && touch /var/db/pkg/xterm-232/ports++upgrade)
Ports+ first build a package and see if it is successful. If so, it will make a backup and install the new one. These conditions will not be too complicated in other languages. But using "Make" and shell script in it, all conditions need to be expressed with "&&" and "||" in a single line fashion. That makes hard to read.
セコメントをする