

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AL2 인스턴스에서 소프트웨어 관리
<a name="managing-software"></a>

Amazon Linux의 기본 배포에는 기본적인 서버 작업에 필요한 소프트웨어 패키지 및 유틸리티가 포함되어 있습니다.

이 정보는 AL2에 적용됩니다. AL2023에 대한 자세한 내용은 Amazon Linux [2023 사용 설명서의 AL2023에서 패키지 및 운영 체제 업데이트 관리를](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) 참조하세요. ** 

소프트웨어를 최신 상태로 유지하는 것이 중요합니다. Linux 배포의 다양한 패키지가 버그 수정, 기능 추가 및 보안 취약점 해결을 위해 자주 업데이트됩니다. 자세한 내용은 [AL2 인스턴스에서 인스턴스 소프트웨어 업데이트](install-updates.md) 단원을 참조하십시오.

기본적으로 AL2 인스턴스는 다음 리포지토리가 활성화된 상태로 시작됩니다.
+ `amzn2-core`
+ `amzn2extra-docker`

에서 업데이트한 이러한 리포지토리에서 사용할 수 있는 패키지가 많지만 다른 리포지토리에 포함된 패키지를 설치할 AWS수 있습니다. 자세한 내용은 [AL2 인스턴스에 리포지토리 추가](add-repositories.md) 단원을 참조하십시오. 활성화된 리포지토리에서 패키지를 찾고 설치하는 방법은 [AL2 인스턴스에서 소프트웨어 패키지 찾기 및 설치](find-install-software.md)의 내용을 참조하세요.

리포지토리에 저장된 소프트웨어 패키지만 사용할 수 있는 것은 아닙니다. 일부 소프트웨어의 경우 인스턴스에서 소스 코드를 컴파일해야 합니다. 자세한 내용은 [AL2 인스턴스에서 소프트웨어 컴파일 준비](compile-software.md) 단원을 참조하십시오.

AL2 인스턴스는 yum 패키지 관리자를 사용하여 소프트웨어를 관리합니다. yum 패키지 관리자는 소프트웨어를 설치, 제거 및 업데이트하고 각 패키지의 모든 종속성을 관리할 수 있습니다.

**Topics**
+ [AL2 인스턴스에서 인스턴스 소프트웨어 업데이트](install-updates.md)
+ [AL2 인스턴스에 리포지토리 추가](add-repositories.md)
+ [AL2 인스턴스에서 소프트웨어 패키지 찾기 및 설치](find-install-software.md)
+ [AL2 인스턴스에서 소프트웨어 컴파일 준비](compile-software.md)

# AL2 인스턴스에서 인스턴스 소프트웨어 업데이트
<a name="install-updates"></a>

소프트웨어를 최신 상태로 유지하는 것이 중요합니다. Linux 배포의 패키지가 버그 수정, 기능 추가 및 보안 취약점 해결을 위해 자주 업데이트됩니다. 처음으로 Amazon Linux 인스턴스를 시작하여 연결하면 보안을 위해 소프트웨어 패키지를 업데이트하라는 메시지가 표시될 수 있습니다. 이 섹션에서는 전체 시스템 또는 단일 패키지를 업데이트하는 방법을 보여 줍니다.

이 정보는 AL2에 적용됩니다. AL2023에 대한 자세한 내용은 Amazon Linux [2023 사용 설명서의 AL2023에서 패키지 및 운영 체제 업데이트 관리를](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) 참조하세요. ** 

AL2의 변경 사항 및 업데이트에 대한 자세한 내용은 [AL2 릴리스 정보를](https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html) 참조하세요.

AL2023 관련 변경 내용 및 업데이트에 대한 자세한 내용은 [AL2023 릴리스 정보](https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html)를 참조하세요.

**중요**  
Amazon Linux 2 AMI를 사용하는 EC2 인스턴스를 IPv6 전용 서브넷으로 시작한 경우 인스턴스에 연결하고 `sudo amazon-linux-https disable`을 실행해야 합니다. 이렇게 하면 http patch 서비스를 사용하여 AL2 인스턴스를 IPv6을 통해 S3의 yum 리포지토리에 연결할 수 있습니다.

**AL2 인스턴스의 모든 패키지를 업데이트하려면**

