https://guide.macports.org/#installing.xcode


macport.txt macport.txt macport.txt


https://www.youtube.com/watch?v=NO1vvkL3y5Y



MacPorts는 오픈 소스 소프트웨어를 컴파일, 설치 및 관리하는 데 사용하기 쉬운 시스템입니다. MacPorts는 개념적으로 크게 두 부분으로 나눌 수 있습니다 : 인프라, MacPorts 기반으로 알려진 포트 및 사용 가능한 포트 집합. MacPorts 포트는 응용 프로그램, 특성 및 응용 프로그램을 설치하는 데 필요한 파일이나 특수 지시 사항을 정의하는 Portfile에 포함 된 일련의 사양입니다. 이를 통해 단일 명령을 사용하여 MacPorts에 응용 프로그램과 라이브러리를 자동으로 다운로드, 컴파일 및 설치하도록 지시 할 수 있습니다. 그러나 MacPorts를 사용하여 오픈 소스 소프트웨어를 관리하면 몇 가지 다른 중요한 이점을 얻을 수 있습니다. 예 : MacPorts :


특정 포트에 대해 종속성 이라고하는 필수 지원 소프트웨어를 자동으로 설치합니다.


설치된 포트의 제거 및 업그레이드를 제공합니다.


이식 된 소프트웨어를 운영 체제 및 공급 업체가 제공 한 소프트웨어와 혼용하지 못하게하는 전용 " 샌드 박스 "에 포팅하여 파손되지 않도록합니다.


소스 코드에서 컴파일하지 않고 원격 컴퓨터에 소프트웨어를 빠르게 설치할 수 있도록 이식 된 응용 프로그램의 미리 컴파일 된 바이너리 설치 프로그램을 만들 수 있습니다.


MacPorts는 macOS에서 개발되었지만 휴대용이기 때문에 다른 유닉스 계열 시스템, 특히 Berkeley Software Distribution (BSD)에서 유래 한 시스템에서 작동 할 수 있습니다. 실제로 포트를 설치하는 것은 macOS에서만 작동합니다. MacPorts base는 Linux (그리고 아마도 다른 POSIX 호환 시스템)에서 컴파일 될 수 있습니다.이 시스템은 주로 미러를 설정하고 macOS에 설치하기위한 지원 파일을 생성하는 데 사용됩니다.


다음 표기 규칙은 MacPorts Guide에서 터미널 입력 / 출력, 파일 텍스트 및 기타 특수 텍스트 유형을 구분하는 데 사용됩니다.


터미널 I / O 및 파일 텍스트


 $ Commands to be typed into a terminal window. 

  명령을 터미널 창에 출력합니다. 

  파일 텍스트. 

기타 특수 텍스트 유형.


하이퍼 링크 : 자발적인 연소 .


파일 : /var/log/system.log .


명령 : ifconfig .


옵션 : 포트 install


2 장. MacPorts 설치하기

2.1.

Xcode 설치

2.2.

MacPorts 설치

2.3.

MacPorts 업그레이드

2.4.

제거

2.5.

MacPorts 및 쉘

이 장에서는 MacPorts와 그 전제 조건을 단계적으로 설치하는 방법을 설명합니다. Xcode 설치 에 관한 부분은 macOS에 특화되어 있습니다. 다른 플랫폼에 MacPorts를 설치하려면 먼저 작동하는 C 컴파일러가 설치되어 있는지 확인 하고 소스 에서 MacPorts 를 설치하지 말고이 장의 끝 부분을 계속 진행하십시오.


2.1.

Xcode 설치

2.1.1.

OS X 10.9 이상에 Xcode 설치

2.1.2.

OS X 10.7 Lion 또는 OS X 10.8 Mountain Lion에 Xcode 설치

2.1.3.

Mac OS X 10.6 Snow Leopard에 Xcode 설치하기

2.1.4.

Mac OS X의 이전 버전에 Xcode 설치

Xcode 는 MacOS 용 응용 프로그램을 개발하는 데 필요한 컴파일러, 라이브러리 및 추가 도구가 포함 된 Apple에서 제공하는 패키지입니다.


노트

MacOS 릴리스에 사용할 수있는 최신 Xcode 버전을 항상 설치하십시오. 오래된 버전의 Xcode를 사용하면 포트 설치 오류가 발생할 수 있습니다. 또한 Xcode는 OS 버전 10.6 이전의 OS X의 소프트웨어 업데이트 유틸리티를 통해 업데이트되지 않으며 Mac App Store를 통해 10.7로 업데이트됩니다.


사용중인 MacOS 버전의 지침을 따르십시오.


2.1.1. OS X 10.9 이상에 Xcode 설치

Apple 개발자 웹 사이트에서 최신 버전의 Xcode 를 다운로드하거나 Mac App Store를 사용하여 다운로드하십시오 .


Xcode가 설치되면 터미널을 열고 xcode-select --install 실행하고 설치 버튼을 클릭하여 필요한 명령 행 개발자 도구를 설치하십시오. 현재 소프트웨어 업데이트 서버에서 소프트웨어를 사용할 수 없기 때문에 소프트웨어를 설치할 수 없다는 메시지가 표시 되더라도 걱정하지 마십시오. 이것은 일반적으로 이미 최신 버전이 설치되어 있음을 의미합니다. Apple 개발자 웹 사이트 에서 명령 줄 도구를 얻을 수도 있습니다 .


2.1.2. OS X 10.7 Lion 또는 OS X 10.8 Mountain Lion에 Xcode 설치

Apple 개발자 웹 사이트에서 최신 버전의 Xcode 를 다운로드하거나 Mac App Store를 사용하여 다운로드하십시오 .


2.1.2.1. Xcode 4.3 이상

Xcode 4.3 이상은 명령 행 도구를 자동으로 설치하지 않지만 MacPorts는 명령 행 도구를 필요로합니다. 설치하려면 Xcode 응용 프로그램을 열고 기본 설정 창에서 다운로드 섹션으로 이동 한 다음 명령 행 도구 옆에있는 설치 버튼을 클릭하십시오. 명령 줄 도구가 업그레이드되었는지 확인하려면 모든 Xcode 업그레이드 후에이 창으로 돌아가십시오.


port pkg 인스톨러 패키지를 만들고 싶다면, Xcode 4.3에서 " Xcode 용 보조 도구 " 패키지에있는 PackageMaker도 설치해야합니다. 이 패키지의 다운로드 페이지는 Xcode -> Open Developer Tool -> More Developer Tools ... 메뉴 항목을 통해 열 수 있습니다. 디스크 이미지를 다운로드하고 마운트 한 후, PackageMaker 응용 프로그램을 / Applications 디렉토리로 드래그하십시오.


2.1.3. Mac OS X 10.6 Snow Leopard에 Xcode 설치하기

Mac OS X 10.6을 사용하는 경우 Xcode의 최신 버전 인 3.2.x 및 4.x로 간주 될 수있는 두 개의 분기가 있습니다. Xcode 4는 비용이 들지만 Xcode 3는 무료로 계속 사용할 수 있습니다. 다운로드에는 두 가지 옵션이 있습니다.


Xcode 3.2 - 다운로드는 더 작지 만 설치 후 소프트웨어 업데이트를 실행하여 최신 버전을 구해야합니다. Apple은 어느 시점에서 업데이트 서버를 통해 이러한 업데이트를 제공하지 않을 수 있습니다.


Xcode 3.2.6 및 iOS SDK 4.3 - MacPorts에는 필요하지 않은 iOS SDK가 포함되어 있습니다.


둘 다 Apple 개발자 웹 사이트 에서 구할 수 있습니다. Mac OS X 10.6 DVD에서 Xcode 3.2를 설치 한 다음 소프트웨어 업데이트를 실행하여 최신 버전을 구할 수도 있습니다.


사용중인 Xcode 버전의 설치 프로그램에서 사용할 수있는 다음 옵션 중 선택되어 있는지 확인하십시오.


유닉스 개발


시스템 도구


X11 SDK


명령 행 지원


2.1.4. Mac OS X의 이전 버전에 Xcode 설치

이전 버전의 Mac OS X을 사용하는 경우 Apple 개발자 로부터 Mac OS X 10.5 (Xcode 3.0 및 Xcode 3.1 Developer Tools) 또는 10.4 (Xcode 2.4.1 및 Xcode 2.5 Developer Tools) 용 Xcode 최신 버전을 다운로드 할 수 있습니다 웹 사이트 .


사용중인 Xcode 버전의 설치 프로그램에서 사용할 수있는 다음 옵션 중 선택되어 있는지 확인하십시오.


유닉스 개발


시스템 도구


X11 SDK


명령 행 지원


2.2.

MacPorts 설치

2.2.1.

macOS 패키지 설치

2.2.2.

소스 설치

2.2.3.

힘내 설치

2.2.4.

여러 MacPorts 사본 설치

macOS를 사용하는 경우 /opt/local/ , 기본 MacPorts 위치에 설치하지 않으려는 경우 또는 MacPorts 기반의 시험판 버전을 설치하려는 경우가 아니면 macOS 패키지 설치 프로그램을 사용하여 MacPorts를 설치해야합니다. 그러나 MacPorts를 여러 개 설치하거나 MacPorts를 다른 OS 플랫폼에 설치하려면 소스 코드에서 MacPorts를 설치 해야합니다.


2.2.1. macOS 패키지 설치

macOS 패키지 설치 프로그램은 자동으로 MacPorts를 설치 하고 쉘 환경을 설정 하며 자체 업데이트 작업을 실행하여 포트 트리와 MacPorts 기반을 최신 릴리스로 업데이트합니다.


GitHub 의 최신 MacPorts-2.5.4- .... pkg 설치 프로그램을 다운로드하십시오. 다음은 최신 버전의 macOS에 대한 직접 링크입니다.


macOS 10.14 모하비 :

MacPorts-2.5.4-10.14-Mojave.pkg


macOS 10.13 높은 시에라 :

MacPorts-2.5.4-10.13-HighSierra.pkg


macOS 10.12 시에라 :

MacPorts-2.5.4-10.12-Sierra.pkg


다운로드 한 패키지 설치 프로그램을 두 번 클릭하여 기본 " 쉬운 " 설치를 수행하십시오.


이 단계가 끝나면 MacPorts가 설치되고 쉘 환경은 설치 프로그램에 의해 자동으로 설정됩니다. 설치가 예상대로 작동하는지 확인하려면 새 터미널 창에서 포트 를 사용해보십시오.


  $ port version 

  버전 : 2.5.4 

" 명령을 찾을 수 없음 " 과 같은 문제가있는 경우 새 터미널 창을 열 었는지 확인하거나 2.5 절. "MacPorts 및 셸"을 참조하십시오. 그렇지 않으면이 장의 나머지 부분을 건너 뛰고이 설명서의 3 장, MacPorts 사용을 계속하십시오.


2.2.2. 소스 설치

패키지 설치 프로그램을 사용하여 MacPorts를 설치 한 경우이 절을 건너 뜁니다. 소스 코드에서 MacPorts를 설치하려면 다음 단계를 따르십시오.


MacPorts 2.5.4 tarball을 다운로드하고 추출하십시오. 브라우저와 Finder를 사용하거나 터미널 창에서 주어진 명령을 사용하십시오.


  $ curl -O https://distfiles.macports.org/MacPorts/MacPorts-2.5.4.tar.bz2

 $ tar xf MacPorts-2.5.4.tar.bz2 

그런 다음 터미널 창에 표시된 명령을 수행하십시오. /opt/local 이외의 경로를 사용하려면 대신 MacPorts의 여러 사본 설치 지침을 따르십시오.


  $ cd MacPorts-2.5.4/

 $ ./configure

 $ make

 $ sudo make install 

쉘 환경을 설정하려면 2.5 절. "MacPorts와 쉘" 을 계속하십시오.


2.2.3. 힘내 설치

패키지 설치 프로그램을 사용하여 MacPorts를 설치 한 경우이 절을 건너 뜁니다.


현재 안정 버전보다 새로운 버전에서 MacPorts를 실행하려는 경우가 있습니다. 어쩌면 새로운 기능을 사용하고 싶거나, 발생한 문제를 수정하거나 가장 좋아하는 기능을 원할 수도 있습니다. 이 단계에서는 Git 만 사용하여 MacPorts를 최신 상태로 유지하면서 개발자를 위해 MacPorts를 설정하는 방법을 설명합니다.


MacPorts 기반의 시험판과 릴리스 버전 사이에는 차이점이 있지만 포트 모음은 이러한 구분이나 버전 지정을 지원하지 않습니다. selfupdate 명령은 최신 포트 트리를 설치하고 MacPorts 기반을 최신 릴리스 버전으로 업데이트합니다.


MacPorts 소스를 확인하십시오.


MacPorts 코드의 작업 복사본을 저장할 위치를 지정하십시오. 이 예에서는 /opt/mports 가 사용되지만 소스를 /opt/mports 둘 수 있습니다. 이 예제는 MacPorts에 필요한 모든 것이 들어있는 /opt/mports/macports-base 를 만듭니다.


  $ mkdir -p /opt/mports

 $ cd /opt/mports

 $ git clone https://github.com/macports/macports-base.git

 $ git checkout v2.5.4 # skip this if you want to use the development version 

MacPorts 빌드 및 설치


MacPorts는 autoconf와 makefile을 설치에 사용합니다. 이 명령은 MacPorts를 빌드하고 /opt/local 설치합니다. 필요한 경우 --prefix 를 ./configure 를 추가하여 MacPorts를 다른 디렉토리로 재배치 할 수 있습니다.


  $ cd /opt/mports/macports-base

 $ ./configure --enable-readline

 $ make

 $ sudo make install

 $ make distclean 

(선택 사항) Git의 포트 정보를 사용하도록 MacPorts 구성


이 단계는 포트 개발을 수행하려는 경우 유용합니다. git에서 포트 트리를 확인하십시오.


  $ cd /opt/mports

 $ git clone https://github.com/macports/macports-ports.git 

그런 다음 /opt/local/etc/macports/sources.conf 를 텍스트 편집기에서 엽니 다. 마지막 행은 다음과 같아야합니다.


  rsync : //rsync.macports.org/macports/release/tarballs/ports.tar [기본값] 

체크 아웃 한 작업 사본을 가리 키도록 변경하십시오.


  file : /// opt / mports / macports-ports [기본값] 

이제 MacPorts는 작업 복사본에서 portfiles를 찾고 rsync 대신 Git을 사용하여 포트 트리를 업데이트합니다.


환경


2.5 절. "MacPorts와 쉘" 에 따라 PATH와 다른 환경 옵션을 설정해야합니다.


2.2.4. 여러 MacPorts 사본 설치

때때로 MacPorts 개발자는 동일한 호스트에 둘 이상의 MacPorts 인스턴스를 설치하려고 할 수 있습니다. 하나의 MacPorts 사본에만 기본 접두사 /opt/local 사용할 수 있습니다. 따라서 추가 설치의 경우 아래에 표시된 것처럼 --prefix 옵션을 사용하십시오. 또한 /Applications/MacPorts 충돌을 피하기 위해 --with-applications-dir 을 사용하여 응용 프로그램 디렉토리를 변경하는 것이 좋습니다. --without-startupitems 를 사용하여 새로운 startupitem_install no 를 자동으로 설정합니다. 이는 /Library/LaunchAgents 또는 /Library/LaunchDaemons 충돌을 피하기 위해 필요합니다.


노트

첫 번째 명령은 두 번째 인스턴스를 설치하는 동안 존재하지 않아야하므로 표준 MacPorts 바이너리 경로를 일시적으로 제거합니다.


  $ export PATH=/bin:/sbin:/usr/bin:/usr/sbin

 $ MP_PREFIX=/opt/macports-test

 $ ./configure --prefix=$MP_PREFIX --with-applications-dir=$MP_PREFIX/Applications --without-startupitems

 $ make

 $ sudo make install 

2.3.

MacPorts 업그레이드

MacPorts 기본 업그레이드는 자동 업데이트 작업 중에 자동으로 수행됩니다 (최신 릴리스를 사용할 수있는 경우). 소스에서 최신 버전의 소스 코드로 설치된 MacPorts의 복사본을 업그레이드하려면 소스 버전을 MacPorts 소스 코드의 최신 버전으로 반복하십시오.


2.4.

제거

MacPorts를 제거하는 것은 과감한 단계가 될 수 있으며, 발생한 문제에 따라 그렇게하지 않아도됩니다. 확실하지 않은 경우 macports-users 메일 링리스트에서 먼저 물어보십시오.


MacPorts를 제거하고 포트 가 작동하려면 먼저 터미널에서 다음 명령을 실행하여 설치된 모든 포트를 제거하십시오.


  $ sudo port -fp uninstall installed 

설치 접두어에 남아있는 모든 파일은 이제 어떤 포트에도 등록되지 않은 파일입니다. 여기에는 구성 파일, 데이터베이스, 강제 설치 또는 업그레이드를 허용하기 위해 MacPorts가 이름 변경 한 모든 파일 및 기본 MacPorts 소프트웨어 자체가 포함됩니다. 설정 파일 (대부분 $prefix/etc ), 데이터베이스 또는 다른 고유 한 데이터를 별도로 저장하여 저장할 수 있습니다.


MacPorts의 나머지 모든 흔적을 제거하려면 터미널에서 다음 명령을 실행하십시오. applications_dir 또는 frameworks_dir prefix 기본값에서 변경 한 경우 /opt/local 을 prefix 로 바꾸고 /Applications/MacPorts 를 applications_dir 바꾸거나 frameworks_dir 을 목록에 각각 추가하십시오.


  $ sudo rm -rf \ /opt/local \ /Applications/DarwinPorts \ /Applications/MacPorts \ /Library/LaunchDaemons/org.macports.* \ /Library/Receipts/DarwinPorts*.pkg \ /Library/Receipts/MacPorts*.pkg \ /Library/StartupItems/DarwinPortsStartup \ /Library/Tcl/darwinports1.0 \ /Library/Tcl/macports1.0 \ ~/.macports sudo rm -rf \ /opt/local \ /Applications/DarwinPorts \ /Applications/MacPorts \ /Library/LaunchDaemons/org.macports.* \ /Library/Receipts/DarwinPorts*.pkg \ /Library/Receipts/MacPorts*.pkg \ /Library/StartupItems/DarwinPortsStartup \ /Library/Tcl/darwinports1.0 \ /Library/Tcl/macports1.0 \ ~/.macports 

bash (아마 tcsh) 이외의 쉘을 사용하는 경우 쉘의 구문에 맞게 위의 값을 조정해야 할 수도 있습니다. 또한 어떤 MacPorts 버전과 어떤 포트를 설치했는지에 따라 위의 모든 경로가 시스템에 존재하는 것은 아닙니다. 괜찮습니다.


2.5.

MacPorts 및 쉘

2.5.1.

포스트 플라이트 스크립트

2.5.2.

구성 파일 확인

2.5.3.

선택적 편집기 변수

MacPorts는 셸에서 일부 환경 변수를 설정해야합니다. MacPorts가 macOS 패키지 설치 프로그램을 사용하여 설치되면 설치 후 " postflight " 스크립트가 실행되어 홈 디렉토리의 쉘 구성 파일을 자동으로 추가하거나 수정하여 다음 절에서 설명하는 규칙에 따라 변수를 정의합니다. 소스 코드에서 MacPorts를 설치 하는 사람들은 규칙을 지침으로 사용하여 수동으로 환경을 수정해야합니다.


쉘 및 구성 파일이 있는지 여부에 따라 설치 프로그램에서 .profile , .bash_login , .bash_profile , .tcshrc 또는 .cshrc 사용할 수 있습니다.


2.5.1. 포스트 플라이트 스크립트

postflight 스크립트는 PATH 변수와 선택적으로 MANPATH 및 DISPLAY 변수를 아래에 설명 된 규칙에 따라 자동으로 설정합니다. 설치시 현재 쉘 구성 파일이 있으면 " mpsaved_ $ timestamp " 로 이름이 바뀝니다. 소스 코드에서 MacPorts를 설치 하는 사람들은 규칙을 지침으로 사용하여 수동으로 환경을 수정해야합니다.


필수 : PATH 변수


이 변수는 postflight 스크립트에 의해 설정되어 MacPorts 실행 경로를 그림과 같이 현재 경로 앞에 추가합니다. MacPorts 바이너리가 공급 업체가 제공하는 바이너리보다 우선 적용되도록 MacPorts 경로를 PATH 앞에 둡니다.


  export PATH = / opt / local / bin : / opt / local / sbin : $ PATH 

노트

$ PATH는 포트가 설치되기 전에 제거되고 나중에 복원되기 때문에 포트가 설치되는 동안 사용자 환경의 $ PATH는 유효하지 않습니다. 포트 설치 중 시스템 실행 파일 (rsync, tar 등)을 찾기위한 검색 경로를 변경하려면 macports.conf 파일 변수 binpath 참조하십시오. 그러나이 변수를 변경하는 것은 고급 사용자 용이며 일반적으로 필요하거나 권장되지 않습니다.


선택 사항 : MANPATH 변수


조건 : MacPorts 설치 이전에 값 ${prefix}/share/man, 이나 콜론으로 구분 된 빈 항목이없는 현재 .profile 에 MANPATH 변수가있는 경우 postflight 스크립트는 아래 표시된 것처럼 MANPATH 변수를 설정합니다. 그렇지 않으면 MANPATH 변수가 생략됩니다.


  export MANPATH = / opt / local / share / man : $ MANPATH 

선택 사항 : DISPLAY 변수


조건 : 10.5 이전의 Mac OS X 버전 (Leopard)에서 설치하는 경우, 그리고 DISPLAY 변수없이 MacPorts를 설치할 때 쉘 구성 파일이 존재하면 postflight 스크립트는 아래와 같이 DISPLAY 변수를 설정합니다. DISPLAY 변수는 Mac OS X 10.5 이상에서는 항상 생략됩니다.


  수출 DISPLAY = : 0.0 

2.5.2. 구성 파일 확인

MacPorts 변수가 들어있는 파일이 유효한지 확인하려면 터미널에 env 를 입력하여 파일을 만든 후 현재 환경 설정을 확인하십시오. env의 예제 출력은 아래와 같습니다.


노트

쉘 구성 파일에 대한 변경 사항은 새 터 L 널 세션이 열릴 때까지 적용되지 않습니다.


  MANPATH =

 TERM_PROGRAM = Apple_Terminal

 TERM = xterm-color

 쉘 = / bin / bash

 TERM_PROGRAM_VERSION = 237

 사용자 = joebob

 __CF_USER_TEXT_ENCODING = 0x1FC : 0 : 0

 PATH = / opt / local / bin : / opt / local / sbin : / bin : / sbin : / usr / bin : / usr / sbin

 PWD = / 사용자 / joebob

 EDITOR = / usr / bin / pico

 SHLVL = 1

 HOME = / 사용자 / joebob

 LOGNAME = joebob

 DISPLAY = : 0.0

 SECURITYSESSIONID = b0cea0

 _ = / usr / bin / env 

2.5.3. 선택적 편집기 변수

포트 편집 명령으로 선호하는 텍스트 편집기를 사용하기 위해 환경 변수를 설정할 수 있습니다.


MacPorts는 MP_EDITOR , VISUAL 및 EDITOR 를이 순서로 검사하여 다른 프로그램 ( VISUAL 및 EDITOR ) 또는 MacPorts 전용 EDITOR ( MP_EDITOR )와 공유되는 기본 편집기를 사용할 수있게합니다.


예를 들어 nano 편집기를 사용하려면 다음 행을 bash config에 추가하십시오.


  내보내기 EDITOR = / usr / bin / nano 

사용자에게 친숙한 GUI 편집기 BBEdit (설치 필요)를 사용하려면 다음 행을 추가하십시오.


  내보내기 EDITOR = / 응용 프로그램 / BBEdit.app / Contents / Helpers / bbedit_tool 

포트 파일과 함께 BBEdit을 사용하는 동안 명령 줄 텍스트 편집기를 기본값으로 유지하려면 다음을 추가하십시오.


  내보내기 EDITOR = / usr / bin / vi

 export MP_EDITOR = / 응용 프로그램 / BBEdit.app / Contents / Helpers / bbedit_tool 

3 장. MacPorts 사용하기

3.1.

포트 명령

3.2.

항만 변형

3.3.

일반적인 작업

3.4.

포트 바이너리

이 장에서는 포트 , 포트 변형, 일반 작업 및 포트 바이너리 사용에 대해 설명합니다.


3.1.

포트 명령

3.1.1.

항구 도움말

3.1.2.

항구 자체 갱신

3.1.3.

포트 동기화

3.1.4.

포트를 진단하다

3.1.5.

항구 개심

3.1.6.

포트 목록

3.1.7.

항구 수색

3.1.8.

항구 정보

3.1.9.

항구 항로

3.1.10.

포트 변형

3.1.11.

포트 설치

3.1.12.

항구 청소

3.1.13.

포트 제거

3.1.14.

항구 내용

3.1.15.

설치된 포트

3.1.16.

오래된 포트

3.1.17.

포트 업그레이드

3.1.18.

항구 부양 가족

3.1.19.

포트 라이브 체크

3.1.20.

포트 린트

포트 는 MacPorts와 상호 작용하는 데 사용되는 주요 유틸리티입니다. Portfile 및 MacPorts 인프라를 업데이트하고 포트를 설치 및 관리하는 데 사용됩니다.


3.1.1. 항구 도움말

help 조치는 지정된 조치에 대한 간략한 정보를 표시하거나 조치가 지정되지 않은 경우 일반적으로 포트의 기본 사용 정보를 표시합니다.


  $ port help selfupdate 

 사용법 : selfupdate --no-sync


 MacPorts 자체를 업그레이드하고 동기화 대상을 실행하십시오.


 --no-sync 동기화 대상을 실행하지 마십시오. 즉, 포트 트리를 업데이트하지 마십시오.

            새 버전의 (및 설치 가능한 경우) 검사 만 수행합니다.

            MacPorts. 

3.1.2. 항구 자체 갱신

selfupdate 업데이트 작업을 정기적으로 사용하여 로컬 포트 ​​트리를 전역 MacPorts 포트 리포지토리로 업데이트해야 최신 버전의 소프트웨어 패키지를 사용할 수 있습니다. 또한 MacPorts 자체의 새 릴리스를 확인하고 필요할 때 업그레이드합니다.


  $ sudo port selfupdate 

 ---> rsync를 사용하여 MacPorts 기본 소스 업데이트

 MacPorts 기본 버전 2.5.4 설치,

 MacPorts 기본 버전 2.5.4 다운로드.

 ---> 포트 트리 업데이트

 ---> MacPorts 기반은 이미 최신 버전입니다. 

selfupdate 가 최신 버전의 MacPorts를 사용할 수 있음을 감지하면 설치된 MacPorts 기본 복사본을 최신 릴리스 버전으로 자동 업데이트합니다. 이 경우 다음 메시지가 표시됩니다.


 ---> rsync를 사용하여 MacPorts 기본 소스 업데이트

 MacPorts 기본 버전 2.5.3 설치,

 MacPorts 기본 버전 2.5.4 다운로드.

 ---> 포트 트리 업데이트

 ---> MacPorts 기반이 구형이며 새로운 버전 2.5.4를 설치합니다.

 새 MacPorts를 / opt / local에 root로 설치합니다 : admin;  권한 755 

selfupdate 절차가 실패하면 다음과 같은 메시지가 표시됩니다.


  새로운 MacPorts 설치 오류 : 명령 실행에 실패했습니다. 

항상 그렇듯이 디버그 플래그 -d 를 사용하여 자세한 출력을 활성화 할 수 있습니다. selfupdate 실패한 경우 디버그 출력을 사용하도록 다시 실행하여 빌드 시스템에서 생성 된 모든 출력을 확인합니다.


  $ sudo port -d selfupdate 

결과물은 빌드가 실패한 이유를 알려줍니다. " 오류 " 의 첫 번째 발생을 찾습니다. 무엇이 잘못되었는지 알아낼 수 없다면 < macports-users@lists.macports.org > 메일 링리스트에서 물어보고 sudo port -d selfupdate가 생성 한 출력을 첨부하십시오.


selfupdate 는 단일 스위치를 허용합니다.


--no-sync

MacPorts 자체 만 업데이트하고 Portfile 트리를 업데이트하지 마십시오.


3.1.3. 포트 동기화

sync 작업은 selfupdate 의 하위 집합을 수행합니다. selfupdate 와 마찬가지로 포트 트리를 동기화하지만 MacPorts 업그레이드는 확인하지 않습니다. macOS에서 그렇게하지 않는 특별한 이유가 없으면 selfupdate를 대신 실행 하십시오 .


sync 는 어떤 스위치도 허용하지 않습니다.


3.1.4. 포트를 진단하다

diagnose 조치는 사용자 환경의 공통 문제점을 검사하고 발견 된 모든 문제점을 해당 문제점에 대한 가능한 수정 사항과 함께보고합니다.


diagnose 은 단일 스위치를 허용합니다.


--quiet

실행 된 모든 테스트의 상태가 아닌 경고 및 오류 만 표시합니다.


3.1.5. 항구 개심

reclaim 작업은 비활성 포트를 제거하고 설치 프로세스 중에 다운로드 된 불필요한 파일을 제거하여 공간을 되 찾으려고합니다.


reclaim 은 자동 알림을 구성하기 reclaim 스위치를 수락합니다. 전달 된 경우 재생 프로세스가 실행되지 않습니다.


--enable-reminders

정기적 리마인더를 사용하여 포트 재 확보 를 실행하십시오.


--disable-reminders

포트 리 클레임 을 실행하기위한 정기 미리 알림을 비활성화하십시오.


3.1.6. 포트 목록

list 조치는 지정된 포트의 현재 사용 가능한 버전을 나열하거나 지정된 포트가없는 경우 사용 가능한 모든 포트 목록을 표시합니다. 사용 가능한 포트 목록은 매우 길기 때문에 특정 포트를 찾고있는 경우 검색을 사용하십시오.


  $ port list 

노트

포트 목록은 항상 MacPorts에서 사용할 수있는 최신 버전을 나열합니다. MacPorts는 반드시 설치 한 버전 일 필요는 없습니다. 이러한 이유로 포트 목록을 설치 하면 예상치 못한 결과가 발생할 수 있습니다. 대부분의 경우 list 작성할 곳에서 installed 또는 echo 를 사용하는 것이 더 나은 선택입니다. 포트가 설치되어 있고 포트 에코가 설치되어 있으면 명령에서 기대할 수있는 출력이 생성되고 포트 목록은 설치 되지 않습니다. (더 나쁜 경우에는 느려질 수 있습니다).


MacPorts를 사용하려면 포트 목록 이 거의 필요 없습니다. 검색 할 때 포트 검색 이 더 나은 선택이며 포트를 나열하려고하면 설치된 포트 와 포트 에코 가 훨씬 유용합니다.


3.1.7. 항구 수색

search 작업을 통해 이름 또는 설명의 부분 일치로 포트를 찾을 수 있습니다. 다른 필드는 옵션을 사용하여 다른 방법으로 일치하거나 일치시킬 수 있습니다. 포트 검색 은 MacPorts에서 특정 소프트웨어를 찾는 경우에 선택 도구입니다. 포트 검색시 효율을 높이기 위해 플래그를 읽는 것이 좋습니다. 스위치 도움말을 실행하여 가능한 스위치 목록을 검색 하십시오.


MacPorts에서 PHP를 찾고 있다고 가정 해보십시오. 포트 검색 PHP로 시작하여 쿼리가 많은 출력을 생성한다는 것을 알 수 있습니다. 사실,이 글을 쓰는 시점에이 검색은 661 개의 일치 항목을 생성합니다. 기본적으로 포트 검색 은 포트의 이름과 설명을 모두 검색합니다. PHP를 찾고있는 동안 --name 플래그를 사용하여 히트 수를 줄일 수 있습니다. 게다가 이름이 " php "로 시작하는 --glob 필요하기 때문에 --glob 플래그를 추가합니다 (실제로는 기본값이기 때문에 생략 할 수 있습니다). 그리고 검색 용어를 php* 수정하십시오 :


  $ port search --name --glob 'php*' 

또한, 라인 스위치를 사용하여 컴팩트 한 출력을 가능하게 할 수 있습니다. 이렇게하면 각 일치에 대해 한 줄만 인쇄됩니다.


  $ port search --name --line --glob 'php*' 

다수의 PHP 모듈 중에서 php <version> 이라는 메인 PHP 포트를 찾을 수 있습니다. 설치할 제품을 하나 선택하십시오.


regex를 알고 PHP 버전의 형식을 알고 있다면 포트 검색 결과를 더 줄일 수 있습니다.


  $ port search --name --line --regex '^php\d*$' 

  php 5.5 lang www PHP : 하이퍼 텍스트 전 처리기

 php4 4.4.9 PHP PHP : 하이퍼 텍스트 전 처리기

 php5 5.3.28 PHP PHP : 하이퍼 텍스트 전 처리기

 php52 5.2.17 PHP PHP : 하이퍼 텍스트 전 처리기

 php53 5.3.28 PHP PHP : 하이퍼 텍스트 전 처리기

 php54 5.4.31 lang www PHP : 하이퍼 텍스트 전 처리기

 php55 5.5.15 PHP PHP : 하이퍼 텍스트 전 처리기

 php56 5.6.0RC2 PHP PHP : 하이퍼 텍스트 전 처리기 

