맨위로가기

번들 (macOS)

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

1. 개요

번들 (macOS)은 macOS 운영체제에서 사용되는 특수한 형태의 디렉터리 구조로, 애플리케이션, 프레임워크, 플러그인 등 다양한 소프트웨어 구성 요소를 묶는 데 사용된다. 애플리케이션 번들은 `.app` 확장자를 가지며, 실행 파일, 리소스, 설정 파일 등을 포함하여 Finder에서 하나의 실행 파일처럼 보인다. 프레임워크 번들은 `.framework` 확장자를 가지며, 소프트웨어 개발에 필요한 코드 라이브러리를 제공한다. 적재 가능한 번들은 `.bundle` 확장자를 가지며, 런타임에 동적으로 로드되어 플러그인 등에 활용된다. macOS는 자체적인 번들 형식을 사용하는 다양한 소프트웨어를 지원하며, 국제화된 리소스를 담는 `.lproj` 번들도 사용한다. 윈도우에서도 유사한 개념이 존재하며, 유닉스 계열 시스템에서는 패키지 관리 시스템을 통해 소프트웨어를 관리한다.

더 읽어볼만한 페이지

  • GNUstep - 오브젝티브-C
    오브젝티브-C는 C 언어를 기반으로 스몰토크의 객체 지향 기능을 결합하여 개발된 프로그래밍 언어이며, 애플의 macOS와 iOS 개발 환경에서 핵심 언어로 사용되었다.
  • GNUstep - 윈도 메이커
    윈도 메이커는 브라질 프로그래머 알프레두 코지마가 개발한 GNUstep용 윈도우 매니저로, NeXTSTEP의 GUI를 모방하며, 독(Dock) 기능을 제공하고, 작고 빠른 성능으로 다양한 리눅스 배포판에서 사용할 수 있다.
  • MacOS 개발 - 애플스크립트
    애플스크립트는 macOS에서 응용 프로그램 및 시스템 기능을 자동화하기 위해 애플이 개발한 영어와 유사한 구문의 스크립트 언어로서, 오픈 스크립팅 아키텍처를 통해 다양한 응용 프로그램과 상호 작용하며 스크립트 편집기를 통해 코드를 작성하고 실행한다.
  • MacOS 개발 - Mach-O
  • NeXT - 스티브 잡스
    스티브 잡스는 애플의 공동 창업자이자 CEO, 픽사의 CEO, 디즈니의 이사회 멤버로서, 혁신적인 기술과 디자인으로 정보기술 산업에 큰 영향을 미친 미국의 기업인이다.
  • NeXT - NeXTSTEP
    NeXTSTEP은 NeXT에서 개발한 마하 커널 기반의 유닉스 계열 운영 체제로, BSD 소스 코드를 포함하며 디스플레이 포스트스크립트, 독점적인 창 관리 엔진, Objective-C 언어 및 런타임 환경을 제공하고 현대적인 운영체제 인터페이스 발전에 기여하여 macOS의 기반이 되었으며 최초의 웹 브라우저와 앱 스토어 개발에 영향을 미쳤다.
번들 (macOS) - [IT 관련 정보]에 관한 문서
개요
유형디렉터리 번들
확장자.app, .framework, .kext, .plugin, .docset, .xpc, .qlgenerator, .component, .saver, .mdimporter 등
마임 유형application/xml
유니폼 타입 식별자com.apple.bundle
소유자애플
컨테이너실행 파일, 메타데이터, 다른 번들, 응용 프로그램을 실행하는 데 필요한 기타 파일
기술 정보
설명응용 프로그램 실행에 필요한 실행 파일, 메타데이터, 기타 번들 및 파일을 포함하는 디렉터리 번들 형식
정보 속성 목록plist

2. 애플리케이션 번들

애플리케이션 번들은 macOS 및 iOS 애플리케이션을 구성하는 핵심 요소로, `.app` 확장자로 끝난다. Finder에서는 하나의 실행 파일처럼 보인다.

NEXTSTEP/OPENSTEP에서 채용되었고, Classic Mac OS 9에서도 지원되었으나, 일부는 처리하지 못한다.

Finder는 패키지 내부에 배치된 속성 목록(XML)에 따라 패키지 아이콘과 정보를 할당하여, 패키지를 하나의 파일처럼 보이게 한다. 패키지의 최상위 폴더를 열면 그 안의 프로그램이 실행된다.

응용 소프트웨어 패키지화는 애플의 통합 개발 환경Xcode에 포함된 Package Maker (PackageMaker.app)를 사용하며, 확장자는 "pkg"이다.

2. 1. 구조

애플리케이션 번들은 디렉터리 계층 구조를 가지며, 최상위 디렉터리는 `.app` 확장자로 끝난다.

macOS 애플리케이션 번들에서 최상위 디렉터리 바로 아래의 첫 번째 디렉터리는 일반적으로 `Contents`라는 이름을 갖는다. `Contents` 안에는 `MacOS`라는 디렉터리가 있으며, 여기에는 응용 프로그램의 실행 코드가 들어 있다. `Contents` 폴더에는 소프트웨어 공급업체의 이름, 응용 프로그램 실행 파일과 아이콘을 포함하는 파일의 이름, 응용 프로그램의 버전, 요청된 권한 등과 같은 응용 프로그램 정보를 담고 있는 `Info.plist` 파일이 있다. 또한 `Contents` 폴더 안에는 응용 프로그램의 리소스를 담고 있는 `Resources`라는 디렉터리도 있다.[3]

`Resources` 폴더에는 응용 프로그램의 nib 파일의 현지화된 버전이 들어 있다.

다른 일반적인 하위 디렉터리로는 `Plugins`, `Frameworks`, `_CodeSignature`, `Shared Frameworks`가 있다. `Frameworks` 디렉터리에는 응용 프로그램에서 사용하는 프레임워크가 들어 있으며, 시스템에 다른 버전의 프레임워크가 있는 경우에도 사용된다. `Shared Frameworks` 디렉터리에는 이를 포함하는 응용 프로그램과 다른 응용 프로그램 모두에서 사용할 수 있는 프레임워크가 들어 있다. 시스템의 다른 곳에 최신 버전이 없는 경우에만 사용된다. `Plugins`에는 응용 프로그램에서 사용하는 확장 가능한 코드가 들어 있다. `_CodeSignature` 폴더에는 패키지가 신뢰할 수 있는 당사에서 시작되었고 변조되지 않았음을 확인하기 위해 시스템에서 사용하는 정보가 들어 있다.

기본적으로 Finder는 응용 프로그램 번들을 패키지라고도 하며, 기본 구조가 없는 불투명한 파일로 표시한다. 번들의 내용은 "패키지 내용 보기" 상황 메뉴 항목을 통해 표시할 수 있다.

GNUStep은 기본적으로 응용 프로그램 코드를 담고 있는 폴더의 이름을 응용 프로그램의 이름으로 사용한다. 대안은 코드가 대상인 컴퓨터 아키텍처와 OS로 이름을 지정하여 fat binary를 형성하는 것이므로, 응용 프로그램을 여러 플랫폼에서 열 수 있다.[4][5]

2. 2. GNUstep

GNUstep은 OPENSTEP 표준을 따르는 오픈 소스 개발 환경이다. GNUstep 애플리케이션 번들은 macOS와 유사한 구조를 가지지만, `MacOS` 디렉터리 대신 애플리케이션 이름으로 된 디렉터리에 실행 파일이 위치한다.[4][5]

3. 프레임워크 번들

macOS 프레임워크는 번들로 저장되며, 최상위 디렉터리는 `.framework` 확장자로 끝난다. 그 아래에는 `Versions` 디렉터리가 있는데, 여기에는 프레임워크의 한 버전 또는 여러 버전이 들어 있으며, 각 버전의 디렉터리 안에는 프레임워크의 동적 라이브러리 코드가 포함되어 있다. `Versions` 디렉터리에는 현재 버전을 가리키는 `Current` 디렉터리로의 심볼릭 링크도 포함되어 있다.[14]

3. 1. 구조

macOS 프레임워크는 번들로 저장된다.[6] 프레임워크 번들의 최상위 디렉터리는 프레임워크의 이름 뒤에 `.framework` 확장자가 붙은 이름을 갖는다. 최상위 디렉토리에는 `Versions` 디렉터리가 있으며, 이 디렉터리 안에는 프레임워크의 하나 이상의 버전에 대한 하위 디렉터리가 있다. 각 하위 디렉터리에는 프레임워크의 동적 라이브러리 코드가 포함되어 있으며, 파일 이름은 프레임워크의 이름과 같다. 또한 프레임워크의 헤더 파일이 들어 있는 `Headers` 폴더 및 `Resources`와 같은 다른 하위 폴더가 있을 수 있다. `Versions` 디렉터리에는 현재 프레임워크 버전에 대한 디렉터리를 가리키는 `Current` 심볼릭 링크도 포함되어 있다. 최상위 디렉토리에는 `Versions/Current`의 내용을 가리키는 심볼릭 링크가 있다.[7]

파인더는 프레임워크 번들을 불투명한 파일이 아닌 디렉터리로 표시한다.

3. 2. GNUstep

GNUstep은 프레임워크를 사용하지만, 일반적으로 번들로 저장하지 않는다. 이는 프레임워크 로딩의 전체 의미 체계가 다른 플랫폼에 너무 이질적인 것으로 간주되기 때문이다.[8]

4. 적재 가능한 번들

적재 가능한 번들은 런타임에 동적으로 불러올 수 있는 코드를 포함한다.[15][9] 이런 번들은 `.bundle` 확장자를 가지며, 대부분 플러그인으로 사용된다.[16][17]

macOS에서는 사파리[10], Apple Mail[11][12] 등의 애플리케이션에서 플러그인 기능을 구현하는 데 사용된다. 이는 번들을 지원하지 않는 응용 프로그램에도 번들을 로드할 수 있는 방법이 있기 때문이다. 이 기능은 NeXTSTEP에서 상속된 것으로, GNUstep에도 -[NSBundle principalClass]|-[NSBundle principalClass]영어 인터페이스가 있다.

기본적으로 Finder는 로드 가능한 번들을 패키지라고도 부르며, 내부 구조가 없는 불투명한 파일로 표시한다. 번들의 내용은 "패키지 내용 보기" 상황 메뉴 항목을 사용하여 표시할 수 있다.

5. 기타 번들

스크리브너 등 여러 macOS 소프트웨어들은 번들 포맷을 활용한다. 스크리브너.scriv, 캔디바는 .iContainer, 애퍼처.aplibrary, VMware Fusion은 .vmwarevm 확장자를 사용하는 등 macOS에는 자체적인 사용자 지정 번들 형식을 사용하는 많은 응용 프로그램이 있다. 그러나 윈도우에서는 이러한 번들 개념이 없기 때문에 디렉터리 형태로 저장된다.

6. .lproj 번들

`.lproj` 파일은 애플리케이션 번들에 포함되어 있으며, 소프트웨어국제화와 지역화 파일을 담고 있다. macOS의 언어 설정에 따라 해당 언어의 `.lproj` 폴더가 선택된다. 예를 들어, 한국어로 설정된 macOS에서는 `ko.lproj`가 선택되어 프로그램이 한글로 표시된다. 이 폴더들에는 보통 .nib 파일, 필요한 문자열 파일, 또는 이미지가 포함된다.

`.lproj` 파일은 OpenStep, macOS, 또는 GNUstep 소프트웨어의 현지화 파일을 포함하는 번들이다. 일반적으로 특정 언어에 대한 `.nib` 파일, 필요에 따라 `.strings` 파일 및 이미지(예: ReadMe 또는 라이선스 파일)를 포함한다. 이러한 현지화된 파일은 설치 패키지를 사용자 정의하기 위해 설치 프로그램 제작자가 사용하며, 응용 프로그램 번들에도 포함된다.

7. 다른 시스템


  • 마이크로소프트의 Windows 8용 애플리케이션(Windows 스토어 앱) 개발과 관련하여 애플리케이션 패키지라는 표기를 사용한다.
  • 유닉스 계열 패키지에 대해서는 패키지 관리 시스템에 자세히 설명되어 있다.
  • 독일 SAP의 ABAP 스택 시스템에서는 이송 대상 객체(프로그램)를 묶기 위해 패키지라는 개념을 사용한다.

참조

[1] 웹사이트 Information Property List - Bundle Resources https://developer.ap[...]
[2] 웹사이트 System-Declared Uniform Type Identifiers https://developer.ap[...] Apple Inc. 2012-06-10
[3] 웹사이트 Bundle Structures https://developer.ap[...] Apple Inc. 2017-03-27
[4] 웹사이트 PackagingDrafts/GNUstep https://fedoraprojec[...]
[5] 웹사이트 gnustep/tools-make: README.Packaging https://github.com/g[...] 2021-12-05
[6] 웹사이트 Framework https://developer.ap[...] 2020-10-06
[7] 웹사이트 Bundle Structures https://developer.ap[...] Apple Inc. 2017-03-27
[8] 웹사이트 User FAQ http://wiki.gnustep.[...]
[9] 문서 Code Loading Programming Topics for Cocoa: About Loadable Bundles https://developer.ap[...]
[10] 웹사이트 Pimp My Safari: plugins http://pimpmysafari.[...]
[11] 웹사이트 Apple Mail plug-ins and tools https://web.archive.[...] 2007-11-04
[12] 웹사이트 Hawk Wings — Plug-ins for Apple Mail http://hawkwings.net[...]
[13] 웹인용 System-Declared Uniform Type Identifiers http://developer.app[...] 애플 2017-02-16
[14] 웹인용 Anatomy of Framework Bundles http://developer.app[...] Apple Inc. 2011-09-03
[15] 웹인용 Code Loading Programming Topics for Cocoa: About Loadable Bundles https://web.archive.[...] 2007-11-04
[16] 웹인용 Apple Mail plug-ins and tools http://www.tikouka.n[...] 2017-02-16
[17] 웹인용 Hawk Wings — Plug-ins for Apple Mail https://web.archive.[...] 2007-11-04



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

문의하기 : help@durumis.com