---
title: CachyOS FAQ 및 문제 해결 가이드
description: 자주 묻는 질문과 팁
tableOfContents:
  minHeadingLevel: 1
  maxHeadingLevel: 5
---

import ImageComponent from '~/components/image-component.astro';
import { Steps, Tabs, TabItem } from '@astrojs/starlight/components';

:::note
다음 질문과 답변은 CachyOS 및 Arch 기반 배포판에 적용됩니다.

**이 문서는 Arch Linux Wiki의 정보를 대체하기 위한 것이 아닙니다.**
:::

:::tip
패키지 또는 수동 개입이 필요한 업데이트와 관련된 알려진 문제는 CachyOS의 [Forum](https://discuss.cachyos.org/c/announcements/5), [공식 서브레딧](https://www.reddit.com/r/cachyos/)의 Reddit 게시물, 또는 [Discord #announcements](https://discord.com/channels/862292009423470592/873309651364610118) 및 [#updates-repo](https://discord.com/channels/862292009423470592/871739561364033566)의 공식 공지를 항상 확인하세요.
:::

## CachyOS에 문제 또는 버그를 보고하는 방법

:::danger
공식 출처에서 정보를 확인하지 않은 채 AI 모델(ChatGPT 등)이 제공한 도움말이나 명령어에 의존할 때는 주의하세요. AI 모델은 특히 기술적인 맥락에서 부정확하거나 오해를 부르는 정보를 제공할 수 있습니다. 항상 신뢰할 수 있는 문서나 커뮤니티 자료와 교차 확인하세요.

그렇지 않으면 시스템이 완전히 망가지거나 문제가 더 악화될 수 있습니다.
:::

:::tip
기억하세요. Linux 세계에는 이런 훌륭한 말이 있습니다. "대부분의 경우 누군가가 이미 같은 문제를 겪었습니다." 따라서 문제를 보고하기 전에 Google, Arch Wiki, CachyOS Forum/Discord에서 검색 기능을 사용해 주세요. 이미 해결된 문제일 수도 있습니다.
:::

:::tip
익숙하지 않은 명령어의 man 페이지를 간단히 요약해서 보려면 tldr 명령을 사용하는 것을 잊지 마세요. 예:

git에서 가장 자주 쓰이는 명령과 설명:
```bash
tldr git
```

특정 git 명령과 함께 tldr을 사용해 매개변수에 대한 더 자세한 정보를 볼 수도 있습니다. 예:
```bash
tldr git add
```
:::

### 보고할 수 있는 곳

- [Github](https://github.com/CachyOS/distribution)
- [Forum](https://discuss.cachyos.org/c/feedback/bugreports/10)
- **Discord:** [Support Forum](https://discord.com/channels/862292009423470592/1400865136373403708)
  - 새 게시물을 작성하기 전에 해당 채널에 고정된 [Support Guidelines & Information](https://discord.com/channels/862292009423470592/1402210965700739082)을 읽어 주세요.
    - 또는 문제가 빠르게 해결될 수 있다고 생각한다면 [#support channel](https://discord.com/channels/862292009423470592/862294383470051348)을 사용하세요.
- [Reddit](https://www.reddit.com/r/cachyos/)

### 인내심을 갖고 예의를 지켜 주세요

CachyOS 팀과 커뮤니티는 여가 시간을 활용해 이 작업을 하는 자원봉사자들입니다. 그들과 소통할 때는 인내심을 갖고 예의를 지켜 주세요. 고품질의 버그 보고서를 제공하는 것이 문제를 빠르게 해결하는 가장 좋은 방법입니다.

질문이 모호하거나 정보가 부족하면, 답변도 모호하게 돌아오거나 아예 답변을 받지 못할 수 있습니다.

예시는 다음과 같습니다.

- **좋은 질문:**
  - 최근 업데이트 이후(마지막 업데이트는 DATE), 시스템이 검은 화면과 함께 부팅에 실패합니다. NVIDIA GPU(모델명)를 사용 중입니다. `linux-cachyos` 패키지를 이전 버전으로 다운그레이드해 보았지만 문제가 계속됩니다. 라이브 환경에서 가져온 `journalctl -b -1` 및 `dmesg` 출력은 다음과 같습니다.
- **나쁜 질문 또는 모호한 질문:**
  - 시스템이 망가졌어요. 도와주세요.
  <details>
  <summary>그렇지 않으면 이 밈의 Abraham처럼 보이게 될 수도 있습니다:</summary>
   <ImageComponent imgsrc={import('~/assets/images/abraham-meme.jpg')} />
  </details>

### 문제 설명하기

스스로에게 다음과 같은 질문을 해 보세요.

- 무엇이 작동하지 않나요?
- X 패키지를 다운그레이드하면 문제가 해결되나요?
- 다른 사람들도 이 문제를 겪고 있나요 / 이전에 해결된 적이 있나요? (검색 기능 사용)
- 업데이트 이후 문제가 나타났나요?
- 직접 수정한 부분이 있나요?
  - 예: modprobe 파일에 추가 플래그를 넣은 경우
- 하드웨어 관련 문제인가요? (예: GPU, Wi-Fi)
- 소프트웨어 관련 문제인가요? (예: 특정 애플리케이션, 데스크톱 환경)
- 새로 설치한 상태인가요, 아니면 어느 정도 사용한 뒤 문제가 나타났나요?

## 로그를 수집하는 방법

시스템에서 로그를 수집하는 방법은 여러 가지가 있습니다. 사용할 수 있는 몇 가지 예시와 도구는 다음과 같습니다.

### 일반적인 버그 보고서 만들기
CachyOS는 시스템 로그를 수집하기 위한 훌륭한 도구인 `cachyos-bugreport.sh`를 제공합니다.
이 도구는 다음 로그를 수집합니다.
  - `dmesg`
  - `journalctl`
  - `inxi` (하드웨어 정보 수집용)

로그가 수집되면, 사용자는 이 로그를 CachyOS의 paste 웹사이트에 업로드할지 묻는 안내를 받게 됩니다.

이 스크립트를 실행하려면 터미널에 다음 명령어를 입력하고, 생성된 링크를 보고서에 공유하세요.
  ```sh
  sudo cachyos-bugreport.sh
  ```

### 시작되지 않는 프로그램의 로그 수집하기
그래픽 프로그램이 시작되지 않는 이유는 다양합니다. 이런 문제의 로그를 수집하는 가장 좋은 방법은 터미널에서 프로그램을 실행하는 것입니다. 이렇게 하면 문제 진단에 도움이 될 수 있는 오류 메시지나 출력을 확인할 수 있습니다.

예를 들어 Firefox가 완전히 시작되지 않는다면, 터미널에서 실행해 보고 오류 메시지를 확인하세요.
  ```sh
  firefox
  ```

:::tip
  공유하기 쉽도록 출력을 텍스트 파일로 저장하려면 다음과 같이 출력을 리디렉션할 수 있습니다.
    ```sh
    firefox &> firefox-log.txt
    ```
  프로그램 시작에 실패한 뒤에는 `CTRL + C`를 눌러 프로세스를 종료해야 터미널이 출력을 파일에 기록합니다.
:::

### pacman에서 최근 업데이트된 패키지 확인하기

시스템에서 가장 최근에 업데이트된 패키지 목록을 얻으려면 다음 명령을 사용할 수 있습니다.

```bash
grep "\[ALPM\] upgraded" /var/log/pacman.log | tail -n 50
```

:::tip
tail의 `-n` 매개변수를 조정해 더 많거나 더 적은 줄을 가져올 수 있습니다.
:::

### journalctl 및 dmesg에서 이동할 때 쓰는 키 바인딩

less 또는 사람이 읽기 쉬운 모드를 사용할 때 로그 사이를 이동하는 가장 일반적인 키 바인딩은 다음과 같습니다.

`ArrowUp & ArrowDown or J & K`를 사용해 한 줄씩 위아래로 스크롤합니다.

`PageUp & PageDown or Ctrl + B/D`를 사용해 한 페이지씩 위아래로 스크롤합니다.

`G or Home`을 사용해 로그의 시작 부분으로 이동합니다.

`Shift + G or End`를 사용해 로그의 끝으로 이동합니다.

### journalctl을 사용해 시스템 로그 수집하기

`journalctl` 명령은 시스템 로그를 보는 데 매우 유용한 도구입니다. 다음은 가장 일반적이고 유용한 명령 조합입니다.

#### 기본 사용법 및 일반적인 예시

:::tip
여러 옵션을 조합하면 더 구체적으로 필터링할 수 있습니다.
:::

<details>
<summary>전체 로그 보기(가장 오래된 항목부터 최신 항목까지):</summary>
```bash
journalctl
```
</details>

<details>
<summary>현재 부팅에서 생성된 로그만 보기:</summary>
```bash
journalctl -b
```
</details>

<details>
<summary>보안 및 인증 문제:</summary>
```bash
journalctl -u sshd -u polkit -b -0 | grep -i "fail\|error\|denied"
```
인증 실패 및 보안 정책 거부 항목을 확인하세요.
</details>

<details>
<summary>로그를 실시간으로 따라가기:</summary>
```bash
journalctl -f
```
:::tip
다른 필터와 함께 조합할 수 있습니다. 예:
```bash
# Following logs from Adguard Home service:
journalctl -u adguardhome -f
```
:::
</details>

<details>
<summary>현재 부팅의 오디오 문제:</summary>
```bash
journalctl --user -u pipewire -u pipewire-pulse -u wireplumber -b 0
```
소리 문제를 해결하기 위해 오디오 서비스 로그를 확인합니다.
</details>

<details>
<summary>메모리(RAM) 오류:</summary>
```bash
journalctl -k | grep -i "memory\|ram"
```
메모리 손상 또는 감지 문제를 확인하세요.
</details>

<details>
<summary>Bluetooth 문제:</summary>
```bash
# From the current boot:
journalctl -u bluetooth -b 0
journalctl -u bluetooth -b 0
# From the previous boot:
journalctl -u bluetooth -b -1
```
</details>

##### 시간 기준 필터링
<details>
<summary>최근 몇 분/몇 시간의 로그 보기:</summary>
```bash
journalctl --since "10 minutes ago"
journalctl --since "1 hour ago"
journalctl --since "2024-01-15 14:30:00"
```
</details>

<details>
<summary>특정 시간 범위의 로그 보기:</summary>
```bash
journalctl --since "09:00" --until "10:00"
```
</details>

##### 우선순위 및 서비스 또는 프로그램 기준 필터링

가능한 우선순위 수준은 `debug`, `info`, `notice`, `warning`, `err`, `crit`, `alert`, `emerg`입니다.

숫자로도 사용할 수 있습니다.

`0`은 `emerg`입니다.

`1`은 `alert`입니다.

`2`는 `crit`입니다.

`3`은 `err`입니다.

`4`는 `warning`입니다.

`5`는 `notice`입니다.

`6`은 `info`입니다.

그리고 `7`은 `debug`입니다.

<details>
<summary>오류, 치명적 오류, 긴급 메시지만 표시:</summary>
```bash
journalctl -p err..emerg
```
:::tip
이 옵션들은 앞선 예시와 함께 조합할 수 있습니다.

예:
```bash
journalctl -p err..emerg --since "9:00" --until "10:00"
```
:::
</details>

<details>
<summary>특정 시스템 서비스의 로그 표시:</summary>
```bash title='Examples'
# View logs from the NetworkManager service:
journalctl -u NetworkManager
# View logs from the GDM (GNOME Display Manager) service:
journalctl -u gdm
# View logs from the SDDM (Simple Desktop Display Manager) service:
journalctl -u sddm
```
</details>

<details>
<summary>특정 프로세스 ID(PID)의 로그 표시:</summary>
```bash
journalctl _PID=pid
# Example:
journalctl _PID=3344
```
</details>

<details>
<summary>특정 실행 파일의 로그 표시:</summary>
```bash
journalctl path/to/executable
# Example:
journalctl /usr/bin/firefox
```
</details>

### journalctl을 사용해 커널 메시지 확인하기

:::note
`journalctl -k`와 `dmesg`를 언제 사용해야 하나요?

- `journalctl -k`는 systemd journal에 저장된 커널 메시지에 접근합니다. 설정되어 있다면 재부팅 후에도 유지되며, 시간 기반 필터링과 journal 기능과의 통합이 더 좋습니다.
- `dmesg`는 현재 커널 링 버퍼를 읽습니다. 이 버퍼는 휘발성이며 재부팅하면 사라집니다.
:::

<details>
<summary>기본 커널 메시지 보기:</summary>
```bash
journalctl -k
```
journal 관점에서 모든 커널 메시지를 표시하며, `dmesg`와 유사합니다.
</details>

<details>
<summary>현재 부팅의 커널 메시지만 보기:</summary>
```bash
journalctl -k -b 0
```
현재 부팅 세션의 커널 메시지만 표시합니다.
</details>

<details>
<summary>이전 부팅의 커널 메시지:</summary>
```bash
journalctl -k -b -1
```
이전 부팅의 커널 메시지를 봅니다. 부팅 실패 또는 충돌을 진단하는 데 유용합니다.
</details>

<details>
<summary>새 커널 메시지를 실시간으로 따라가기:</summary>
```bash
journalctl -k -f
```
커널 메시지가 발생하는 즉시 확인합니다. 하드웨어 이벤트 또는 드라이버 로딩을 모니터링하는 데 좋습니다.
</details>

<details>
<summary>특정 드라이버 메시지 검색:</summary>
```bash
# Examples:
# GPU related messages:
journalctl -k | grep -i "nvidia\|amd\|intel"
# USB device messages:
journalctl -k | grep -i "usb\|pci"
```
</details>

<details>
<summary>시간 기준 커널 메시지 필터링:</summary>
```bash
journalctl -k --since "1 hour ago"
journalctl -k --since "09:00" --until "10:00"
```
특정 기간의 커널 메시지를 봅니다.
</details>

### dmesg를 사용해 커널 메시지 확인하기

`dmesg` 명령은 커널 링 버퍼를 표시합니다. 이 버퍼에는 하드웨어 감지, 드라이버 초기화, 시스템 이벤트에 관한 커널 메시지가 들어 있습니다.

#### 기본 사용법 및 형식

<details>
<summary>전체 커널 메시지 버퍼 보기:</summary>
```bash
dmesg
```
</details>

<details>
<summary>사람이 읽기 쉬운 타임스탬프로 보기:</summary>
```bash
dmesg -T
```
</details>

<details>
<summary>읽기 쉽게 pager에서 보기:</summary>
```bash
dmesg | less
```
</details>

#### 우선순위 수준으로 필터링

journalctl과 비슷하게, dmesg도 우선순위 수준에 따라 메시지를 필터링할 수 있습니다.

<details>
<summary>오류 및 치명적 메시지만 표시:</summary>
```bash
dmesg -l err,crit,alert,emerg
```
가능한 우선순위 수준은 `debug`, `info`, `notice`, `warning`, `err`, `crit`, `alert`, `emerg`입니다.

숫자로도 사용할 수 있습니다.

`0`은 `emerg`입니다.

`1`은 `alert`입니다.

`2`는 `crit`입니다.

`3`은 `err`입니다.

`4`는 `warning`입니다.

`5`는 `notice`입니다.

`6`은 `info`입니다.

그리고 `7`은 `debug`입니다.
</details>

<details>
<summary>가장 최근 커널 메시지 보기:</summary>
```bash
dmesg -w
```
</details>

<details>
<summary>특정 하드웨어 또는 드라이버 메시지 검색:</summary>
```bash
# Examples:
# To search for USB related messages:
dmesg | grep -i usb | less
# Bluetooth devices:
dmesg | grep -i bluetooth
# NVIDIA related:
dmesg | grep -i nvidia | less
# Devices failing to initialize:
dmesg | grep -i "error\|failed" | less
```
</details>

##### dmesg를 사용하는 특정 문제의 일반적인 예시

<details>
<summary>USB 장치가 인식되지 않을 때:</summary>
```bash
dmesg -w | grep -i usb
```
그런 다음 장치를 연결하고 새 메시지가 나타나는지 확인하세요.
</details>

<details>
<summary>GPU 초기화 문제:</summary>
```bash
dmesg | grep -i "nvidia\|amd\|intel\|radeon\|drm\|gpu" | less
```
</details>

<details>
<summary>Wi-Fi 또는 네트워크 어댑터 문제:</summary>
```bash
dmesg | grep -i "wlan\|wifi\|network\|firmware" | tail -20
```
무선 카드가 작동하지 못하게 하는 누락된 펌웨어 로드 또는 드라이버 오류를 확인하세요.
</details>

<details>
<summary>HDD/SSD 감지 문제:</summary>
```bash
dmesg | grep -i "sda\|sdb\|nvme\|scsi\|disk" | head -30
```
저장 장치가 감지되지 않거나 부팅 중 오류를 표시할 때 사용하세요.
</details>

<details>
<summary>시스템 멈춤 또는 커널 패닉:</summary>
```bash
dmesg -T -l emerg,alert,crit,err | tail -30
```
시스템 충돌 또는 멈춤 전에 발생한 가장 심각한 커널 메시지를 확인하세요.
</details>

<details>
<summary>메모리(RAM) 오류:</summary>
```bash
dmesg | grep -i "memory\|ram"
```
메모리 손상, 감지 문제 또는 ECC 오류 보고를 확인하세요.
</details>

<details>
<summary>오디오 장치 이벤트:</summary>
```bash
dmesg | grep -i "audio\|snd\|hda" | grep -i "error\|fail\|card"
```
사운드 카드가 제대로 감지되는지, 드라이버가 올바르게 로딩되는지 확인하세요.
</details>

<details>
<summary>커널 모듈 로딩 실패:</summary>
```bash
dmesg | grep -i "module\|init" | grep -i "error\|fail"
```
특정 하드웨어 드라이버가 로딩되지 않거나 초기화에 실패할 때 사용합니다.
</details>

<details>
<summary>하드웨어 이벤트 실시간 모니터링:</summary>
```bash
dmesg -w -l warn,err,crit,alert,emerg -T
```
문제를 재현하는 동안 새롭고 중요한 커널 메시지를 계속 확인합니다.
</details>

<details>
<summary>BIOS/UEFI 및 펌웨어 문제:</summary>
```bash
dmesg | grep -i "bios\|uefi\|firmware\|efi"
```
하드웨어 펌웨어와 Linux 커널 사이의 호환성 문제를 확인하세요.
</details>

## 설치 및 라이브 환경

### CachyOS 라이브 ISO에는 왜 KDE Plasma만 포함되어 있나요?

우리는 개발 및 유지보수 노력을 KDE Plasma 데스크톱 환경에만 집중하기로 했습니다. 이를 통해 라이브 ISO에서 더 다듬어지고 안정적이며 일관된 사용자 경험을 제공할 수 있습니다.

라이브 환경은 주로 CachyOS 설치 또는 시스템 복구를 위한 cachy-chroot 사용을 목적으로 합니다. 다른 데스크톱 환경이나 창 관리자를 안전하게 **테스트**하려면 가상 머신(VM)에서 시도해 볼 것을 강력히 권장합니다.

### "Launch Installer"를 클릭한 뒤 설치 프로그램이 시작되기까지 왜 오래 걸리나요?

:::caution
활성화되어 실행 중인 인터넷 연결이 있는지 확인하세요. 그렇지 않으면 이 버튼을 눌러도 아무 일도 일어나지 않습니다.
:::

설치 프로그램은 멈춘 것이 아닙니다. 설치를 위해 시스템을 준비하는 데 필요한 백그라운드 스크립트를 실행하고 있습니다. 이 과정은 시스템의 keyring과 시계를 최신 상태로 유지하여 일반적인 설치 문제를 예방하는 데 도움이 됩니다.

이 스크립트가 무엇을 하는지 더 잘 이해하려면 [GitHub에서 스크립트 보기](https://github.com/CachyOS/CachyOS-Live-ISO/blob/master/archiso/airootfs/usr/local/bin/calamares-online.sh)를 확인하세요.
<Steps>
  1. 오래된 keyring 파일을 제거합니다.
  2. Arch Linux 및 CachyOS keyring 패키지를 최신 버전으로 업데이트합니다.
  3. pacman keyring을 초기화하고 채웁니다.
  4. 네트워크 시간 동기화를 활성화합니다.
  5. 시스템 부팅 유형(UEFI 또는 BIOS/MBR)을 확인하여 유형에 따라 사용자가 부트로더를 선택하도록 안내합니다.
</Steps>

### 설치가 왜 33%에서 멈추나요?

설치 프로그램이 패키지를 다운로드하는 데 어려움을 겪을 때 이런 일이 발생합니다. 보통 매우 느리거나 불안정한 인터넷 연결의 징후입니다. 네트워크 연결을 확인한 뒤 다시 시도해 주세요.

## 부트로더 복구

:::note
`/boot` 파티션이 삭제된 경우, 5단계부터 해당 [파티션 구성](/installation/installation_on_root#uefigpt)에 따라 새로 만들어 주세요.
:::

### 부트로더 복구 단계

:::tip
`cachy-chroot` 사용법이 확실하지 않다면 먼저 [CachyOS chroot Helper](/features/cachy_chroot) 문서를 참고하세요.
:::

<Steps>
    1. CachyOS Live ISO로 부팅합니다.
    2. 터미널을 열고 `cachy-chroot` 명령을 사용해 설치된 시스템에 chroot로 진입합니다.

        ```bash
        sudo cachy-chroot
        ```
        시스템이 CachyOS의 BTRFS 프리셋을 사용 중이라면 프롬프트에서 `y`라고 입력하세요.
         ```bash title='Example'
         Do you want to use CachyOS BTRFS preset to auto mount root subvolume? y
         Do you want to mount additional partitions? · yes
         Enter the mount point for additional partition (e.g. /boot) type 'skip' to cancel:
         # Type /boot for systemd-boot, Limine or rEFInd
         # Type /boot/efi for GRUB
         ```
    3. 설치된 부트로더와 시스템 유형(UEFI 또는 MBR/BIOS)에 따라 아래 지침을 따릅니다.
        <Tabs>
            <TabItem label='GRUB'>
                다음 명령으로 GRUB을 다시 설치합니다.
                <Tabs>
                    <TabItem label='UEFI'>
                        ```bash
                        sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=cachyos
                        ```
                    </TabItem>
                    <TabItem label='MBR/BIOS'>
                        ```bash
                        sudo grub-install --target=i386-pc /dev/sdX # Replace sdX with your disk, e.g., sda
                        ```
                    </TabItem>
                </Tabs>
            </TabItem>
            <TabItem label='systemd-boot (UEFI only)'>
                다음 명령으로 systemd-boot를 다시 설치합니다.
                ```bash
                sudo bootctl install
                ```
            </TabItem>
            <TabItem label='Limine'>
                다음 명령으로 Limine을 다시 설치합니다.
                <Tabs>
                    <TabItem label='UEFI'>
                        ```bash
                        sudo limine-install
                        ```
                    </TabItem>
                    <TabItem label='MBR/BIOS'>
                        ```bash
                        sudo limine bios-install /dev/sdX # Replace sdX with your disk e.g. sda
                        ```
                    </TabItem>
                </Tabs>
            </TabItem>
            <TabItem label='rEFInd (UEFI only)'>
                다음 명령으로 rEFInd를 다시 설치합니다.
                ```bash
                sudo refind-install
                ```
            </TabItem>
        </Tabs>
    4. CachyOS 커널을 다시 설치합니다.
        ```bash
        sudo pacman -Syu linux-cachyos linux-cachyos-headers
        ```
    5. cachy-chroot에서 나옵니다.
        ```bash
        exit
        ```
    6. 시스템을 재부팅합니다.
</Steps>

## 패키지 관리 및 업데이트

### Pacman 문제 해결

#### error: signature is invalid

이 오류는 패키지의 암호화 서명에 문제가 있음을 나타냅니다. 보통 오래된 미러 또는 시스템의 손상된 keyring 때문에 발생합니다.

미러는 잠시 후 스스로 복구되는 경우가 많지만, 문제가 계속된다면 아래 두 가지 해결책 중 하나를 시도해 보세요.

<Tabs>

<TabItem label='첫 번째 해결책: Pacman 미러 다시 동기화'>

```sh
sudo pacman -Syu
```

</TabItem>

<TabItem label='두 번째 해결책: 미러 평가하기'>

```sh title='Rate your mirrors'
sudo cachyos-rate-mirrors
```

</TabItem>

<TabItem label='세 번째 해결책: Keyring 초기화'>

미러 평가가 효과가 없다면 시스템의 keyring이 손상되었을 가능성이 큽니다.

- CachyOS Hello를 열고 **Troubleshooting**로 이동합니다.
- Reset keyrings 버튼을 클릭합니다.

</TabItem>

</Tabs>

#### error: 404 Not Found

이 오류는 설치하려는 패키지가 현재 미러에서 사용할 수 없다는 뜻입니다. 보통 로컬 패키지 데이터베이스가 원격 저장소와 동기화되지 않았을 때 발생합니다.

**해결책:**

다음 명령을 실행해 패키지 데이터베이스를 새로고침하고 전체 시스템 업그레이드를 수행하세요. 이렇게 하면 시스템이 최신 사용 가능 패키지를 인식하게 됩니다.

```sh
sudo pacman -Syu
# Then try to install the package you want again.
```

#### error: could not remove

이 오류는 pacman 캐시에 시스템이 자동으로 관리할 수 없는 파일이 포함되어 있을 때 발생합니다. 쉽게 해결할 수 있는 일반적인 문제입니다.

- 해결책 1: CachyOS Hello 사용.
  - 가장 간단한 해결 방법은 CachyOS Hello를 사용하는 것입니다. 이를 열고 **Troubleshooting**로 이동한 다음 **Clear package cache** 버튼을 클릭하세요.

- 해결책 2: 캐시를 수동으로 제거.
  - 다음 명령을 실행해 캐시에서 모든 고아 패키지를 제거합니다.
  ```sh
  sudo rm -r /var/cache/pacman/pkg/*
  ```

#### error: File is corrupted (invalid or corrupted package (PGP signature))

```sh
# Example:
:: File /var/cache/pacman/pkg/python-charset-normalizer-3.4.0-1-any.pkg.tar.zst
is corrupted (invalid or corrupted package (PGP signature)).
```

이 오류는 일반적으로 패키지의 진위를 확인하는 시스템의 pacman keyring에 문제가 있음을 나타냅니다. 다음 명령은 문제 해결을 위해 keyring을 초기화하고 다시 채웁니다.

```sh
sudo rm -rf /etc/pacman.d/gnupg/
sudo pacman-key --init
sudo pacman-key --populate

sudo pacman-key --recv-keys F3B607488DB35A47 --keyserver keyserver.ubuntu.com
sudo pacman-key --lsign-key F3B607488DB35A47

sudo rm -R /var/lib/pacman/sync
```

위 방법이 실패한다면 keyring이 문제가 아닙니다. 미러에 문제가 있을 수 있으므로, 작동하는 미러를 선택한 뒤 다음 명령을 실행해 캐시를 비우세요.

```sh
sudo cachyos-rate-mirrors
sudo pacman -Scc
```

#### error: unable to lock database

이 오류는 다른 pacman 프로세스가 이미 실행 중이어서 데이터베이스 손상을 방지하기 위해 데이터베이스를 잠갔을 때 발생합니다. 이전 프로세스가 충돌했거나 중단되었다면 잠금 파일 `db.lck`가 제거되지 않았을 수 있습니다.

- 해결책 1: CachyOS Hello 사용
  - 가장 간단한 해결 방법은 CachyOS Hello의 **Troubleshooting** 탭에 있는 **Remove db lock** 기능을 사용하는 것입니다.

- 해결책 2: 잠금 파일을 수동으로 제거
  - CachyOS Hello를 사용하지 않으려면 잠금 파일을 수동으로 제거할 수 있습니다.

```sh
sudo rm /var/lib/pacman/db.lck
```

#### error: failed retrieving file ... Connection timed out

다음과 같은 오류를 볼 수 있습니다.

```text
# Example errors:
error: failed retrieving file '...' from ... : Connection timed out
error: failed retrieving file '...' from ... : Couldn't resolve host name
error: failed retrieving file '...' from ... : The requested URL returned error: 526
```

이 오류는 거의 항상 현재 미러에 문제가 있음을 나타냅니다. 미러가 느리거나, 일시적으로 다운되었거나, 사용자의 위치에서 접근할 수 없을 수 있습니다.

- 해결책: 이를 해결하는 가장 좋은 방법은 더 빠르고 안정적인 미러로 미러 목록을 업데이트하는 것입니다.

```sh
sudo cachyos-rate-mirrors
# Afterwards, you can update your system with:
sudo pacman -Syu
```

:::tip
`cachyos-rate-mirrors` 명령은 속도와 동기화 상태를 기준으로 사용 가능한 CachyOS 미러를 테스트한 다음, 가장 성능이 좋은 미러로 미러 목록 파일(`/etc/pacman.d/cachyos-mirrorlist`)을 업데이트합니다.

시스템 업데이트 중 속도 저하가 느껴진다면 특히 주기적으로 실행하는 것을 고려하세요.
:::

#### warning: local is newer than...

이 경고는 시스템의 패키지 버전이 공식 저장소에서 제공되는 버전보다 최신일 때 표시됩니다. 미러가 오래되었거나, 저장소에서 패키지가 다운그레이드되었거나, 다른 출처에서 패키지를 설치한 경우 발생할 수 있습니다.

- 해결책: `pacman -Syuu` 명령은 전체 시스템 업그레이드를 수행하고 다운그레이드도 허용합니다. 이를 통해 로컬 패키지를 저장소 버전과 동기화하여 경고를 해결합니다.

```sh title='To remove these warnings, execute the following command:'
sudo pacman -Syuu
```

#### error: failed to commit transaction (conflicting files)

이 오류는 pacman이 설치 또는 업데이트하려는 패키지에 이미 시스템에 다른 출처로 존재하는 파일이 포함되어 있음을 나타냅니다. 이는 시스템 손상을 방지하기 위한 내장 안전 기능입니다.

- 해결책: 충돌하는 파일을 수동으로 제거하여 이 문제를 해결할 수 있습니다. 자세한 정보와 해결책은 [Arch Wiki](https://wiki.archlinux.org/title/Pacman#%22Failed_to_commit_transaction_(conflicting_files)%22_error)를 참고하세요.

```sh title='Example'
error: failed to commit transaction (conflicting files)
nvidia-utils: /usr/lib/environment.d/10-gsk.conf exists in filesystem
Errors occurred, no packages were upgraded.
 -> error installing repo packages
```

이 특정 예시를 해결하려면 충돌하는 파일을 제거한 다음 업데이트 명령을 다시 실행하면 됩니다.

```sh
sudo rm /usr/lib/environment.d/10-gsk.conf
```

#### ERROR: module not found: 'nvidia', 'nvidia_modeset', ...

```sh title='Example'
==> ERROR: module not found: 'nvidia'
==> ERROR: module not found: 'nvidia_modeset'
==> ERROR: module not found: 'nvidia_uvm'
==> ERROR: module not found: 'nvidia_drm'
```

**이 오류가 발생하는 두 가지 이유:**

1) chwd에서는 Early Module Loading이 항상 활성화되어 있으므로 mkinitcpio는 NVIDIA 모듈이 존재한다고 계속 기대합니다. 이 오류는 해당 모듈이 없을 때 발생합니다.

2) 시스템에 설치된 다른 커널에 필요한 NVIDIA 모듈이 없을 수 있습니다.

```sh title='Install the following package to fix this error'
sudo pacman -S nvidia
```

### 특정 소프트웨어 문제

#### Discord가 저장소에 없는 업데이트를 요구합니다.

<br />
<ImageComponent imgsrc={import('~/assets/images/discord-update.png')} />

이는 Discord가 자체 업데이트 시스템을 사용하며, 이 시스템이 공식 저장소보다 앞서가기 때문에 발생합니다. 앱의 새 버전이 출시되었지만 아직 CachyOS 미러용으로 패키징되지 않은 상태입니다.

이 문제를 우회하려면 [Arch Wiki의 수정 가이드](<https://wiki.archlinux.org/title/Discord#Discord_asks_for_an_update_not_yet_available_in_the_repository>)를 따르세요.

### 일반 질문

#### 최근 시스템 부팅 시간이 오래 걸립니다

이 문제는 여러 가지 원인으로 발생할 수 있습니다. 먼저 기본적인 부분부터 확인하기 위해 systemd-analyze로 시스템이 어디에서 지연되는지 살펴보겠습니다.

터미널을 열고 다음 두 명령 중 하나를 실행하세요.

```sh
systemd-analyze blame
```

또는:

```sh
systemd-analyze critical-chain
```

출력에서 `cachyos-rate-mirrors.service` 실행에 시간이 오래 걸린다고 표시된다면, 부팅 시 이 서비스가 실행되지 않도록 다음 명령으로 마스킹하세요.

```sh
systemctl mask cachyos-rate-mirrors
systemctl mask cachyos-rate-mirrors.timer
```

#### CachyOS의 기원은 무엇이며 왜 "CachyOS"라는 이름이 붙었나요?

CachyOS는 Linux 커널용 CPU 스케줄러인 [cacULE scheduler](https://github.com/hamadmarri/cacule-cpu-scheduler)의 원래 이름이었던 "Cachy" 스케줄러에서 이름을 따왔습니다.

이 프로젝트는 2020~2021년에 CachyOS 창립자 중 한 명인 ptr1337이 Hamad라는 개발자와 함께 cacULE 스케줄러를 테스트하고 협업하던 때 시작되었습니다. 이후 이들이 x86-64-v3 최적화 패키지를 갖춘 Arch Linux 기반의 최적화 Linux 배포판을 만들기로 결정했을 때,
그들을 연결해 준 스케줄러의 이름을 따서 "CachyOS"라고 이름 붙였습니다.

#### -git 패키지는 어떤 주기로 업데이트되나요?

보통 월요일에 한 번 업데이트되지만 예외가 있을 수 있습니다.

#### CachyOS 저장소의 -bin 패키지도 동일한 성능 최적화 혜택을 받나요?

아니요. `-bin` 패키지는 미리 컴파일된 바이너리이며, CachyOS 저장소의 소스 기반 패키지와 동일한 성능 최적화를 포함하지 않습니다.

#### 부팅 로딩 애니메이션(Plymouth)을 비활성화하는 방법

:::note[일부 시스템, 특히 오래된 NVIDIA GPU가 있는 시스템에서 검은 화면 문제를 해결할 수 있습니다.]
:::

부팅 로딩 애니메이션을 비활성화하려면 [부트로더 설정](/configuration/boot_manager_configuration)을 편집하고 다음 커널 매개변수를 추가해야 합니다.

```sh
plymouth.enable=0 disablehooks=plymouth
```

:::note[systemd-boot, GRUB, Limine은 initramfs 이미지 재생성이 필요합니다]
systemd-boot: `sudo sdboot-manage gen`

GRUB: `sudo grub-mkconfig -o /boot/grub/grub.cfg`

Limine: `sudo limine-mkinitcpio`
:::

#### CachyOS에 패키지 요청 제출하기

CachyOS는 일반적으로 많이 사용되는 사전 컴파일된 AUR 패키지의 광범위한 목록을 제공합니다.
사용자는 AUR 패키지 요청을 만들 수 있으며, 승인되면 빌드 서버가 해당 패키지를 자동으로 업데이트합니다.

패키지 추가를 원한다면 GitHub 또는 포럼에서 요청을 제출할 수 있습니다.

- [GitHub](https://github.com/CachyOS/distribution/issues)
- [Forum](https://discuss.cachyos.org/c/feedback/repository/11)
- [Discord feedback channel](https://discord.com/channels/862292009423470592/1150723027986813018)

## 보안 및 모범 사례

### AUR 안전 사용법

AUR은 방대한 선택지를 제공하지만, 보안이 가장 중요합니다. 다음은 CachyOS 시스템에서 AUR을 안전하게 사용하기 위한 간단한 가이드입니다.

* **PKGBUILD 이해하기:** PKGBUILD는 빌드 스크립트입니다. 구조, 변수(`source`, `pkgname`), 함수(`build()`, `package()`)를 이해하세요.
* **소스 링크 검증하기:** `source` URL이 항상 공식 프로젝트 사이트나 신뢰할 수 있는 저장소를 가리키는지 확인하세요. 의심스럽거나 개인적인 링크는 피하세요.
* **설치 단계 검토하기:** 파일이 어디에 설치되는지(`package()` 함수), 특이한 명령이 있거나 민감한 시스템 영역을 건드리는지 확인하세요. `.install` 스크립트도 확인하세요.
* **관리자 조사하기:** AUR에서 관리자의 기록을 살펴보고 과거 보안 문제나 의심스러운 활동이 있었는지 확인하세요.
* **체크섬 및 PGP 확인하기:** 매우 중요합니다! 모든 체크섬(SHA256, BLAKE2b 등)이 upstream과 일치하는지 확인하세요. 사용할 수 있다면 PGP 서명(`validpgpkeys`)으로 진위를 확인하세요.
* **`-bin` 패키지 주의하기:** 이 패키지들은 미리 컴파일된 바이너리를 사용하므로 소스를 검사할 수 없습니다. 출처와 무결성에 대해 최대한 엄격하게 검토하세요.
* **커뮤니티 댓글 읽기:** AUR 페이지 댓글에서 다른 사용자의 경고, 문제, 통찰을 확인하세요.
* **무결성 검사를 절대 건너뛰지 않기:** `--skipinteg` 또는 유사한 플래그를 사용하면 모든 보안 검사를 우회합니다. 사용하지 마세요.
* **AUR 헬퍼 제어하기:** 사용하는 헬퍼(yay, paru)가 어떻게 동작하는지 이해하세요. PKGBUILD와 diff를 보여주는지 확인하거나, `makepkg`로 수동 빌드하세요.
* **필요성 평가하기:** 설치하기 전에 이 AUR 패키지가 정말 필요한지, 또는 공식 저장소 대안이 있는지 확인하세요.
* **시스템 최신 상태 유지하기:** `sudo pacman -Syu`를 정기적으로 실행해 `pacman`과 `makepkg`를 포함한 모든 시스템 구성 요소에 최신 보안 패치가 적용되도록 하세요.

Arch 기반 시스템을 안전하게 유지하기 위해 항상 주의를 기울이세요!

### CachyOS 정기 유지보수

이 항목은 Arch Wiki를 따르세요: https://wiki.archlinux.org/title/System_maintenance

### GUI 패키지 관리자 선택하기

그래픽 패키지 관리자는 편리하지만, 일부는 CachyOS 같은 롤링 릴리스 시스템에서 심각한 문제를 일으키는 것으로 알려져 있으므로 시스템 패키지 관리에는 피해야 합니다.

- **Pamac:** 시스템 패키지 keyring을 손상시키는 등 특정 패키지 관리 작업을 부적절하게 처리하는 것으로 알려져 있습니다. 이로 인해 시스템 업데이트를 막는 PGP 서명 오류가 발생할 수 있습니다.
- **Discover (KDE) 및 GNOME Software Center:** 이 앱 스토어들은 PackageKit 백엔드를 사용합니다. 일반적으로 Flatpak 관리에는 안전하지만, 이를 사용해 **시스템 패키지**를 설치하거나 업데이트하는 것은 위험합니다. PackageKit 기반 관리자는 불안정하거나 충돌하기 쉬울 수도 있으며, 실패한 트랜잭션 이후 시스템이 손상된 상태로 남을 수 있습니다.

최대 안정성과 신뢰성을 위해 시스템 패키지는 `pacman`을 사용해 명령줄에서 관리하는 것을 **강력히 권장합니다**.

그래픽 인터페이스를 선호한다면 **[Shelly](</configuration/post_install_setup/#updating-the-system>)** 같은 GUI 프런트엔드나 **CachyOS Package Installer**가 안전한 대안으로 간주됩니다. 이들은 pacman 기능을 더 직접적으로 감싸는 래퍼이기 때문입니다.
