# Upgrade 9.0 --> ? follies



## chavez243ca (Nov 21, 2015)

Multiple attempts to update a 9.0 server to 9.3-RELEASE via freebsd-update(8) always bombed out with the 'cowardly refusing...' message. The sed(1) trick did not help. Oddly, I was able to update to 9.1-RELEASE, then to 9.2-RELEASE. Ultimately I would like to make it to 9.3, but prior to that I want to address some old ports and switch the system to pkgng, but that is now failing.


```
configure: error: Unable to find the libarchive headers
===>  Script "configure" failed unexpectedly.
Please report the problem to pkg@FreeBSD.org [maintainer] and attach the
"/usr/ports/ports-mgmt/pkg/work/pkg-1.6.1/config.log" including the output
of the failure of your make command. Also, it might be a good idea to provide
an overview of all packages installed on your system (e.g. a
/usr/ports/ports-mgmt/pkg/work/pkg-1.6.1/src/pkg-static info -g -Ea).
*** [do-configure] Error code 1

Stop in /usr/ports/ports-mgmt/pkg.
*** [/usr/ports/ports-mgmt/pkg/work/.config
```

Thoughts / ideas?


----------



## chavez243ca (Nov 24, 2015)

Update: I did manage to get to 9.3-RELEASE, but it has not addressed the libarchive issue that appears to be preventing the switch to pkg(8), or the building of just about any port for that matter. I did locate libarchive.h and it is where it should be. I just finished extracting the src.txz tarball just in case rebuilding some of the base system is required.


----------



## SirDice (Nov 24, 2015)

If the system is this old it might be easier just to remove all packages and start fresh.


----------



## Maelstorm (Nov 24, 2015)

I ran into this issue myself.  One way to deal with this is to remove all the packages on the system and delete the package database.  Then delete /usr/ports by doing `rm -rf /usr/ports` and then recreate the ports tree by doing `mkdir /usr/ports` and then while inside the ports directory, run `svn checkout https://svn.freebsd.org/ports/head /usr/ports` to recreate the ports tree.

You can kickstart the package reinstallation by running `pkg install <pkgname>` where <pkgname> is the name of the package excluding the package version number.  For example, if you want to install bash-4.3.42, you would run `pkg install bash` and it will install.

I have a related thread here, that has a little more info.  Once you recreate the ports system using subversion, it creates metadata to keep track of everything.


----------



## SirDice (Nov 24, 2015)

Maelstorm said:


> Once you recreate the ports system using subversion, it creates metadata to keep track of everything.


The ports tree isn't necessary, pkg(8) keeps track of things using /var/db/pkg/local.sqlite (installed packages) and /var/db/pkg/repo-FreeBSD.sqlite (version cache of remote FreeBSD package repository).

If you only use packages there's no need to have a ports tree around. It's helpful but not strictly necessary.


----------



## chavez243ca (Nov 24, 2015)

Mostly I stick to ports, only using pkg(8) when something is buggered up with ports. I'll check out that other thread to see if I can go that route.


----------



## Maelstorm (Nov 25, 2015)

SirDice said:


> The ports tree isn't necessary, pkg(8) keeps track of things using /var/db/pkg/local.sqlite (installed packages) and /var/db/pkg/repo-FreeBSD.sqlite (version cache of remote FreeBSD package repository).
> 
> If you only use packages there's no need to have a ports tree around. It's helpful but not strictly necessary.



True, but with packages, you have to know the name of the software that you are installing.  However, having the ports tree is nice because then you can run the following commands in /usr/ports:

`make fetchindex` - Grabs the latest index from the repository
`make readmes` - Builds a tree of browseable html readme files starting in /usr/ports.
`make search name=<name>` - Allows a search by name for software.
`make search key=<keyword>` - Allows a keyword search for software.

For more information see the ports(7) man page.


----------



## wblock@ (Nov 25, 2015)

It is not necessary to create /usr/ports before a new checkout, svn(1) will create the target directory if it does not exist.


----------



## chavez243ca (Nov 25, 2015)

I might move this whole conversation over to the ports board - I've got the OS up to 9.3, but I cannot add or update any ports, nor convert to pkgng. Also cannot do the svn(1) try because svn(1) does not exist and I cannot build it from ports. `# portsnap fetch update` did work, but that is about it.


----------



## SirDice (Nov 26, 2015)

See my post #3. Make a note of what's installed now and just remove it all. Then start building.


----------



## Maelstorm (Nov 29, 2015)

If subversion isn't installed, then install the pre-compiled binary.  Using `pkg install svn` I think will work for that.  It's so common and critical, it's on the build list anyways.


----------

