웹사이트 검색

FreeBSD 12에서 pkg 바이너리 패키지 관리자로 패키지를 관리하는 방법


이 페이지에서

  1. 전제 조건
  2. 포트 및 패키지
  3. FreeBSD 패키지 관리자 - pkg
  4. 패키지 검색 방법
  5. pkg로 새 패키지를 설치하는 방법\n
  6. 설치된 패키지에 대한 정보를 보는 방법\n
  7. 패키지 제거 방법
  8. 패키지를 잠그는 방법
  9. 패키지 저장소
  10. 명령
  11. 결론
  12. 링크

FreeBSD는 최신 서버, 데스크탑 및 임베디드 플랫폼을 지원하는 데 사용되는 오픈 소스 Unix와 유사한 운영 체제입니다. 대규모 커뮤니티에서 30년 이상 지속적으로 개발했습니다. 고급 네트워킹, 보안 및 스토리지 기능은 FreeBSD를 가장 바쁜 웹 사이트 및 가장 보편적인 임베디드 네트워킹 및 스토리지 장치를 위한 플랫폼으로 만들었습니다. Netflix, Yahoo!, WhatsApp, BBC, Sony와 같은 거인들은 어떤 형태로든 FreeBSD를 사용합니다. FreeBSD 시스템은 Linux만큼 널리 알려져 있지 않습니다. 주로 Linux가 데스크톱에 수년 동안 집중해 왔으며 FreeBSD 프로젝트가 서버 기반인 경향이 있기 때문입니다.

이 튜토리얼에서는 이 기사를 작성할 당시의 최신 버전인 FreeBSD 12 운영 체제에서 pkg를 통한 바이너리 패키지 관리에 대해 배웁니다. 대부분의 내용은 이전 FreeBSD 11 버전에도 적용됩니다.

전제 조건

  • FreeBSD 12 운영 체제
  • 루트 또는 sudo 계정에 대한 액세스\n

포트 및 패키지

FreeBSD 시스템에는 애드온 소프트웨어를 설치하는 두 가지 다른 방법이 있습니다. 대부분의 사용자가 설치하는 ports와 사전 구성된 패키지 소프트웨어 설치 및 관리를 선택합니다.

Ports는 FreeBSD에 추가 소프트웨어를 구축하기 위한 시스템입니다. Ports를 사용하면 소프트웨어 공급업체에서 제공하는 원시 소스 코드로 시작하여 필요한 방식으로 정확하게 소프트웨어를 구축하고 원하는 대로 기능을 활성화 및 비활성화할 수 있습니다.

패키지는 미리 컴파일된 소프트웨어이며 포트 관리자가 가장 다양한 사람들에게 가장 유용할 것이라고 생각하는 옵션을 사용하여 포트를 구축하고 쉽게 설치할 수 있도록 패키지로 묶은 결과입니다. 패키지를 사용하면 애드온 소프트웨어를 빠르게 설치, 제거 및 업그레이드할 수 있습니다. 대부분의 사용자가 사용하는 것입니다. FreeBSD 패키징 시스템은 package 또는 그냥 pkg라고 합니다. 패키지 정보는 패키지 데이터에 대해 쿼리할 수 있는 SQLite 데이터베이스에 저장됩니다.

FreeBSD 패키지 관리에 대한 또 다른 중요한 정보는 패키지 바이너리의 위치입니다. 패키지는 /usr/local 아래에 바이너리를 설치하고 대부분의 구성 파일은 /etc가 아닌 /usr/local/etc에 있습니다. Linux 세계에서 왔다면 이것이 매우 이례적이라는 것을 알 수 있습니다.

FreeBSD 패키지 관리자 - pkg

pkg는 기존 FreeBSD 패키지 관리 도구를 대체하는 차세대 도구로 바이너리 패키지를 더 빠르고 쉽게 처리할 수 있는 많은 기능을 제공합니다. pkg는 FreeBSD의 기본 시스템에 아직 포함되지 않은 소프트웨어를 설치하는 가장 쉬운 방법입니다. pkg는 많은 하위 명령이 있는 단일 프로그램입니다. 패키지 설치, 제거 및 조사와 같은 패키지에 대한 거의 모든 작업에 pkg를 사용합니다. 모든 패키지 작업 및 변경 사항은 root 또는 sudo를 통해 실행되어야 합니다.

다음은 FreeBSD에 acme.sh 패키지를 설치하는 방법입니다.

pkg install acme.sh

