맨위로가기

MacPorts

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

MacPorts는 macOS 및 Darwin 운영 체제에서 유닉스 소프트웨어 설치를 돕는 패키지 관리 시스템이다. 2002년 애플 직원들이 시작한 DarwinPorts 프로젝트에서 시작되었으며, OpenDarwin 프로젝트의 일부로 운영되었다. OpenDarwin 종료 후 Mac OS Forge를 거쳐 2016년 GitHub로 이전되었다. MacPorts는 33,600개 이상의 포트를 제공하며, 포트 설치, 업데이트, 변형(variants) 기능을 제공한다. MacPorts는 소스 코드 컴파일 또는 미리 빌드된 바이너리 아카이브를 통해 소프트웨어를 설치하며, 포트파일(Portfile)을 사용하여 빌드 과정을 관리한다.

2. 역사



MacPorts는 2002년 랜드 풀러, 케빈 반 베히텐, 조던 허바드를 포함한 여러 애플 직원들의 참여로 시작되었다.[27] 원래는 Darwin과 FreeBSD Ports에서 이름을 따와 DarwinPorts로 알려졌으며, OpenDarwin 프로젝트의 일부로서 macOS 및 Darwin 사용자들이 유닉스 소프트웨어를 설치하도록 돕는 것을 목표로 했다.[29][30]

2006년 OpenDarwin이 종료된 후, DarwinPorts는 애플이 지원하지 않는 타사 프로젝트를 위해 애플이 만들고 유지 관리하는 오픈 소스 호스팅 서비스인 Mac OS Forge에서 호스팅되었다.[31] 이후 프로젝트가 macOS에 중점을 두고 있음을 나타내기 위해 이름이 MacPorts로 변경되었다.[29]

2016년 애플이 Mac OS Forge를 폐쇄하면서 프로젝트는 GitHub로 이전되었다.[32] 이러한 변경의 일환으로 git이 새로운 버전 관리 시스템으로 사용되었지만, Trac은 GitHub 이슈보다 티켓 관리에 여전히 선호되었다.[33]

2005년 4월 28일, 버전 1.0이 출시되었다.[34] 같은 해 12월, 프로젝트는 3000개가 넘는 포트를 기록하며 이정표에 도달했다.[35] 당시 패키지 설치는 소스 코드를 다운로드하여 최종 사용자의 시스템에서 컴파일하는 방식으로 이루어졌다. 2011년에 출시된 버전 2.0은 미리 빌드된 바이너리 아카이브에 대한 지원을 도입하여, 사용 가능한 경우 미리 빌드된 바이너리 아카이브를 사용하여 포트를 설치하고, 그렇지 않은 경우 소스에서 빌드하는 방식으로 변경되었다.[36][37] 2023년 5월 현재, MacPorts는 33,600개 이상의 포트를 가지고 있으며,[38] 커뮤니티에서 최선을 다한 지원을 받을 수 있다.[39]

3. 사용법

MacPorts는 터미널에서 `port` 명령어를 통해 사용한다. `port [옵션] [명령]` 형식으로 사용하며, 자세한 명령어와 옵션은 `port help`로 확인할 수 있다.

자주 쓰이는 명령어는 다음과 같다:


  • `selfupdate`: MacPorts 자체를 업데이트한다.
  • `install`: 패키지를 설치한다.
  • `upgrade`: 설치된 패키지를 업데이트한다.

3. 1. 소프트웨어 설치

MacPorts를 사용하여 소프트웨어를 설치하려면 `sudo port install [패키지 이름]` 명령어를 사용한다.[15] 예를 들어, LibreOffice와 Texmaker를 모두 설치하려면 다음과 같이 실행한다.[10][16]

```text

sudo port install libreoffice texmaker

```

이는 로컬 포트 트리에 표시된 최신 버전을 설치한다. `selfupdate`를 미리 실행하면 다운로드한 패키지가 MacPorts에서 가장 최신 버전인지 확인할 수 있다.[9]

