pgk install vs. make install

Phlummi

Member
Hallo Ihr,
entschuldigt bitte die vermutliche noob Frage.

Ich kann Programme ja entweder über pkg install oder über die Ports installieren. So weit so gut.
Installiere ich etwas über pkg install, geht das relativ zügig.
Installiere ich jedoch über die Ports, dauert das oft eine Ewigkeit. Mit der Option recursive kann ich ja die entsprechenden Optionen im voraus auswählen bzw. Default installieren lassen. Ich weiß das es ja die Abhängigkeiten gibt.

Ich nehme nun mal ein Beispiel:
Arbeite ich nach Handbuch "4.5.3.3. Ports mit Portupgrade aktualisieren" , und Installiere über die Ports "Portupgrade make install clean". Dann dauert das eine Ewigkeit.
Ich beschreibe mal meine Installationsreihenfolge.
1. System von USB Installieren
2. Systemupdate also # freebsd-update fetch# freebsd-update install / #shutdown -r now
3. # portsnap fetch # portsnap extract
4. jetzt hole ich mir sudo "pkg install sudo" pkg wird zuvor installiert.... upgegradet.. was eigentlich..
Alles toll soweit. Jetzt möchte ich Portupgrade installieren um später die ports warten zu können. Steht ja auch so im Handbuch. Und hier wird nun vorgeschlagen dieses über make install clean zu machen. Wenn ich hier nun aber die default optionen wähle. Also immer beim blauen Menü-Fenster ok drücke, was ja die Default Einstellung sein dürfte. Dann wird mir unendlich viel Installiert. Ruby usw.
Soll das so sein?
Ich möchte natürlich am ende alles was für den Reibungslosen betrieb eines Programms oder Tools nötig ist auch mit installieren. Irgendwo habe ich gelesen pkg install macht das selbe wie make install clean aus den Ports. Mir scheint aber das die Menge an Daten, die Installiert wird, über die Ports erheblich mehr ist als über pkg install.....

LG und sry für die blöde Frage
 
Also über pkg installierst du fertig übersetze Binärpakete, sprich die fertigen Programme werden in einem Paket heruntergeladen und einfach nur noch entpackt. Das ist weitestgehend das Vorgehen wie man es von anderen Systemen her kennt (Windows, OS X, die meisten Linux-Systeme). Mittels Ports werden die Programme aus ihren Quellen übersetzt (das ist das was so lange dauert) und das dann in das System kopiert.
Bei vielen Programmen kannst du, wenn du sie aus dem Programmcode in ein lauffähiges Programm übersetzt, auswählen WIE übersetzt werden soll. Du kannst also bestimmte Programmteile außen vor lassen (z.B. könntest du sagen, das Programm braucht keine grafische Oberfläche, also werden die entsprechenden Programmteile gar nicht übersetzt), oder wählen welche Bibliotheken eine Software nutzen soll (z.B. soll die Software später MariaDB oder Oracle als Datenbank nutzen). So gibt es noch viele andere Einstellmöglichkeiten die man zum Übersetzen des Programmes auswählen kann.

Wenn du aus den Ports installierst (das macht übrigens mehr Spass mit Programmen wie "portmaster" statt direkt über "make install") bedeutet dies, dass du genau die genannten Fragen zur Übersetzung gestellt bekommst (das sind die blauen Bildschirminhalte) und daraus wird dann ein Binärpaket übersetzt welches am Ende dann mittel pkg installiert wird.
Verwendest du überall die Standardeinstellungen kannst du auch einfach die Software direkt per pkg installieren, denn dann geschieht genau das: Auf den ofiziellen Servern liegen Pakete die mittels Standardeinstellunen aus den Ports gebaut werden und per pkg installiert werden können.

In der heutigen Zeit ist es oft ausreichend pkg zu verwenden, gerade wenn man noch am Anfang steht und evtl. gar nicht so recht weiss was man denn mittels Compiletime-Optionen optimieren sollte. Das Mischen von offiziellen Paketen und Ports ist jedoch nicht immer unkritisch, da es hier Widersprüche geben kann. Das nächste Update könnte dann dein System ein wenig durcheinander bringen, also besser (gerade am Anfang) für eins entscheiden.
Es ist übrigens normal, dass du viele Abhängigkeiten bekommst. Gerade die ersten paar Programme die du installierst ziehen im Allgemeinen die ganzen "Standardabhänigkeiten" die später eine Vielzahl der Programme wollen.