명령에 -y를 입력하여 이 작업을 진행하시겠습니까? [y/N]: 소프트웨어를 설치할 때 질문하거나 구성 파일에서 항상 -y를 가정하도록 pkg를 구성할 수 있습니다.

패키지를 제거하려면 다음을 사용합니다.

pkg delete acme.sh

사용 가능한 하위 명령에 대한 빠른 참조를 위해 pkg help를 사용하거나 특정 하위 명령에 대한 매뉴얼 페이지를 표시하려면 pkg help 명령을 사용하십시오.

pkg help pkg 
help install
pkg help delete

패키지 설치

FreeBSD의 기본 버전은 pkg 패키지 관리자가 설치된 상태로 제공되지 않습니다. 당신은 그것을 설치해야합니다. 패키지 pkg를 처음 설치하려고 하면 패키지 관리 도구를 설치하라는 메시지가 표시됩니다. 예를 들어, 새 FreeBSD에 설치하려는 첫 번째 패키지가 wget이라고 가정하면 터미널에 다음 프롬프트가 표시됩니다.

The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y

키보드에서 Y와 ENTER를 누르면 패키지 관리 도구 설치가 시작됩니다. 패키징 시스템이 준비되면 설치하려는 초기 소프트웨어 패키지(wget)가 설치됩니다.

다른 패키지를 추가하지 않고 pkg bootstrap을 실행하여 패키징 시스템을 자체적으로 설치할 수도 있지만 거의 사용되지 않으며 아마도 시스템 설정 스크립트에서만 사용할 수 있습니다. pkg는 자신과 다른 패키지를 설치하고 업데이트하는 방법을 알고 있습니다.

패키지 검색 방법

이제 패키지 관리자가 설치되었으므로 패키지를 설치할 수 있습니다. 시스템 관리자라면 운영 체제마다 동일한 소프트웨어의 패키지 버전에 서로 다른 이름을 할당한다는 사실을 잘 알고 있을 것입니다. 예를 들어 FreeBSD의 Apache 웹 서버용 패키지는 다른 Linux 배포판의 패키지 Apache와 완전히 다른 이름을 갖습니다. 따라서 무엇이든 설치하기 전에 설치하려는 패키지의 이름을 알아야 합니다.

사용 가능한 응용 프로그램의 FreeBSD 목록은 항상 증가하고 있습니다. FreeBSD 프로젝트는 공용 리포지토리에서 여러 패키지 세트를 제공하며 며칠마다 업데이트됩니다. 현재 25,000개가 넘는 패키지가 있습니다.

예를 들어 Apache 웹 서버를 검색해 보겠습니다.

pkg search apache 
# apache24-2.4.38 Version 2.4.x of Apache web server

이름에 apache가 포함된 모든 패키지를 찾습니다. 이렇게 하면 긴 목록이 반환되지만 원하는 것은 apache24 패키지입니다. 모든 패키지에 대한 간단한 설명이 있습니다. 설치할 패키지를 결정할 때 도움이 됩니다. 그러나 항상 간단하지는 않습니다.

일부 검색은 수백 개의 결과를 생성할 수 있습니다. 검색 결과를 자르거나 조정하려면 다른 명령줄 옵션을 사용해야 합니다. 일반 검색 옵션에 대한 자세한 내용은 pkg-search 매뉴얼 페이지 또는 도움말 페이지 pkg help search를 참조하십시오.

원하는 패키지인지 확실하지 않은 경우 다음 명령을 사용하여 패키지 세부 정보를 조회할 수 있습니다.

pkg search -R apache24

# name: "apache24"
# origin: "www/apache24"
# version: "2.4.38"
# comment: "Version 2.4.x of Apache web server"
# maintainer: ""
# www: "https://httpd.apache.org/"
# abi: "FreeBSD:12:amd64"
# arch: "freebsd:12:x86:64"
# prefix: "/usr/local"
# . . .
# . . .

이 명령은 패키지에 대한 많은 유용한 정보를 제공합니다.

pkg로 새 패키지를 설치하는 방법

소프트웨어를 설치하려면 pkgs install 하위 명령과 설치할 패키지의 이름을 사용하십시오.

pkg install apache24

pkg install로 패키지를 설치하면 pkg는 로컬 패키지 카탈로그를 참조한 다음 pkg.FreeBSD.org의 저장소에서 요청된 패키지를 다운로드합니다. . 패키지가 설치되면 /var/db/pkg/local.sqlite에 보관된 SQLite 데이터베이스에 등록됩니다. 이 파일을 삭제하지 않도록 주의하십시오. 그렇지 않으면 시스템이 설치된 패키지를 추적하지 못하게 됩니다. 소프트웨어에 종속성이 있는 경우 pkg는 이를 파악하고 기본 패키지와 함께 설치합니다. 종속성으로 설치된 패키지를 자동 패키지라고 합니다.

