Daily Ports+ #9: Install v.s. Upgrade
2008-02-14


If you give "-n" option to ports+, you can see the exact commands to be executed.

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.
[ports+]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット