MacPort

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 sowohl für die Shell, X11 wie auch Aqua Anwendungen. 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.

Installation

Zuerst laden wir uns das richtige Paket für unsere OS Version herunter. Hier bei mir ist das Snow Leopard. Voraussetzung für die Installation von MacPort ist die Installation des Xcode Developer Tool Paket, welche auf der Installations DVD in den optionalen Komponenten zu finden ist. Des Weiteren muss an der Firewall das von MacPort für die Synchronisierung verwendete Protokoll RSYNC (TCP 873 outbound) geöffnet sein. Ebenfalls sollte für den vollen Funktionsumfang die X11 Umgebung installiert sein, diese wird zwar nicht von MacPorts selbst benötigt aber MacPort kann Programme laden die X11 benötigen. Der Installer von MacPort führt sie dann durch die Installation.

Server: http://distfiles.macports.org/MacPorts/

Paket: MacPorts-1.8.2-10.6-SnowLeopard.dmg

Abhängigkeiten / Voraussetzungen:

  • Xcode3)
  • X114)
  • Allow Port 873 (TCP outbound)

Mountain Lion

Note: Ab Xcode Version 4.? (Hier 4.5.1 auf frisch installierten Mountain Lion) werden die bei der Installation die Command Line Utilites nicht wie bisher üblich mit installiert. Dem Hören nach sollen auch bei einem Upgrade auf Mountain Lion diese CLI Utilities entfernt werden. In jedem Fall macht sich das durch eine Fehlermeldung bei der Benutzung von »MacPorts« bemerkbar:

Warning: The Command Line Tools for Xcode don't appear to be installed; most ports will likely fail to build.
Warning: See http://guide.macports.org/chunked/installing.xcode.html for more information.

Das Xcode Interface bietet jetzt in seinem Einstellungs-Menü (Preferences) die Möglichkeit diese Tools im Register »Downloads« nach zu installieren:

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).

Pfade

$prefix

Default: /opt/local

$binpath → Definiert den Suchpfad zu den ausführbaren Dateien wie rsync, tar, etc. Wird auch als Suchpfad in die ~/.profile eingetragen. Ist diese nicht vorhanden, wird diese angelegt.

Default: ${prefix}/bin:${prefix}/sbin:/bin:/sbin:/usr/bin:/usr/sbin

$portpath → Pfad zu dem Portfile des ausgewählten Ports.

Default: ${prefix}/var/macports/sources/rsync.macports.org/release/ports/<category>/<portname>/

$filesdir

Default: ${portpath}
Value: files

$filespath → Absoluter Pfad zum Files-Verzeichnis

Default: ${portpath}/${filesdir}

$workpath → Absoluter Pfad zum Work-Verzeichnis. Das Work-Verzeichnis der einzelnen Ports wird durch einen symbolischen Link auf ${portbuildpath}/work erstellt.

Value: ${portbuildpath}/work
Default: ${prefix}/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_ports_net_wget/work

$worksrcpath → Absoluter Pfad zum entpackten Quellcode

Value: ${workpath}/${worksrcdir}

$destroot → Absoluter Pfad zum Destroot

Value: ${workpath}/destroot

$distpath → Speicherpfad der heruntergeladenen Distributionsdateien

Value: ${sysportpath}/distfiles/${dist_subdir}/

Ports

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/release/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.

Handhabung des Port-Kommandos

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 (net)
    an active sniffer

ettercap @0.6.b (net, security)
    multipurpose sniffer/interceptor/logger for switched LAN

ettercap-ng @0.7.3 (net, security)
    multipurpose sniffer/interceptor/logger for switched LAN

kismet @2010-01-R1 (net)
    Wireless network detector and sniffer

tcpick @0.2.1 (net)
    a tcp stream sniffer, tracker and capturer

zope-usersniffer @1.21 (www, zope, python)
    Zope extension that returns remote client info

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.6.b, Revision 2 (net, security)
Variants:             enable_devel, gtk, ssl, 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:             http://ettercap.sourceforge.net/

Platforms:            darwin, freebsd
License:              unknown
Maintainers:          nomaintainer@macports.org

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 wget 

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 wget 
Full Name: wget @1.12
Build Dependencies:   texinfo, perl5, pkgconfig
Library Dependencies: libidn, openssl, gettext

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 2010/04/21 22:00

mac/macport.txt (9026 views) · Zuletzt geändert: 2017/12/06 15:42 von pronto
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0