pkg에는 인터넷을 통해 패키지를 다운로드하고 디스크의 한 위치에 저장한 다음 나중에 설치할 수 있는 기능이 있습니다. pkg fetch 명령을 사용하여 패키지를 설치하지 않고 다운로드할 수 있습니다.

pkg fetch nginx 

이 명령은 종속 항목 없이 Nginx 패키지만 가져옵니다. -d 플래그를 사용하여 모든 종속성과 명명된 패키지를 가져올 수 있습니다.

pkg fetch -d nginx 

패키지는 패키지 캐시 디렉토리 /var/cache/pkg에 다운로드됩니다. 패키지를 가져온 후 pkg는 패키지를 이 디렉토리에 고정합니다. 파일을 나열하여 포함된 내용을 확인할 수 있습니다.

ls /var/cache/pkg 

이제 다운로드한 패키지를 가져온 후 설치하려면 pkg install을 정상적으로 실행합니다. 설치 프로세스는 다운로드한 파일이 아닌 캐시된 파일을 사용합니다.

시간이 지남에 따라 패키지 캐시 디렉토리가 커질 수 있습니다. pkg clean 명령은 새 버전으로 대체된 캐시된 패키지와 더 이상 저장소에 없는 패키지 파일을 제거합니다.

pkg clean 

캐시된 패키지를 모두 제거하려면 -a 플래그를 사용하십시오.

pkg clean -a 

패키지를 설치하거나 업그레이드할 때마다 패키지 캐시를 자동으로 정리하려면 pkg.conf 옵션 AUTOCLEANtrue로 설정하세요.

패키지 구성 방법

pkg 프로그램은 매우 유연하게 설계되었습니다. 각 하위 명령에는 다양한 옵션이 있습니다. /usr/local/etc/pkg.conf에 있는 pkg에 대한 시스템 전체 구성 파일을 사용하여 대부분의 프로그램에 대해 사용자 지정되었지만 일관된 동작을 설정할 수 있습니다.

pkg.conf 파일에는 pkg에 대한 주석 처리된 기본값이 포함되어 있습니다. 해당 파일을 읽는 것만으로도 pkg의 작동 방식에 대해 많은 것을 알 수 있습니다. 구성은 UCL(Universal Configuration Language)로 작성되었으며 주석 처리된 구성 옵션과 별칭이 많이 있습니다. 변수는 정수, 문자열 또는 부울 값으로 설정할 수 있습니다.

#PKG_DBDIR = "/var/db/pkg";
#PKG_CACHEDIR = "/var/cache/pkg";
#PORTSDIR = "/usr/ports";
#INDEXDIR = "";
#INDEXFILE = "INDEX-10";        # Autogenerated
#HANDLE_RC_SCRIPTS = false;
#DEFAULT_ALWAYS_YES = false;
#ASSUME_ALWAYS_YES = false;
. . .

pkg.conf에서 pkg 하위 명령에 대한 별칭을 정의할 수 있습니다. pkg.conf 하단에 ALIAS 섹션이 있습니다. 복잡한 명령을 반복적으로 실행하는 경우 별칭을 추가해야 합니다.

파일 형식 및 옵션에 대한 자세한 내용은 pkg.conf(5) 매뉴얼 페이지를 참조하십시오.

man pkg.conf

설치된 패키지에 대한 정보를 보는 방법

시스템에 설치한 패키지를 잊은 경우 pkg info 명령을 사용하여 설치된 소프트웨어의 전체 목록을 얻을 수 있습니다.

pkg info
# atk-2.28.1 GNOME accessibility toolkit (ATK)
# avahi-app-0.7_2 Service discovery on a local network
# ca_root_nss-3.42.1 Root certificate bundle from the Mozilla Project
# . . .
# . . .

설치된 패키지에 대한 자세한 정보를 보려면 pkg info 및 패키지 이름을 사용하십시오. 사람에게 친숙한 보고서에 패키지 설치 세부 정보가 표시됩니다.

pkg info nginx
# nginx-1.14.2_3,2
# Name : nginx
# Version : 1.14.2_3,2
# . . .
# . . .

