# Why pkg want screw up my system just to install a single binary package?



## piggy (Feb 10, 2017)

Like in the other thread, I do have problem building gstreamer1-plugins-bad.

My system works pretty fine, no problem but the one with the above package.

Now if I want to install the pkg of it, I can't, becouse if I try such a thing, pkg manager want to rebuild all my perfectly fine system with new options, deleting packages, downgrading others, a true mess in my humble opinion.

```
<piggy@freebsd11vm>/usr/ports # sudo pkg install gstreamer1-plugins-bad
Password:
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100%    944 B   0.9kB/s    00:01   
Fetching packagesite.txz: 100%    6 MiB   5.9MB/s    00:01   
Processing entries: 100%
FreeBSD repository update completed. 25853 packages processed.
Updating database digests format: 100%
pkg: kdebindings has a missing dependency: ruby21-korundum
pkg: gstreamer1-plugins-opencv has a missing dependency: opencv
The following 595 package(s) will be affected (of 0 checked):

......


Number of packages to be removed: 37
Number of packages to be installed: 20
Number of packages to be reinstalled: 537
Number of packages to be downgraded: 1

The operation will free 180 MiB.
443 MiB to be downloaded.

Proceed with this action? [y/N]:
```
Why this? And what I can do to avoid this and simply just install a package?


----------



## ASX (Feb 10, 2017)

guessing ... may be you build some/most packages from ports but your pkg configuration is still using the default "quarterly" repoository.

Switching to "latest" repository should help ... however I agree (with your post in the other thread) that it would be better to fix the build problem.

use `pkg -vv` to check about the configured repository.

use ports-mgmt/synth to build from ports, but take some time to understand how it work and why it will help you maintaining and updating your system.


----------



## drhowarddrfine (Feb 11, 2017)

piggy said:


> Like in the other thread


Sorry to be off topic but this is the third time I've seen this today. Don't assume we know what you mean by that and have read it. If it needs to be read to help your question, then you should either link to it or state/quote relevant parts here.


----------



## talsamon (Feb 11, 2017)

Is it possible, you misunderstanding something with the updates. whar you are doing if you update your system?


----------



## piggy (Feb 11, 2017)

talsamon said:


> Is it possible, you misunderstanding something with the updates. whar you are doing if you update your system?


Normal way: when I install, config to customize options, some pretty much personalized, then `make install clean`. For updating `portmaster -a` or `portmaster -b package` obiviously after reading UPDATING. Really incredible `pkg` act like that. I always been suspicious about `pkg` and it is the reason becouse I build all my ports.


----------



## piggy (Feb 11, 2017)

ASX said:


> guessing ... may be you build some/most packages from ports but your pkg configuration is still using the default "quarterly" repoository.



What's that?



> Switching to "latest" repository should help ... however I agree (with your post in the other thread) that it would be better to fix the build problem.


I have problem just build ONE package of 573. And Yes I do agree with you.



> use `pkg -vv` to check about the configured repository.




