# Upgrading gnucash with portmaster



## donallen (Aug 7, 2011)

I have two 8.2 systems, one just installed. On the first system, gnucash 2.4.5 was installed, courtesy /usr/ports. On the second one, the one on which FreeBSD was just installed, there was no gnucash installed. On both, I did

portmaster /usr/ports/finance/gnucash

On both systems, I got an error when portmaster tried to build gtk-update-icon-cache-2.24.5. The complaint was that the package was already installed. If it was already installed, why did portmaster try to install it at all? Perhaps a broken port? I got the gnucash install going again by doing a pkg_delete -f gtk-update-icon-cache-2.24.5 and in doing so, got an error that not all files could be removed, and raising the question that the package manifest was not correct (I should have copied the error but didn't; sorry; but I've given you the gist of it).

One comment on FreeBSD 8.2: I've been a harsh critic of FreeBSD in the past. I've had bad experiences with a couple of 7.x releases (the USB layer prior to the re-write in 8.x was really awful) and with 8.0 (the new USB stuff hadn't settled down at that point). None were ready for prime time, at least for my type of desktop usage, forcing me back to Linux. But 8.2 is really rock-solid and I've got it installed in place of Linux on every one of my machines where it will run (I've got a lot of them, each one serving a useful purpose, though my wife would disagree). My only issue is that it doesn't support nearly as big a hardware repertoire as Linux (I've got an Atom-based Toshiba netbook and a mini-itx machine I built around an Intel D510 dual-core Atom motherboard and the Intel graphics driver doesn't work on those machines). Hopefully at least the Atom issue will change with the upcoming 9.0 release. I hope the quality of that release is as good or better than 8.2, which sets the bar pretty high.

I should also add that I've thrashed around a bit trying to find an acceptable Linux distribution for my minimal tastes (I don't use a desktop environment; I just run dwm) and haven't found anything as good as 8.2. I've run Slackware for over a year and its quality is very high, but the package management, or lack thereof, has gotten very old. The primary supplier of packages beyond what the release provides, slackbuilds.org, is very well run, but there is no formal QA of the packages themselves and no coordination, at least in time, with new Slackware releases. I had a number of issues with Debian (flakey wireless networking, the awful Sys V init stuff, out-of-date packages because they take forever to release, it's generally too complicated and the documentation is all over the place). I tried Gentoo. Installation takes 1/2 a day on a fast machine and then X was flakey (I've used it before and it's a major maintenance headache). Arch? The rolling release stuff will bite you eventually, because they can't possibly test the whole system when they release something. I've had Arch blow up a couple of systems in the past. So for my style of computing, FreeBSD leads the pack. I hope it stays that way with the new major version soon to be released.


----------



## wblock@ (Aug 7, 2011)

donallen said:
			
		

> I have two 8.2 systems, one just installed. On the first system, gnucash 2.4.5 was installed, courtesy /usr/ports. On the second one, the one on which FreeBSD was just installed, there was no gnucash installed. On both, I did
> 
> portmaster /usr/ports/finance/gnucash
> 
> On both systems, I got an error when portmaster tried to build gtk-update-icon-cache-2.24.5.



Always (yes, always) check /usr/ports/UPDATING before updating.  Entry 20110730 is the problem.  In this case, installing a new port counts as updating, because of the change to GTK.



> The complaint was that the package was already installed. If it was already installed, why did portmaster try to install it at all?



It needed to be reinstalled as part of the GTK port change.


----------



## donallen (Aug 7, 2011)

I admit to forgetting to check /usr/ports/UPDATING. But it seems to me that what you are saying explains why portmaster attempted to reinstall the same version of gtk-update-icon-cache, but it doesn't explain why it failed to do so successfully. I'm guessing it tried a make install without having done the deinstall.

Furthermore, after getting around this and restarting the update of gnucash with portmaster, it completed and left me with a gnucash that first complained of not being able to find libgcrypt.so.17. Getting fed up, I tried portupgrade -R gnucash and a whole bunch of things are now getting updated, even after the successful completion of portmaster /usr/ports/finance/gnucash. One would think they would do the same thing -- bring the designated package and all its dependencies to the latest versions available in /usr/ports. portupgrade is still grinding away (on two machines), so I don't know the final outcome of that yet, but portmaster seems not to have done the right thing, unless I've missed something else.

Thanks for your help.


----------



## wblock@ (Aug 7, 2011)

portmaster checks dependencies before installing or reinstalling a port, and is supposed to upgrade them if necessary.  No idea what went wrong there, unless maybe it was from installing packages.  pkg_libchk(1) from sysutils/bsdadminscripts is very good for finding library problems.

Edit: adding a link to Upgrading FreeBSD Ports, a short article on upgrade procedures.


----------



## donallen (Aug 7, 2011)

Let me clarify my previous post: portmaster left me with a non-functioning gnucash, because of the libgcrypt issue.

I should also note that prior to restarting portmaster, I did what the UPDATING note said (which I also note was for users of x11-toolkits/gtk20, from which gtk-update-icon-cache has been removed), at least with respect to gtk-update-icon-cache: I forcibly deleted the package and rebuilt it. I also need to mention that the latest version of the libgcrypt port produces libgcrypt.so.18, not .17, which is what the gnucash executable produced by portmaster was looking for. If .18 is the latest version, why was the portmaster-built gnucash looking for an older one?

It'll be interesting to see that comes out of portupgrade. It's still cooking so I won't speculate.


----------



## donallen (Aug 7, 2011)

"No idea what went wrong there, unless maybe it was from installing packages." No packages installed by portmaster; ports only.

Thnx for the tip on bsdadminscripts.


----------



## wblock@ (Aug 7, 2011)

If any of this software (including dependencies) was installed from packages, that would explain why it's looking for old libraries.  pkg_libchk is good for finding programs that are looking for old libraries and need to be rebuilt.

Edit: oops, written before your response had appeared.  Regardless of what happened, whatever is looking for the old libgcrypt has to be rebuilt.  It might be gnucash, but is probably a dependency.


----------



## donallen (Aug 7, 2011)

portupgrade just finished on one machine. The resulting gnucash starts and then segfaults. I'm pretty sure gnucash itself was built by portmaster and I suspect the problem is the weird combination of use of portmaster and portupgrade. I've just deleted the gnucash package and am doing a portupgrade -N -R gnucash (new dependencies are getting rebuilt, suggesting that portmaster failed to find them). My suspicion at this point is that portmaster is buggy. I don't know that for a fact, but that's the way things seem to be pointing. More later when this latest go-'round finishes.


----------



## donallen (Aug 7, 2011)

Deleting the gnucash package and re-running portupgrade didn't do it. This is pretty discouraging. I don't think the failure to read UPDATING can be called an issue here (how was I supposed to know in advance that gtk-update-icon-cache was going to get rebuilt? And when it failed, I deleted and rebuilt it. Don't see what else I could have done.) So it looks like I've got a system that won't run gnucash, courtesy of a problem with standard system tools. Serves me right for writing all that stuff earlier about how stable 8.2 is (and it is, truth be told, but it looks like there's some breakage in the port stuff, which is pretty serious).

I can't waste any more time on this. I'm not sure what I'm going to do next, but I need the latest version of gnucash, so I'm going to have to use a big hammer on this.

Thanks for trying to help --

/Don


----------



## wblock@ (Aug 7, 2011)

I've used portupgrade for many years, and recently switched to portmaster.  If it's buggy, it hasn't been a problem here.  OTOH, I've never used -N with portupgrade, and can't really tell what it does.  It does make me wonder if you're using the -P or -PP options.


----------



## wblock@ (Aug 7, 2011)

donallen said:
			
		

> I can't waste any more time on this. I'm not sure what I'm going to do next, but I need the latest version of gnucash, so I'm going to have to use a big hammer on this.



Update your ports tree.  Then install gnucash:
`# cd /usr/ports/finance/gnucash && make install clean`


----------



## donallen (Aug 7, 2011)

"It does make me wonder if you're using the -P or -PP options. " Nope. Never.

portupgrade -N = portinstall

I updated the ports tree before I started all this (earlier today), so not much will have changed in a few hours.


----------



## donallen (Aug 7, 2011)

By the way, I'm a retired computer professional (I wrote my first computer program in 1960! IBM 1620 machine code. Scary.). I've done a *lot* of OS development work, including Unix, plus a lot of application-level stuff in just about every programming language you can think of. I mention this only to point out that I'm not a novice.

I've had problems with the port system in my previous abortive attempts to use FreeBSD and was hoping that it was less, shall we say, fragile now. That wasn't the deal-breaker then (the usb problems were the big issue; I couldn't do backups), but this is pretty bad. One of my purposes in using FreeBSD was better package management and this isn't better.

As for your suggestion to

cd /usr/ports/finance/gnucash && make install clean

I've just done that, in effect, by deleting the gnucash package and rebuilding it with portupgrade, which runs make and make install.


----------



## ahavatar (Aug 7, 2011)

Did you "portsnap fetch extract" for the first time on the fresh new installation of FreeBSD ? The port tree comes with the install CD is already old by the time when you install a new system.


----------



## wblock@ (Aug 7, 2011)

donallen said:
			
		

> By the way, I'm a retired computer professional (I wrote my first computer program in 1960! IBM 1620 machine code. Scary.). I've done a *lot* of OS development work, including Unix, plus a lot of application-level stuff in just about every programming language you can think of. I mention this only to point out that I'm not a novice.



Understood.



> I've had problems with the port system in my previous abortive attempts to use FreeBSD and was hoping that it was less, shall we say, fragile now. That wasn't the deal-breaker then (the usb problems were the big issue; I couldn't do backups), but this is pretty bad. One of my purposes in using FreeBSD was better package management and this isn't better.



An early problem can keep causing later troubles, but I don't know what it would be.  Sometimes there's a basic misconception.  And there are problem ports.  gnucash is supposed to be an example of including pretty much every dependency possible.  I haven't used it.  In general, ports work.



> As for your suggestion to
> 
> cd /usr/ports/finance/gnucash && make install clean
> 
> I've just done that, in effect, by deleting the gnucash package and rebuilding it with portupgrade, which runs make and make install.



But it also does other things, like checking dependencies, and updating its database.  Manually building the port would eliminate that.


----------



## donallen (Aug 7, 2011)

ahavatar said:
			
		

> Did you "portsnap fetch extract" for the first time on the fresh new installation of FreeBSD ? The port tree comes with the install CD is already old by the time when you install a new system.



I'm well aware of that. As I said pretty clearly in a previous message, I updated the ports tree (with csup, not portsnap) just before starting the whole exercise of updating gnucash.


----------



## donallen (Aug 7, 2011)

wblock said:
			
		

> Understood.
> 
> 
> 
> ...



I tried it -- no luck, it still segfaults. Something is broken in the packages below gnucash in the dependency tree. I really can't devote any more time to this. I've already reinstalled Slackware on both machines. I know that system well, and while I'd love to have more automated package management, I can't find anything better at the moment. Everything else I've tried, including FreeBSD, has presented me with serious problems of one sort or another. With Slackware (and a home-brew make-based tool), I got gnucash 2.4.5 (the version supplied by slackbuilds.org) installed and working with no effort (I already had a slackware package for that), and a 2.4.7 package is easy to build from source with the slackbuild script.

Again, thanks for your efforts.

/Don


----------



## jb_fvwm2 (Aug 8, 2011)

I'd run gnucash(*) "without X".  You MAY deduce the missing rebuilds (if rebuilds are necc.), by the error messages,   until it only complains about "cannot open Display".  (Just found that trick a few weeks ago).  (In other words, run it before X is started.)
(*all ten binaries found in its pkg-plist, in case some are only shell scripts) (Unsure how well it fixes segfaults in a majority of cases though).


----------



## donallen (Aug 8, 2011)

jb_fvwm2 said:
			
		

> I'd run gnucash(*) "without X".  You MAY deduce the missing rebuilds (if rebuilds are necc.), by the error messages,   until it only complains about "cannot open Display".  (Just found that trick a few weeks ago).  (In other words, run it before X is started.)
> (*all ten binaries found in its pkg-plist, in case some are only shell scripts) (Unsure how well it fixes segfaults in a majority of cases though).



First of all, I really appreciate the efforts to help here.

I have an alternative to FreeBSD that I trust completely -- Slackware Linux. The package management is more minimalistic (it does not do automatic dependency resolution, but because so much is included in the distribution, there usually isn't much to resolve, so the tradeoff is disk space vs. complicated package management software at a time when you can buy a TB disk for less than $100), but it works, every time. My purpose in running FreeBSD was to take advantage of the ports system, to more easily keep applications like Gnucash reasonably up-to-date without much effort. It has turned out that, as documented in this thread, quite the opposite happened. I ended up with a non-functioning Gnucash, an application that is essential to me, and a debugging project on my hands. My solution was to go back to Slackware on the machines where I'd installed FreeBSD, and I've instead invested a little bit of time improving my package-management tool set, which includes some home-brew stuff and now more tools that are available in the Slackware world that I hadn't taken advantage of before. With 20-20 hindsight, I should have done this before searching for more convenience (which always exacts a price; we could have a long discussion about this, including many environmental examples, but this is not the right place) in an alternative like FreeBSD, because Slackware Just Works. Live and learn.

Again, thanks for taking the time to try to help.

/Don


----------



## wblock@ (Aug 8, 2011)

Elapsed time from "I just switched" to "this won't work" was 2.5 hours (in this thread).  Some parts of FreeBSD are similar to Linux, some are very different, and severe time limits make for a lot of pressure.  Next time, set up a VM for the new system and it'll give time to experiment while the old system continues to work.


----------



## donallen (Aug 8, 2011)

wblock said:
			
		

> Elapsed time from "I just switched" to "this won't work" was 2.5 hours (in this thread).  Some parts of FreeBSD are similar to Linux, some are very different, and severe time limits make for a lot of pressure.  Next time, set up a VM for the new system and it'll give time to experiment while the old system continues to work.



Wrong. I said in my initial post that I had FreeBSD 8.2 on *two* machines, one just installed. The existing install had been running 8.2 for months, and I was pretty happy with it. So this was not a matter of installing it with no experience with it, having it fail, and then pulling it down again in 2.5 hours. Installing in a VM would not have made a damned bit of difference here (and setting up a VM has its own set of headaches). The issue was that I hadn't tried upgrading gnucash with portmaster on the original install and so I had no reason to believe it wouldn't work. And when it didn't work, it failed catastrophically, leaving me with a gnucash-less machine and a debugging project of unknown duration that I was not about to take on in preference to system that I know works.


----------