소프트웨어 버전, 소프트웨어 설치 시간, 소프트웨어 라이선스, 컴파일 시간 플래그 등과 같은 많은 유용한 정보를 볼 수 있습니다. 자세한 내용은 pkg-info 매뉴얼 페이지를 참조하세요.

패키지 제거 방법

바이너리 패키지를 제거하거나 제거하려면 pkg delete 하위 명령을 사용하십시오. pkg remove로도 사용할 수 있습니다.

pkg delete nginx
# or
pkg remove nginx

제거할 패키지 목록과 여유 공간이 표시됩니다.

다른 패키지가 의존하는 패키지를 제거하면 pkg는 종속 패키지도 제거합니다.

패키지를 잠그는 방법

서버의 패키지를 업그레이드하지 않으려는 경우가 있을 수 있습니다. 패키지를 잠그면 pkg는 패키지를 업그레이드, 다운그레이드, 제거 또는 재설치하지 않습니다. 패키지의 종속성과 의존하는 프로그램에 동일한 규칙을 적용합니다.

pkg lock을 사용하여 패키지를 잠급니다.

pkg lock openssl 

openssl 패키지는 이제 잠겨 있습니다.

시스템에서 현재 잠긴 모든 패키지를 나열하려면 -l 플래그를 사용하십시오.

pkg lock -l 

잠금을 제거하려면 pkg unlock 명령을 사용하십시오.

pkg unlock openssl 

시스템의 모든 패키지를 한 번에 잠그거나 잠금 해제하려면 -a 플래그를 사용하십시오.

pkg lock -a
pkg unlock -a

패키지 저장소

pkg는 이름이 지정된 패키지 모음인 패키지 저장소를 지원합니다. 리포지토리를 추가, 제거, 활성화 및 비활성화할 수 있습니다. UCL 형식을 사용하여 자체 파일에서 각 리포지토리를 구성해야 합니다. 공식 FreeBSD 저장소는 /etc/pkg 디렉토리에 속합니다. FreeBSD는 "FreeBSD" 저장소가 활성화된 상태로 배송됩니다. /etc/pkg/FreeBSD.conf에서 구성 파일을 찾을 수 있습니다.

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}

필요에 따라 리포지토리를 추가하고 제거할 수 있습니다. /etc/pkg는 공식 FreeBSD 저장소용으로 예약되어 있으므로 다른 디렉토리가 필요합니다. 기존 위치는 /usr/local/etc/pkg/repos입니다. 다른 디렉토리를 사용하려면 REPO_DIRS 옵션을 사용하여 pkg.conf에 위치를 설정해야 합니다. 로컬 저장소 디렉토리는 기본적으로 존재하지 않으므로 mkdir -p /usr/local/etc/pkg/repos로 생성해야 합니다. 해당 디렉토리에 자신의 리포지토리 구성을 넣습니다.

pkg 명령 예

이 섹션에서는 FreeBSD 서버를 관리할 때 가장 많이 사용하게 될 가장 일반적으로 사용되는 일부 하위 명령을 나열합니다.

# Installs a package without asking any questions
pkg install -y package

# Makes a backup of the local package database
pkg backup

# Lists all installed packages
pkg info

# Shows extended information for a package
pkg info package

# Searches package repository
pkg search -i package

# Shows packages with known security vulnerabilities
pkg audit -F

# Shows which package owns the named file
pkg which file

# Removes unused packages
pkg autoremove

# Uninstalls a package
pkg delete package

# Removes cached packages from /var/cache/pkg
pkg clean -ay

# Updates local copy of the package catalog
pkg update

# Upgrades installed packages to their latest version
pkg upgrade

# Checks the integrity of all your packages
pkg check -saq

# Verifies that a package's files are unaltered
pkg check -s nginx

# Shows what files came with the package
pkg info -l nginx

# Lists non-automatic packages
pkg prime-list

결론

FreeBSD는 타사 소프트웨어 설치를 위한 두 가지 동반 기술을 구현합니다. 소스에서 설치하기 위한 FreeBSD Ports Collection과 미리 빌드된 바이너리에서 설치하기 위한 패키지입니다. 그러나 FreeBSD가 보다 단호하게 범용 패키지 관리로 시스템을 이동하고 있으므로 가능한 한 많이 pkg로 타사 소프트웨어를 관리해야 합니다. 원하는 소프트웨어에 패키지화된 버전이 없거나 컴파일 시간 옵션을 사용자 정의해야 하는 경우가 아니면 포트를 사용하지 마십시오.

연결

  • https://www.freebsd.org/doc/handbook/pkgng-intro.html