3. 2. 소프트웨어 업데이트

설치된 소프트웨어를 업데이트하려면 `sudo port upgrade outdated` 명령어를 사용한다. `sync` 명령어는 로컬 포트 트리를 업데이트하여 새로운 소프트웨어 및 업데이트된 소프트웨어에 대한 정보를 가져온다. 이는 `brew update` 또는 `apt update`와 유사하다.[8] `selfupdate` 명령어는 `sync`와 같은 기능을 수행하며, 추가로 MacPorts 시스템 자체도 업데이트한다.[9] 대부분의 경우 `sync`만 실행하는 것보다 이 명령어를 사용하는 것이 좋으며,[8] MacPorts를 사용하기 전에 매번 실행하는 것이 좋다.[10]

예를 들어, 오래된 포트를 업데이트하는 일반적인 작업은 다음 명령어를 실행하여 수행할 수 있다.[12]

```shell

sudo port selfupdate

sudo port upgrade outdated

```

MacPorts는 ''and'', ''or'', ''not''과 같은 논리 연산자[13]와 glob 패턴(기본적으로 활성화됨) 및 정규 표현식(`--regex`를 통해 활성화됨)을 지원한다.[14] 예를 들어, 모든 PHP 버전을 제외하고 오래된 포트를 업데이트하려면 위 명령어를 다음과 같이 변경한다.[13]