1. (선택 사항) shell 창에서 **screen** 세션을 시작합니다. 경우에 따라 네트워크 장애로 인해 인스턴스에 대한 SSH 연결이 끊어질 수 있습니다. 오래 걸리는 소프트웨어 업데이트 중에 연결이 끊어진 경우 인스턴스가 복구 가능한 혼동 상태로 유지될 수 있습니다. 연결이 끊어진 경우에도 **screen** 세션을 통해 업데이트가 계속 실행되며, 이후에 아무런 문제 없이 세션에 다시 연결할 수 있습니다.

   1. **screen** 명령을 실행하여 세션을 시작합니다.

      ```
      [ec2-user ~]$ screen
      ```

   1. 세션의 연결이 끊어진 경우 인스턴스에 다시 로그인하고 사용 가능한 화면을 나열합니다.

      ```
      [ec2-user ~]$ screen -ls
      There is a screen on:
      	17793.pts-0.ip-12-34-56-78	(Detached)
      1 Socket in /var/run/screen/S-ec2-user.
      ```

   1. 이전 명령에서 확인한 프로세스 ID와 **screen -r** 명령을 사용하여 화면에 다시 연결합니다.

      ```
      [ec2-user ~]$ screen -r 17793
      ```

   1. **screen** 사용을 마쳤으면 **exit** 명령을 사용하여 세션을 닫습니다.

      ```
      [ec2-user ~]$ exit
      [screen is terminating]
      ```

1. **yum update** 명령을 실행합니다. `--security` 플래그를 추가하여 보안 업데이트만 적용할 수도 있습니다.

   ```
   [ec2-user ~]$ sudo yum update
   ```

1. 나열된 패키지를 검토하고, **y**를 입력하고, Enter 키를 눌러 업데이트를 수락합니다. 시스템의 모든 패키지를 업데이트하는 데 몇 분이 걸릴 수 있습니다. **yum** 출력은 실행 중인 업데이트의 상태를 보여줍니다.

1. (선택 사항) [인스턴스를 재부팅](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html)하여 업데이트의 최신 패키지와 라이브러리를 사용하고 있는지 확인합니다. 커널 업데이트는 재부팅이 발생할 때까지 로드되지 않습니다. `glibc` 라이브러리를 업데이트한 이후에도 항상 재부팅해야 합니다. 서비스를 제어하는 패키지를 업데이트할 경우 서비스를 다시 시작하여 업데이트를 선택하면 되지만, 시스템을 재부팅하면 이전의 모든 패키지 및 라이브러리 업데이트가 완료됩니다.

**AL2 인스턴스에서 단일 패키지를 업데이트하려면**

이 절차를 사용하여 전체 시스템이 아닌 단일 패키지와 해당 종속 패키지를 업데이트할 수 있습니다.

1. 업데이트할 패키지의 이름이 포함된 **yum update** 명령을 실행합니다.

   ```
   [ec2-user ~]$ sudo yum update openssl
   ```

1. 나열된 패키지 정보를 검토하고, **y**을 입력하고, Enter 키를 눌러 업데이트를 수락합니다. 해결되어야 하는 패키지 종속성이 있는 경우 둘 이상의 패키지가 나열될 수 있습니다. **yum** 출력은 실행 중인 업데이트의 상태를 보여줍니다.

1. (선택 사항) [인스턴스를 재부팅](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-reboot.html)하여 업데이트의 최신 패키지 및 라이브러리를 사용하고 있는지 확인합니다. 커널 업데이트는 재부팅이 발생할 때까지 로드되지 않습니다. `glibc` 라이브러리를 업데이트한 이후에도 항상 재부팅해야 합니다. 서비스를 제어하는 패키지를 업데이트할 경우 서비스를 다시 시작하여 업데이트를 선택하면 되지만, 시스템을 재부팅하면 이전의 모든 패키지 및 라이브러리 업데이트가 완료됩니다.

# AL2 인스턴스에 리포지토리 추가
<a name="add-repositories"></a>

