2024년 3월 6일 수요일

CentOS 7 - Subversion - hooks

 pre-revprop-change.



잘못 작성된 로그 메세지를 수정하고 싶었다.



1. hooks 경로에 pre-revprop-change 파일을 생성해 준다.







2. 하지만...




   255 에러는 pre-revprop-change를 실행할 수 없는 경우에 해당한다.
   분명히 파일이 존재하고 실행 권한을 주었음에도...

3. 다시 SELinux


   /var/log/audit/audit.log 파일을 보면 다음과 같은 에러 메세지가 보인다.

   
1
type=AVC msg=audit(1709713871.470:18248): avc:  denied  { execute } for  pid=24633 comm="svnserve" name="pre-revprop-change"
cs

   하지만, 이번엔 audit2allow 도구도 크게 도움이 되지 않는다.



   저걸 허용해 주라는 얘기인데 getsebool에는 없다.

4. 해결 방법.


   거두절미 다 생략하고 해결 방법만 정리해 보면.

   
1
2
3
grep svnserve /var/log/audit/audit.log |audit2allow -M selinux_svnserve
 
semodule -i selinux_svnserve.pp
cs


5. 그럼에도 불구하고 안된다.


   다음에 다시 해결해 보자. 

6. audit2why


   
1
audit2why < /var/log/audit/audit.log
cs

   특별히 뭘 더 한 것은 아니고 위 툴로 에러 확인 후 처음부터 다시 해 봤더니 된다.



2024년 2월 1일 목요일

Failed to update Android SDK package list.

Unity 안드로이드 빌드.


Unity 2021.3.34f1 LTS migration.


1. 설치.


   그냥 허브에서 하면 된다.

2. 빌드.


   글 제목과 같은 에러가 바로 발생.

3. 원인.


   구글 안드로이드 SDK 버그로 설치 경로에 공백이 들어간 경우 경로를 찾지 못해서.
   D:\Program Files\... 경로 아래에 설치되어 있어서.

4. 해결 방법.


   - 유니티를 다른 경로에 재설치한다. 예를 들면, \Unity\.
   - 혹은, cmdline-tools를 조금 수정한다.

5. cmdline-tools 수정.


   SDK 설치 경로의 sdkmanager.bat 파일을 열어서 다음 스크립트를 변경한다.


   set DEFAULT_JVM_OPTS=-Dcom.android.sdklib.toolsdir=%~dp0\..

   다음과 같이 

   set DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.."

6. 참고 링크.


2020년 3월 25일 수요일

CentOS 7 - Subversion 설치.

Subversion 설치하기.


7.x 버전에서 달라진 systemctl 및 firewall 때문에 정리.


1. Subversion 설치



  
yum install subversion
cs


2. Repository root 생성.


   Repository root로 사용할 경로를 생성한다.
  
  
mkdir -/var/opt/svn/repositories/
cs


3. svnserve 설정 파일 수정.


  
vi /etc/sysconfig/svnserve
cs


  
# OPTIONS is used to pass command-line arguments to svnserve.
#
# Specify the repository location in -r parameter:
OPTIONS="--threads -r /var/opt/svn/repositories"
cs


4. Repository 설정.


   실제 프로젝트에 사용할 repository 설정은 똑같아서 생략합니다.
   authz, passwd, svnserve.conf 파일을 수정합니다.

5. Firewall 등록.


  
firewall-cmd --permanent --zone=public --add-port=3690/tcp
firewall-cmd --reload
cs


6. 서비스 등록 및 시작.


  
systemctl enable svnserve.service
systemctl start svnserve.service
cs


7. 하지만, 


   기대한 것과 다르게 정상적으로 repository에 접근할 수 없습니다.
   SELinux 관련 에러가 발생하고 로그를 확인해 보면 문제가 있음을 확인 가능합니다.


8. SELinux


   repositories 경로 권한 문제로 파일의 security context를 변경해야 합니다.


  
chcon --t svnserve_content_t /var/opt/svn/repositories
cs


  

2020년 3월 16일 월요일

Unity Google Sign In ...

Google Sign-In Unity Plugin

 

하란대로 하면 안되서 정리한다 ㅠㅠ.

 

1. Plugin download.


   Google Sign-In Unity Plugin release에서 최신 버전을 다운로드 받는다.
   google-signin-plugin-1.0.4.unitypackage 및 GoogleSignIn-sample.unitypackage 파일을
   다운로드 받는다.

2. Unity 프로젝트 생성 및 패키지 임포트.

 


   작업에 사용한 Unity 버전은 2019.3.0f6 버전으로 다음 위치에서 패키지를 임포트합니다.


   하지만, 기대와 다르게 임포트하자마자 에러를 만나게 됩니다.


   에러 내용은 다음과 같습니다.

Library\PackageCache\com.unity.textmeshpro@2.0.1\Scripts\Editor\TMP_PackageUtilities.cs(310,17): error CS0433: The type 'Task' exists in both 'Unity.Tasks, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' and 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

   해결 방법은 다음 링크에 나와있는대로 패키지의 parse 폴더를 제외합니다.
   error CS0433: The type 'Task' exists in both Unity.Tasks,....


   그리고 나면 또 다른 에러가 엄청나게 나옵니다.


   해당 에러에 대한 힌트는 다음 링크에서 확인 가능합니다.
   ArgumentException: Requested value 'x86' was not found

   간단하게 요약하면 unity-jar-resolver 패키지를 설치하면 됩니다.
   최신 버전은 v1.2.137 이고 zip 파일을 다운로드 하고 압축을 푼 뒤에
   play-services-resolver-1.2.137.0 패키지를  설치해주면 됩니다.

   다음 그림과 같이 버전이 낮은 파일이 이미 사용중일 수 있지만
   최신 버전으로 업데이트 합니다.


   그리고 나면 더이상 쓸모없는 파일을 삭제할 지 묻는 다이얼로그 윈도우가 뜨게 되는데,
   삭제하겠다고 선택하면 됩니다.


   그럼 더 이상 에러는 발생하지 않습니다.
   마지막으로 제일 처음 다운로드 받았던 샘플 패키지를 임포트하면 준비는 끝났습니다.

