# Synth woes + How do you remove a package with Synth?



## eldaemon (Feb 23, 2021)

Admittedly, I was using Synth a bit incorrectly and may have gotten my system into a bit of limbo. That said, Synth is *very* opinionated and not inuitive on the whole. It does seem to work very well, but there are some quirks to say the least.

For instance, I have a bunch of packages failing dependency checks. I think over the librsvg -> librsvg-rust upgrade. How do I tell it to rebuild the broken packages that it refuses to add to the repository?

I also installed audio/pulseaudio at one point, but then removed it by uninstalling it, deleting it from the Synth repository, and running `synth rebuild-repository`. But doing a `synth upgrade-system`, it ended up building it again. Does Synth maintain its own internal list of packages to keep building/maintaining? How do I actually remove packages with synth?

Thank you for your time.


----------



## SirDice (Feb 23, 2021)

eldaemon said:


> How do I tell it to rebuild the broken packages that it refuses to add to the repository?


Don't know if this will work for Synth but for Poudriere I can more or less force it to rebuild a certain package just by deleting it from the repository. Simply deleting the file using rm(1) does the trick. 



eldaemon said:


> But doing a `synth upgrade-system`, it ended up building it again.


It could be pulled in as a dependency, some ports have a dependency on it. Most of the time you can disable that option though, but you'll need to hunt down the port that pulls it in. Which can be a little tricky to find if its a dependency of a dependency.


----------



## eldaemon (Feb 23, 2021)

Thank you! I might try the deletion trick but I am not certain if it also does it for synth. I guess I need to come up with a command that shows which packages are failing.

How can I find the packages which depend on a package? `pkg search -Q required-by pulseaudio` does not seem to work. It prints itself and nothing else. If I try it for say tk86, it says just tk86. but if I remove tk86, more wants to go with it so it's obviously not dependency-less.


----------



## SirDice (Feb 24, 2021)

`pkg info -r pulseaudio` if it's installed. You can also use a clever pkg-rquery(8) for things that aren't installed but are in the repository. Other than that, I usually just look at the various ports (but I know my way around them), commands like `make run-depends-list` is usually helpful.


----------



## garry (Feb 24, 2021)

eldaemon said:


> Admittedly, I was using Synth a bit incorrectly and may have gotten my system into a bit of limbo..


Nothing gets onto my server without being built by ports-mgmt/synth, so I have experience with it running FreeBSD Current and, for me, it works perfectly for its purpose (building a self-consistent repository of ~2500 packages for my server and other local  computers).  At every invocation it examines the repository and compares it to the ports tree and removes any packages that need updating (because of a new version or the options having been changed), or that depend on packages that need updating.  It builds only what you ask it to (
	
	



```
synth upgrade-system
```
 asks it to build a repository containing every package that is already installed and then use *pkg* to upgrade the system from that repository).  You use the repository that synth built just like you would use the online binary repository from the FreeBSD servers.   So you can use *pkg* to install or remove packages, or get information about packages, about dependencies, etc.  You need to know how to use *pkg*.

I recommend against trying to use two repositories at once.  In synth configure I have "_Fetch prebuilt packages:  false_" and in /usr/local/etc/pkg/repos/FreeBSD.conf I have "_enabled:  no_".


----------