Wenn du jetzt mit dem System anfängst und dich erst mal zurecht finden willst empfehle ich dir erst mal nur pkg zu verwenden. So kommst du schnell zum Ziel und kannst dich mit dem System befassen, statt mit den Problemen der Drittsoftware. ;)
 
Moin Phlummi,

es gibt keine blöden Fragen und wir haben alle mal als noobs angefangen. Das vergessen manche nur manchmal.

Das die Installation via make install länger dauert, liegt einfach daran, dass dabei eine Menge Code auf Deiner Maschine übersetzt/kompiliert wird.
Im Falle von pkg install hat das ein Buildcluster bei FreeBSD.org schon erledigt. Außerdem werden bei der Installation via make install eine Menge Abhängigkeiten mitinstalliert, die nur für das Übersetzen nötig sind, nicht aber für das Ausführen der übersetzten Programme, typ. Beispiele dafür sind autoconf-*, gmake, libtool, gcc usw.

Ich bin mir nicht ganz sicher, ob ein pkg install die Programme mit genau die gleichen Optionen installiert, wie ein make install mit Abnicken der default Optionen.
Ich würde es aber vermuten.

Gruß c.
 
Die Funktionen und Unterschiede wurden dir schon grob vermittelt. Ich will noch ein klein wenig Zusatzinformation geben und meine privaten Vorlieben nennen.

In /usr/ports/INDEX-11 kannst du alle Abhängigkeiten für die Ports von FreeBSD-11 nachlesen. Die Liste ist ein Text mit spezieller Syntax, die ich nun nicht auswendig hersagen kann, die sich aber beim Betrachten erschließt.
Diese Liste ist nicht zu bearbeiten (was aber theoretisch gemacht werden könnte). Die Abhängigkeiten sind häufig als Vorgaben der Hersteller eines Ports zu betrachten, die werden nicht intelligent ermittelt. So kann also der Hersteller von claws-mail sagen, dass er unbedingt für diese oder jene Version auch eine bestimmte Version eines weiteren Ports installiert haben möchte, um richtig zu funktionieren. Die Kunst ist, hier keine Inkonsistenzen aufkommen zu lassen und durchgehnd gleiche Versionen als Abhängigkeiten zu pflegen, die sich auch nicht widersprechen.
Das wird nicht für FreeBSD gesondert erledigt.
Die Abhängigkeiten bei uns sind nicht anders, als sie für die gleiche SW in einem GNU/Linux oder Solaris oder was auch immer System wären.
Und meiner Ansicht nach sind nicht alle Abhängigkeiten wirklich sinnvoll und wenn ich mich besser auskennen würde um da mitreden zu können, würde ich mir ein besseres System dafür wünschen. Ich habe schon das Gefühl, dass man es sich manchmal einfach macht und lieber mehr Abhängigkeiten hinzunimmt, als letztlich tatsächlich gebraucht würden. Ein grafisches CD-Brenn-Programm muss nicht auch einen bestimmten Satz an Icons fordern, der dann nachher niemals zum Einsatz kommt, um mal ein Beispiel zu konstruieren, das der Praxis schon sehr nahe kommt.
Die Ports enthalten die Angaben, die zum Bau aus den Quellen benötigt werden, sowie gelegentlich spezielle Patches.
Alles ist so ausgelegt, dass "make install clean" bei jedem Port genügt. Das ist eine Super Sache und riesige Vereinfachung. Die Port-Maintainer setzen das entsprechend um.
Werkzeuge wie portmaster oder portupgrade vereinfachen den Umgang mit den Ports nochmal weiter, sie sind aber Option und nicht im Basis-System enthalten.
Wer viele Ports regelmäßig bauen möchte, sollte sich ernsthaft mit poudiere befassen, einem weitergehenden Automatisierungswerkzeug mit deutlichen Vorteilen.