덜 복잡한 다른 예를 살펴 보겠습니다. 시계열 데이터를 저장하고 그래프로 표시하는 인기 시스템 인 rrdtool 찾고 있다고 가정하면 간단한 검색 방법이 효과적입니다.


  $ port search rrd 

 선인장 @ 0.88b (순)

     Cacti는 완벽한 RRDtool 네트워크 그래프 솔루션입니다.


 jrrd @ 1.0.4 (java)

     RRDTool에 대한 Java 인터페이스


 netmrg @ 0.20 (순)

     일 / 주 / 월을 생성하는 네트워크 모니터링,보고 및 그래프 작성을위한 RRDtool 프론트 엔드

     MRTG 스타일의 그래프.


 network-weathermap @ 0.97c (그물)

     Weathermap은 네트워크 시각화 도구로서 이미 가지고있는 그래프를 가져 와서

     지도로 네트워크 개요.  RRD, MRTG (RRD 및 이전 로그 형식) 및

     탭으로 구분 된 텍스트 파일.  다른 소스는 플러그인 또는 외부 스크립트를 통해 이루어집니다.


 php-rrd @ 1.1.3 (php, net, devel)

     PHP rrdtool 확장 기능


 php5-rrd @ 1.1.3 (php, net, devel)

     PHP rrdtool 확장 기능


 php5-rrdtool @ 1.0.5 (php, net, devel)

     이 포트는 스텁 일 뿐이므로 php5-rrd에 의해 폐기되었습니다


 php53-rrd @ 1.1.3 (php, net, devel)

     PHP rrdtool 확장 기능


 php54-rrd @ 1.1.3 (php, net, devel)

     PHP rrdtool 확장 기능


 php55-rrd @ 1.1.3 (php, net, devel)

     PHP rrdtool 확장 기능


 rrdtool @ 1.4.7_5 (net)

     라운드 로빈 데이터베이스


 11 개의 포트를 찾았습니다. 

search 전환 및 그 의미는 다음과 같습니다.


--case-sensitive

대 / 소문자를 구분하여 검색 문자열을 일치시킵니다.


--exact

리터럴 검색 문자열을 정확히 일치시킵니다.


--glob

주어진 검색 문자열을 glob 검색 문자열 (즉, 와일드 카드 * [chars] 및 [chars] )로 처리합니다. 이는 기본 동작입니다.


--regex

지정된 검색 문자열을 정규 표현식으로 처리합니다.


--field

<field> 에 대해 검색 문자열을 테스트하십시오. 여러 필드에 대해 테스트하기 위해 여러 번 지정할 수 있습니다. 기본값은 --name --description 입니다. <field> 가능한 값은 다음과 같습니다.


--category , --categories

주어진 카테고리의 포트를 검색하십시오.


--depends , --depends_build , --depends_extract , --depends_fetch , --depends_lib , --depends_run

검색 문자열로 주어진 포트에 의존하는 포트를 검색하십시오. --depends 는 다른 모든 --depends_ 옵션을 결합한 별명입니다. 기본 변형에 지정된 종속성 만 발견된다는 점에 유의하십시오.


--description , --long_description

포트의 설명에 대해 검색 문자열을 테스트하십시오.


--homepage

모든 포트의 홈페이지 필드에 대해 검색 문자열을 테스트하십시오.


--maintainer , --maintainers

특정 관리자가 유지 관리하는 포트를 검색합니다.


--name

포트의 이름 만 검색하십시오.


--portdir

포트가 들어있는 디렉토리의 경로에 대해 검색 문자열을 테스트하십시오.


--variant , - --variants

변형 이름을 검색하십시오.


3.1.8. 항구 정보

info 액션은 포트에 대한 정보를 얻기 위해 이름, 버전, 설명, 변형, 홈페이지, 의존성, 라이센스 및 관리자를 사용합니다.


  $ port info yubico-pam 

 yubico-pam @ 2.16 (보안)

 변형 : 범용


 설명 : Yubico PAM 모듈을 사용하면 YubiKey를 자신의 컴퓨터에 쉽게 통합 할 수 있습니다.

                       기존 사용자 인증 인프라  모듈은 다음과 같이 구성 될 수 있습니다.

                       유비코의 유비 클라우드 인프라 스트럭처, 유비 키 사용자 정의에 대한 유비 키의 유효성 확인

                       유효성 검사 서버 또는 오프라인 인증에 사용할 수 있습니다.

                       유비 키는 챌린지 - 응답 프로토콜을 지원합니다.

 홈페이지 : https://github.com/Yubico/yubico-pam


 빌드 종속성 : pkgconfig, autoconf, automake, libtool

 라이브러리 종속성 : ykpers, yubico-c-client

 플랫폼 : darwin

 라이센스 : BSD

 유지 관리자 : cal@macports.org 

3.1.9. 항구 항로

deps 조치는 포트의 종속성을 나열합니다. 종속성은 패키지가 런타임에 포트 (라이브러리 및 런타임 종속성)에 필요하거나이를 설치 (종속성 빌드, 페치 및 추출)해야하는 패키지입니다.


  $ port deps apache2 

  성명 : apache2 @ 2.2.27_0 + preforkmpm

 라이브러리 종속성 : apr, apr-util, expat, openssl, pcre, perl5, zlib 

종속성 목록은 선택한 변형에 따라 달라질 수 있습니다. 예를 들어, apache2 의 +openldap 변형을 선택하면 +openldap 대한 종속성이 추가됩니다.


  $ port deps apache2 +openldap 

  성명 : apache2 @ 2.2.27_0 + openldap + preforkmpm

 라이브러리 종속성 : apr, apr-util, expat, openssl, pcre, perl5, zlib, openldap 

deps 는 두 개의 스위치를 허용합니다.


--index

종속성을 판별하기 위해 Portfile 을 읽지 마십시오. 대신 포트 인덱스에 캐시 된 정보를 사용하십시오. 이 옵션을 지정 했음에도 불구하고이 옵션은 변형의 영향을 무시합니다. 그러나 그것은 훨씬 더 빠릅니다.


--no-build

빌드시에만 필요한 종속성을 제외합니다. 즉, 종속성을 가져오고, 추출하고, 빌드합니다.


3.1.10. 포트 변형

variants 동작을 사용하면 포트를 설치하기 전에 사용할 수있는 변형을 확인할 수 있습니다. 변형은 포트 작성자가 설치시 빌드를 사용자 정의하는 데 사용할 수있는 옵션을 제공하는 방법입니다. 변종 이있는 포트를 설치하려면 아래의 포트 변형 호출을 참조하십시오.


  $ port variants apache2 +universal 

 apache2에는 다음과 같은 변형이 있습니다.

    eventmpm : 이벤트 MPM 사용 (실험)

      * preforkmpm workermpm과 충돌합니다.

    openldap : OpenLDAP를 통한 LDAP 지원 활성화

 [+] preforkmpm : prefork MPM 사용

      * eventmpm workermpm과 충돌합니다.

   + universal : 다중 아키텍처를위한 빌드

    workermpm : 작업자 MPM 사용

      * eventmpm preforkmpm과 충돌합니다. 

이 출력에는 모든 변형과 그 설명이 나열됩니다. 변형이 다른 변형과 종속되거나 충돌하는 경우 그 다음에 자세하게 설명하는 선이 표시됩니다. + 접두어가 붙은 변형 이름은 명령 줄에서 접미사가 활성화되었음을 나타내고 접두사는 비활성화되었음을 나타냅니다. 대괄호로 묶을 때 접두사 + 는 변형이 기본적으로 사용 가능하다는 것을 의미합니다. 모든 [] 는 Portfile 에서 파생됩니다. while () 은 variants.conf 에서 파생됩니다. variants.conf에 대한 더 자세한 정보는 6.2.3 절. "variants.conf" 를보십시오.


3.1.11. 포트 설치

조치 install 는 포트를 설치하는 데 사용됩니다. 포트 검색을 사용하여 원하는 포트의 이름을 결정했으면이 명령을 사용하여 설치할 수 있습니다. 새 포트를 설치할 때 변형을 선택하는 방법 은 3.2.1 절. "변형 호출"을 참조하십시오. 예를 들어,


  $ sudo port install apache2 -preforkmpm +workermpm 

preforkmpm 없이 apache2 포트를 설치하지만 workermpm 변형을 사용합니다.


포트 설치가 실패하면 포트에 -v 또는 -d 플래그를 지정하여 자세한 출력 또는 디버그 출력을 활성화 할 수 있습니다.


  $ sudo port -v install apache2 

모든 디버그 정보는 설치 한 포트의 main.log 에도 보관됩니다. 설치가 실패하면 경로가 자동으로 인쇄됩니다. port logfile portname을 사용하여 수동으로 경로를 얻을 수 있습니다. 설치가 완료되면 로그 파일이 자동으로 삭제됩니다.


포트 설치가 실패한 경우 항상 정리하고 다시 시도해야합니다 (예 : 실행).


  $ sudo port clean portname 

이전에 실행 한 명령을 다시 실행하십시오.