3. Keystore 생성.


   먼저 File - Build Settings - Platform을 Android로 변경한 뒤,
   App signing을 위해 키를 생성합니다.



   키 분실의 우려가 있으므로 프로젝트 아래 적당한 경로에 저장하고
   버전 관리 시스템을 사용할 수 있도록 합니다.

   구글 앱 서명 방식이 변경되어 앱 서명 인증서와  업로드 인증서로 나뉘고 구글에서 
   관리하도록 변경되어 분실을 하게 되더라도 복구할 방법이 현재는 존재합니다.


   위 그림과 같이 키스토어에 키를 하나 생성합니다.
   그리고 나면 최종적으로 다음과 같이 설정됩니다.


   그리고 Player - Other Settings에서 사용할 Package Name을 설정해 주면 됩니다.


4. Google APIs.


   Google Sign-In api 사용을 위해 사용자 인증 정보를 생성합니다.
   Google API console에서 사용자 인증 정보 - 사용자 인증 정보 만들기를 선택한 뒤,
   OAuth 클라이언트 ID를 선택하고 마지막으로 Android 선택 후 내용을 채워주면 됩니다.


   생성한 뒤 Unity에서 Web Client Id를 설정합니다.
   Canvas를 선택하고 Signin Sample Script 컴포넌트에 설정합니다.


   그리고 빌드한 뒤 apk 배포 후 테스트 해보면 역시나 안된다.


   이름도 거룩하다, DeveloperError ...

5. Google Sign-In for Android.


   Google Sign-In for Android 페이지에서 아래로 스크롤 하다 보면
   Configure a project 버튼을 찾을 수 있습니다.





   최종적으로 Web client (Auto-created for Google Sign-in) 이름으로 생성된
   OAuth 2.0 클라이언트 ID가 생기고 이 아이디를 사용해야 로그인이 됩니다.

   참고로, Google API console에서 클라이언트 ID를 생성할 때 Android가 아니라 
   웹 애플리케이션을 선택해서 만들어도 됩니다.

   이제 만들어진 클라이언트 ID로 빌드하게 되면 로그인이 드디어 됩니다.


2020년 1월 7일 화요일

Grafana & graphite 그리고 모니터링 #06.

CentOS 7.x 버전에 설치하기.

 

이전에 기록했던 CentOS 6.x 버전에 설치하기대로 설치가 안된다.

 

1. Docker 설치

 

  
1
yum install docker
cs


2. pip upgrade

 

  
1
pip install --upgrade pip
cs


3. Docker 설정 변경

 

   /etc/sysconfig/docker 파일에서 다음 그림과 같이 설정을 수정


4. Docker 시작하기.


  
1
2
3
systemctl enable docker.service
systemctl start docker.service
systemctl status docker.service
cs



5. Docker image build.

 

  
1
docker build -f ./Dockerfile --tag graphite:1.0 ./
cs



6. Rpmdb checksum is invalid: dCDPT(pkg checksums): libXext.x86_64 0:1.3.3-3.el7 - u


   하지만, 실패 ㅠㅠ



   여러가지 해결 방법이 존재한다.

7. 해결 방법

 

   제일 처음에 다음과 같이 Docker overlay fs 추가하거나,

  
1
RUN yum -y install yum-plugin-ovl
cs


   다른 방법으로

  
1
RUN yum install -y graphite-web;yum clean all
cs


   혹은

  
1
RUN rpm --rebuilddb && yum install -y graphite-web
cs



  

2019년 6월 4일 화요일

Python, Windows, Console, print ...

윈도우즈 환경에서 ❕ 이런 문자를 콘솔 화면에 출력하고 싶다면 ...


1. 안되는 경우.


   윈도우 환경의 경우 UTF-8 사용에 제한이 많다.



2. win-unicode-console.


   모듈을 설치하고 활성화한 뒤 그냥 출력한다.




2019년 3월 18일 월요일

CentOS Single Mode.

갑자기 비밀 번호가 기억나지 않는다면 ...

 

1. 재부팅.

 

   일단 머신을 재부팅하고, 다음 화면이 진행될 때 재빠르게 키입력을 해야 한다.

  

   그럼 다음과 같은 화면이 나오는데 첫 번째 아이템이 선택된 상태에서
   'e' 키를 눌러 에디트 모드로 진입한다.

  

   그럼 다음과 같은 화면이 나오는데 2 번째 줄 kernel이 선택된 상태에서 다시 한번
   'e' 키를 눌러 에디트 모드로 진입한다.


   그럼 이제 다음과 같은 화면이 나오는데 그 상태에서 'single' 을 입력한다.


< single을 입력하기 전 >


  

< single을 입력 >

   single을 입력한 뒤 Enter를 치고 나면 다시 이전 화면으로 돌아온다.

  

   이제 'b' 를 입력해서 부팅을 시도한다.


2. 비밀 번호 재 설정.


   이제 다음과 같이 부팅이 끝나면 root 계정으로 로그인 된 것을 확인할 수 있다.

  

   이제 비밀 번호를 다시 설정하고 사용할 수 있다.
   다만, 이 과정은 머신에 콘솔로 직접 연결되어 있는 경우에만 가능한 방법이다.

3. 결론.


   귀찮으니 비밀 번호는 잊지 않게 잘 관리하자.