Seit einiger Zeit ist wohl pkg im Basis-System enthalten und das bedeutet, man kann es direkt zum Installieren von Paketen benutzen.
Jahrelang bin ich selbst überzeugt gewesen, unbedingt aus den Ports bauen zu wollen, weil ich eine Reihe an Optionen anders haben wollte, als sie default gesetzt sind.
Dann machte ich eine kurze Reise nach Ubuntu und erkannte, wie schnell und einfach es mit Paketen geht und dass ich damit sehr gut leben konnte und heute benutze ich selbst in FreeBSD nahezu ausschließlich Pakete und nur ganz ganz wenige Ports und kann das jedem auch nur wärmstens empfehlen.
Es ist einfacher, schneller, schlanker, weniger frustrierend und funktioniert auch noch durchgehend gut.
Ich meine, selbst dann, wenn irgendein Paket mich damit nervt, dass es nun wegen seiner Optionen unnötige SW zieht, die ich lieber nicht haben will, so ist diese SW doch wesentlich schneller installiert, als ich es mit den Ports verhindern kann. Was solls, wenn ich einfach etwas mehr SW ungenutzt auf dem PC installiert habe? Sie tut nicht weh und behindert mich nicht bei der Arbeit. Sie liegt einfach irgendwo rum und ist so schnell installiert und upgedatet, dass es wirklich nicht stört.
Also, ich finde inzwischen Pakete einfach nur noch super und empfehle sie jedem weiter.
Was das Mischen mit Ports angeht, kann ich das gut handeln. Wie gesagt benutze ich nur ganz wenige Ports, weniger als fünf. Hauptsächlich geht es um ffmpeg, das default kein mp3 kann und um irgendwas, das mit meinem Scanner zu tun hatte und als Paket Installationsfehler meldete. Das ist überschaubar und ich scheue es nicht, in solch einem Verhältnis zu mischen und keine weiteren Tools dazu zu bemühen.
Wer aber etwa ein großes DE komplett aus den Ports baut (wieso auch immer) und damit dann hunderte von Ports mit hunderten von Paketen mischen will, der muss sehr auf der Hut sein und da würde ich selbst nicht mehr mit Paketen arbeiten.
 
@pi234a
Ich benutze inzwischen auch nur noch pkgs, allerdings müssen sie selbst geschnürt sein. Es geht mir nicht um den Plattenplatz, sondern darum, die Abhängigkeiten und damit die Angriffsfläche zu minimieren. Dafür nutze ich poudriere, das mir jede Nacht frische Pakete schnürt. Das Updaten mittels pkgs ist schon toll, da sehr schnell im Vergleich zum 'Selberbauen'.
 
Puhm whow. Erst einmal unheimlichen Dank für Eure Ausführungen.
Ich habe mir das nun insgesamt drei mal durchgelesen und bin begeistert von Eurer Hilfsbereitschaft. Nun bin ich mit 48 Jahren seit meinem 13 Lebensjahr mit Computern beschäftigt. Sogar Systemintegrator geworden. Dennoch gestehe ich, das ich hier in Bereiche vorstoße "die nie ein Mensch zuvor gesehen hat" so kommt es mir vor.
Also, das die Installation, "das Kompilieren" von mal zu mal weniger Zeit benötigt, habe ich festgestellt. Ja das leuchtet mir nun sogar ein. Die Ports bieten mir durch die Möglichkeit der Auswahl, mehr Möglichkeiten. "Möglichkeiten die ich, trotz ein wenig Computerkenntnissen vermutlich nie oder nur ganz selten benötigen werde" Ich habe heute bei null angefangen und alles neu gemacht. Ich interpretiere mal gerade heraus."Unix, bsd ist nicht etwas das man aufspielt und es ist da." Ich muss,um auf meine Frage zurück zu kommen, einen weg finden das was ich mir als Ziel gesetzt habe, mit Unix erreichen.
Einfacher gesagt. PKG wäre der Default weg, make install aus den Ports der Weg mit den erweiterten Möglichkeiten. Würde ich also make install recursiv clean, sorry wenn der syntax gerade nicht stimmt, aufrufen. Wäre es mit pkg install gleich zu setzen.?
Ich glaube ich befinde mich immer noch zu sehr in der Windows Welt. "HIGHMEMSYS" war einfach gegen das jetzt.
Seit drei Wochen beschäftige ich mich nun an die 12 Stunden täglich mit bsd. Einfach weil ich gerade die Möglichkeit habe. Und ich komme von einer Sache zur nächsten,unterm strich habe ich ein Desktop bsd Sytem zusammengeschustert.Bin aber vollkommen unzufrieden weil ich noch immer nicht begreife was wovon abhängt. Unzufrieden nicht in dem Sinne das ich nun hingehe und sage, ich nehme jetzt einfach ein Ubuntu irgendwas. Sondern eher weil ich gerade erst die Dimension der Möglichkeiten ankratze. Kann es wirklich sein das hier alles möglich ist? Letztendlich weiß ich nicht einmal was ich genau erreichen will. E-Mail, Surfen, Multimedia, Office Anwendungen sind erschreckend leicht zu realisieren. Eigentlich wollte ich ursprünglich nichts weiter als mich mit php auseinandersetzen. Und weil ich es gerne so unverbogen wie möglich möchte bin ich hier gelandet. Nun stelle ich fest, die Möglichkeiten mit bsd sind fast unbegrenzt.
Sry bin gerade total geflasht. Ich denke das ich morgen erst einmal meine Ziele definieren werde.
Den Unterschied zwischen Paketen und Ports hab ich glaube ich erstmal verstanden.
@crotchmaster Das was Du sagst ist für mich gerade so etwas wie die rote Pille, oder war es die blaue. poudriere den namen habe ich gelesen. Das war es auch schon. Ich fürchte ich schwimme noch wie ein Korken an der Oberfläche von allem.
LG Phlummi
 
