유지보수

아래의 명령어들은 아래의 패키지들을 반드시 설치해야한다.

# emerge -aq app-portage/gentoolkit
# emerge -aq app-portage/eix
# emerge -aq app-portage/pfl
# emerge -aq app-portage/genlop

Portage File List: 온라인에서 Portage의 특정 파일이 포함된 패키지를 검색

# e-file nslookup

Gentoo Tool Kit

revdep-rebuild - 명령어에서 유추할 수 있듯 뭔가를 역으로 점검해서 재구축하는 명령어인데, 끊어진 공유 라이브러리를 점검한다.
equery - 설치된 패키지 내 파일, 의존성, USE 등을 검색
equery b - 특정 명령어가 포함된 패키지 검색
예) equery b nslookup
equery h - 특정 USE가 포함된 패키지 검색
예) equery h ldap
equery u - 특정 패키지가 가진 모든 USE 목록 및 설명 출력 (가독성 좋음)
예) equery u app-admin/sudo
euse - USE 제어 명령어
euse -i - 특정 USE를 사용하는 모든 패키지의 목록을 출력
예) euse -i cjk
eclean - 패키지 설치 중에 발생한 소스코드 등을 청소
예) eclean distfiles - 소스코드 삭제
예) eclean packages - 패키지 삭제
epkginfo - 패키지 메타데이터 정보 표시
예) epkginfo -l - 라이센스 정보
예) epkginfo -u - USE 플래그 및 설명 나열

eix패키지 검색 및 설치 가능한 모든 패키지들의 상세 버전/USE 출력
eix를 사용하기 위해서는 반드시 로컬 패키지를 캐싱 명령어 eix-update를 한 번 실행해줘야한다. Portage 트리를 갱신했을 경우 혹은 새로운 패키지를 설치했을 경우 역시 업데이트를 해줘야한다.

eix -c 출력결과 간소화
eix -S keyword 패키지의 설명란에서 keyword가 들어간 패키지 검색
예) eix -c -S engine app-i18n/ibus
eix -I 설치된 패키지만 검색
예) eix -I kernel
eix-sync == emerge --sync (패키지 리포 업데이트)

Portage Utils – 기본으로 설치되어있는 Portage 유틸리티이다.

qcheck - 패키지 무결성 검사
예) qcheck vim
qcheck -u - 빠진 파일 업데이트

Genlop – 특정 패키지를 설치하는데 시간을 알아보는 용도로 쓴다.

# genlop -t dev-qt/qtwebengine

설치가 안될 때

예를 들어, 슬랙을 설치하려고 하자 이런 에러 메시지가 나왔다고 가정하자.

gentoo ~ # emerge -pv slack

These are the packages that would be merged, in order:

Calculating dependencies… done!

!!! All ebuilds that could satisfy "slack" have been masked.
!!! One of the following masked packages is required to complete your request:
- net-im/slack-4.23.0::gentoo (masked by: ~amd64 keyword)
- net-im/slack-4.22.0::gentoo (masked by: ~amd64 keyword)

For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.

gentoo ~ #

여기서 주목해야할 부분은 masked by: ~amd64 keyword라는 항목인데, ~amd64라는 키워드 때문에 mask 즉, 설치가 막혀있다는 의미이다. 따라서, /etc/portage/package.accept_keywords 라는 파일이 있으면 해당 파일에 다음 라인을 추가하고, 파일이 아니라 디렉토리라면 해당 디렉토리에 패키지 이름으로 된 파일을 하나 작성해서 다음 라인을 넣어준다.

net-im/slack ~amd64

KDE

KDE의 경우, kde-plasma/plasma-meta를 설치하라고 하는데, 이름이 meta인데다 패키지 갯수도 수백개나 되니까 전부 다 들어있을 것 같지만, 기본적인 파일탐색기조차 포함되어있지 않다. 따라서, plasma-meta 패키지를 설치하고난 이후에 필요한 것들을 적어본다.

kde-apps/konsole #터미널
kde-apps/dolphin #파일탐색기
kde-apps/kate #메모장
kde-apps/kmix #볼륨조절
www-client/firefox-bin #파이어폭스 웹브라우저. 만약 파이어폭스를 소스코드에서 컴파일하여 설치하고 싶다면 www-client/firefox를 설치하면 된다
www-client/google-chrome #구글 크롬 웹브라우저

EVE Online 설치

emerge -q virtual/wine
emerge -q app-emulation/winetricks
emerge -q media-fonts/corefonts

이후 데스크탑 메뉴에서 wine을 찾으면 Configure Wine이 나오는데, 여기서는 특별히 해줄 것은 없고, 내 경우는 Windows VersionWindows 10으로 설정했다. 이브온라인은 64비트로 완전히 넘어온 상태이므로 따로 32비트 PREFIX를 줄 필요가 없다. Winetricks를 실행하고 Default wineprefix를 설치한다. 그리고나서 Install an application으로 들어간 뒤 Cancel을 누르면 Install a font가 나온다. 여기서 corefonts를 선택하고 OK를 누르면 약 11개의 폰트를 설치하는 사이에 계속 에러메시지 및 경고 메시지가 뜨는데 그냥 넘어가도 된다. 이후 이브온라인 런처를 실행해서 쭉 설치만 하면 끝.

