글쓴이 보관물: litcoder

Orange3 Text Add-On 추가할 때 빌드오류

Orange3에 Text Add-on을 추가하는 도중 SciPy를 빌드하려 시도하는데 오류가 발생한다. Fortran을 비롯한 의존성이 만족되지 않아서 발생하는 문제인데 여러건의 빌드 오류를 피하려면 SciPy의 Building from Source를 참고해서 필요한 패키지를 미리 설치해 줄 수 있다. ArchLinux의 경우 필요한 패키지는 다음과 같다.

sudo pacman -S gcc-fortran openblas pkgconf base-devel python-setuptools

그리고 나서 필요한 Python package를 설치해주고 재실행한다.

pip install Cython Orange3-text

의존성있는 패키지 중 하나인 gensim은 최신 버전인 4.3.3과 Python3.13의 호환성 문제로 2025년 10월 현재 Python3.13에서 빌드되지 않는다. 그래서 yay로 3.12를 설치하고 가상환경을 새로 만들어서 설치를 진행해 주었다.

OS: ArchLinux
Python: 3.12
PyQt5: 5.15.11
PyQtWebEngine: 5.15.7
scipy: 1.13.1
gensim: 4.3.3
Orange3: 3.39
Orange3-Text: 1.16.3

그나저나 “Fortran이라니, 되게 오래된 코드에 의존성이 있는 건가?”하고 살펴봤더니 은퇴는 커녕 OOP까지 지원하면서 Modern Fortran이라는 이름으로 고성능컴퓨팅(HPC)에서는 짱짱한 현역으로 뛰고 있었다. Workgroup의 활동을 보면 2020년대에 2023에 이은 두번째 표준안을 준비하고 있는 모양이다.

복붙의 함정, 디렉토리를 삭제할 수 없다?

매우 간단한 디렉토리 생성 명령어가 의도대로 동작하지 않고 실패했다. 왜 일까?

ls 명령어의 결과를 보면 알 수 있는데, 부모 디렉토리를 생성하는 -p 옵션이 동작하지 않고 디렉토리로 생성되어 버렸다. 그 다음으로 존재하지 않는 ~/docker/shared 디렉토리를 생성하려고 했으니 명령어가 실패한 것이다.

mkdir 명령어는 사실 어딘가에서 복사 붙여넣기 한 것인데, 이렇게 잘 못 생성된 디렉토리는 왠만해서 삭제가 되지 않는다.

rm -r "./-p"
rm -r -- "./-p"

그 이유는 -p에 붙어 있는 -가 ASCII가 아닌 Unicode U+2013이기 때문인데, 이를 삭제하려면 LC_ALL=C를 앞에 붙여서 임시로 Locale을 변경해 8진수로 표시되는 Unicode 값을 확인하고 그 이름으로 명령어를 입력 하면된다.

rm -r -- ''$'\342\200\223''p'

VMM에서 Host USB장치를 Guest로 넘기기

VMM(Virtual Machine Manager)에서 Host machine의 USB 장치(카메라)를 passthrough하는 단계에 대한 설명.

Guest OS로 넘기고자하는 device는 Laptop에 달려 있는 카메라라고 하자.

VMM에서 Add Hardware 버튼을 누르고 USB Host Device를 선택하면 연결된 장치들의 목록이 표시된다. 여기에서 해당 카메라 장치를 선택하고 Finish 버튼을 누르면 장치가 등록된다.

Guest OS를 부팅하고 넘겨진 장치의 목록을 부면 Host OS의 BDF와는 다른 번호가 부여되면서 장치가 연결 된 것을 볼 수 있다.

드라이버가 제대로 로드되었다면 비디오 장치에 등록되고 어플리케이션으로 카메라 화상정보도 받아 올 수 있다.

주의: Passthrough된 장치는 Guest OS가 동작하는 동안 Host OS에서 사용할 수 없다.