추적 모드를 활성화하여 다른 포트 또는 공통 시스템 위치 (예 : /usr/local 에 의해 설치된 파일로 인한 충돌을 방지 할 수도 있습니다. 이를 수행하려면 -t 플래그로 설치를 다시 실행하십시오. 즉,


  $ sudo port -t install portname 

이 단계를 수행 한 후에도 포트가 여전히 설치되지 않으면 티켓 을 main.log 하고 main.log 에 깨끗한 시도를 첨부하십시오.


노트

단일 포트의 설치는 여러 단계로 구성됩니다. 이러한 단계는 가져 오기, 추출, 패치, 구성, 빌드, 제거, 아카이브 및 마지막으로 설치됩니다. 설치가 아닌 작업으로 이러한 단계 중 하나의 이름을 사용하여 문제 해결을위한 포트 설치를 더 작은 단계로 나눌 수 있습니다. 예를 들어


  $ sudo port destroot apache2 

destroot 단계까지 apache2 의 설치를 실행합니다. 전체 단계 목록 및 자세한 설명 은 5.3 절. "포트 단계" 를 참조하십시오.


install 은 다음 스위치를 사용합니다.


--no-rev-upgrade

기본적으로 rev-upgrade 라는 바이너리 온 전성 검사는 성공적으로 설치 될 때마다 자동으로 실행됩니다. 이 단계를 실행하지 않으려면이 플래그를 전달하십시오. 예를 들어 sudo port rev-upgrade를 사용하여 여러 설치를 한 후에 명시 적으로 실행하려는 경우 또는 문제를 감지하지만 처리 지연을 원할 경우 .


--unrequested

기본적으로 설치를 사용하여 명시 적으로 설치 한 각 포트 (다른 ​​포트의 종속성으로 설치된 포트와 달리)는 " 요청 됨 "으로 표시됩니다. MacPorts가 수동으로 설치 한 포트를 종속물로 자동 설치 한 것처럼 처리하도록하려면 (예 : 종속성을 빌드하지 못하고 종속성 설치를 다시 시도한 경우)이 플래그를 전달하십시오.


3.1.12. 항구 청소

MacPorts가 포트를 설치하는 동안 생성 된 중간 파일을 삭제합니다.포트 청소는 실패 구축하고 실패한 설치 시도 후 시도하는 첫 번째 일은해야 할 때 종종 필요하다.


 $ sudo port clean portname 

포트 정리 는플래그fetch를 지정하여실패한단계후에 손상된 다운로드를 제거하는 데 사용할 수도 있습니다--dist.


 $ sudo port clean --dist portname 

주어진 포트에 대해 다운로드 된 모든 파일을 삭제합니다.


clean 다음 옵션을 허용합니다.


--archive

임시 아카이브를 제거하십시오.


--dist

다운로드 한 파일을 제거하십시오.


--logs

로그 파일을 제거하십시오.


--work

work디렉토리, 즉 소프트웨어를 빌드하기 위해 MacPorts에서 사용 하는 디렉토리를 제거하십시오 . 이렇게하면 시도한 빌드의 모든 흔적이 제거되고 기본 작업입니다.


--all

위의 모든 항목이 결합되었습니다.


3.1.13. 포트 제거

uninstall조치가 설치된 포트를 제거합니다. MacPorts에서 자주 사용하는 작업 중 하나입니다.


 $ sudo port uninstall portname 

MacPorts는 다른 포트가 필요로하는 포트를 제거하지 않습니다. 예 :


 $ sudo port uninstall libcomerr 

---> libcomerr @ 1.42.9_0을 제거 할 수 없으면 다음 포트가 종속됩니다.

---> kerberos5 @ 1.11.3_0

---> Subversion @ 1.8.9_0

---> Subversion-Perlbindings-5.16 @ 1.8.9_0

오류 : 포트 제거 실패 : 먼저 libcomerr에 의존하는 포트를 제거하십시오. 

이 문제를 해결하기 위해 포트 자체를 제거하기 전에 주어진 포트에 의존하는 모든 포트를 반복적으로 제거 할 수 있습니다. 그렇게하려면 --follow-dependents플래그를 사용하십시오 .


 $ sudo port uninstall --follow-dependents libcomerr 

-f(force) 플래그를 사용하여이 안전성 검사를 무시할 수도 있습니다 . 이것은 분명히 부양 가족을 부셔 버릴 것이기 때문에 자신이하는 일을 알지 못한다면 그렇게하지 말아야합니다.


 $ sudo port -f uninstall libcomerr 

포트를 제거해도 제거 된 포트의 종속성으로 자동 설치 된 포트는 제거되지 않으며 사용되지 않습니다. --follow-dependencies플래그 를 전달하여이 동작을 트리거 할 수 있습니다 . 수동으로 설치된 포트 (즉, " 요청 됨 "으로 표시됨) 또는 다른 종속 포트가있는 포트는 제거되지 않습니다. leaves의사 포트를 사용하여 나중에 불필요한 포트를 수동으로 제거 할 수 있습니다 ( 예 : sudo port uninstall leaves 사용) .


uninstall 다음 스위치를 지원합니다.


--follow-dependents

포트 자체를 제거하기 전에 지정된 포트에 종속 된 포트를 재귀 적으로 제거하십시오. 위의 텍스트 설명을 참조하십시오.


--follow-dependencies

또한 제거 된 포트의 종속성으로 자동 설치되어 더 이상 필요없는 포트를 제거하십시오.


--no-exec

캐시 파일을 업데이트하는 명령과 같은 제거 훅은 실행하지 마십시오.


3.1.14. 항구 내용

contents조치는 특정 포트에 의해 설치된 모든 파일의 목록을 표시합니다. contents설치 한 포트 에만 사용할 수 있습니다 .


 $ port contents xorg-renderproto 

xorg-renderproto 포트에는 다음 항목이 포함됩니다.

  /opt/local/include/X11/extensions/render.h

  /opt/local/include/X11/extensions/renderproto.h

  /opt/local/lib/pkgconfig/renderproto.pc

  /opt/local/share/doc/renderproto/renderproto.txt 

일반적인 용도는 contents설치 후 포트 실행 파일의 위치를 ​​찾는 것입니다. 이 경우 일반적으로 다음 줄이 유용합니다.


 $ port -q contents portname | grep -E '/s?bin/' 

이 경우 -q(quiet) 플래그는 헤더 행을 표시하지 않지만 반드시 필요하지는 않습니다.


contents 수락 :


--size

인간이 읽을 수있는 파일 크기를 인쇄합니다.


--units UNIT

와 함께 사용 --size하여 파일 크기의 단위를 선택합니다. 에 대한 유효한 매개 변수는 다음 UNIT과 같습니다.


B

목록 크기 (바이트).


K, Ki또는KiB

리스트 크기는 KiB1024 바이트입니다.


Mi , 또는 MiB

리스트 크기는 MiB1024 * 1024 바이트입니다.


Gi , 또는 GiB

리스트 크기는 GiB1024 * 1024 * 1024 바이트입니다.


k , 또는 kB

리스트 크기는 kB1000 바이트입니다.


M , 또는 MB

리스트 크기는 MB1000 * 1000 바이트입니다.


G , 또는 GB

목록 크기는 GB1000 * 1000 * 1000 바이트입니다.


3.1.15. 설치된 포트

installed조치는 지정된 포트의 설치 버전과 변종을 표시, 또는 어떤 포트가 지정되지 않은 경우, 모든 포트를 설치했습니다. 또한 포트가 " 활성 " (즉,이 포트에 속한 파일이 현재 디스크에 있는지 또는 비활성 상태인지, 즉 압축 된 tarball에 숨겨져 있는지 여부)를 표시합니다 .


 $ port installed 

현재 다음 포트가 설치되어 있습니다.

  a52dec @ 0.7.4_0 (활성)

  adns @ 1.4_0 (활성)

  apache2 @ 2.2.27_0 + preforkmpm (활성)

  apr @ 1.5.1_0 (활성)

  apr-util @ 1.5.3_0 (활성)

  아쿠아 텀 @ 1.1.1_0 (활성)

  asciidoc @ 8.6.9_1 + python27 (활성)

   ...

  XviD @ 1.3.3_0 (활성)

  xz @ 5.0.5_0 (활성)

  yasm @ 1.2.0_0 (활성)

  ykpers @ 1.12.0_0 (활성)

  youtube-dl @ 2014.07.25.1_0 + python27 (활성)

  yubico-c-client @ 2.12_0 (활성)

  yubico-pam @ 2.16_0 (활성)

  zlib @ 1.2.8_0 (활성) 

-v포트가 구축 된 플랫폼 및 CPU 아키텍처와 명시 적으로 무효화 된 변형을 표시하는데도 사용하십시오 .


 $ port -v installed libsdl 

현재 다음 포트가 설치되어 있습니다.

  libsdl @ 1.2.15_3-x11 (활성) 플랫폼 = 'darwin 13'archs = 'x86_64' 

3.1.16. 오래된 포트

outdated조치는 당신이 그 (것)들을 설치 이후가 업데이트되었습니다 볼 수있는 현재 포트 트리에 설치된 포트를 확인합니다. selfupdate(또는 sync)를 사용하여 포트 트리를 업데이트하면 새 버전 만 제공됩니다 .


 $ port outdated 

다음 설치된 포트는 구식입니다.

gnupg 1.4.16_0 <1.4.18_0

gnupg2 2.0.22_2 <2.0.25_0

gpg-agent 2.0.22_1 <2.0.25_0

gpgme 1.5.0_0 <1.5.1_0

HexFiend 2.1.2_1 <2.3.0_0

libksba 1.0.8_0 <1.3.0_0

p5.16-class-methodmaker 2.180.0_1 <2.210.0_0

p5.16-gnupg-interface 0.330.0_3 <0.500.0_1

p5.16-ipc-run 0.910.0_1 <0.920.0_0 

구식 포트는 업그레이드가 가능한 포트를 나열하고 두 번째 열에서는 포트가 업그레이드가 필요한 이유를 MacPorts가 생각하는 이유를 설명합니다. 대부분의 경우 버전 번호가 증가합니다. 그렇지 않은 경우 자세한 내용이 제공됩니다.


3.1.17. 포트 업그레이드

upgrade액션 업그레이드 포트와 MacPorts를에서 사용할 수있는 최신 버전으로 종속를 설치했습니다. 대부분의 경우,


 $ sudo port upgrade outdated 

업그레이드가 가능한 모든 포트를 업데이트합니다. 그러나 나중에 업그레이드 할 때까지 다른 업그레이드를 지연 시키려면 선택적으로 포트를 업그레이드 할 수 있습니다. 아직 업그레이드되지 않은 포트에 대한 소프트웨어 오류가 발생할 수 있으므로 수행중인 작업을 알지 못하는 경우에는 권장되지 않습니다. 개별 포트를 업그레이드하려면 업그레이드 할 포트의 이름을 지정하십시오.


 $ sudo port upgrade gnupg2 

MacPorts는 업데이트를 요청한 포트를 업그레이드하기 전에 다른 종속 포트를 업그레이드하기로 결정할 수 있습니다. 나중에 문제가 발생할 가능성이 높으므로이를 막으려 고 시도하지 마십시오.


노트

upgrade이전 버전의 포트를 제거하지 않습니다. 대신, 그것은 비활성화합니다. 즉, 이전 버전에 속한 파일을 tarball에서 숨 깁니다. 업데이트 된 버전에 문제가 발생하면 이전 버전으로 돌아갈 수 있습니다. 그렇게하려면 다음을 실행하십시오.


 $ port installed portname 

재 활성화하려는 이전 버전의 버전 번호를 확인하고


 $ sudo port activate portname @ old-version 

이전 버전으로 돌아 가기.


업그레이드하는 동안 이전 버전을 유지하지 않으려는 -u경우 업그레이드 할 때 다음과 같이 전달할 수 있습니다 .


 $ sudo port -u upgrade outdated 

그러나 이전 버전을 오래 동안 유지하고 실행하는 것이 좋습니다.


 $ sudo port uninstall inactive 

가끔씩.


upgrade 여러 개의 스위치를 허용합니다.


--force

포트가 실제로 있는지 여부에 관계없이 항상 지정된 포트를 고려하십시오.


--enforce-variants

설치된 변형이 요청 된 것과 일치하지 않으면 포트가 오래되어 있지 않아도 업그레이드 (및 변형 변경)하십시오. 이것을 사용하여 설치된 포트에서 변형 선택을 전환 할 수 있습니다. 예 :


 $ sudo port upgrade --enforce-variants apache2 -preforkmpm +workermpm 

참고 --enforce-variants모든 종속에서 변형 선택을 적용합니다. 이 작업이 필요하지 않다는 것을 알고 있으면 전역 -n플래그를 사용하여 종속성 처리를 피할 수 있습니다 .


 $ sudo port -n upgrade --enforce-variants apache2 -preforkmpm +workermpm 

--no-replace

설치 한 포트의 대체 포트는 자동으로 설치하지 않지만 다른 포트로 교체하십시오.


3.1.18. 항구 부양 가족

dependents작업이있는 경우 포트가, 주어진 (설치) 포트에 의존 무엇을보고합니다.


 $ port dependents openssl 

 apache2는 openssl에 의존합니다.

curl은 openssl에 의존합니다.

cyrus-sasl2는 openssl에 의존합니다.

자식은 openssl에 의존한다.

kerberos5는 openssl에 의존합니다.

lftp는 openssl에 의존합니다.

libssh는 openssl에 의존합니다.

mosh는 openssl에 의존합니다.

openldap은 openssl에 의존합니다.

p5.16-net-ssleay는 openssl에 의존합니다.

python27은 openssl에 의존합니다.

python32는 openssl에 의존합니다.

qt4-mac은 openssl에 의존합니다.

ruby19는 openssl에 의존합니다.

serf1은 openssl에 의존합니다.

textmate2는 openssl에 의존합니다.

wireshark는 openssl에 의존합니다. 

참고 dependents시스템에 설치되어 있지 않은 포트에 대한 작동하지 않습니다. 당신이 설치하지 않은 포트에 의존하는 포트를 찾고자한다면, 다음을 사용할 수 있습니다.


 $ port echo depends: portname 

그러나이 명령은 기본이 아닌 변형에만 나타나는 종속성은 다루지 않습니다.


3.1.19. 포트 라이브 체크

livecheck조치는 특정 포트에 해당하는 응용 프로그램 개발자의 다운로드 사이트에서 업데이트되어 있는지 확인합니다. 이 작업은 포트 유지 관리자가 포트를 업데이트해야하는지 여부를 확인하는 데 주로 유용하지만 다른 포트가 최신 사용 가능한 버전을 패키지로 제공하는지 확인할 수도 있습니다. 참조 5.8 절을 "Livecheck / Distcheck" livecheck에 대한 자세한 정보를 얻을 수 있습니다.


 $ port livecheck rb19-sass 

 rb19-sass가 업데이트 된 것 같습니다 (포트 버전 : 3.3.10, 새 버전 : 3.3.14). 

노트

경우 livecheck포트의 다운로드 사이트에서 더 높은 버전을 발견하지, 그것은 아무것도 출력하지 않습니다. 옵션 -d(디버그)은 자세한 실시간 검사 처리 정보로 사용될 수 있습니다.


3.1.20. 포트 린트

lint 동작 Portfile은 포트 파일 개발에 지정된 MacPorts 표준을 준수 하는지 확인합니다 . Portfile패치를 MacPorts에 다시 제출하기 전에 a를 수정 한 경우이 값을 사용해야합니다 .


A는 경우 Portfile미세 유효성을 검사하는 다음과 같은 메시지가 표시됩니다.


 $ port lint rb19-sass 

---> rb19-sass의 포트 파일 확인

---> 0 개의 오류 및 0 개의 경고가 발견되었습니다. 

그렇지 않으면 경고와 오류가 나열됩니다.


 $ port lint abiword 

---> abiword에 대한 포트 파일 확인

경고 : 변형 use_binary에는 설명이 없습니다.

경고 : Variant use_source에 설명이 없습니다.

경고 : 라이선스가 없습니다.

---> 0 개의 오류 및 3 개의 경고가 발견되었습니다. 

lint 다음 플래그가 있습니다.


--nitpick

대부분 공백 관련 및 모범 사례 인 추가 검사를 활성화합니다.


3.2.

항만 변형

3.2.1. 변형 호출

3.2.2. 기본 변형 무시

변형은 포트 작성자가 설치시 선택할 수있는 포트에 대한 옵션을 제공하는 방법입니다. 일반적으로 변형은 활성화 할 수 있지만 모든 사용자에게 반드시 유용한 것은 아니며 기본적으로 활성화되어 있지 않은 선택적 기능입니다. 포트에 대해 사용 가능한 변형을 표시하려면 다음 명령을 사용하십시오.


 $ port variants portname 

예 :


 $ port variants apache2 

apache2에는 다음과 같은 변형이 있습니다.

   eventmpm : 이벤트 MPM 사용 (실험)

     * preforkmpm workermpm과 충돌합니다.

   openldap : OpenLDAP를 통한 LDAP 지원 활성화

[+] preforkmpm : prefork MPM 사용

     * eventmpm workermpm과 충돌합니다.

   범용 : 다중 아키텍처를위한 빌드

   workermpm : 작업자 MPM 사용

     * eventmpm preforkmpm과 충돌합니다. 

이 출력에는 모든 변형과 그 설명이 나열됩니다. 변형이 다른 변형과 종속되거나 충돌하는 경우 그 변형에 대한 세부 정보가있는 행이 표시됩니다. a +가 활성화 된 변형 줄 과 -비활성화 된 변형 줄 모든 []것은에서 파생됩니다 Portfile. 반면 ()에서 파생됩니다 variants.conf. 자세한 정보는 6.2.3 절. "variants.conf" 를보십시오 variants.conf.


3.2.1. 변형 호출

변형은 포트가 설치 될 때만 선택할 수 있습니다. 주어진 포트에 어떤 변형이 있는지 결정한 후에는 명령 줄에서 더하기 기호 앞에 이름을 지정하여 변형을 사용하여 포트를 설치할 수 있습니다 (예 :


 $ sudo port install apache2 +openldap 

여러 변형은 공간별로 구분하여 하나씩 나열하여 간단하게 선택할 수 있습니다.


 $ sudo port install apache2 +openldap +universal 

마이너스 기호를 사용하여 기본적으로 켜져있는 변형을 선택 해제하십시오.


 $ sudo port install apache2 -preforkmpm +workermpm 

변종 선택에 성공했는지 확인할 수 없으며 변종 이름의 철자가 틀린 경우 MacPorts에서 경고하지 않습니다. 설치가 성공적이지만 선택한 기능이 여전히 누락 된 것 같으면 오타가 있는지 확인하십시오. 설치된 포트 를 사용 하여 선택한 변형으로 포트가 설치되었는지 확인할 수 있습니다 .


이것은 MacPorts가 모든 종속물에 대해 지정된 변형을 사용하기 때문에 발생합니다. 예를 들어,


 $ sudo port install apache2 +mariadb 

변형 apache2이없는 경우에도 허용 +mariadb됩니다. 그러나 변종이 있고 함께 설치 될 apr-util포트 에 따라 다릅니다 +mariadb.


MacPorts는 포트를 설치할 때 사용 된 변형을 기억합니다. 포트를 나중에 업그레이드하는 경우 다른 변형을 수동으로 지정하지 않으면 동일한 변형이 사용됩니다.


3.2.2. 기본 변형 무시

A Portfile는 수동으로 재정의하지 않을 때 사용되는 기본 변형 집합을 지정할 수 있습니다. 모든 포트가 기본 변형을 지정하는 것은 아닙니다. 기본 변형이 없으면 기본적으로 변형이 선택되지 않습니다.


Portfile또는에서 구성에 의해 기본적으로 사용하도록 설정된 변형을 사용하지 않으 variants.conf려면 명령 줄에서 변형 이름에 접두사를 붙이면 해당 변형을 무효화 할 수 있습니다.


 $ sudo port install apache2 -preformmpm +workermpm 

3.3.

일반적인 작업

3.3.1. 포트 트리 업데이트

3.3.2. 업데이트가 필요한 포트 표시

3.3.3. 오래된 포트 업그레이드

3.3.4. 업그레이드 된 비활성 버전 제거 (들)

3.3.5. 특정 포트에 따라 포트 찾기

3.3.6. 잎 찾기

3.3.7. 요청 된 포트로 잎을 정의하여 설치 시간을 줄이십시오.

이 절에서는 MacPorts 설치를 관리 할 때 수행 할 수있는 일반적인 조작을 나열합니다. MacPorts를 사용하면서 가장 필요로하는 워크 플로입니다. MacPorts를 사용하는 방법에 대한 기초로서 적어도이 절을 읽는 것이 좋습니다. 사용법에 대한 자세한 내용은 3.1 절. "포트 명령" 에서 찾을 수 있습니다 . 터미널에서 man 1 포트 를 port(1)실행 하여 사용할 수 있는 맨 페이지를 참조하십시오 .


후속 예제의 경우 " sudo " 를주의하십시오. 이는 기본 MacPorts 설치가 필요한 경우에 필요합니다.


3.3.1. 포트 트리 업데이트

로컬 포트 ​​트리는 MacPorts를 통해 사용할 수있는 패키지와 설치 방법에 대한 정보가 들어있는 파일 모음입니다. 업데이트 된 버전의 소프트웨어 및 버그 수정에 액세스하려면 정기적으로 포트 트리를 업데이트해야합니다. 그렇게하려면 다음을 사용하십시오 selfupdate.


 $ sudo port selfupdate 

  암호:

---> rsync를 사용하여 MacPorts 기본 소스 업데이트

MacPorts 기본 버전 2.5.4 설치,

MacPorts 기본 버전 2.5.4 다운로드.

---> 포트 트리 업데이트

---> MacPorts 기반은 이미 최신 버전입니다.


포트 트리가 업데이트되었습니다. 설치된 포트를 업그레이드하려면 다음을 실행해야합니다.

  오래된 포트 업그레이드 

3.3.2. 업데이트가 필요한 포트 표시

실행 후 새로운 기능을 확인하려면 selfupdate, 당신은 사용할 수 있습니다 오래된 포트 최신 버전을 사용할 수있는 포트의 목록을 생성합니다. 이렇게 하면 바이너리 패키지 가용성 및 포트 구축 시간과 같은 추가 요소에 따라 다르지만 구식 포트 업그레이드에 필요한 시간을 구할 수 있습니다.


 $ port outdated 

다음 설치된 포트는 구식입니다.

gnupg 1.4.16_0 <1.4.18_0

gnupg2 2.0.22_2 <2.0.25_0

gpg-agent 2.0.22_1 <2.0.25_0

gpgme 1.5.0_0 <1.5.1_0

HexFiend 2.1.2_1 <2.3.0_0

libksba 1.0.8_0 <1.3.0_0

p5.16-class-methodmaker 2.180.0_1 <2.210.0_0

p5.16-gnupg-interface 0.330.0_3 <0.500.0_1

p5.16-ipc-run 0.910.0_1 <0.920.0_0 

3.3.3. 오래된 포트 업그레이드

설치된 포트와 오래된 포트를 모두 업그레이드하려면 다음을 실행하십시오.


 $ sudo port upgrade outdated 

특정 포트 만 업그레이드하려는 경우 (수행중인 작업을 알지 못하는 경우에는 권장되지 않음) 위의 명령에서 " 오래된 " 을 포트 이름으로 바꿉니다.


 $ sudo port upgrade makedepend 

  암호:

---> makedepend에 대한 컴퓨팅 의존성

---> makedepend 가져 오기

---> http://lil.fr.distfiles.macports.org/makedepend에서 makedepend-1.0.3.tar.bz2 가져 오기를 시도합니다.

---> makedepend에 대한 체크섬 확인

---> makedepend 추출하기

---> makedepend 구성

---> 건축물

---> 근절에 대한 준비

---> makedepend에 대한 컴퓨팅 의존성

---> makedepend @ 1.0.3_0 설치하기

---> makedepend @ 1.0.2_0 비활성화

---> makedepend @ 1.0.3_0 활성화하기

---> 청소 makedepend 

MacPorts는 포트 자체를 업데이트하기 전에 포트의 종속성을 먼저 업그레이드합니다. 따라서 단일 포트의 업데이트 만 요청하더라도 종속성 트리에 있기 때문에 다른 포트가 먼저 업그레이드 될 수 있습니다. 마 하지 ,이를 방지하기 위해 시도로에서 나중에에 문제 가능성이 매우 높다 리드 - 당신이 새로운 의존성이 필요할 수 있습니다 업그레이드 할 포트의 새 버전, 또는 만 업데이트 의존성에 대해 다시 빌드 전혀 업그레이드되었을 수 있습니다 이 경우 의존성 업데이트를 피하면 재설치의 목적이 무의미 해집니다.


3.3.4. 업그레이드 된 비활성 버전 제거 (들)

기본적으로 MacPorts의 포트를 업그레이드해도 이전 버전이 제거되지 않습니다. 업데이트가 잘못되었을 때를 대비하여 작업 및 테스트 버전으로 돌아갈 수있는 안전 조치입니다. 디스크 공간을 절약하려면 더 이상 필요하지 않은 이전 버전을 정기적으로 제거해야합니다.


용도


 $ port installed inactive 

더 이상 필요하지 않은 비활성 포트 목록을 얻으십시오.


 현재 다음 포트가 설치되어 있습니다.

  ~ 1.4.16_0 gnupg

  gnupg2 @ 2.0.22_2

  gpg-agent @ 2.0.22_1

  gpgme @ 1.5.0_0

  HexFiend @ 2.1.2_1

  libksba @ 1.0.8_0

  p5.16-class-methodmaker @ 2.180.0_1

  p5.16-gnupg-interface @ 0.330.0_3

  ip5.16-ipc-run @ 0.910.0_1 

계속 유지하려는 포트 목록을 확인하십시오. 한번에 모두 제거하려면


 $ sudo port uninstall inactive 

  암호:

---> p5.16-gnupg-interface @ 0.330.0_3 제거

---> 청소 p5.16-gnupg-interface

---> gnupg @ 1.4.16_0 제거하기

---> 청소하기

---> gpgme @ 1.5.0_0 제거하기

---> 청소 gpgme

---> gnupg2 @ 2.0.22_2 제거

---> 청소하기 gnupg2

---> gpg-agent @ 2.0.22_1 제거

---> gpg-agent 청소

---> HexFiend @ 2.1.2_1 제거

---> HexFiend 청소

---> libksba @ 1.0.8_0 설치 제거

---> 청소 libksba

---> p5.16-class-methodmaker @ 2.180.0_1 제거하기

---> 청소 p5.16-class-methodmaker

---> p5.16-ipc-run @ 0.910.0_1 제거

---> p5.16-ipc-run 청소 

물론 특정 비활성 포트만 선택할 수도 있지만 정확한 버전을 지정해야합니다.


 $ sudo port uninstall HexFiend @2.1.2_1 

  암호:

---> HexFiend @ 2.1.2_1 제거

---> HexFiend 청소 

하나의 비활성 포트를 모두 제거하려면 다음 단축키를 사용할 수 있습니다.


 $ sudo port uninstall inactive and not portname 

3.3.5. 특정 포트에 따라 포트 찾기

주어진 다른 포트에 의존하는 모든 포트를 찾으려면 다음을 사용할 수 있습니다.


 $ port echo depends: portname 

실제로 설치 한 종속 포트에만 관심이있는 경우 더 빠르고 더 정확하게 사용할 수 있습니다 dependents.


 $ port dependents portname 

 gnupg2는 libksba에 의존합니다.

gpg-agent는 libksba에 의존합니다. 

MacPorts에는 다음과 같은 dependents작업 의 재귀 버전이 있습니다 rdependents.


 $ port rdependents libksba 

 다음 포트는 libksba에 종속됩니다.

  gnupg2

    gpgme

  gpg-agent 

마지막으로, 수동으로 설치 한 포트를 확인하려면 종속성의 자동 설치가 발생 했으므로 다음 표현식을 사용하십시오.


 $ port installed requested and rdependentof: portname 

 $ port installed requested and rdependentof:libksba 

 현재 다음 포트가 설치되어 있습니다.

  gnupg2 @ 2.0.25_0 (활성) 

3.3.6. 잎 찾기

MacPorts를 사용하여 포트를 설치하고 제거한 후에는 더 이상 필요하지 않더라도 다른 포트에 대한 종속성으로 자동 설치 된 패키지가 남아 있습니다. 포트가 수동으로 설치 ( " 요청 됨 " )되어 있고 종속품이 없는 포트를 " 잎 "이라고 하며 leaves포트 echo또는 가상 포트와 함께 사용하여 식별 할 수 있습니다 installed.


 $ port echo leaves 

git-flow @ 0.4.1_2

gmake @ 4.0_0

gpgme @ 1.5.1_0

hs-download-curl @ 0.1.4_0

pkgconfig @ 0.28_0

py27-docutils @ 0.12_0

python32 @ 3.2.5_0

texi2html @ 5.0_1

yasm @ 1.2.0_0 

이 잎은 원할 수도 있지만 대부분의 경우 불필요합니다. 3.3.7 절. "요청한 포트로 잎을 정의하여 설치하기"를 참조 하여 요청 된대로 일부 잎을 표시하는 방법을 찾으십시오. 다음을 사용하여 모든 잎을 제거 할 수 있습니다.


 $ sudo port uninstall leaves 

제거를 수행하면 새 포트가 나뭇잎이 될 수 있습니다. 모든 잎을 제거하려면 rleaves의사 포트를 대신 사용할 수 있습니다 .


이 프로세스를 대화식으로 수행하여 유지하려는 항목을 제거하지 않도록하려면 port_cutleaves포트를 설치할 수 있습니다 . 설치 후, 다음과 같이 실행하십시오.


 $ sudo port_cutleaves 

3.3.7. 요청 된 포트로 잎을 정의하여 설치 시간을 줄이십시오.

요청 된 포트를 정의하는 절차를 시작하기 전에 실제로 설치되는 내용과 시스템에 실제로 필요한 내용을 이해하려는 일반적인 시나리오를 살펴 보겠습니다. MacPorts 설치의 나뭇잎을 확인한다고 가정하면 다음과 같이 출력됩니다.


 $ port echo leaves 

git-flow @ 0.4.1_2

gmake @ 4.0_0

gpgme @ 1.5.1_0

hs-download-curl @ 0.1.4_0

pkgconfig @ 0.28_0

py27-docutils @ 0.12_0

python32 @ 3.2.5_0

texi2html @ 5.0_1

yasm @ 1.2.0_0 

이제 사용자가 무엇이 필요하고 무엇이 아닌지를 결정하는 것은 사용자의 몫입니다. 우리는 pkgconfig많은 포트를 만들 필요 가 있음을 알았습니다. 설치가 끝난 후에는 꼭 필요하지는 않지만 반복해서 설치하지 않으려 고합니다. python32, texi2html및 yasm업데이트 만 필요하며 mplayer2해당 소프트웨어는 거의 업데이트되지 않으므로 필요한 경우 해당 포트를 다시 설치합니다. 그들은 모두 배포 가능하기 때문에, MacPorts는 미리 설치 한 바이너리를 설치용으로 사용하므로 다시 설치하는 데 시간이 오래 걸리지 않습니다. 잎의 나머지 부분이 왜 설치되었는지는 알 수 없으므로 지금은 제거 할 것입니다.


우리가 보관하기로 결정한 이후 pkgconfig, 우리는 이것을 수동으로 설치 ( MacPorts 용어로 " 요청 ") 한 것으로 표시하려고합니다 :


 $ sudo port setrequested pkgconfig 

어떤 포트를 시스템에두고 원하는 포트를 설정했는지 단계별로 알아 낸 경우 불필요한 포트 목록을 얻을 수 있습니다.이 포트 목록을 사용하면


 $ sudo port uninstall leaves 

나뭇잎을 제거하면 새 포트가 나뭇잎으로 표시 될 수 있으므로이 과정을 반복해야합니다. port_cutleaves작업을위한 특수 스크립트 인 포트 를 설치할 수 있습니다 . 포트를 유지할지 또는 제거할지 여부를 대화식으로 결정할 수 있습니다. 그것을로 실행


 $ sudo port_cutleaves 

[Leaf 1/8] hs-download-curl @ 0.1.4_0 (활성) :

  [keep] / (u) ninstall / (f) lush / (a) bort :

** hs-download-curl @ 0.1.4_0이 보관됩니다.


[Leaf 2 of 8] gmake @ 4.0_0 (활성) :

  [계속] / (u) ninstall / (f) lush / (a) bort : u

** gmake @ 4.0_0이 제거됩니다.


[Leaf 3 of 8] texi2html @ 5.0_1 (활성) :

  [계속] / (u) ninstall / (f) lush / (a) bort : u

** texi2html @ 5.0_1이 (가) 제거됩니다.


[Leaf 4 of 8] yasm @ 1.2.0_0 (활성) :

  [계속] / (u) ninstall / (f) lush / (a) bort : u

** yasm @ 1.2.0_0이 제거됩니다.


[Leaf 5 of 8] python32 @ 3.2.5_0 (활성) :

  [계속] / (u) ninstall / (f) lush / (a) bort : u

** python32 @ 3.2.5_0이 제거됩니다.


[Leaf 6 of 8] py27-docutils @ 0.12_0 (활성) :

  [계속] / (u) ninstall / (f) lush / (a) bort : u

** py27-docutils @ 0.12_0이 제거됩니다.


[리프 7/8] git-flow @ 0.4.1_2 (활성) :

  [계속] / (u) ninstall / (f) lush / (a) bort : u

** git-flow @ 0.4.1_2가 제거됩니다.


[Leaf 8 of 8] gpgme @ 1.5.1_0 (활성) :

  [계속] / (u) ninstall / (f) lush / (a) bort : u

** gpgme @ 1.5.1_0이 제거됩니다.


---> gmake @ 4.0_0 비활성화

---> 청소하기

---> gmake @ 4.0_0 제거하기

---> 청소하기

---> texi2html @ 5.0_1 비활성화

---> texi2html 청소

---> texi2html @ 5.0_1 제거

---> texi2html 청소

---> yasm @ 1.2.0_0 비활성화

---> 청소

---> yasm @ 1.2.0_0 제거하기

---> 청소

---> python32 @ 3.2.5_0 비활성화

---> 청소 python32

---> python32 @ 3.2.5_0 제거하기

---> 청소 python32

---> py27-docutils 비활성화 @ 0.12_0

---> py27-docutils 청소

---> py27-docutils @ 0.12_0 제거하기

---> py27-docutils 청소

---> git-flow 비활성화 @ 0.4.1_2

---> git-flow 청소하기

---> git-flow @ 0.4.1_2 제거하기

---> git-flow 청소하기

---> gpgme @ 1.5.1_0 비활성화

---> 청소 gpgme

---> gpgme @ 1.5.1_0 제거하기

---> 청소 gpgme


다음 포트가 제거되었습니다.

  gmake @ 4.0_0

  texi2html @ 5.0_1

  yasm @ 1.2.0_0

  python32 @ 3.2.5_0

  py27-docutils @ 0.12_0

  git-flow @ 0.4.1_2

  gpgme @ 1.5.1_0


새로운 잎을 찾으십니까?

  [no] / (y) es : y


[Leaf 1 of 1] py27-roman @ 2.0.0_0 (활성) :

  [계속] / (u) ninstall / (f) lush / (a) bort : u

** py27-roman @ 2.0.0_0이 제거됩니다.


---> py27-roman @ 2.0.0_0 비활성화

---> 청소 py27-roman

---> py27-roman @ 2.0.0_0 제거하기

---> 청소 py27-roman


다음 포트가 제거되었습니다.

  py27-roman @ 2.0.0_0


새로운 잎을 찾으십니까?

  [no] / (y) es : y


처리 할 새 잎이 없습니다. 

다음을 사용하여 이전에 요청한 (또는 수동으로 설치된) 모든 포트 목록을 가져올 수 있습니다.


 $ port installed requested 

우리는 당신의 시스템에 너무 많은 " 쓰레기 " 가 없도록 잎 목록을 가끔 확인하는 것이 좋습니다 . 또한 요청한 포트 목록을 주기적으로 확인하고 더 이상 필요하지 않은 포트를 요청되지 않은 포트로 표시해야합니다


 $ sudo port unsetrequested portname 

그런 다음 새 잎이 있는지 확인하여 설치된 포트 수와 MacPorts 설치 크기를 줄이십시오.


3.4.

포트 바이너리

3.4.1. 이진 기록 보관소

3.4.2. 바이너리 패키지

MacPorts는 포트를 바이너리로 미리 컴파일 할 수 있으므로 대상 시스템에 설치할 때 응용 프로그램을 컴파일 할 필요가 없습니다. MacPorts는 아카이브와 패키지의 두 가지 유형의 바이너리를 지원합니다.


3.4.1. 이진 기록 보관소

바이너리 아카이브는 MacPorts를 실행하는 대상 시스템에서만 사용할 수 있습니다. 그것들은 MacPorts 유틸리티가 빌드 (일반적으로 가장 오래 걸리는 단계)를 건너 뛰고 무효 단계 이후에 설치를 시작하도록 허용합니다. 바이너리 아카이브는 포트가 설치 될 때마다 자동으로 생성되며 서버에서 다운로드 할 수도 있습니다. MacPorts는 기본 설치 접두어 용 MacPorts의 모든 포트에 대해 미리 작성된 바이너리 패키지를 만드는 buildbot 인프라를 실행합니다. Buildbot은 Snow Leopard와 동등하거나 그 이상의 시스템을 위해 존재합니다. 포트가 성공적으로 빌드되고 그 라이센스와 그 의존성이 있으면 바이너리 재배포가 가능하며,이 아카이브는 packages.macports.org설치 중에 MacPorts에 업로드되고 자동으로 사용됩니다.


다음을 사용하여 수동으로 아카이브를 생성하고 (생성을위한 디버그 출력 참조)


 $ sudo port -d archive logrotate 

---> logrotate @ 3.8.6_2 + gzip 설치하기

 [...]

디버그 : logrotate-3.8.6_2 + gzip.darwin_13.x86_64.tbz2 만들기

 [...]

 a.

./+COMMENT

./ + 결석

./+DESC

./ + PORTFILE

./+STATE

./opt

./opt/local

./opt/local/etc

./opt/local/sbin

./opt/local/share

./opt/local/var

./opt/local/var/run

./opt/local/var/run/logrotate

./opt/local/var/run/logrotate/.turd_logrotate

./opt/local/share/logrotate

./opt/local/share/man

./opt/local/share/man/man5

./opt/local/share/man/man8

./opt/local/share/man/man8/logrotate.8.gz

./opt/local/share/man/man5/logrotate.conf.5.gz

./opt/local/share/logrotate/CHANGES

./opt/local/share/logrotate/COPYING

./opt/local/share/logrotate/logrotate.conf.example

./opt/local/share/logrotate/org.macports.logrotate.plist.example

./opt/local/sbin/logrotate

./opt/local/etc/logrotate.d.

./opt/local/etc/logrotate.d/.turd_logrotate

디버그 : archive logrotate-3.8.6_2 + gzip.darwin_13.x86_64.tbz2 패키지 됨 

이진 아카이브 파일은에 배치됩니다 ${prefix}/var/macports/software/. 아카이브 파일 유형은 키 를 macports.conf사용하여 설정됩니다 portarchivetype. 기본 형식은 다음과 같습니다 tbz2. 다른 옵션은 다음과 같습니다 : tar, tbz, tbz2, tgz, tlz, txz, xar, zip, cpgz,와 cpio.


3.4.2. 바이너리 패키지

바이너리 패키지는 미리 컴파일 된 독립 실행 형 바이너리 설치 프로그램입니다. 그들은 대상 시스템에서 MacPorts를 필요로하지 않습니다. 따라서 설치를 위해 MacPorts에 의존하지 않고 사용자에게 재배포 할 디스크 이미지 또는 설치 프로그램을 생성하는 데 유용합니다. MacPorts로 만든 이진 설치 프로그램은 대개 .pkg(macOS 설치 프로그램 패키지)입니다. MacPorts는 또한 .pkg패키지를 macOS .dmg디스크 이미지 로 변환 할 수 있습니다 . 다음 예제와 같이 포트 를 사용하여 바이너리 패키지를 만들 수 있습니다 .


경고

재배포를 위해 MacPorts를 사용하여 설치 프로그램 패키지를 만들려면 MacPorts의 표준 설치를 사용하지 마십시오 /opt/local. 당신이 할 경우, 시스템에서 MacPorts를 사용하여 설치 패키지 충돌 할가 설치 MacPorts를있다.


대신에 따라 "여러 MacPorts의 복사본 설치"절 2.2.4을 하고, 예를 들어, 패키지하려는 소프트웨어에 대한 특정 접두사 선택 /opt/logrotate을 위해를 logrotate. 그런 다음이 사용자 정의 MacPorts 설치를 사용하여 패키지를 빌드하십시오.


포트에 .pkg대한 macOS 설치 프로그램을 만듭니다 pstree.


 $ sudo port pkg pstree 

다음과 같이 macOS .dmg디스크 이미지 파일을 만들 수도 있습니다 .


 $ sudo port dmg pstree 

대부분의 경우 포트와 모든 라이브러리 및 런타임 종속성을 단일 패키지로 패키지하려고합니다. 메타 패키지를 사용하여이를 수행 할 수 있습니다. 다음을 사용하여 만듭니다.


 $ sudo port mpkg gimp2 

단일 패키지와 마찬가지로, 메타 패키지도 패키지로 묶을 수 있습니다 .dmg.


 $ sudo port mdmg gimp2 

모든 패키지는 포트의 작업 디렉토리에 저장되며 다음을 사용하여 찾을 수 있습니다.


 $ port work portname 

4 장. 포트 파일 개발

4.1.

포트 파일 소개

4.2.

포트 파일 만들기

4.3.

포트 파일 예제

4.4.

항만 변형

4.5.

패치 파일

4.6.

로컬 포트 ​​파일 저장소

4.7.

포트 파일 모범 사례

4.8.

MacPorts의 빌드 봇

포트는 MacPorts를 사용하여 컴파일하고 설치할 수있는 소프트웨어 배포판입니다. A Portfile는 업스트림에서 소스 코드를 가져올 위치, 적용해야하는 패치 및 소스 코드를 빌드하는 데 필요한 다른 도구 및 명령과 같은 모든 필수 단계를 설명합니다.


각 포트는 일반적으로 포트 트리의 루트의 카테고리 하위 디렉토리에있는 디렉토리의 여러 파일로 구성됩니다. MacPorts Project 는 모든 MacPorts 설치에서 기본적으로 구성된 기본 포트 트리를 배포합니다 . 이 섹션은 단일 포트의 디렉토리 구조 및 그 안에있는 파일의 레이아웃에 대한 참조로 사용됩니다. 포트에 필요한 유일한 파일은 Portfile입니다.


4.1.

포트 파일 소개

MacPorts Portfile은 일반적으로 포트 파일 참조 장에 설명 된대로 간단한 키워드 / 값 조합과 Tcl 확장 만 포함 하는 Tcl 스크립트입니다 . 그러나 임의의 Tcl 코드도 포함될 수 있습니다. 모든 포트에는 해당 Portfile이 있지만 MacPorts 기본에는 기본 포트 설치 특성이 코딩되어 있으므로 Portfiles는 포트의 설치 동작을 완전히 정의하지 않습니다. 따라서 포트 파일은 필수 옵션 만 지정하면되지만 일부 포트는 기본값이 아닌 옵션이 필요할 수 있습니다.


PortFiles가 MacPorts 기본 기본 설치 단계 특성을 보강하거나 무시하는 일반적인 방법은 Portfile단계 선언 을 사용하는 것 입니다. Portfile 단계 선언을 사용하는 경우 Portfile의 " 전역 " 섹션 을 식별하는 방법을 알고 있어야합니다 . 단계 선언에 포함되지 않은 명령문은 Portfile에있는 위치와 관계없이 Portfile의 전역 섹션에 있다고합니다. 따라서 전역 섹션이 연속적 일 필요는 없습니다. 마찬가지로 전역 섹션에서 명령문을 제거하려면 단계 선언 내에 배치해야합니다.


Portfile을 만들 때 알아야 할 주요 단계는 다음과 같습니다.


술책


추출물


반점


구성


짓다


파괴자


MacPorts 기본에 의해 수행되는 기본 설치 단계 동작은 각각 configure, build 및 destroot 단계를 준수 하는 표준 configure , make 및 make install 단계 를 사용하는 응용 프로그램에서 잘 작동합니다 . 이 표준 동작을 따르지 않는 응용 프로그램의 경우 설치 단계는 사전 및 / 또는 사후 단계를 사용하여 보강 되거나 심지어 무시 되거나 제거 될 수 있습니다. 아래 예제 포트 파일을 참조하십시오 .


노트

모든 포트 단계에 대한 자세한 설명은 Portfile Reference 장을 참조 하십시오 .


4.2.

포트 파일 만들기

여기 에는 대부분의 오픈 소스 응용 프로그램 설치 의 표준 configure , make 및 make install 단계 를 따르는 응용 프로그램의 개별 Portfile 구성 요소가 나와 있습니다 .


Modeline


이것은 Portfile의 첫 번째 줄이어야합니다. 그것은 vim과 emacs에 대한 올바른 편집 옵션을 설정합니다. 자세한 내용은 포트 스타일 을 참조하십시오. 사용은 선택 사항이며 포트 관리자에게 달려 있습니다.


# - * - 코딩 : utf-8; 모드 : tcl; 탭 너비 : 4; indent-tabs-mode : nil; c-basic-offset : 4 - * - vim : fenc = utf-8 : ft = tcl : et : sw = 4 : ts = 4 : sts = 4

PortSystem 라인


이 명령문은 모든 포트에 필요합니다.


 PortSystem 1.0 

포트 이름


 이름 rrdtool 

포트 버전


 버전 1.2.23 

포트 카테고리


포트는 둘 이상의 카테고리에 속할 수 있지만 첫 번째 (기본) 카테고리는 포트 파일이 상주 할 포트 트리의 디렉토리 이름과 일치해야합니다.


 카테고리 그물 

플랫폼 선언문


 플랫폼 다윈 

항만 관리자


항만 유지자는 항만을 최신 상태로 유지할 책임이있는 사람들입니다. maintainers키워드는 바람직하게는 스팸봇으로부터 숨 깁니다 모호한 형태로 메인테이너 'GitHub의 사용자 이름 또는 이메일 주소를 나열합니다. 자세한 내용 은 Portfile Reference 장의 Global Keywords 섹션에있는 maintainers 키워드 에 대한 전체 설명을 참조하십시오 .


 메인테이너 @neverpanic \

                    jdoe \

                    example.org : julesverne 

포트 설명


 설명 라운드 로빈 데이터베이스 

항구 long_description


 long_description RRDtool은 시계열 데이터를 저장하고 표시하는 시스템입니다.

                     데이터 

항구의 응용 프로그램 홈페이지


 홈페이지 https://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ 

포트의 다운로드 URL


 master_sites https://oss.oetiker.ch/rrdtool/pub/ \

                    ftp://ftp.pucpr.br/rrdtool/ 

포트 체크섬


Portfile에 지정된 체크섬은 보안을 위해 가져온 tarball로 검사됩니다. 최상의 보안을 위해 rmd160 및 sha256 체크섬 유형을 사용하십시오. 체크섬에는 대상 파일의 크기도 포함되어야합니다.


 체크섬 rmd160 7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a \

                        sha256 2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa53 \

                        크기 1061530 

포트의 배포 파일에 대한 올바른 체크섬을 찾으려면 다음 예제 중 하나를 따르십시오.


 %% openssl dgst -rmd160 rrdtool-1.2.23.tar.gz

%% openssl dgst -sha256 rrdtool-1.2.23.tar.gz 

 RIPEMD160 (... rrdtool-1.2.23.tar.gz) = 7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a


SHA256 (... rrdtool-1.2.23.tar.gz) = 2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa53 

또는 Portfile에서 버전을 업데이트하십시오.


 %% sudo port edit rrdtool 

실행 :


 %% port -v checksum rrdtool 

 ---> rrdtool에 대한 distfiles 가져 오기

---> rrdtool의 체크섬 확인

---> 체크섬 rrdtool-1.2.23.tar.gz

오류 : rrdtool-1.2.23.tar.gz에 대한 체크섬 (rmd160) 불일치

포트 파일 체크섬 : rrdtool-1.2.23.tar.gz rmd160 ... WRONGCHECKSUM ...

Distfile 체크섬 : rrdtool-1.2.23.tar.gz rmd160 7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a

오류 : rrdtool-1.2.23.tar.gz의 Checksum (sha256) 불일치

포트 파일 체크섬 : rrdtool-1.2.23.tar.gz sha256 ... WRONGCHECKSUM ...

Distfile 체크섬 : rrdtool-1.2.23.tar.gz sha256 2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa53

올바른 체크섬 행은 다음과 같을 수 있습니다.

체크섬 rmd160 7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a \

                    sha256 2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa5

오류 : 체크섬에 실패했습니다. rrdtool : 파일 체크섬을 확인할 수 없습니다.

오류 : 자세한 내용은 ... SOMEPATH ... / rrdtool / main.log를 참조하십시오.

오류 : https://guide.macports.org/#project.tickets를 따라 버그를보고하십시오.

오류 : 포트 rrdtool 처리가 실패했습니다. 

포트 종속성


포트의 종속성은 다른 포트가 설치되기 전에 설치해야하는 포트입니다.


 depends_lib 포트 : perl5.8 \

                    포트 : tcl \

                    port : zlib 

포트 구성 인수 (선택 사항)


 configure.args --enable-perl-site-install \

                    --mandir = $ {접두사} / share / man 

4.3.

포트 파일 예제

4.3.1. 기본 포트 파일

4.3.2. 증강 단계 전 / 후 -

4.3.3.

재정의 단계

4.3.4. 단계 제거

4.3.5. StartupItem 만들기

이 절에서는 완전한 간단한 Portfile을 살펴보기로 시작합니다. 사전 및 사후 단계 를 정의하고, 기본 단계 를 재정의 하는 방법과, 마지막으로 포트 단계 를 제거 하는 방법을 정의하여 기본 단계 를 보완 하는 방법을 살펴 봅니다 .


4.3.1. 기본 포트 파일

# - * - 코딩 : utf-8; 모드 : tcl; 탭 너비 : 4; indent-tabs-mode : nil; c-basic-offset : 4 - * - vim : fenc = utf-8 : ft = tcl : et : sw = 4 : ts = 4 : sts = 4


PortSystem 1.0


이름 rrdtool

버전 1.2.23

카테고리 그물

플랫폼 다윈

라이센스 GPL-2 +

정비 사 julesverne

설명 라운드 로빈 데이터베이스

long_description RRDtool은 시계열 데이터를 저장하고 표시하는 시스템입니다.

홈페이지 https://people.ee.ethz.ch/~oetiker/webtools/rrdtool/

master_sites https://oss.oetiker.ch/rrdtool/pub/ \

                    ftp://ftp.pucpr.br/rrdtool/


체크섬 rmd160 7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a \

                    sha256 2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa53 \

                    크기 1061530


depends_lib 경로 : bin / perl : perl5 \

                    포트 : tcl \

                    port : zlib


configure.args --enable-perl-site-install \

                    --mandir = $ {접두사} / share / man 

4.3.2. 증강 단계 전 / 후 -

포트의 설치 단계를 보강하고이를 대체하지 않으려면이 예와 같이 설치 전 및 설치 단계를 사용할 수 있습니다.


 사후 파기 {

    # Makefile이 설치하지 않은 예제 파일 설치

    파일 mkdir $ {destroot} $ {접두사} / 공유 / 의사 / $ {이름} / 예제

    파일 복사 $ {worksrcpath} / examples / \

        $ {destroot} $ {prefix} / share / doc / $ {name} / examples

 } 

4.3.3. 재정의 단계

자동 MacPorts 설치 단계 처리를 겹쳐 쓰려면이 예제와 같이 사용자 자신의 설치 단계를 정의하십시오.


 destroot {

    xinstall -m 755 -d $ {destroot} $ {prefix} / share / doc / $ {name}

    xinstall -m 755 $ {worksrcpath} / README $ {destroot} $ {prefix} / share / doc / $ {name}

 } 

4.3.4. 단계 제거

기본 단계를 제거하려면 그림과 같이 내용이없는 단계를 정의하기 만하면됩니다.


 짓다 {} 

노트

많은 소프트웨어 패키지가 사용하지 않기 때문에 단계 configure를 제거하기 위해 키워드가 제공됩니다 configure. 또 다른 예외는 destroot단계가 제거되지 않을 수도 있다는 것입니다. 자세한 내용은 Portfile Reference 장을 참조 하십시오.


4.3.5. StartupItem 만들기

시작 항목은 Portfile의 전역 섹션에 배치 될 수 있습니다.


 startupitem.create 예

startupitem.name nmicmpd

startupitem.executable "$ {접두사} / bin / nmicmpd" 

4.4.

항만 변형

4.4.1. 변형 예제

4.4.2. 한 단계의 변형 동작

4.4.3.

기본 변형

변형은 포트 작성자가 설치시 호출 될 수있는 옵션을 제공하는 방법입니다. 이들은 " variant " 키워드를 사용하여 Portfile의 전역 섹션에서 선언되며 주의 깊게 선택한 변형 설명을 포함해야합니다 .


4.4.1. 변형 예제

사용자가 선택한 변형의 가장 일반적인 조치는 포트 작성자가 제공하고자하는 다양한 옵션에 따라 종속성을 추가 또는 제거하고 인수를 구성하고 인수를 작성하는 것입니다. 다음은 depends_lib를 수정하고 포트에 대한 인수를 구성하는 여러 가지 변형의 예입니다.


 변형 된 fastcgi 설명 {Fastcgi 이진 추가} {

    configure.args-append \

            - enable-fastcgi \

            - enable-force-cgi-redirect \

            --enable-memory-limit

 }


변형 gmp 설명 ​​{GNU MP 함수 추가} {

    depends_lib-append 포트 : gmp

    configure.args-append --with-gmp = $ {prefix}


 }


변형 sqlite 설명 {빌드 sqlite 지원} {

    depends_lib-append \

        포트 : sqlite3

    configure.args-delete \

        --without-sqlite \

        --without-pdo-sqlite

    configure.args-append \

        --with-sqlite \

        --with-pdo-sqlite = $ {접두사} \

        - enable-sqlite-utf8

 } 

노트

변형 이름에는 문자 AZ, az 및 밑줄 문자 " _ " 만 포함될 수 있습니다 . 따라서 변형 이름에 하이픈을 사용하지 않도록주의하십시오.


아래의 예제 변형 선언에서는 configure 인수 --without-x가 제거되고 다른 인수 가 추가됩니다.


 variant x11 description {Lucid 위젯을 사용하여 포트를 X11 프로그램으로 빌드} {

    configure.args-delete --without-x

    configure.args-append --with-x-toolkit = lucid \

                            - 탄소없이 \

                            --with-xpm \

                            --with-jpeg \

                            -와 - tiff \

                            --with-gif \

                            --with-png

    depends_lib-append lib : libX11 : XFree86 \

                            lib : libXpm : XFree86 \

                            포트 : jpeg \

                            포트 : tiff \

                            포트 : libungif \

                            포트 : libpng

 } 

4.4.2. 한 단계의 변형 동작

변형에 -append 및 / 또는 -delete를 사용하는 키워드가 제공하는 옵션 이외에 옵션이 필요한 경우, 즉 포트 설치 단계에서 일반적으로 발생하는 모든 동작은 변형 선언 내에서 수행하지 마십시오. 오히려 variant_isset 키워드를 사용하여 variant가 호출 될 때 영향을받은 단계의 동작을 수정하십시오.


 사후 파기 {

    xinstall -m 755 -d $ {destroot} $ {prefix} / etc /

    xinstall $ {worksrcpath} /examples/foo.conf \

        $ {destroot} $ {접두사} / etc /


    if {[variant_isset carbon]} {

        $ {destroot} $ {prefix} / bin / emacs를 삭제하십시오.

        $ {destroot} $ {prefix} / bin / emacs - $ {version}을 삭제하십시오.

     }

 } 

4.4.3. 기본 변형

변형은 응용 프로그램 또는 포트의 핵심 기능 밖에있는 작업을 지정하는 데 사용되지만 기본적으로 이러한 비 핵심 기능을 지정하려는 경우가있을 수 있습니다. 이를 위해 default_variants 키워드를 사용할 수 있습니다.


 default_variants + foo + bar 

노트

default_variant 키워드는 전역 Portfile 섹션에서만 사용할 수 있습니다.


4.5.

패치 파일

4.5.1. 포트 파일 패치 만들기

4.5.2. 소스 코드 패치 만들기

4.5.3. 수동으로 패치 적용

패치 파일은 명령 패치 를 사용하여 버그를 수정하거나 기능을 확장하기 위해 텍스트 파일을 수정 하는 Unix 명령 diff로 만든 파일입니다.


4.5.1. 포트 파일 패치 만들기

Portfile에 수정 사항이나 수정 사항을 제공하려면 패치 형태로 수정해야합니다. 아래 단계에 따라 Portfile 패치 파일을 만듭니다.


수정하려는 Portfile의 복사본을 만듭니다. 두 파일 모두 동일한 디렉토리에 있어야하지만 디렉토리가 될 수 있습니다.


 %% cp -p Portfile Portfile.orig 

파일을 가져온 후에 원하는대로 편집하십시오.


이제 Unix 명령 diff -u 를 사용하여 " 통합 된 " diff 패치 파일 을 만듭니다 . 패치 파일에 포트의 이름을 넣으십시오 (예 : Portfile-rrdtool.diff).


 %% diff -u Portfile.orig Portfile > Portfile-rrdtool.diff 

" 통합 된 " diff 파일 인 패치 파일은 사람이 해석하기 쉬운 파일이며이 유형은 항상 포트에 사용해야합니다. 아래 포트 파일 패치는 적용될 때 버전과 체크섬을 변경합니다.


 --- Portfile.orig 2011-07-25 18 : 52 : 12.000000000 -0700

+++ Portfile 2011-07-25 18 : 53 : 35.000000000 -0700

@@ -2,7 +2,7 @@

 PortSystem 1.0

 이름 foo

 

-version 1.3.0

+ 버전 1.4.0

 카테고리 그물

 유지 관리자 명목상의 사람

 description 네트워크 모니터링 데몬.

@@ -13,9 +13,9 @@

 

 홈페이지 http://rsug.itd.umich.edu/software/${name}

 

 master_sites $ {homepage} / files /

-checksums rmd160 f0953b21cdb5eb327e40d4b215110b71

+ 체크섬 rmd160 01532e67a596bfff6a54aa36face26ae

 extract.suffix .tgz

 플랫폼 다윈

이제 포트 작성자가 평가할 수있는 MacPorts Trac 티켓에 패치 파일을 첨부 할 수 있습니다.


4.5.2. 소스 코드 패치 만들기

응용 프로그램 소스 코드에 대한 필수 또는 유용한 패치는 일반적으로 포트 작성자가 아닌 응용 프로그램 개발자에게 보내 져야하므로 수정 사항이 응용 프로그램의 다음 버전에 포함될 수 있습니다.


일반적으로 적용해야 할 각 논리적 변경에 대해 하나의 패치 파일을 만들어야합니다. 패치 파일 파일 이름은 고유 파일을 구분하고 일반적으로 형식이어야합니다 (가), 이를 해결하기 위해 예상되는 문제 나 버그에 대한 참조입니다. 파일 이름의 예는 다음과 같습니다 .patch- <identifier> .diffidentifierpatch- destdir-variable-fix .diff


단일 파일을 수정하는 패치를 작성하려면 다음 단계를 수행하십시오.


압축을 푼 소스 디렉토리 내의 원래 위치에서 패치하려는 파일을 찾아서 복제하십시오.


 %% cd ~/Downloads/foo-1.34/src

%% cp -p Makefile.in Makefile.in.orig 

파일을 편집하고 수정 내용을 반영하도록 텍스트를 수정하십시오.


이제 CD 압축을 푼 소스의 최상위 디렉토리, 그리고 유닉스 명령의 사용 은 diff -u 만들기 위해 " 통합 " 은 diff 패치 파일을.


 %% cd ~/Downloads/foo-1.34

%% diff -u src/Makefile.in.orig src/Makefile.in > patch-destdir-variable-fix.diff 

당신은 실행해야 DIFF을 기본적으로 패치 상 MacPorts를하는 동안 패치 인수를 사용하기 때문에, 압축을 푼 소스 코드의 최상위 디렉토리에서 -p0반대 (패치 파일에 파일 이름에서 선행 슬래시와 접두어를 제거하지 않습니다, -p1그 중 하나를 제거하는 등), 패치 단계에서 압축을 푼 소스의 최상위 디렉토리와 관련이없는 경로는 모두 실패합니다.


노트

주요 경로 정보가 포함 된 기존 소스 파일 패치 (diff는 최상위 소스 디렉토리보다 높은 디렉토리에서 실행 됨)를 찾으면 patch phase 키워드 patch.pre_args 를 사용하여 -px몇 개의 값 을 지정해야합니다 선행 슬래시가있는 접두어는 제거되어야합니다.


" 통합 된 " diff 파일 인 패치 파일은 사람이 해석하기 쉬운 파일이며이 유형은 항상 포트에 사용해야합니다. 패치가 DESTDIR지원을 추가하는 아래 예제를 참조하십시오 Makefile.in.


 --- src / Makefile.in.orig 2007-06-01 16 : 30 : 47.000000000 -0700

+++ src / Makefile.in 2007-06-20 10 : 10 : 59.000000000 -0700

@@ -131,23 +131,23 @@

        $ (INSTALL_DATA) / gdata $ (INSTALL_DATA) / perl

 

 install-lib :

- -mkdir -p $ (INSTALL_LIB)

+ -mkdir -p $ (DESTDIR) $ (INSTALL_LIB)

        $ (PERL) 도구 / install_lib -s src -l $ (INSTALL_LIB) $ (LIBS)

- cp $ (TEXT) $ (INSTALL_LIB) /

+ cp $ (TEXT) $ (DESTDIR) $ (INSTALL_LIB) / 

patch-destdir-variable-fix.diff디렉토리에 패치 ${portpath}/files를 놓고 patchfiles키워드를 사용하여 포트에서 사용하십시오 . ${portpath}개발 중 로컬 Portfile 저장소에 files/있을 수도 있고 ${portpath}, 전역 MacPorts 저장소 에있는 포트에있을 수도 있습니다 .


 patchfiles patch-destdir-variable-fix.diff 

4.5.3. 수동으로 패치 적용

MacPorts는 자동으로 패치 파일을 적용하지만 작성한 패치 파일을 테스트하거나 커밋되지 않은 Portfile 패치를 적용하려는 경우 수동으로 패치 파일을 적용하는 방법을 알고 싶을 수 있습니다.


패치 할 파일이있는 디렉토리로 변경하십시오. 이 예제에서는 포트 파일 패치를 후위 포트에 적용합니다.


 %% cd $(port dir postfix) 

이제 다운로드 폴더 또는 패치를 넣은 곳의 패치를 적용하십시오. patchfile은 패치 할 파일의 이름을 알고 있습니다.


 %% patch -p0 < ~/Downloads/Portfile-postfix.diff 

 패치 파일 Portfile 

4.6.

로컬 포트 ​​파일 저장소

아직 MacPorts 포트 트리에 게시되지 않은 Portfiles를 만들고 테스트하려면 그림과 같이 로컬 Portfile 저장소를 만들 수 있습니다. 가상 사용자 julesverne를 아래 예에서 사용자 이름으로 바꿉니다 .


sources.conf텍스트 편집기에서 엽니 다 . 예를 들어 텍스트 편집기로 열려면 다음을 입력하십시오.


 %% open -e ${prefix}/etc/macports/sources.conf 

표시된대로 로컬 저장소 위치를 가리키는 URL을 rsync URL 앞에 삽입하십시오.


 file : /// 사용자 / julesverne / ports

rsync : //rsync.macports.org/macports/release/tarballs/ports.tar [기본값]

노트

파일 URL은 rsync URL 앞에 항상 나타나야 만 MacPorts 트리에서 중복되는 로컬 Portfiles를 테스트 할 수 있습니다. 포트 는 항상 처음 발견되는 Portfile에서 작동 하기 때문 입니다.


작성한 Portfiles를 이름이 포트와 일치하는 디렉토리에 두십시오.이 디렉토리는 포트의 기본 카테고리 (Portfile의 첫 번째 카테고리 항목)를 반영하는 디렉토리 안에 있어야합니다. 예를 들어 가상의 포트 " bestevergame "에 대한 디렉토리를 만들고 TextEdit에서 Portfile을 편집하기 시작하려면 다음 명령을 사용하십시오.


 %% mkdir -p ~/ports/games/bestevergame

%% cd ~/ports/games/bestevergame

%% touch Portfile

%% open -e Portfile 

Portfile 작성에 대한 도움은 안내서의 다른 절을 참조하십시오. 이미 다른 곳에 Portfile을 작성했다면 Portfile을이 디렉토리에 복사 할 수 있습니다.


Portfile이 포트의 소스 파일에 패치를 적용해야하는 경우, files디렉토리를 작성하고 패치 파일을 그 안에 넣은 다음 소스 파일 패치 작성에 설명 된대로 Portfile에서 패치 파일을 참조하십시오 .


Portfile을 생성하거나 업데이트 한 후 로컬 저장소의 디렉토리에서 portindex 를 사용 하여 로컬 저장소의 포트 색인을 작성하거나 업데이트하십시오.


%% cd ~/ports

%%portindex 

 / Users / julesverne / ports에 소프트웨어 색인 만들기

포트 게임 추가 / bestevergame


구문 분석 된 총 포트 수 : 1

포트가 성공적으로 구문 분석되었습니다. 1

포트 실패 : 0 

일단 로컬 포트가에 추가되면 PortIndexMacPorts 트리의 다른 Portfile과 마찬가지로 검색 또는 설치가 가능해집니다.


 %% port search bestever 

 bestevergame @ 1.1 (게임)

    최고의 게임 

4.7.

포트 파일 모범 사례

4.7.1. 항만 스타일

4.7.2. 구성 파일을 덮어 쓰지 않음

4.7.3. 문서 및 예제 설치

4.7.4. 사용자 메시지 제공

4.7.5. 변수 사용

4.7.6. 포트 이름 바꾸기 또는 바꾸기

4.7.7. 포트 제거

이 절에서는 포트 파일을 원활하게 설치하고 포트간에 일관성을 유지하는 Portfile을 작성하기위한 실질적인 지침을 제공합니다. 다음 섹션은 TODO 목록에 있습니다.


4.7.1. 항만 스타일

포트 파일은 코드 조각 이라기보다는 일련의 선언으로 생각할 수 있습니다. 포트 파일이 키와 값으로 구성된 테이블 인 경우 포트 파일을 형식화하는 것이 가장 좋습니다. 실제로 가장 간단한 포트는 작은 값 블록을 포함합니다. 멋지게 형식화 된 컴팩트 테이블은 더 많은 값을 동시에 볼 수있게합니다.


두 개의 열은 탭이 아닌 공백으로 구분해야하므로 공백으로 에뮬레이트 된 탭인 부드러운 탭을 사용하도록 편집기를 설정해야합니다. 기본적으로 모든 Portfiles의 맨 위 줄에는 그림과 같이 vim 및 emacs 편집기의 소프트 탭을 정의하는 modeline을 사용해야합니다.


# - * - 코딩 : utf-8; 모드 : tcl; 탭 너비 : 4; indent-tabs-mode : nil; c-basic-offset : 4 - * - vim : fenc = utf-8 : ft = tcl : et : sw = 4 : ts = 4 : sts = 4

왼쪽 열은 한 단어로 구성되어야하며 더 복잡한 오른쪽에서 4의 배수로 공백으로 구분됩니다. 변수 할당 및 변형 선언은 예외이며 단어 사이에 하나의 공백이있는 왼쪽의 단일 단어로 간주 될 수 있습니다.


 libver를 "8.5"로 설정하십시오. 

항목에 줄 계속이있는 여러 줄이 필요하면 빈 줄이있는 이전 항목과 다음 항목에서 분리 할 수 ​​있습니다. 첫 번째 줄에서 오른쪽이 시작되는 동일한 열에 추가 줄을 들여 씁니다.


 체크섬 rmd160 7bbfce4fecc2a8e1ca081169e70c1a298ab1b75a \

                        sha256 2829fcb7393bac85925090b286b1f9c3cd3fbbf8e7f35796ef4131322509aa53 \

                        크기 1061530 

단계 또는 변형과 같은 주요 항목에 중괄호가 필요한 경우 여는 중괄호는 같은 줄에 나타나고 닫는 중괄호는 해당 줄에 있어야합니다. 중괄호에 의해 형성된 블록은 시각적 인 여유 공간을 위해 들여 쓰여집니다. 문자열만을 인용하는 중괄호 (예 : 변형의 설명)는 줄 바꿈없이 같은 줄에 배치됩니다.


 변종 mysql5 설명 {MySQL 5 지원 활성화} {

    depends_lib-append 포트 : mysql5

    configure.args-replace --without-mysql5 --with-mysql5

 } 

두 번째 열에는 종종 여러 항목이 필요합니다. 예를 들어 여러 소스 다운로드 위치를 설정하려면 여러 항목을 master_sites정의해야합니다. 두 번째 열 항목이 적거나 짧지 않는 한 새 항목에 각각 항목을 추가하고 줄을 백 슬래시로 구분해야합니다. 첫 번째 줄 다음에 줄을 들여 쓰면 항목이 두 번째 열 값이고 또한 블록의 단일성을 강조한다는 것을 알 수 있습니다.


 destroot.keepdirs $ {destroot} $ {접두사} / var / run \

                     $ {destroot} $ {접두사} / var / log \

                     $ {destroot} $ {접두사} / var / cache / mrtg 

4.7.2. 구성 파일을 덮어 쓰지 않음

할 것:


4.7.3. 문서 및 예제 설치

할 것:


4.7.4. 사용자 메시지 제공

할 것:


4.7.5. 변수 사용

TODO : 경로를 변경하여 한 곳에서 수행 할 수 있도록 변수를 설정하십시오. 업데이트를 더 간단하게 만들 때마다 사용하십시오 : distname $ {name} -src - $ {version}


4.7.6. 포트 이름 바꾸기 또는 바꾸기

포트를 다른 포트로 바꿀 필요가 있거나 어떤 이유로 리 네임이 필요할 경우, 포트는로 표시되어야합니다 replaced_by.


일반적인 워크 플로의 예로서 " skrooge-devel " 포트 가 사용됩니다. 이 포트는 새로운 버전의 skrooge를 테스트하는 데 사용되었지만 skrooge의 개발자는 현재 포트 " skrooge " 를 통한 배포를 선호하기 때문에 불필요한 것으로 판명 되었습니다.


이 절의 끝에서 더 이상 사용되지 않는 PortGroup의 사용은 아래에 설명 된 워크 플로에 대한 더 짧은 접근 방법으로 제안됩니다.


4.7.6.1. 먼 길

Skrooge의 원래 devel 포트 파일은 다음과 같습니다.


# - * - 코딩 : utf-8; 모드 : tcl; 탭 너비 : 4; indent-tabs-mode : nil; c-basic-offset : 4 - * - vim : fenc = utf-8 : ft = tcl : et : sw = 4 : ts = 4 : sts = 4


PortSystem 1.0

PortGroup kde4 1.1


fetch.type svn

svn.url svn : //anonsvn.kde.org/home/kde/trunk/extragear/office/skrooge

svn.revision 1215845


이름은 skrooge-devel

버전 0.8.0 - $ {svn.revision}


카테고리 kde finance

유지 관리자 mk pixilla openmaintainer

제품 설명 Skrooge

long_description KDE4를위한 개인 금융 관리 도구로서 매우 직관적 인 목적을 지닌 반면 \

                    보고 (그래픽 포함), 지속적인 \

                    실행 취소 / 다시 실행, 암호화 및 훨씬 더 ...


갈등 해소


플랫폼 다윈

GPL-3 라이센스


홈페이지 https://skrooge.org

master_sites https://skrooge.org/files/


livecheck.type none


distname skrooge


depends_lib-append 포트 : kdelibs4 \

                    포트 : libofx \

                    포트 : qca-ossl \

                    포트 : kdebase4-runtime \

                    포트 : 산소 아이콘 

다음 단계를 사용하여 MacPorts 사용자가 로컬 설치를 업데이트 할 때 원활한 전환을 보장해야합니다 sudo port upgrade.


행을 추가하십시오. replaced_by foo여기서 foo는이 포트가 대체 된 포트입니다. 사용자가이 포트를 업그레이드하면 MacPorts는 대체 포트를 대신 설치합니다.


 replaced_by skrooge 

버전, 개정 또는 신기원을 늘려서이 포트를 설치 한 사용자가이를 port outdated업그레이드하고 위의 프로세스를 트리거해야한다는 통지를받습니다.


 개정 1 

distfiles이 스텁 포트에 대한 distfile을 다운로드하지 않도록 distfiles를 지우십시오 (라인 읽기 전용 ).


 distfile 

다운로드 할 distfile이 없으므로 master_sites를 삭제하십시오.


라이브 체크 해제


 livecheck.type none 

기호가있는 사전 구성 블록을 추가 ui_error하고 return -code error포트를 교체 한이 포트를 설치하려고 사용자에게 설명


 사전 구성 {

    ui_error "이 포트는 'skrooge'로 대체되었으므로 설치하지 마십시오."

    반환 코드 오류

 } 

위의 수정으로 포트 파일은 결국 다음과 같이 보입니다.


# - * - 코딩 : utf-8; 모드 : tcl; 탭 너비 : 4; indent-tabs-mode : nil; c-basic-offset : 4 - * - vim : fenc = utf-8 : ft = tcl : et : sw = 4 : ts = 4 : sts = 4


PortSystem 1.0


이름은 skrooge-devel

svn.revision 1215845

버전 0.8.0 - $ {svn.revision}

개정 1


replaced_by skrooge


카테고리 kde finance

유지 관리자 mk pixilla openmaintainer

제품 설명 Skrooge

long_description KDE4를위한 개인 금융 관리 도구로서 매우 직관적 인 목적을 지닌 반면 \

                    보고 (그래픽 포함), 지속적인 \

                    실행 취소 / 다시 실행, 암호화 및 훨씬 더 ...


플랫폼 다윈

GPL-3 라이센스


홈페이지 https://skrooge.org


livecheck.type none


사전 구성 {

    ui_error "이 포트는 'skrooge'로 대체되었으므로 설치하지 마십시오."

    반환 코드 오류

 }


distfile 

포트를 업그레이드하는 사용자는 " skrooge-devel " 포트에 대해 다음을 경험합니다 .


 %% sudo port upgrade skrooge-devel 

 ---> skrooge-devel이 skrooge로 대체되었습니다.

---> skrooge에 대한 컴퓨팅 의존성

---> 스케이터 가져 오기

---> skrooge에 대한 체크섬 확인

---> 풀기

---> skrooge 구성

---> 건축 학자

---> 근절을위한 준비

---> skrooge-devel @ 0.8.0-1215845_0 비활성화

---> 청소 skrooge-devel

---> skrooge에 대한 컴퓨팅 의존성

---> skrooge @ 0.8.0.6_0 설치하기

---> skrooge @ 0.8.0.6_0 활성화

########################## ########

# dbus를 로컬로 시작해야 함을 잊지 마십시오. 

# 사용자가 (sudo가 아닌) KDE 프로그램을 실행하기 전에

# 시작하려면 다음 명령을 실행하십시오 :                  

# launchctl load /Library/LaunchAgents/org.freedesktop.dbus-session.plist

########################## ########


########################## ####

# 명령을 실행할 때까지 프로그램이 시작되지 않습니다. 

# 'sudo chown -R $ USER ~ / Library / Preferences / KDE'  

# $ USER를 사용자 이름으로 바꿉니다.              

########################## ####

---> 청소 청소 

사용자가 실제로 쓸모없는 포트 " skrooge-devel " 을 설치하려고 할 때 이것은 불가능하다는 오류 메시지에 의해 지적 될 것입니다 :


 %% sudo port install skrooge-devel 

 ---> skrooge-devel 가져 오기

---> skrooge-devel의 체크섬 확인

---> skrooge-devel 추출하기

---> skrooge-devel 구성

오류 :이 포트는 'skrooge'로 대체되었으므로 설치하지 마십시오.

오류 : 대상 org.macports.configure가 반환되었습니다. 

skrooge-devel의 로그는 /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_ports_kde_skrooge-devel/main.log에 있습니다.

오류 : 처리 중 상태 1이 발생했습니다.

버그를보고하려면 <https://guide.macports.org/#project.tickets> 

4.7.6.2. 바로 가기 : 쓸모없는 PortGroup

PortGroup을 쓸모 없게 사용하면 이전 하위 섹션에서 설명한 작업을 훨씬 쉽게 수행 할 수 있습니다.


# - * - 코딩 : utf-8; 모드 : tcl; 탭 너비 : 4; indent-tabs-mode : nil; c-basic-offset : 4 - * - vim : fenc = utf-8 : ft = tcl : et : sw = 4 : ts = 4 : sts = 4


PortSystem 1.0

PortGroup 1.0 사용 안함


이름은 skrooge-devel

replaced_by skrooge

svn.revision 1215845

버전 0.8.0 - $ {svn.revision}

수정 2

카테고리 kde finance

        

PortGroup은 사용자에게 포트 번호를 제거하고 다른 것을 설치해야 함을 알리기 위해 포트에 대해 합리적인 기본값을 여러 가지로 정의합니다. 하지만 일부 기본값을 덮어 쓰고 싶을 수도 있습니다. 자세한 내용은 PortGroup의 소스 코드를 참조하십시오 ${prefix}/var/macports/sources/rsync.macports.org/macports/release/tarballs/ports/_resources/port1.0/group/obsolete-1.0.tcl.


노트

replaced_byPortGroup행 앞이나 뒤에 지정할 수 있습니다 .


4.7.7. 포트 제거

MacPorts에서 포트를 제거해야하는 경우 위의 대체 포트로 대체해야한다는 힌트를 고려해야합니다 . 포트 디렉토리가 실제로 MacPorts 포트 트리에서 제거되기 1 년 전에 기다리는 것이 좋습니다.


포트 대체가 없으면 즉시 삭제할 수 있습니다.


4.8.

MacPorts의 빌드 봇

buildbot는 MacPorts를 Buildbot (사용 포트 빌드 포트 빌드 서비스입니다 MPBB ) 스크립트를.


관리자가 MacPorts의 포트 Git 저장소에 대한 변경을 커밋 할 때마다 buildbot은 해당 포트의 재구성이 필요한지 여부를 확인합니다. 문제의 포트가 배포 가능한 경우, 바이너리 아카이브는 빌드 머신이 사용 가능한 모든 Mac 운영 체제 버전에 대한 후속 배포를 위해 보관됩니다. 빌더 목록을 참조하여 현재 이들 플랫폼을 찾으십시오.


포트에 대한 빌드 오류가 발생하면 관리자가 전자 메일로 통보하므로 관리자의 컴퓨터에 나타나지 않는 문제가 발견되지 않습니다. 포트 관리자는 폭포수 와 빌더 보기가 가장 유용하다는 것을 알 수 있습니다. 빌드 상태에 대한 정보를 제공하고 특정 빌더에 포트를 구축 할 가능성을 제공하기 때문입니다.


따라서 buildbot은 MacPorts를 다양한 macOS 버전에서 일관성있게 유지하는 데 도움이됩니다. 즉, 관리자가 문제없이이 포트를 유지 관리하기 위해 더 이상이 버전에 액세스 할 필요가 없습니다. 현재 기본 포트 변형 만 빌드되고 유지됩니다.


5 장. 포트 파일 참조

5.1.

글로벌 키워드

5.2.

전역 변수

5.3.

항구 단계

5.4.

종속성

5.5.

변형

5.6.

Tcl 확장 및 유용한 Tcl 명령

5.7.

StartupItems

5.8.

라이브 체크 / 디스트 리뷰크

5.9.

포트 그룹

이 장에서는 포트 파일의 주요 요소 인 포트 단계, 종속성, StartupItems, 변수, 키워드 및 Tcl 확장에 대한 참조로 사용됩니다.


5.1.

글로벌 키워드

MacPorts 키워드는 Portfile 내의 필수 또는 선택 항목을 지정하거나 개별 포트에 대해 MacPorts 기반이 사용하는 기본 옵션을 무시하는 데 사용됩니다. 키워드는 선택적 포트 단계 선언이 아닌 Portfiles 의 " 전역 " 및 " 변형 " 섹션에서 사용됩니다.


아래 나열된 전역 키워드는 전체 포트 정보를 지정하지만 포트 단계 아래 나열된 키워드는 특정 설치 단계에서 사용할 정보를 지정합니다.


PortSystem

모든 Portfile의 첫 번째 주석이 아닌 행. PortGroup 포함 (있는 경우)과 빈 줄이 따라야합니다. 사용되는 Portfile 인터프리터의 버전을 정의합니다. 현재 하나의 버전 만 있습니다.


 PortSystem 1.0


이름

포트의 이름. 쉘 등의 특별한 해석을 피하기 위해 이름에는 영숫자, 밑줄, 대시 또는 점만 포함해야합니다. 적절한 이름에 " + " 문자가 포함 된 프로젝트의 경우 " x "로 변경하십시오 (예 : " libstdc ++ " 는 " libstdcxx "가됩니다 ).


 이름 foo 

번역

이식 된 소프트웨어의 버전.


 버전 1.23.45 

개정

포트 개정을 추적하는 데 사용되는 선택적 키워드 (기본값은 0). 사용자가 설치된 포트를 업그레이드하는 데 도움이되지 않는 한 포트 개정판에 대해 증가시키지 말아야하며, 포트가 새 버전으로 업데이트 될 때 지워집니다.


Portfile의 버그가 발견되어이 포트의 모든 설치를 업데이트해야하는 경우 사용해야합니다. 변경 사항이 새로운 설치에만 영향을주는 경우,이를 늘릴 필요가 없습니다.


 개정 1 

시대

포트가 이전 버전보다 작은 버전 (예 : 1.10 -> 1.2 또는 20070928 -> 1.0)으로 업데이트 될 때 사용해야하는 선택적 키워드 (기본값은 0)입니다. 일부 Portfile 작성자는 날짜와 같이 큰 획기적인 값을 사용했지만 그렇게 할 이유는 없습니다. 이 신기원은 단순히 부호없는 정수이며, 유일한 요구 사항은 절대로 감소시키지 않는 것입니다. 일단 설정되면 버전 및 개정보다 우선하므로 삭제할 수 없음을 기억하십시오.


 에포크 1 

노트

대부분의 포트에는 신기원이 필요하지 않습니다. 포트의 버전 번호가 정상 점 분리 10 진수 시퀀스로 진행되면 에포크를 추가 할 이유가 없습니다.


카테고리

이식 된 소프트웨어가 속하는 범주. 첫 번째 카테고리는 Portfile이 저장된 디렉토리와 동일해야합니다. 2 차 및 3 차 카테고리를 선택할 수 있습니다.


 카테고리 순 보안 

관리자

항만 유지자는 항만을 최신 상태로 유지할 책임이있는 사람들입니다. 대부분의 포트는 단 하나의 관리자 만 있지만, 일부 포트에는 두 명 이상의 공동 관리자가 있습니다. 이 maintainers키워드는 관리자의 GitHub 사용자 이름이나 이메일 주소를 나열합니다. GitHub 사용자 이름은 @기호로 시작합니다 . 이메일 주소는 스팸봇으로부터 숨기기 위해 다음과 같이 모호한 형태로 나열되는 것이 좋습니다.


도메인 @ macports.org의 주소는 도메인 이름을 생략하면됩니다.


다른 도메인의 주소 (예 :)의 경우 규칙 을 사용하여 주소를 지정하십시오.< account@example.org >example.org:account


아래 예에서 포트는 neverpanic이라는 GitHub 사용자가 관리하며 두 이메일 주소 및 소유자의 소유자는< jdoe@macports.org >< julesverne@example.org >


 메인테이너 @neverpanic \

                    jdoe \

                    example.org : julesverne 

중괄호는 GitHub 사용자 이름 및 전자 메일과 같은 동일한 사람을 참조하는 것을 나타내는 데 사용할 수 있습니다. 다음 예제에서 포트는 jverne이라는 GitHub 사용자에 의해 유지 관리되며 직접 연결할 수도 있습니다 .< julesverne@example.org >


 유지 자 (@jverne example.org : julesverne) 

노트

주소 nomaintainer는 누군가에 의해 유지되지 않고 커미터에 의해 수정 될 수있는 포트를 지정합니다. 원할 경우 언제든지 귀빈 항구의 정비를 청구 할 수 있습니다. 주소 openmaintainer는 관리자의 사전 승인없이 사소한 변경을 수행 할 수있는 관리자가있는 포트를 지정합니다. 커미터가 아닌 포트 관리자는 포트에 추가 openmaintainer하는 것이 좋습니다 .


기술

포팅 된 소프트웨어에 대한 한 문장의 설명.


 설명 고전적인 사수 아케이드 게임. 

장황한 설명

이식 된 소프트웨어에 대한 자세한 설명. 긴 줄을 이스케이프 된 줄 바꿈으로 분리하십시오.


 long_description 고전 사수 아케이드 게임에서 파생 된 \

                    게임 외계인. \에 적합하지 않습니다.

                    2 세 미만의 어린이. 

홈페이지

포트 응용 프로그램의 홈페이지.


 홈페이지 https://www.example.org/apps 

플랫폼

포트가 테스트 된 플랫폼 목록입니다. 필수이지만이 시점에서 소프트웨어에 의해 해석되지는 않습니다. 그것은 사용자에게 순수한 정보입니다. 가능한 값 : darwin(= macosx나 puredarwin), macosx, puredarwin, freebsd, linux, sunos, netbsd. 일반적으로 설정 될 수 있습니다 darwin. ( puredarwinApple의 독점적 인 비트없이 Apple의 오픈 소스 Darwin을 기반으로하는 OS입니다.)도 참조하십시오 os.platform.


 플랫폼 다윈 

supported_archs

이 포트를 구축 할 수있는 CPU 아키텍처 현재 macOS에서 지원하는 아치는 i386, ppc, ppc64, x86_64입니다. 이 옵션을 설정하지 않으면 포트가 모든 아치에 대해 빌드 할 수 있다고 가정합니다. 포트가 아키텍처 관련 파일을 설치하지 않으면 특수 값을 사용하십시오 noarch.


빌드 아키텍처가 supported_archs가 아니면 x86_64 및 supported_archs에 빌드가 i386을 포함하거나 ppc64 및 supported_archs에 빌드 할 때 ppc가 포함 된 경우를 제외하고는 포트가 32 비트 모드로 작성되는 경우를 제외하고 오류 메시지와 함께 포트가 실패합니다.


 supported_archs i386 ppc 

 supported_archs noarch 

특허

라이센스의 올바른 형식은 라이센스 이름과 하이픈 및 특정 버전을 나타내는 숫자로 구성됩니다. 적용되는 라이센스가 여러 개있는 경우 라이센스 사이에 공백을 배치해야합니다. 라이센스 목록의 요소 자체가 목록 인 경우 하위 목록에있는 라이센스 중 하나를 선택할 수있는 것으로 해석됩니다.


버전 번호가 " .0 " 버전이면 버전을 정수로 만들기 위해 " .0 " 을 생략해야합니다. 작성자가 주어진 라이센스 또는 " 이후 버전 " 을 사용하도록 선택 하면 버전 번호에 더하기 기호 (+)를 추가하십시오. 이 경우 지정된 버전이 가장 오래된 버전이라면 모든 버전을 의미하기 때문에 버전 번호를 완전히 생략하십시오.


 GPL-3 라이센스 

 라이센스 {freetype GPL} 

license_noconflict

기본적으로 포트는 해당 종속성에서 라이브러리 또는 헤더를 사용하여 파생 작업을 형성 할 수 있다고 가정합니다. 따라서 호환되지 않는 라이센스와의 종속성으로 인해 포트가 바이너리 형식으로 배포되지 않습니다. 호환되지 않는 라이센스와의 종속성이 파생 저작물이 형성되는 방식으로 사용되지 않거나 다른 이유로 인해 바이너리 배포가 금지되어서는 안되는 경우이 목록에 이름을 추가하십시오.


 license_noconflict openssl 

 license_noconflict readline gdbm 

5.2.

전역 변수

전역 변수는 모든 Portfile에서 사용할 수있는 변수입니다. MacPorts 포트 그룹에 할당 된 포트에서 사용할 수있는 추가 변수 목록은 portgroup (7)을 참조하십시오.


이 변수들을 제외한 모든 변수 prefix는 읽기 전용입니다!


접두사

컴파일 타임에 설정되어 표시되는 ${prefix}/etc/macports/macports.conf설치 접두사는 $ {prefix}의 전체 하위 디렉토리에 설치하는 것과 같이 포트 단위로 무시 될 수 있지만 대부분의 포트는 그렇게 할 필요가 없습니다.


태만: /opt/local


libpath

MacPorts Tcl 라이브러리의 경로.


portpath

실행중인 포트의 Portfile에 대한 전체 경로입니다. 포트 파일 리포지토리는 sources.conf 파일에 정의되어 있습니다.


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


filesdir

파일 디렉토리의 상대 경로 ${portpath}.


값: files


파일 경로

파일 디렉토리에 대한 전체 경로.


값: ${portpath}/${filesdir}


일하는 길

작업 디렉토리의 전체 경로.


값: ${portbuildpath}/work


worksrcpath

압축을 푼 소스 코드의 전체 경로입니다.


값: ${workpath}/${worksrcdir}


근절하다

소프트웨어가 제거 될 전체 경로입니다.


값: ${workpath}/destroot


distpath

다운로드 한 distfile을 저장할 위치입니다.


값: ${portdbpath}/distfiles/${dist_subdir}/


install.user

포트 설치시 유닉스 사용자.


install.group

포트 설치시 유닉스 그룹.


os.platform

기본 운영 체제 플랫폼 (예 : macOS의 " darwin " , " freebsd " 등).


os.arch

하드웨어 아키텍처 - " powerpc " 또는 " i386 " .


os.version

호스트 운영 체제의 버전 번호입니다 (예 : Darwin 12.3.0, 즉 OS X 10.8.3의 경우 " 12.3.0 " ).


오젠 시안

프로세서의 엔디안 - " 큰 " (PowerPC 시스템의 경우) 또는 " 작은 " (인텔 시스템의 경우).


os.major

호스트 운영 체제의 주요 버전 번호입니다 (예 : Darwin 12.x의 경우 " 12 " ).


5.3.