Das MacPort Projekt1) hat ein einfaches System für die Installation von Open Source Unix Software Komponenten auf Mac OS geschaffen. Wie zB beim Linux Debian das apt-get- oder aptitude-Kommando oder dem port-Kommando bei BSD löst es hierbei die notwendigen Abhängigkeiten auf, kompiliert, installiert und aktualisiert die gewählte Software. Der Name MacPort wurde vermutlich wegen der engen Verwandtschaft von Darwin (dem Mac OS Kernel) und BSD gewählt, was sich auch darin widerspiegelt, dass die vom MacPort Projekt bereitgestellten Software Pakete unter der BSD License2) veröffentlicht werden.
Voraussetzung für die Installation von MacPort ist die Installation des Xcode Developer Tool Paket, welches im App Store oder auf den Apple Developer Seiten für die jeweilige Mac OSX Version zu finden ist für. Der Installer von MacPort führt sie dann durch die Installation.
Nach der erfolgreichen Installation von Xcode müssen noch die »Command Line Tools« nachinstalliert werden:
prontos-iMac:/ pronto$ xcode-select --install
Öffnen Sie ggf. bei einer Firewall, die ausgehenden Traffic filtert, den Port »TCP 873 outbound« für das RSYNC Protokoll.
Nach der Installation des Pakets ist MacPort bereits funktionsfähig. Sollten sie während der Installation ein Terminal geöffnet haben, müssen Sie dieses neu starten. Sie können das testen, in dem Sie ein Port Selbstupdate durchführen:
$ sudo port -v selfupdate
---> Updating the ports tree
Synchronizing local ports tree from rsync://rsync.macports.org/release/ports/
receiving file list ... done
sent 36 bytes received 450366 bytes 100089.33 bytes/sec
total size is 33233940 speedup is 73.79
---> Updating MacPorts base sources using rsync
receiving file list ... done
MacPort ist nun auf Ihrem System installiert und einsatzbereit. Das Standardinstallationsverzeichnis ist /var/opt/. Detailierte Informationen zum port-Kommando finden sie in der Manpage von port (→ man port).
Als Ports werden im Kontext von MacPorts (Software-) Pakete bzw. Verzeichnisse bezeichnet, die alle nötigen Sourcen enthalten um die gewünschte Anwendung auf dem Zielsystem zu kompilieren und zu installieren. Bei diesem System werden die angeforderten Programme bzw. deren Sourcen (Quelltext, Kompilieranweisungen etc.) aus dem Internet heruntergeladen. Der Vorteil dieser Methode liegt darin, dass das Programm auf einen sehr aktuellen Quelltext zurückgreifen kann und vor allem, dass das Programm maschinenspezifisch kompiliert wird, was zur Laufzeitverbesserung beiträgt.
Bei der ersten Synchronisierung wird der globale Port Tree lokal auf den Rechner nach »/opt/local/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports« geladen. Dort befinden sich alle Gruppen und darunter alle derzeit verfügbaren Ports. Die Basis von MacPorts bildet ein »Portfile«, welches in jedem Port Verzeichnis zu finden ist. In diesem Portfile werden die speziellen Anforderungen einer Anwendung, dessen Charakteristik und weiter benötigte Dateien oder Sourcen definiert. Weiterhin kann ein Port-Verzeichnis noch ein Verzeichnis ${portpath}/files beinhalten, welches uU notwendige Dateien (zB Patches) lokal bereitstellt, andernfalls werden die notwendigen Dateien (wie das Makefile und der Quelltext) aus dem Internet geladen. Die Crux an der ganzen Sache ist, dass sich das MacPorts System eben genau die notwendigen Informationen und Dateien zusammensucht, egal ob die jetzt im lokalen PortTree oder im globalen PortTree (Internet Repository) zu suchen und zu finden sind.
Der Parameter search ruft die Subroutine mportsearch auf und zeigt alle Ports an, die dem Suchstring entsprechen. Ebenso wird die Beschreibung eines Ports im Portfile nach dem Suchstring durchsucht. Wenn Sie zB einen Sniffer suchen aber nicht wissen welcher angeboten wird, können sie dem search Parameter auch das Argument sniffer angeben:
Suche im Port Tree nach Ports die dem Suchstring entsprechen: Syntax: port search [Suchstring]
$ port search sniffer
angst @0.4b_2 (net)
an active sniffer
ettercap @0.8.3_1 (net, security)
multipurpose sniffer/interceptor/logger for switched LAN
kismet @2011-01-R1_1 (net)
Wireless network detector and sniffer
pads @1.2_1 (net, security)
network sniffer with a rule-based detection engine
pear-PHP_CodeSniffer @1.5.0 (php, net, www)
PEAR PHP_CodeSniffer package
tcpick @0.2.1_1 (net)
a tcp stream sniffer, tracker and capturer
Found 6 ports.
Es werden Ihnen die in den Portfiles mit dem Keyword sniffer getaggted Ports sowie die Ports die den Suchstring im Namen haben angezeigt. Danach die derzeit verfügbare Version, Sie sollten vor der Suche das selfupdate-Kommando ausführen, damit ihr lokaler Port Tree mit dem globalen synchronisiert wird. In Klammern steht die Kategorie bzw. Gruppe in welcher sich der gefundene Port befindet. Interessieren Sie sich dann für einen bestimmten Port, können Sie detailliertere Informationen mit dem Parameter info abrufen:
Zeige Details für ausgewählten Port an: Syntax: port info [Portname]
$ port info ettercap
ettercap @0.8.3_1 (net, security)
Variants: debug, [+]gtk, [+]plugins, universal
Description: Ettercap is a multi-functional packet sniffer/interceptor/logger that works on switched LANs. It allows the active
and passive dissection of numerous protocols, including ciphered ones, such as SSH1, and includes features for
network and host analysis. Four modes are available: IP Based, MAC Address Based, ARP Based, and PublicARP Based.
Homepage: https://ettercap.github.io/ettercap/
Build Dependencies: cmake, pkgconfig
Library Dependencies: openssl, libgeoip, libnet11, libpcap, ncurses, pcre, zlib, gtk3, curl, libtool
Platforms: darwin, freebsd
License: GPL-2+
Maintainers: none
Wenn Sie weitere Informationen zu einem Paket brauchen, können Sie mit dem Parameter gohome die Webseite des ausgewählten Ports im Default Webbrowser öffnen
Öffne die Webseite zum ausgewählten Port im Default Webbrowser: Syntax: port gohome [Portname]
$ port gohome ettercap
Eine weitere wichtige Information sind die Abhängigkeiten eines Pakets, da dadurch uU viele weitere Pakete mitgezogen werden müssen. Wird dem port-Kommando der Parameter deps, gefolgt vom abzufragenden Port übergeben, werden diese Abhängigkeiten angezeigt.
Zeige die Abhängigkeiten für ausgewählten Port an: Syntax: port deps [Portname]
$ port deps ettercap
Full Name: ettercap @0.8.3_1+gtk+plugins
Build Dependencies: cmake, pkgconfig
Library Dependencies: openssl, libgeoip, libnet11, libpcap, ncurses, pcre, zlib, gtk3, curl, libtool
Mit dem port fetch Kommando können bereits vor der eigentlichen Installation die notwendigen Sourcen geladen werden. Die geladen Sourcen werden unter ${sysportpath}/distfiles/${dist_subdir}/ (zB: /opt/local/var/macports/distfiles) abgelegt.
Hole nur die für das Paket notwendigen Sourcen: Syntax: port fetch [Portname]
$ sudo port fetch wget Password: ---> Computing dependencies for wget ---> Fetching wget ---> Attempting to fetch wget-1.12.tar.gz from http://lil.fr.distfiles.macports.org/wget $ $ ls /opt/local/var/macports/distfiles/wget/ wget-1.12.tar.gz
Zum Installieren eines Software Pakets verwenden Sie das port install Kommando. Da die Installation Admin Rechte benötigt, müssen Sie das port-Kommando mit sudo ausführen:
$ sudo port install [Portname]
Um sich die veralteten Ports anzeigen zu lassen, verwenden Sie den Parameter outdated. Aktualisieren Sie zuvor ihren lokalen Porttree:
$ sudo port selfupdate $ port outdated
Um die veralteten Ports zu aktualisieren, verwenden Sie folgenden Befehl:
$ sudo port upgrade outdated
Installierte Ports anzeigen lassen:
$ port installed
Alle verfügbaren Ports anzeigen lassen:
$ port list
— pronto 2019/11/01 23:46