Meist hat man ja manche Pakete Binär installiert, und andere aus den Ports compiliert.
Eigentlich nicht. Ich entscheide mich klar für das Eine oder das Andere. Wie du bereits bemerkt hast fliesst am Ende alles in eine einzige Datenbank. Daher siehst du auch mit pkg info alles was aus Ports installiert wurde. Das entfernen von per Ports installierter Software nimmt man iA auch per pkg delete (oder remove) vor.
Du musst die Funktionsweise des Ganzen richtig verstehen, dann wird einiges klarer. DIe Trennung zwischen Base-System und Drittsoftware (Pakate/Ports) ist für alle die von Linux wechseln meist das erste Verständnisproblem.
Ein Linux-System ist zumeist eine Sammlung von verschiedensten Bestandteilen die von überall zusammengesucht werden und dann zu einem System, rund um einen, meist auch noch zusammengepatchten, Kernel zusammengeklebt werden. Sprich: Alles an dem System kommt von irgendwo her. Daher ist die Updateverwaltung auch einheitlich und es wird alles mögliche durch ein zentrales Paketmanagement gepatcht. Das ist zunächst mal praktisch, da einfach zu verstehen. Der Nachteil ist, meiner Meinung nach, dass so ein Update halt auch recht flott mal mein OS unbenutzbar macht da nicht alle Pakete immer aufeinander abgestimmt sein müssen. Man Merke: Es gibt kein "Linux-System", sondern nur ein System mit (meist GNU-)Software rund um einen Linux-Kernel.
Ein FreeBSD ist Gegensatz dazu ein komplettes Betriebssystem. Sprich nicht nur ein Kernel um den herrum dann Software zu einem Gesamtsystem zusammengeklaubt wird, sondern ein wirklich vollständiges System. Alles was in Base-System von FreeBSD drin steckt wird auch vom FreeBSD-Projekt verwaltet und gepflegt (klar wird da auch mal ein Patch von aussen geprüft und eingestellt). Um dieses System mit externer Software zu versorgen gibt es die Ports. Das sind einfach nur Bauanleitungen wie man Software aus _fremden_ Quellen in einem FreeBSD installiert. Sprich das ist, einfach gesagt, ein Makefile in dem drin steht: "Lade die Quellen von dem Server XYZ und wennde dann den Pach hier an, mit das auch gescheit unter BSD läuft und dann übersetz das ganze... bla blub". Die eigentliche Software wird also i.A. nicht von dem FreeBSD-Projekt verwaltet oder gehostet. Lediglich die Makefiles werden immer angepasst, dass sie die aktuellen Versionen übersetzen können.
Wie funktioniert das nun mit den Ports? Der Port, der ja wie gesagt nur ein Makefile (mit bissl was dazu ist) übersetzt dir die Software mit deinen Optionen und macht daraus ein Paket(!). Dieses wird anschließend mittels pkg installiert. Daher kommt auch das Verhalten, dass jede Software gleich behandelt wird, egal ob aus Paketen oder Ports... denn Schlussendlich sind beides Pakete.
Übrigens da Ports nur "Anleitungen" sind kann man damit auch binär verteilte Software installieren.
Die Pakete die pkg installiert sind übrigens, du denkst es dir bereits, nichts anderes als Ports die mit den Standardoptionen gebaut wurden.
Vielleicht verstehst du es nun besser. freebsd-update aktuallisiert das Basissystem. pkg und portmaster aktuallisieren beide Drittsoftware welche in der selben Datenbank verwaltet wird. Das ist auch eine Vertrauenssache. Das Basissystem wird von dem Projekt geprüft und überwacht. Drittsoftware nicht.
Du kannst pkg auch anweisen verschiedene Pakete einzufrieren, damit sie nicht automatisch geupdated werden... Wegen der Abhängigkeitspfade sollte man sowas jedoch nur in Ausnahmesituatuinen machen und dann auch nur selten.
Die richtige Vorgehensweise ist dein Basissystem regelmässig aktuell zu halten. Das geht entweder binär per freebsd-update oder eben aus den Quellen (buildkernel, buildworld, etc).
Und deine Drittsoftware dann je nach gewähltem Weg zu updaten. Es gibt Leute die Updaten Drittsoftware nur gezielt (also nur die Software welche evtl Sicherheitsprobleme hat). Andere updaten einfach alles... Mache arbeiten nur mit Pakete, andere nur mir Ports (weil sie Anpassungen brauchen oder wollen).... Wie dem auch sei.
Ich habe für mich fast auf allen Desktop-Rechnern Pakete im Einsatz (da das zumeist wirklich völlig ausreicht) und verwende auf Servern Ports da ich da meist etwas anpassen will (z.B. WITHOUT_X11).