@Rakor , wenn ich mir meine eigenen bisher gemachten Notizen anschaue, scheint ein aufschreiben und Sammeln wie Du es in Deiner Wiki machst, unumgänglich zu sein.
Was mich dazu bringt mich näher mit den Snapshots auseinander zu setzen. Das habe ich bisher nicht einmal ansatzweise getan. Aber es erscheint mir unumgänglich zu sein ein bis dato einigermaßen funktionierendes system wieder aufrufen zu können. Oder abzuspeichern.
Bis ich das kann wäre ich für eine liste der wichtigsten Konfigurationsdateien sehr Dankbar. Zumindest könnte ich mir diese abspeichern um so nicht die Basiskonfiguration jedesmal neu zu schreiben. bzw. mir meine eigenen configs vom vorherigen sytem noch einmal anzuschauen.
/boot/loader.conf /etc/login.conf /etc/prolife /etc/sysctl.conf /etc/rc.conf /etc/fstab /etc/devfs.conf /etc/devfs.rules /etc/pf.conf /etc/X11/corg.conf bzw. entsprechende configs im Unterordner xorg.conf.d wenn man es denn so mag. .xinitrc
Wären die, die mir gerade einfallen und die, die ich vorrangig bisher in den Fingern hatte.
Fehlt da noch etwas? Für morgen habe ich mir Vorgenommen diese zu sichern um damit zu Arbeiten.
Als Persönliche Hilfe habe ich es mir angewöhnt über jede "ausführbare Zeile" ich hoffe es heißt so, eine Zeile mit der entsprechenden Bezeichnung/hinweis zu setzen.
Also bspl.: /boot/loader.conf hier habe ich beide Optionen eingetragen und kann so nutzen was ich gerade möchte.

# alter Konsolentreiber highdef Konsole, aber keine rückkehr aus dem X-Server zur Konsole
kern.vt=sc

# neuer Konsolentreiber keine highdef Konsole, dafür Rückkehr aus dem X-Server zur Konsole
#kern.vty=vt

Weitere wichtige configs zum Abspeichern und um damit zu Arbeiten wären hilfreich.
 