이 정보는 AL2에 적용됩니다. AL2023에 대한 자세한 내용은 Amazon Linux 2023 사용 설명서의 [AL2023에서 버전이 지정된 리포지토리를 통한 결정적 업그레이드를](https://docs.aws.amazon.com/linux/al2023/ug/deterministic-upgrades.html) 참조하세요. ** 

기본적으로 AL2 인스턴스는 다음 리포지토리가 활성화된 상태로 시작됩니다.
+ `amzn2-core`
+ `amzn2extra-docker`

Amazon Web Services에서 업데이트하는 이러한 리포지토리의 다양한 패키지 이외에도 다른 리포지토리에 포함된 패키지를 설치할 수 있습니다.

**yum**이 아닌 다른 리포지토리의 패키지를 설치하려면 `/etc/yum.conf` 디렉터리의 `repository.repo` 파일 또는 자체 `/etc/yum.repos.d` 파일에 리포지토리 정보를 추가해야 합니다. 이 작업을 직접 수행할 수도 있지만, 대부분의 yum 리포지토리는 리포지토리 URL을 통해 자체 `repository.repo` 파일을 제공합니다.

**yum 리포지토리가 이미 설치되어 있는지 확인하려면**  
다음 명령을 사용하여 설치되어 있는 yum 리포지토리를 조회합니다.

```
[ec2-user ~]$ yum repolist all
```

명령 결과에 설치된 리포지토리가 출력되고 각 상태가 보고됩니다. 사용 가능한 리포지토리에는 해당 리포지토리에 포함된 패키지 수가 표시됩니다.

**/etc/yum.repos.d에 yum 리포지토리를 추가하려면 다음을 수행합니다.**

1. `.repo` 파일의 위치를 찾습니다. 위치는 추가할 리포지토리에 따라 다를 수 있습니다. 이 예시에서 `.repo` 파일은 `https://www.example.com/repository.repo`에 있습니다.

1. **yum-config-manager** 명령을 사용하여 리포지토리를 추가합니다.

   ```
   [ec2-user ~]$ sudo yum-config-manager --add-repo https://www.example.com/repository.repo
   Loaded plugins: priorities, update-motd, upgrade-helper
   adding repo from: https://www.example.com/repository.repo
   grabbing file https://www.example.com/repository.repo to /etc/yum.repos.d/repository.repo
   repository.repo                                      | 4.0 kB     00:00
   repo saved to /etc/yum.repos.d/repository.repo
   ```

리포지토리를 설치한 후 다음 절차에 따라 리포지토리를 활성화해야 합니다.

**/etc/yum.repos.d에 yum 리포지토리를 활성화하려면 다음을 수행합니다.**  
**yum-config-manager** 플래그와 함께 `--enable repository` 명령을 사용합니다. 다음 명령은 Fedora 프로젝트의 EPEL(Extra Packages for Enterprise Linux) 리포지토리를 활성화합니다. 이 리포지토리는 기본적으로 Amazon Linux AMI 인스턴스의 `/etc/yum.repos.d`에 있지만 활성화되지 않은 상태입니다.

```
[ec2-user ~]$ sudo yum-config-manager --enable epel
```

자세한 내용과이 패키지의 최신 버전을 다운로드하려면 [https://fedoraproject.org/wiki/EPEL](https://fedoraproject.org/wiki/EPEL) 참조하십시오.

# AL2 인스턴스에서 소프트웨어 패키지 찾기 및 설치
<a name="find-install-software"></a>

패키지 관리 도구를 사용하여 소프트웨어 패키지를 찾고 설치할 수 있습니다. Amazon Linux 2에서 기본 소프트웨어 패키지 관리 도구는 입니다YUM. AL2023에서 기본 소프트웨어 패키지 관리 도구는 DNF입니다. 자세한 내용은 Amazon Linux 2023 사용 설명서의 [패키지 관리 도구를](https://docs.aws.amazon.com/linux/al2023/ug/package-management.html) 참조하세요. ** 

## AL2 인스턴스에서 소프트웨어 패키지 찾기
<a name="find-software"></a>

**yum search** 명령을 사용하여 구성된 리포지토리에서 사용 가능한 패키지 설명을 검색할 수 있습니다. 이 기능은 설치할 패키지의 이름을 정확히 알지 못할 때 특히 유용합니다. 명령에 검색어를 덧붙이기만 하면 됩니다. 여러 단어를 검색하려는 경우 검색어를 따옴표로 묶습니다.

```
[ec2-user ~]$ yum search "find"
```

다음은 예제 출력입니다.

```
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
============================== N/S matched: find ===============================
findutils.x86_64 : The GNU versions of find utilities (find and xargs)
gedit-plugin-findinfiles.x86_64 : gedit findinfiles plugin
ocaml-findlib-devel.x86_64 : Development files for ocaml-findlib
perl-File-Find-Rule.noarch : Perl module implementing an alternative interface to File::Find
robotfindskitten.x86_64 : A game/zen simulation. You are robot. Your job is to find kitten.
mlocate.x86_64 : An utility for finding files by name
ocaml-findlib.x86_64 : Objective CAML package manager and build helper
perl-Devel-Cycle.noarch : Find memory cycles in objects
perl-Devel-EnforceEncapsulation.noarch : Find access violations to blessed objects
perl-File-Find-Rule-Perl.noarch : Common rules for searching for Perl things
perl-File-HomeDir.noarch : Find your home and other directories on any platform
perl-IPC-Cmd.noarch : Finding and running system commands made easy
perl-Perl-MinimumVersion.noarch : Find a minimum required version of perl for Perl code
texlive-xesearch.noarch : A string finder for XeTeX
valgrind.x86_64 : Tool for finding memory management bugs in programs
valgrind.i686 : Tool for finding memory management bugs in programs
```

여러 단어를 따옴표로 묶은 검색어를 사용하면 검색어와 정확히 일치하는 결과만 반환됩니다. 원하는 패키지가 검색되지 않은 경우 키워드를 하나만 사용하여 검색한 후 결과를 살펴봅니다. 뜻이 같은 키워드를 사용하여 검색 범위를 넓힐 수도 있습니다.

AL2용 패키지에 대한 자세한 내용은 다음을 참조하세요.
+ [AL2 Extras 라이브러리](al2-extras.md)
+ [패키지 리포지토리](ec2.md#package-repository)

## AL2 인스턴스에 소프트웨어 패키지 설치
<a name="install-software"></a>

AL2에서 yum 패키지 관리 도구는 활성화된 모든 리포지토리에서 서로 다른 소프트웨어 패키지를 검색하고 소프트웨어 설치 프로세스의 모든 종속성을 처리합니다. AL2023에 소프트웨어 패키지를 설치하는 방법에 대한 자세한 내용은 Amazon Linux 2023 사용 설명서의 [패키지 및 운영 체제 업데이트 관리를](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) 참조하세요. ** 

**리포지토리에서 패키지를 설치하려면**  
**yum install *package*** 명령을 사용하고 *package*를 설치할 소프트웨어의 이름으로 바꿉니다. 예를 들어 **links** 텍스트 기반 웹 브라우저를 설치하려면 다음 명령을 입력합니다.

```
[ec2-user ~]$ sudo yum install links
```

**다운로드한 RPM 패키지 파일을 설치하려면**  
**yum install**을 사용하여 인터넷에서 다운로드한 RPM 패키지 파일을 설치할 수도 있습니다. 이렇게 하려면 설치 명령에 리포지토리 패키지 이름 대신 RPM 파일의 경로 이름을 덧붙이면 됩니다.

```
[ec2-user ~]$ sudo yum install my-package.rpm
```

**설치된 패키지를 나열하려면**  
인스턴스에 설치된 패키지 목록을 확인하려면 다음 명령을 사용합니다.

```
[ec2-user ~]$ yum list installed
```

# AL2 인스턴스에서 소프트웨어 컴파일 준비
<a name="compile-software"></a>

인터넷에 있는 오픈 소스 소프트웨어 중에는 아직 컴파일되지 않은 상태로 패키지 리포지토리에서 다운로드 가능한 것도 있습니다. 또한 이후에 소스 코드로 직접 컴파일해야 하는 소프트웨어 패키지를 검색할 수도 있습니다. 시스템이 AL2 및 Amazon Linux에서 소프트웨어를 컴파일할 수 있으려면 , **make** **gcc**및와 같은 여러 개발 도구를 설치해야 합니다**autoconf**.

소프트웨어 컴파일은 모든 Amazon EC2 인스턴스에 필요한 작업은 아니기 때문에 이러한 도구는 기본적으로 설치되지 않고 "Development Tools"라는 패키지 그룹으로 제공됩니다. **yum groupinstall** 명령으로 인스턴스에 이 그룹을 손쉽게 추가할 수 있습니다.

```
[ec2-user ~]$ sudo yum groupinstall "Development Tools"
```

[https://github.com/](https://github.com/) 및 [http://sourceforge.net/](https://sourceforge.net/) 등의 웹 사이트에서 소프트웨어 소스 코드 패키지를 tarball이라는 압축된 아카이브 파일로 다운로드할 수 있는 경우가 많습니다. 이러한 tarball의 파일 확장명은 일반적으로 `.tar.gz`입니다. **tar** 명령으로 이러한 아카이브의 압축을 풀 수 있습니다.

```
[ec2-user ~]$ tar -xzf software.tar.gz
```

소스 코드 패키지의 압축을 풀고 아카이빙을 해제한 후에는 소스 코드 디렉터리의 `README` 또는 `INSTALL` 파일을 참조하여 자세한 소스 코드 컴파일 및 설치 방법을 확인해야 합니다.

**Amazon Linux 패키지의 소스 코드를 검색하려면**  
Amazon Web Services에서는 유지 관리되는 패키지의 소스 코드를 제공합니다. **yumdownloader --source** 명령을 사용하여 설치된 패키지의 소스 코드를 다운로드할 수 있습니다.

**yumdownloader --source *package*** 명령을 실행하여 *package*에 대한 소스 코드를 다운로드합니다. 예를 들어 `htop` 패키지의 소스 코드를 다운로드하려면 다음 명령을 입력합니다.

```
[ec2-user ~]$ yumdownloader --source htop

Loaded plugins: priorities, update-motd, upgrade-helper
Enabling amzn-updates-source repository
Enabling amzn-main-source repository
amzn-main-source                                                                                              | 1.9 kB  00:00:00     
amzn-updates-source                                                                                           | 1.9 kB  00:00:00     
(1/2): amzn-updates-source/latest/primary_db                                                                  |  52 kB  00:00:00     
(2/2): amzn-main-source/latest/primary_db                                                                     | 734 kB  00:00:00     
htop-1.0.1-2.3.amzn1.src.rpm
```

소스 RPM의 위치는 명령을 실행했던 디렉터리에 있습니다.