```
<piggy@freebsd11vm>/usr/ports/multimedia/gstreamer1-plugins-bad/work/gst-plugins-bad-1.8.0 # pkg -vv
Version                 : 1.9.4
PKG_DBDIR = "/var/db/pkg";
PKG_CACHEDIR = "/var/cache/pkg";
PORTSDIR = "/usr/ports";
INDEXDIR = "";
INDEXFILE = "INDEX-11";
HANDLE_RC_SCRIPTS = false;
DEFAULT_ALWAYS_YES = false;
ASSUME_ALWAYS_YES = false;
REPOS_DIR [
    "/etc/pkg/",
    "/usr/local/etc/pkg/repos/",
]
PLIST_KEYWORDS_DIR = "";
SYSLOG = true;
ABI = "FreeBSD:11:i386";
ALTABI = "freebsd:11:x86:32";
DEVELOPER_MODE = false;
VULNXML_SITE = "http://vuxml.freebsd.org/freebsd/vuln.xml.bz2";
FETCH_RETRY = 3;
PKG_PLUGINS_DIR = "/usr/local/lib/pkg/";
PKG_ENABLE_PLUGINS = true;
PLUGINS [
]
DEBUG_SCRIPTS = false;
PLUGINS_CONF_DIR = "/usr/local/etc/pkg/";
PERMISSIVE = false;
REPO_AUTOUPDATE = true;
NAMESERVER = "";
HTTP_USER_AGENT = "pkg/1.9.4";
EVENT_PIPE = "";
FETCH_TIMEOUT = 30;
UNSET_TIMESTAMP = false;
SSH_RESTRICT_DIR = "";
PKG_ENV {
}
PKG_SSH_ARGS = "";
DEBUG_LEVEL = 0;
ALIAS {
    all-depends = "query %dn-%dv";
    annotations = "info -A";
    build-depends = "info -qd";
    cinfo = "info -Cx";
    comment = "query -i \"%c\"";
    csearch = "search -Cx";
    desc = "query -i \"%e\"";
    download = "fetch";
    iinfo = "info -ix";
    isearch = "search -ix";
    prime-list = "query -e '%a = 0' '%n'";
    leaf = "query -e '%#r == 0' '%n-%v'";
    list = "info -ql";
    noauto = "query -e '%a == 0' '%n-%v'";
    options = "query -i \"%n - %Ok: %Ov\"";
    origin = "info -qo";
    provided-depends = "info -qb";
    raw = "info -R";
    required-depends = "info -qr";
    roptions = "rquery -i \"%n - %Ok: %Ov\"";
    shared-depends = "info -qB";
    show = "info -f -k";
    size = "info -sq";
}
CUDF_SOLVER = "";
SAT_SOLVER = "";
RUN_SCRIPTS = true;
CASE_SENSITIVE_MATCH = false;
LOCK_WAIT = 1;
LOCK_RETRIES = 5;
SQLITE_PROFILE = false;
WORKERS_COUNT = 0;
READ_LOCK = false;
PLIST_ACCEPT_DIRECTORIES = false;
IP_VERSION = 0;
AUTOMERGE = true;
VERSION_SOURCE = "";
CONSERVATIVE_UPGRADE = true;
PKG_CREATE_VERBOSE = false;
AUTOCLEAN = false;
DOT_FILE = "";
REPOSITORIES {
}
VALID_URL_SCHEME [
    "pkg+http",
    "pkg+https",
    "https",
    "http",
    "file",
    "ssh",
    "ftp",
    "ftps",
    "pkg+ssh",
    "pkg+ftp",
    "pkg+ftps",
]
ALLOW_BASE_SHLIBS = false;
WARN_SIZE_LIMIT = 1048576;
METALOG = "";


Repositories:
  FreeBSD: {
    url             : "pkg+http://pkg.FreeBSD.org/FreeBSD:11:i386/quarterly",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
```




> use ports-mgmt/synth to build from ports, but take some time to understand how it work and why it will help you maintaining and updating your system.


It seems to me that this program is especially built for build a local repository. I do have gigabit connection to the internet, I don't need it


----------



## piggy (Feb 11, 2017)

drhowarddrfine said:


> Sorry to be off topic but this is the third time I've seen this today. Don't assume we know what you mean by that and have read it. If it needs to be read to help your question, then you should either link to it or state/quote relevant parts here.


Sorry, right, here it is:

https://forums.freebsd.org/threads/59151/


----------



## ASX (Feb 11, 2017)

piggy said:


> What's that?


FreeBSD provide two package repositories: "quarterly" and "latest", and default to "quarterly", which is updated every three months and therefore it is behind what is available from ports.

In fact your system is configured to use "quarterly":

```
Repositories:
  FreeBSD: {
    url             : "pkg+http://pkg.FreeBSD.org/FreeBSD:11:i386/quarterly",
    enabled         : yes,
```

Please see: Thread 49694



piggy said:


> It seems to me that this program is especially built for build a local repository. I do have gigabit connection to the internet, I don't need it



You are missing the point, using synth is not about saving bandwidth, it is about using a tool designed to do aid the building from ports, in fact it does lot of work on your behalf (i.e. detecting dependencies loop, which most likely is your issue while trying to build gstreamer1-plugins-bad).


----------



## piggy (Feb 11, 2017)

ASX said:


> FreeBSD provide two package repositories: "quarterly" and "latest", and default to "quarterly", which is updated every three months and therefore it is behind what is available from ports.


Thank you very much! Quick way to switch from quarterly to latest?


----------



## ASX (Feb 11, 2017)

piggy said:


> Thank you very much! Quick way to switch from quarterly to latest?



It was already answered in the thread I linked in my previous post:
https://forums.freebsd.org/threads/49694/page-2#post-339633


----------



## piggy (Feb 11, 2017)

ASX said:


> It was already answered in the thread I linked in my previous post:
> https://forums.freebsd.org/threads/49694/page-2#post-339633


Strange. Little is changed and now `pkg` complain on a high number of packages about ABI changed (it didn't happened before).

```
ABI changed: 'freebsd:10:x86:32' -> 'freebsd:11:x86:32'
..............
..............
```
And many more like this.

Then my system is happily running and upgraded, using the ports system, long time ago to:


```
FreeBSD freebsd11vm 11.0-RELEASE-p1 FreeBSD 11.0-RELEASE-p1 #0 r306420: Thu Sep 29 03:40:55 UTC 2016     root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC  i386
```

And all the ports were build against the new version! So why pkg still complain about my previous system version?


----------



## ASX (Feb 11, 2017)

piggy said:


> Strange. Little is changed and now  pkg complain on a high number of packages about ABI changed (it didn't happened before).


Please post the complete command and output, otherwise it is difficult to interprete your results.



piggy said:


> And *all the ports* were build against the new version!


Dooesn't look so, considering your results.


----------



## ANOKNUSA (Feb 11, 2017)

By all appearances, you're mixing packages and ports. You shouldn't manually build a handful of things from ports and install everything else from packages. There's a good chance that will break things. It also looks like you may have been upgrading individual ports/packages rather than upgrading all of them at once, which is pretty much guaranteed to inevitably break things.

You should either install everything from one of the official package repositories, or use a tool like ports-mgmt/poudriere or ports-mgmt/synth to build your own custom packages. And always upgrade all packages at once rather a few at a time.


----------



## piggy (Feb 11, 2017)

ASX said:


> Please post the complete command and output, otherwise it is difficult to interprete your results.



Hello and thank you again for looking. Here what you asked for:


```
<piggy@freebsd11vm>/usr/ports/multimedia/gstreamer1-plugins-bad/work/gst-plugins-bad-1.8.0 # sudo pkg install gstreamer1-plugins-bad
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
pkg: kdebindings has a missing dependency: ruby21-korundum
pkg: gstreamer1-plugins-opencv has a missing dependency: opencv
The following 593 package(s) will be affected (of 0 checked):

Installed packages to be REMOVED:
        step-4.14.3_1
        py34-libpeas-1.16.0
        py34-gobject3-3.18.2
        gstreamer1-plugins-all-1.4_4
        gstreamer-plugins-all-1.3.0.10.1_16
        bootstrap-openjdk-r351880_1
        bogofilter-1.2.4_5
        evolution-3.18.5.1_2
        brasero-3.12.1_1
        cdrdao-1.2.3_5
        kwebkitpart-1.3.2_4
        py34-cairo-1.10.0_3
        firefox-51.0.1_1,1
        p5-perlqt-4.14.3
        gnome-clocks-3.18.0
        gnome-utils-3.18.0,1
        opencv2-2.4.13.1_5
        gstreamer-plugins-opencv-0.10.23_4,3
        gstreamer-plugins-gsm-0.10.23_2,3
        py34-dbus-1.2.0_1
        libchk-1.10.3
        ruby23-krossruby-4.14.3
        ruby23-bdb5-0.6.6_5
        ruby23-korundum-4.14.3
        plasma-scriptengine-ruby-4.11.21
        libimobiledevice-1.2.0
        gtk12-1.2.10_25
        xmms-1.2.11_27
        py34-atspi-2.18.0
        p5-perlkde-4.14.3
        kdebindings-4.14.3
        evolution-mapi-3.18.4
        firefox-i18n-51.0.1
        print-manager-4.14.3_2
        gstreamer-plugins-dv-0.10.31_2,3
        gstreamer-plugins-v4l2-0.10.31_2,3
        gstreamer1-plugins-opencv-1.8.0
        ggz-client-libs-0.0.14.1_6

New packages to be INSTALLED:
        gstreamer1-plugins-bad: 1.8.0_1
        gstreamer1-plugins-ugly: 1.8.0
        jpeg: 8_7
        epkowa: 2.11.0_5
        getline: 3.9
        openldap-sasl-client: 2.4.44
        mysql56-client: 5.6.35_2
        ruby23-bdb: 0.6.6_5
        py35-gobject3: 3.18.2
        py35-cairo: 1.10.0_3
        py35-libpeas: 1.16.0
        py35-dbus: 1.2.0_1
        py35-speech-dispatcher: 0.8.6
        py35-xdg: 0.25_1
        py35-setuptools35: 32.1.0
        py35-atspi: 2.18.0
        x10: 2.2.1_4
        telepathy-salut: 0.8.1_2

Installed packages to be REINSTALLED:
        pangomm-2.36.0
        libXft-2.3.2_1
        libXevie-1.0.3_3 (ABI changed: 'freebsd:10:x86:32' -> 'freebsd:11:x86:32')
        libXext-1.3.3_1,1
        xrdb-1.1.0 (ABI changed: 'freebsd:10:x86:32' -> 'freebsd:11:x86:32')
        libXt-1.1.5,1
        libSM-1.2.2_3,1
        libICE-1.0.9_1,1
        totem-3.18.1 (ABI changed: 'freebsd:10:x86:32' -> 'freebsd:11:x86:32')
        libXtst-1.2.3
        xsetmode-1.0.0 (ABI changed: 'freebsd:10:x86:32' -> 'freebsd:11:x86:32')
        libxkbui-1.0.2_4 (ABI changed: 'freebsd:10:x86:32' -> 'freebsd:11:x86:32')
        libX11-1.6.4,1
        libXdmcp-1.1.2
        xrefresh-1.0.5 (ABI changed: 'freebsd:10:x86:32' -> 'freebsd:11:x86:32')
        libxcb-1.12
        libpthread-stubs-0.3_6
        xwd-1.0.6 (ABI changed: 'freebsd:10:x86:32' -> 'freebsd:11:x86:32')
        libxkbfile-1.0.9
        xkbutils-1.0.4 (ABI changed: 'freebsd:10:x86:32' -> 'freebsd:11:x86:32')
        libXaw-1.0.13,2
        libXau-1.0.8_3
        openbox-3.6_1
        pango-1.38.0_1
        mkfontscale-1.1.2 (ABI changed: 'freebsd:10:x86:32' -> 'freebsd:11:x86:32')
        cdparanoia-3.9.8_10

..........................
(and many more with the same problem)
-------------------------

Number of packages to be removed: 38
Number of packages to be installed: 18
Number of packages to be reinstalled: 537

The operation will free 179 MiB.
443 MiB to be downloaded.

Proceed with this action? [y/N]: n
```



> Dooesn't look so, considering your results.


Believe me, everything related with ports was built from scratch after 10.3 --->>> 11 upgrade.

BTW, the problem we are discussing now it isn't vital for me in the sense my system is pretty consistent, I do not have any error, everything works fine, the many programs I do run, starting from KDE to office, multimedia and network applications works just fine. Then yes, there still is that hole represented by the needed gstreamer1-plugins-bad still not building :-((

This discussion for is a learning curve and I was myself pointed to this - again - when I simply try to install gstreamer1-plugins-bad from packages to be clear the only and lonely not building program on this system.

If memory serve me well, when I did the ports upgrade 10.3 ---->>> 11 I could have missed something related with packages, I can't remember what and it was something I maybe read on the handbook. Like a command to upgrade ABI if memory serve me well, then I'm less than an average user related with packages, I never ever used it before.


----------



## piggy (Feb 11, 2017)

ANOKNUSA said:


> By all appearances, you're mixing packages and ports. You shouldn't manually build a handful of things from ports and install everything else from packages. There's a good chance that will break things. It also looks like you may have been upgrading individual ports/packages rather than upgrading all of them at once, which is pretty much guaranteed to inevitably break things.
> 
> You should either install everything from one of the official package repositories, or use a tool like ports-mgmt/poudriere or ports-mgmt/synth to build your own custom packages. And always upgrade all packages at once rather a few at a time.


Thank you very much for your advise. My fault, if it si maybe not clear reading what I said in this thread.

Binary Packages, on this system, never been used/installed. This binary problem emerged when I had a problem with building a port and happened I run a command to see what happened if I try to install that single port from binary packages. That's all. I never ever mixed ports and packages, all the software running and installed on this system was compiled from scratch, comprised original World and Kernel and deeply customized.

It is indeed true that sometimes I do not upgrade all the new ports at the same time, then I think this is normal, I just upgrade in real time those ports with security problems, and once per months I try to upgrade everything is needed.


----------



## ASX (Feb 12, 2017)

piggy said:


> It is indeed true that sometimes I do not upgrade all the new ports at the same time, then I think this is normal, I just upgrade in real time those ports with security problems, and once per months I try to upgrade everything is needed.



Like mentioned from ANOKNUSA you should not do that, mixing port and packages should be avoided because of different options and because they would be built from a different ports tree, for the same reason you should not build only some of the updated ports.

synth and poudriere are the only two tools that will guarantee the correct result, building each and every required packages affected from a change;
additionally they are the only two tools that will build each package in a 'clean environment', resulting in a consistent a replicable behavior.

My first reply in this thread was something like:


> take some time to understand how it work [synth] and *why* it will help you maintaining and updating your system.


When you will have understood *why*, you will not need to believe me or anyone else, your choice will be the logical consequence of what you learned.

There are a few threads and howtos on this forum about ports-mgmt/poudriere and ports-mgmt/synth and also some section of the handbook, I highly suggest you to read them for your own learning purposes. It will require some time, but it is a good investment.


----------



## piggy (Feb 15, 2017)

> There are a few threads and howtos on this forum about ports-mgmt/poudriere and ports-mgmt/synth and also some section of the handbook, I highly suggest you to read them for your own learning purposes. It will require some time, but it is a good investment.


I experimented a bit with Poudriere: fantastic software!!! It does such vital things, then it is mostly usefull just for developers needing to test packages or for people needing to build a packages binary server/repository.

For me it is useless: every box I do administer is built with different options, it had different hardware, so it can't share the same packages with other boxes, it need custom built software.

Then I found Poudriere really top class software and one day I will try to maintain or port some software, it is absolutely a must.

Synth for me is not that good. It not just not use a sngle jail like Poudriere do for his opeeations, if it fails he let all those millions of jails loaded. Poudriere clean everything and in my experience it is rock solid.

Synth even refused to start operations in three different boxes and everytime it fails you have to run a config option to try to delete all those millions of jails leftovers.

For somene administering single boxes all with different custom options and optimized hardware, portmaster is still the right way, IMHO.


----------



## marino (Feb 15, 2017)

Piggy -- just about everything you said is false.
There are no leftover jails unless you're hitting control-C and as you note the next time synth is invoked, it cleans up previous mounts (which are about 10-15 per builder, not "millions").

basically, you don't seem to know what you're doing.
Poudriere is good and I will not try to sway those that prefer it, but I have to call out FUD like you're spewing.


----------



## piggy (Feb 15, 2017)

marino@ said:


> Piggy -- just about everything you said is false.
> Poudriere is good and I will not try to sway those that prefer it, but I have to call out FUD like you're spewing.


Maybe you are right then for me, I confirm, Poudriere compared to synth is simply another story, in another league IMHO.


----------



## marino (Feb 15, 2017)

piggy said:


> Maybe you are right then for me, I confirm, Poudriere compared to synth is simply another story, in another league IMHO.



Except that opinion is wrong too.
To my knowledge, there is exactly 1 thing that poudriere can do that synth can't:  Poudriere will disable the network in the builder after the fetch phase.  It can do this because it uses actual jails.  Synth cannot do this because it uses chroots.  This restriction is important for committers to confirm a new port is not a bad citizen (fetching inappropriately).  The normal user has no use for such a feature.

On the other hand, there are several things that synth can do over poudriere and it does the common things significantly faster.
That is NOT the definition of a different league, sorry.


----------