```shell

sudo port selfupdate

sudo port upgrade outdated and not php*

3. 3. 변형 (Variants)

변형(Variants)은 포트 설치 시 호출될 수 있는 다양한 옵션을 제공한다. 일반적인 작업에는 종속성 추가 또는 제거, 빌드 인수 변경 등이 포함된다.[17] 이는 모든 사용자에게 반드시 유용하지는 않지만, 다른 사용자에게는 유용할 수 있는 추가 기능을 제공한다.

예를 들어, youtube-dl 포트는 기본적으로 활성화된 ffmpeg 변형을 제공한다. 이는 두 개의 추가 종속성을 추가하는 대신 오디오를 추출할 수 있게 해준다.[18][19] 변형은 `+` 또는 `-` 기호를 사용하여 포함하거나 제거할 수 있다. 예를 들어 ffmpeg 변형을 비활성화하려면 다음 명령어를 실행한다.

`sudo port install youtube-dl -ffmpeg`

여러 변형은 공백으로 구분하여 차례로 나열할 수 있다. 예를 들어, apache2 포트에서 기본 prefork MPM을 작업자 MPM으로 변경하려면 다음 명령어를 실행한다.[20]

`sudo port install apache2 -preforkmpm +workermpm`

포트의 변형은 `port variants ''패키지이름''`을 실행하거나 MacPorts 웹사이트에서 포트를 검색하여 확인할 수 있다.[20][21]

4. 구현

MacPorts는 macOS 운영 체제 위에 추가적인 소프트웨어를 설치하여, 기본 시스템에 포함되지 않았거나 최신 버전이 아닌 소프트웨어를 제공한다. 이는 운영 체제의 일부로 포함된 APT나 DNF와 같은 패키지 관리 시스템과는 다른 방식이다. MacPorts는 Fink, Homebrew와 함께 오버레이 배포판으로 분류된다.

MacPorts는 FreeBSD Ports Collection과 달리 기본적으로 `/opt/local`에 데이터를 저장하여, 다른 패키징 시스템과의 충돌을 방지한다. Fink 역시 비슷한 방식으로 `/sw`에 데이터를 설치한다.

4. 1. 바이너리 아카이브

빌드봇은 사용자가 패키지를 로컬에서 컴파일할 필요가 없도록 포트를 미리 빌드하는 데 사용된다. 이 결과는 바이너리 아카이브라고 하며 설치에 필요한 시간을 줄이는 데 도움이 된다.[46] 하지만 바이너리 빌드가 실패하거나 포트의 라이선스가 바이너리 배포를 허용하지 않는 경우, 로컬에서 소스 코드를 빌드해야 할 수도 있다.[49]

4. 2. 포트파일 (Portfiles)

MacPorts는 포트를 빌드하는 데 필요한 지침을 포트파일(Portfile)에 저장하며, 이는 TCL 스크립트 언어로 작성된다.[53] 포트파일은 완전한 TCL 프로그램으로, 간단한 '키-값' 쌍을 사용하여 속성을 정의한다.

각 포트파일에는 미리 정의된 단계가 있으며,[56] 여기에는 다음이 포함된다.

  • '''Fetch''': MacPorts는 포트에 대한 모든 관련 파일을 업스트림에서 검색하고 다운로드한다. 이를 distfile이라고 한다. 설치가 완료되면 임시 빌드 파일과 함께 제거된다.
  • '''Checksum''': 체크섬은 파일마다 다르므로 항상 포트파일 내에서 정의된다. 다운로드한 파일의 체크섬은 포트파일의 체크섬과 비교하여 일치하는지 확인한다.[56]
  • '''Patch''': 경우에 따라 MacPorts를 통해 설치할 수 있도록 코드를 수정해야 할 수 있다. 이는 기본적으로 잘못된 위치에 설치되는 것과 같은 다양한 이유로 발생할 수 있다. 패치 파일을 사용하여 소스 코드를 읽을 수 있는 형식으로 수정할 수 있다.[60]
  • '''Configure''': 프로젝트의 configure 스크립트는 빌드 프로세스를 준비하기 위해 실행된다. 이 과정의 일부는 필요한 라이브러리가 있는지 여부를 결정하는 것이다. configure 스크립트가 없는 포트의 경우 이 단계(및 필요한 다른 단계)를 비활성화할 수 있다.
  • '''Build''': 포트파일의 지침을 사용하여 포트를 빌드한다. 실행되는 명령어는 언어에 따라 다를 수 있다.
  • '''Test''': 일부 포트는 빌드가 성공했는지 확인하는 테스트를 정의한다. 이는 사용자가 `port test ''packagename''`을 실행하는 경우에만 실행되는 선택적 단계이다. 따라서 포트를 설치할 때는 실행되지 않는다.[56]
  • '''Destroot''': destroot 단계는 빌드된 파일을 올바른 위치로 이동하는 첫 번째 단계이다. MacPorts는 파일을 올바른 위치에 배치하기 전에 먼저 설치를 중간 위치(destroot)에 스테이징하는 방식을 사용한다. 이것의 한 가지 장점은 생성된 파일을 쉽게 기록하여 깨끗하게 제거할 수 있다는 것이다.[56] 예를 들어, 일반적으로 `/opt/local/lib/libfoo.a`에 설치될 파일은 destroot 단계에서 `/tmp/stage/opt/local/lib/libfoo.a`에 먼저 설치되어 상대 디렉토리 구조를 유지할 수 있다.[64]
  • '''Install''': destroot된 파일은 안전하게 보관된다. 이러한 파일이 아직 활성화되지 않았으므로 동일한 포트의 여러 버전을 서로 간섭하지 않고 보관할 수 있다.[67]
  • '''Activate''': 포트를 활성화하면 destroot 디렉토리의 파일이 올바른 위치로 이동한다. 이렇게 하면 사용자가 액세스할 수 있어 설치 프로세스가 완료된다.[56] 다른 버전의 포트를 사용해 보려면 현재 버전을 비활성화하고 새 버전을 활성화할 수 있다. 아카이브된 파일에서 쉽게 다시 활성화할 수 있으므로 이전 포트를 제거하지 않는다.[67][10]


포트를 업그레이드할 때 MacPorts는 현재 버전을 비활성화하지만 안전을 위해 제거하지 않는다. 이를 통해 업데이트로 인해 변경이 발생할 경우 사용자는 이전 버전으로 쉽게 되돌릴 수 있다.[68] 대부분의 시나리오에서 사용자의 시스템에서는 Install, Activate 단계만 발생하는데, 이는 포트에 대한 이진 파일이 미리 빌드되어 로컬에서 소스에서 빌드할 필요가 없기 때문이다.[65][66]

5. 개발

MacPorts 개발은 개별 유지보수자(Maintainer) 책임 하에 이루어지며, 포트파일에 명시되어 있다. 유지보수자는 필요에 따라 포트를 업데이트하고 버그 수정을 적용해야 한다. 포트 파일을 수정하려는 사람은 변경 사항을 적용하기 전에 유지보수자에게 알려야 하지만, 사소한 수정의 경우에는 항상 필요한 것은 아니다.[70][71]

누구나 풀 요청을 통해 MacPorts에 기여할 수 있으며, 기여자는 유지보수자로서 좋은 실적을 거둔 후 커밋 권한을 신청할 수 있다.[72] 프로젝트 관리자로 알려진 MacPorts 회원 팀은 프로젝트를 이끌고 조정하는 데 도움을 준다.[73]

185x185px


221x221px


2016년부터는 회의가 가끔 연 1회 개최되었다.[74] 일반적으로 슬로베니아에서 열리며, MacPorts 회원들이 향후 개발을 위해 작업할 수 있게 한다.[69]

6. 데이터 수집

MacPorts는 기본적으로 어떠한 통계도 수집하지 않는다. 하지만 사용자는 `sudo port install mpstats`를 실행하여 선택적으로 정보를 제출할 수 있다. 이렇게 하면 어떤 포트가 설치되었는지와 다양한 시스템 속성에 대한 세부 정보가 일주일에 한 번 전송된다. 이 정보는 지원할 하드웨어를 결정하고 새로운 MacPorts 릴리스가 얼마나 빨리 채택되는지 파악하는 데 사용된다.[75]

사용자는 MacPorts 웹사이트에서 분석 데이터를 볼 수 있다.[76]

참조

[1] 웹사이트 MacPortsHistory https://trac.macport[...] 2015-08-24
[2] 웹사이트 DarwinPorts project announces New Hosting and New Name https://www.macports[...] 2007-03-05
[3] 웹사이트 Mac OS X:Build from source:MacPorts{{dash}}Gramps https://www.gramps-p[...] 2021-08-06
[4] 웹사이트 MacPorts{{dash}}2020{{dash}}Google Summer of Code Archive https://summerofcode[...] 2021-08-06
[5] 웹사이트 Does MacPorts work on Apple Silicon?{{dash}}Does It ARM https://doesitarm.co[...] 2021-08-06
[6] 웹사이트 Install and Testing MacPorts on an M1 Mac https://www.rickmake[...] 2021-08-06
[7] 웹사이트 Migrating a MacPorts install to a new major OS version or CPU architecture https://trac.macport[...] MacPorts 2013-05-27
[8] 웹사이트 3.1.3. port sync https://guide.macpor[...] 2021-08-06
[9] 웹사이트 3.1.2. port selfupdate https://guide.macpor[...] 2021-08-06
[10] 웹사이트 MacPorts Cheat Sheet https://kapeli.com/c[...] 2021-08-06
[11] 웹사이트 3.1.18. port upgrade https://guide.macpor[...] 2021-08-06
[12] 웹사이트 3.3.3. Upgrading Outdated Ports https://guide.macpor[...] 2021-08-06
[13] 웹사이트 Excluding packages from MacPorts operations https://top-frog.com[...] 2021-08-06
[14] 웹사이트 3.1.7. port search https://guide.macpor[...] 2021-08-06
[15] 웹사이트 3.1.11. port install https://guide.macpor[...] 2021-08-06
[16] 웹사이트 Using MacPorts https://teamdynamix.[...] 2021-08-06
[17] 웹사이트 4.4. Port Variants https://guide.macpor[...] 2021-08-06
[18] 웹사이트 youtube-dl {{!}} MacPorts https://ports.macpor[...] 2021-08-06
[19] 웹사이트 macports-ports/Portfile at master · macports/macports-ports https://github.com/m[...] 2021-08-06
[20] 웹사이트 3.2. Port Variants https://guide.macpor[...] 2021-08-06
[21] 웹사이트 Ports {{!}} MacPorts https://ports.macpor[...] 2021-08-06
[22] 웹사이트 GSoC'19: Wrapping up the Project https://arjunsalyan.[...] 2021-08-08
[23] 웹사이트 Google Summer of Code 2020 https://arjunsalyan.[...] 2021-08-08
[24] 웹사이트 New ports.macports.org website https://lists.macpor[...] 2021-07-19
[25] 웹사이트 Api Root{{dash}}Django REST framework https://ports.macpor[...] 2021-08-08
[26] 웹사이트 The MacPorts Project{{dash}}Home https://www.macports[...] 2021-08-08
[27] 웹사이트 10 years of pkgsrc{{dash}}pkgsrc and the concepts of package management 1997-2007 (part 1) https://www.netbsd.o[...] 2021-08-07
[28] 웹사이트 The Mac Observer Interview with Jordan Hubbard https://www.freebsdn[...] 2021-08-07
[29] 웹사이트 MacPortsHistory – MacPorts https://trac.macport[...] 2021-08-06
[30] 웹사이트 MacPorts 101 https://www.astrobet[...] 2021-08-06
[31] 웹사이트 Mac OS Forge http://www.macosforg[...] 2010-08-17
[32] 웹사이트 MacPorts https://github.com/m[...] 2021-08-05
[33] 웹사이트 Goodbye Mac OS Forge, hello GitHub https://lists.macpor[...] 2016-08-19
[34] 웹사이트 DarwinPorts v1.0 http://darwinports.o[...] 2007-03-05
[35] 웹사이트 3000 ports landmark http://darwinports.o[...] 2007-03-05
[36] 메일링리스트 MacPorts 2.0.0 has been released https://lists.macpor[...] 2011-07-22
[37] 메일링리스트 Prebuilt archives available for Lion https://lists.macpor[...] 2012-05-11
[38] 웹사이트 Search ports {{!}} MacPorts https://ports.macpor[...] 2021-08-05
[39] 웹사이트 The MacPorts Project{{dash}}Contact Us https://www.macports[...] 2021-08-05
[40] 웹사이트 Mailman 3 [Linux-SIG] Draft PEP: Graceful cooperation between external and Python package managers{{dash}}Linux-sig{{dash}}python.org https://mail.python.[...] 2021-08-06
[41] 웹사이트 Chapter 4. Installing Applications: Packages and Ports https://docs.freebsd[...] 2021-09-07
[42] 웹사이트 5.2. Global Variables https://guide.macpor[...] 2021-08-06
[43] 웹사이트 Install MacPorts https://guide.macpor[...] 2021-08-06
[44] 웹사이트 FAQ – MacPorts https://trac.macport[...] 2021-08-06
[45] 웹사이트 Fink{{dash}}Home https://www.finkproj[...] 2021-08-06
[46] 웹사이트 Package Management https://ubuntu.com/s[...] 2021-08-08
[47] 웹사이트 Bottles (Binary Packages) https://docs.brew.sh[...] 2021-08-08
[48] 웹사이트 All Builds {{!}} MacPorts https://ports.macpor[...] 2021-08-08
[49] 웹사이트 3.4.1. Binary Archives https://guide.macpor[...] 2021-08-08
[50] 웹사이트 MacPorts-Buildbot GSoC Report https://medium.com/@[...] 2019-08-26
[51] 웹사이트 4.8. MacPorts' buildbot https://guide.macpor[...] 2021-08-08
[52] 웹사이트 Buildbot https://build.macpor[...] 2021-08-08
[53] 웹사이트 Chapter 4. Portfile Development https://guide.macpor[...] 2021-08-06
[54] 웹사이트 PKGBUILD{{dash}}ArchWiki https://wiki.archlin[...] 2021-08-06
[55] 웹사이트 Formula Cookbook https://docs.brew.sh[...] 2021-08-06
[56] 웹사이트 5.3. Port Phases https://guide.macpor[...] 2021-08-06
[57] 웹사이트 ESO{{dash}}Using the MacPorts Pipeline Repository https://www.eso.org/[...] 2021-08-07
[58] 웹사이트 3.1.8. port info https://guide.macpor[...] 2021-08-07
[59] 웹사이트 5.9.2. PortGroup github https://guide.macpor[...] 2021-08-06
[60] 웹사이트 4.5.2. Creating Source Code Patches https://guide.macpor[...] 2021-08-06
[61] 웹사이트 macports-ports/Portfile at 388977d9088455ede9fe4cc3a13af48e9c3ab067 · macports/macports-ports https://github.com/m[...] 2021-08-06
[62] 웹사이트 5.3.7. Configure Phase Keywords https://guide.macpor[...] 2021-08-06
[63] 웹사이트 macports-ports/Portfile at a4fb1ec6494bd176876b1637fa9f000e08615f96 · macports/macports-ports https://github.com/m[...] 2021-08-06
[64] 웹사이트 DESTDIR (GNU Coding Standards) https://www.gnu.org/[...] 2021-08-06
[65] 웹사이트 3.4. Port Binaries https://guide.macpor[...] 2021-08-07
[66] 웹사이트 MacOS – How to download pre-built binaries from MacPorts without installing – iTecTec https://itectec.com/[...] 2021-08-07
[67] 웹사이트 6.3. Port Images https://guide.macpor[...] 2021-08-06
[68] 웹사이트 3.3.4. Removing Inactive Version(s) of Upgraded Port(s) https://guide.macpor[...] 2021-08-06
[69] 웹사이트 Meetings/MacPortsMeeting2019 – MacPorts https://trac.macport[...] 2021-08-08
[70] 웹사이트 NewCommittersGuide – MacPorts https://trac.macport[...] 2021-08-07
[71] 웹사이트 4.2. Creating a Portfile https://guide.macpor[...] 2021-08-07
[72] 웹사이트 7.6. MacPorts Membership https://guide.macpor[...] 2021-08-07
[73] 웹사이트 The MacPorts Project Team https://trac.macport[...] 2021-08-07
[74] 웹사이트 Meetings – MacPorts https://trac.macport[...] 2021-08-08
[75] 웹사이트 FAQ–Statistics {{!}} MacPorts https://ports.macpor[...] 2021-08-05
[76] 웹사이트 Statistics {{!}} MacPorts https://ports.macpor[...] 2021-08-05
[77] 웹사이트 Jordan K. Hubbard: The invention of the FreeBSD Ports system, its drawbacks and the merits of MacPorts http://www.netbsd.or[...] NetBSD 2007-10-17
[78] 웹사이트 DarwinPorts project announces New Hosting and New Name http://www.macports.[...] 2006-08-07
[79] 웹사이트 MacPorts http://www.macports.[...] 2011-01-05
[80] 웹사이트 DarwinPorts v1.0 http://darwinports.o[...] 2005-04-28
[81] 웹사이트 3000 ports landmark http://darwinports.o[...] 2005-12-17
[82] 웹사이트 MacPortsGUI - MacPorts https://trac.macport[...] 2012-10-10
[83] 웹인용 MacPortsHistory https://trac.macport[...] 2018-05-17
[84] 웹인용 NEWS https://www.macports[...] 2018-05-17
[85] 웹인용 DarwinPorts project announces New Hosting and New Name https://www.macports[...] 2006-08-07
[86] 웹인용 MacPorts https://www.macports[...] 2011-01-05
[87] 웹인용 DarwinPorts v1.0 http://darwinports.o[...] 2005-04-28
[88] 웹인용 3000 ports landmark http://darwinports.o[...] 2005-12-17
[89] 웹인용 The MacPorts Project -- Home https://www.macports[...] 2012-03-23



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com