# Synth & PKG Upgrade Questions



## Mayhem30 (Aug 19, 2017)

I'm using PKG and Synth to manage my ports. I'm fairly new to this (used portmaster the entire time) and I have a couple of questions.

I just upgraded security/openssl, and it compiled the new version of openssl and a new port devel/nasm.

When I issued a `pkg upgrade`, it upgraded openssl and did nothing with nasm. As of right now, nasm resides in the repository, but is not installed in the system.

My questions are :

What's the best way to ensure everything in the synth repository is installed / and or upgraded after compiling the new versions in the repository - so nothing is missed?

How can I list all non-installed ports in the synth repository?

How do I reinstall all ports that rely on security/openssl? (my old method was `portmaster -r security/openssl`)

Any help would be greatly appreciated.


----------



## ShelLuser (Aug 19, 2017)

Just a suggestion: you might want to change your threads subject a bit because your question is more related to Synth than pkg. I kinda expected pkgng related questions yet can't really provide much help here because I don't use Synth myself.


----------



## Mayhem30 (Aug 19, 2017)

Done. However, isn't my 3rd question the only one synth related?

I figured #1 and #2 were PKG questions.


----------



## topcat (Aug 19, 2017)

I use ports-mgmt/synth myself, since building on a live system is not a good idea. Not an expert on this by any means, but I think the recommended way is to run
`synth upgrade-system`
Granted synth uses pkg under the hood to do the installs. Normally synth rebuilds a lot of packages because the dependencies were rebuilt, but the dependent packages may still be the same versions (i.e. unchanged), and then
`pkg upgrade`
will not update them.

I'm curious why devel/nasm was built; it's not dependent on security/openssl.


----------



## Mayhem30 (Aug 20, 2017)

I'm not sure. I am hoping someone will have the answers to my questions though.


----------



## Eric A. Borisch (Aug 20, 2017)

Your repository will not only have your requested packages, but also all their dependencies.

Unless you requested an install of nasm, it was initially built by synth as a build-dependency for some other port you have. It was rebuilt because, well, the port was upgraded, but since it is not a run-time or library dependency (it's an assembler) for anything you have currently installed, it wasn't installed/upgraded. By the same token, it shouldn't be installed now; does `pkg info nasm` return anything other than no packages matching?

But when you next have to upgrade whatever you have that uses nasm to build (ffmpeg, perhaps?), you won't have to wait for the new nasm to build. It will only be installed during that process in the builder environment, not /usr/local.


----------



## Mayhem30 (Aug 20, 2017)

```
$ pkg info nasm
pkg: No package(s) matching nasm
```

Ok, what about situations where there is an update for archivers/liblz4. Synth rebuilds that port and the ports that depend on it (databases/mysql56-server, databases/mysql56-client). When synth is finished, only archivers/liblz4 is upgraded.

Since MySQL 5.6 depends on archivers/liblz4, shouldn't they be reinstalled as well?


----------



## topcat (Aug 21, 2017)

Eric A. Borisch said:


> Your repository will not only have your requested packages, but also all their dependencies.
> 
> Unless you requested an install of nasm, it was initially built by synth as a build-dependency for some other port you have. It was rebuilt because, well, the port was upgraded, but since it is not a run-time or library dependency (it's an assembler) for anything you have currently installed, it wasn't installed/upgraded. By the same token, it shouldn't be installed now; does `pkg info nasm` return anything other than no packages matching?
> 
> But when you next have to upgrade whatever you have that uses nasm to build (ffmpeg, perhaps?), you won't have to wait for the new nasm to build. It will only be installed during that process in the builder environment, not /usr/local.



Nicely explained. I tried to explain this but wasn't clear enough, sorry. I also assumed the OP just upgraded security/openssl and nothing else which wouldn't have built devel/nasm.

OP: From the pkg-upgrade() manpage:
"Where a package on the work list supplies a shared library, and that library has been updated, all packages requiring that shared library will also be added to the work list as reinstallation jobs."

However, I think minor library version bumps (no ABI change) don't trigger a reinstall. Bigger bumps do. For example, on my system (using ports-mgmt/synth to upgrade):

```
pkg: py27-setuptools upgraded: 36.0.1 -> 36.2.2
pkg: py27-pytz reinstalled: 2017.2,1 -> 2017.2,1
```
where the first line is a dependency of the second. Note that synth is more "aggressive" than pkg when deciding what to rebuild so it will rebuild stuff which pkg does not consider changed enough to warrant a reinstall. This is my understanding; please feel free to correct me.


----------



## Mayhem30 (Aug 23, 2017)

I wish there was a command in synth that would allow us to reinstall all packages that were compiled/recompiled during the current session - regardless whether it's warranted or not.

I've now seen a few times where a update for a library was available, and 12 other packages that depended on it were recompiled as well. However, issuing the upgrade command only reinstalled the library and ignored the other 12 packages. I just feel somehow I could run in to issues down the road and have no idea how to fix it.


----------



## nickednamed (Aug 24, 2017)

Try `pkg upgrade -f -r Synth`

It will reinstall ALL packages from your Synth repository.


----------