카카오톡 설치

카카오톡 설치는 우분투에서 PlayOnLinux를 통해 쉽게 설치할 수 있는 것에 비해 젠투에서는 다소 어려웠다. 이것저것 여러가지를 시도해봤지만, 일단은 다이렉트X 9 및 GDI+ 등을 설치하는 과정에서부터 이미 설치가 제대로 되지않았으며, 이유는 알 수 없으나 그냥 터미널에서 winetricks 명령어로 각종 DLL 패키지들을 설치하면 이상없이 잘 됐었다. 그럼에도 불구하고 카카오톡 자체는 실행됐으나 채팅창은 제대로 작동하지 않았으며, 채팅창을 열면 카카오톡 자체가 오류를 내면서 종료되는 현상만 계속 나왔다. 결국 vowstar라는 오버레이를 추가하여 PlayOnLinux를 설치하여 시도해봤는데, 설치 자체는 및 실행까지는 수월하게 진행됐으나, 역시 마찬가지로 채팅창에서의 채팅은 좀 문제가 있었다. 다행히 해결은 됐는데, 32비트로 해야하며, 설치시 필요한 DLL 패키지는 gdiplus, gecko, riched30, mono28, wmp9 정도다. ~/PlayOnLinux’s virtual drives/KakaoTalk/drive_c/windows/Fonts 에 맑은고딕 폰트를 넣어준 뒤 카카오톡 설정에서 폰트를 맑은고딕으로 지정해주면 속도가 좀 느리긴 해도 쓰는데 지장없었다. 참고글 (https://tolovefeels.tistory.com/6)

Nextcloud

Nextcloud 설치 후 잘 쓰다가 어느 날 갑자기 이런 메시지가 뜨기 시작했다.

Changes in synchronized folders could not be tracked reliably.
This means that the synchronization client might not upload local changes immediately and will instead only scan for local changes and upload them occasionally (every two hours by default).
This problem usually happens when the inotify watches are exhausted. Check the FAQ for details

이 메시지는 (아마도 내 추측으로는) 기본값으로 설정된 iNotify값인 8192로 인해, 파일시스템의 iNode값의 변화 즉 파일시스템에 변경이 생겼을 때 이를 추적해서 알려주는 커널 기능인 iNotify의 한계값으로 인해 더 이상의 변경점에 대해서는 알려주지 못하는 문제로 생기는 것 같다. 아래의 명령어로 쉽게 해결이 가능하다.

# sudo -i
# echo fs.inotify.max_user_watches = 524288 | 
sudo tee -a /etc/sysctl.conf && sudo sysctl -p

그외 패키지 설치

내가 젠투를 쓰는 재미는 성능의 극대화니 최적화니가 아니라, 원하는 기능을 넣고뺄 수 있는데서 온다고 했다. 예제를 보자. KDE 관련 패키지들을 설치하면서 데스크탑을 구성해가던 중 PDF 뷰어 프로그램이 필요했다. 그래서 구글에 kde pdf viewer라고 검색하니 Okular를 보여줬다. 그래서 패키지를 검색해봤다.

emerge -s okular

kde-apps/okular가 나왔고, 문서 뷰어라고 적혀있다. 패키지가 있는 것이 확인됐으니, 어떤 관련 패키지들이 있는지 확인해봤다.

emerge -pv kde-apps/okular

총 4개의 패키지가 더 필요한데, 여기서 주목해서 봐야할 것은 kde-apps/okular의 USE 항목 들이다. 자세히 보면 -epub, -markdown이 되어있다.

아니 어차피 문서 뷰어를 설치할 건데, 기왕 문서 뷰어라면 epub 파일도 읽을 수 있으면 좋고 마크다운 문서도 볼 수 있는 게 좋지않을까? 라고 생각됐다. 그래서 /etc/portage/package.use/okular 파일을 작성하여 2개의 USE 플래그를 추가하였다.

/etc/portage/package.use/okular

그리고나서 다시 emerge를 돌렸다.

emerge -pv kde-apps/okular

필요한 패키지는 총 9개로 epub과 markdown으로 인해 5개의 라이브러리 등이 더 필요해졌지만, 이제 내가 설치할 Okular는 epub 파일도 읽을 수 있고 마크다운 문서도 읽을 수 있게 됐다.

이렇게, 매번 패키지를 설치할 때마다 가끔씩은 -pv를 넣어 어떤 USE 플래그가 들어가는지 보고, 필요할 것 같은데 빠져있다면 추가하는 식으로 설치하여 내가 원하는 운영체제를 만들어가는 것이 젠투의 가장 큰 장점이라고 생각한다.