Hier mal eine Auswahl von Dateien, die außerhalb meines HOME liegen und die ich gerne aufhebe, um sie bei neuen Installationen verfügbar zu haben.
Innerhalb meines HOME liegen viele Konfigurationen, die ich aber ohnehin regelmäßig sichere und um die ich mich deshalb nicht eigens zu kümmern brauche. Ich kann das komplette, gesicherte HOME einfach zurückspielen, wenn ich das möchte.
Code:
pit@senyo ~:- >	tree BSD-Sicherungen/
BSD-Sicherungen/
├── boot
│   └── loader.conf
├── etc
│   ├── crontab
│   ├── csh.cshrc
│   ├── devfs.rules
│   ├── fstab
│   ├── hosts
│   ├── login.conf
│   ├── make.conf
│   ├── motd
│   ├── ntp.conf
│   ├── profile
│   ├── rc.conf
│   ├── resolv.conf
│   ├── signatur.txt
│   ├── ssh
│   │   └── sshd_config
│   ├── sysctl.conf
│   ├── timezone
│   ├── ttys
│   └── X11
│       ├── xorg.conf
│       └── xorg.conf_nvidea_24072015
└── usr
    └── local
        ├── etc
        │   └── rc.d
        │       └── startup.sh
        └── share
            ├── config
            │   └── kdm
            │       ├── backgroundrc
            │       └── kdmrc
            ├── fbpanel
            │   ├── images
            │   │   ├── 31_gr.png
                          |.... viele Bilder
            │   └── pager
            └── X11
                └── app-defaults
                    ├── XCalc-color
                    ├── XClock
                    └── XClock-color
Die Ausgabe ist leicht überarbeitet und manche Punkte daraus benutze ich nicht mehr, hebe sie aber immer noch auf. Das soll nur eine grobe Orientierung sein und die Ausgabe des Befehls war einfacher, als neu nachzudenken.

Du installierst im Grunde genommen immer nur Pakete, denn jeder Port wird zunächst zu einem Paket gebaut. Wenn du keine speziellen Optionen wählst, ist dein lokal erzeugtes Paket also identisch mit jenem (für die gleiche Rechner-Plattform) auf dem FreeBSD-Server. Wer Ports mit Standard-Optionen baut, kann deshalb einfach Pakete nehmen und zum gleichen Ergebnis kommen.
Zunächst jedenfalls.
Jedes System kann starke individuelle Züge annehmen.
Deshalb nimmt man zum Bau von Paketen gerne so etwas, was ich mal als Standard-Jungfräuliches System bezeichnen möchte. So etwas legt man sich dann gewöhnlich in eine Jail und setzt darin sein poudriere auf. Das nimmt dann die Ports mit den zuvor bestimmten eigenen Optionen und baut daraus lokal Pakete. Die FreeBSD-Server machen eigentlich genau dies, nur eben in der Ferne und mit Optionen, die jemand mal für gut befunden haben muss. Die FreeBSD-Server machen das nicht täglich und nicht automatisch, wenn eine neuere Version in den Ports landet, sondern sie arbeiten zu festgelegten Zeiten. Deshalb gibt es mitunter Versions- und damit Abhängigkeitskonflikte zwischen aktuellen Ports und auf den Servern verfügbaren Paketen. Daher rühren die Probleme beim Mischen von Ports mit Paketen.

Der Weg über make install aus den Ports ist nur dann sinnvoll, wenn es um eine ganz überschauliche Anzahl von Ports geht. Man kann natürlich auch heute noch vollkommen auf Ports verzichten und sich ein System aus Quellen zusammen bauen. Das macht halt niemand mehr und ich glaube, es sollte auch niemand mehr ein System komplett aus den Ports mit make install aufbauen wollen. Dazu ist portsmaster ein zu guter Helfer und bringt deutlich mehr Übersicht.
Aber generell, wenn jemand voll auf die ports setzen möchte, weil er dort immer eine Spur aktueller versorgt wird oder seine eigenen Optionen ausleben kann, sollte er über proudriere nachdenken und die Geschichte komplett automatisieren, wie das hier schon erwähnt wurde. Die so lokal erstellten Pakete können dann auch auf anderen Rechnern der gleichen Plattform eingesetzt werden und proudriere kann auch für fremde Plattformen Pakete bauen.

Wer aber mit den Standard-Optionen leben kann und nicht unbedingt täglich neue Versionen der eingesetzten SW braucht, der ist mit Paketen sehr viel schneller am Ziel, also, mit Paketen aus dem FreeBSD-Server-Angebot und nicht nur etwas schneller, sehr sehr viel schneller.
 
Zurück
Oben