지멘스 UG NX 2506 상위버전 설치 후 하위버전 추가설치 될까? 라이센스 정리
NX를 여러 버전 함께 쓰고 싶을 때 가장 많이 묻는 게 상위버전이 먼저 설치되어 있어도 하위버전을 추가로 설치할 수 있느냐는 거다. 결론부터 말하면 안되는 줄 알았는데 이번에 테스트해보니 가능하다.
노랗목차
다만 설치 경로를 분리하고 환경변수를 각 버전에 맞춰 정확히 잡아줘야 하고, 특히 라이선스 서버와의 연결 방식만 이해하고 있으면 큰 문제 없이 공존시킬 수 있다. 현업에서 플러그인 테스트나 고객 호환성 확인 때문에 2504와 2406, 그리고 NX 12 같은 구버전을 동시에 돌려야 할 때가 많은데, 그때마다 겪는 시행착오를 줄이기 위해 핵심만 정리해본다.
NX 상위 하위버전 병행 설치의 핵심 원칙

NX는 버전별로 독립 디렉터리에 설치하면 물리적 파일 충돌은 일어나지 않는다. 흔히 C:\Siemens\NX2504, C:\Siemens\NX2406, C:\Siemens\NX12처럼 버전별 폴더를 나눠 깔면 된다.
문제는 Windows의 PATH와 NX 실행 시 참조되는 환경변수다. 시스템이 마지막으로 설치된 버전의 경로를 우선시하면서 의도와 다른 버전이 실행되는 일이 생긴다.
이를 피하려면 각 버전 폴더의 ugraf.exe로 바로가기를 따로 만들거나, 해당 버전의 NX Command Prompt를 통해 환경을 먼저 로드한 뒤 실행하는 식으로 습관을 들이면 안정적이다. 난 실제로 배치 파일로 버전별 실행 진입점을 나눠 쓰는데, 이 방식이 가장 깔끔했다는 생각이다.
설치 순서와 제거 순서에서 생기는 착시
상위버전(예: NX 2504)을 먼저 설치한 상태에서 하위버전(예: NX 2406, NX 12, NX 11, NX 10)을 추가로 설치하는 건 가능하지만 권장하진 않는다.

그 이유는 레지스트리와 PATH가 뒤섞여 의도치 않게 최신 버전 바이너리를 참조하는 경우가 종종 있기 때문이다.
그래서 어쩔 수 없이 그 순서로 진행했다면 실행은 반드시 해당 버전 폴더의 ugraf.exe에서 바로가기를 만들어 진입하는 방식으로 통제하면 대부분의 혼선을 막을 수 있으며 제거할 때는 반대로 최신 버전부터 지우면 잔여 환경설정이 덜 꼬인다.
여러 프로젝트를 오가야 하는 환경이면 가상머신이나 사용자 계정을 분리해 쓰는 선택지도 현실적으로 합리적이다.
라이선스 서버 한 번에 이해하기

NX는 FlexNet 기반의 Siemens PLM License Server(벤더 데몬: ugslmd)를 사용한다. 클라이언트는 보통 포트@호스트 형태의 문자열로 서버를 찾는다.

전통적으로 28000 포트를 많이 쓰지만, 실제 포트 번호는 라이선스 파일에서 지정된 값을 따르면 된다. 요지는 “SLM_LICENSE_SERVER=포트@서버이름” 형태의 환경변수만 정확히 잡혀 있으면, 2504건 2406이건, 심지어 NX 12 같은 구버전이건 동일 서버를 향해 정상적으로 풀을 잡아온다는 점이다.
다만 아주 오래된 환경에선 UGS_LICENSE_SERVER라는 구식 변수명을 썼던 적이 있어서, 구버전 호환 테스트를 한다면 둘 다 점검하는 편이 안전하다.
버전별·OS별로 자주 헷갈리는 경로와 파일명
아래 표는 현업에서 가장 많이 묻는 “라이선스 파일 이름이 뭐였지?”, “파일은 어디에 놔야 해?”, “환경변수는 뭐로 잡지?”를 한 번에 보기 좋게 정리한 것이다.
배포 정책이나 관리자가 커스터마이즈한 환경에서는 경로가 달라질 수 있지만, 기본 설치라면 이 범주를 벗어나지 않는다.
| 항목 | Windows 서버(기본) | Linux 서버(기본) | 비고 |
|---|---|---|---|
| 라이선스 서비스 | Siemens PLM License Server (FlexNet) | Siemens PLM License Server (FlexNet) | 벤더 데몬 이름은 ugslmd |
| 라이선스 파일 기본명 | splm8.lic 또는 license.lic | splm8.lic 또는 license.lic | 파일명은 관리 정책에 따라 달리 쓸 수 있음 |
| 라이선스 파일 위치 | C:\Program Files\Siemens\PLMLicenseServer\ | /usr/Siemens/PLMLicenseServer/ | lmgrd, ugslmd와 같은 폴더에 두는 구성이 일반적 |
| 로그 파일(선택) | C:\Program Files\Siemens\PLMLicenseServer\logs\ | /usr/Siemens/PLMLicenseServer/logs/ | 벤더 로그 명칭 예: ugslmd.log |
| 기본 포트 예시 | 28000 | 28000 | 실제 포트는 라이선스 파일 SERVER 줄에서 정의 |
| 클라이언트 설정(신규 버전) | 환경변수 SLM_LICENSE_SERVER=28000@서버이름 | 동일 | NX 1872 이후 계열 전반에 공통 |
| 클라이언트 설정(구버전 호환) | 환경변수 UGS_LICENSE_SERVER=28000@서버이름 | 동일 | NX 12 이전 환경에서 간혹 필요 |
| 라이선스 데몬 | ugslmd | ugslmd | 라이선스 파일 DAEMON 줄로 지정 |
다양한 NX 버전이 하나의 라이선스 서버를 공유하는 방식
FlexNet은 서버 측에서 피처 단위(예: nx_design 등)와 버전 호환 정책을 정의한다.
라이선스 서버가 최신이면 하위 NX 클라이언트 대부분을 수용하는 편이다.
반대로 너무 구식 라이선스 서버를 유지하면서 최신 NX를 붙이려 하면 피처 불일치나 암호화 키 방식 차이로 체크아웃에 실패할 수 있다.
이 때문에 사내 표준은 “서버는 신형, 클라이언트는 혼용”을 유지하는 전략이 안정적이었다. 운영 중 피처 부족이 의심되면 ugslmd 로그에서 오류 문자열을 먼저 확인하고, 필요 시 공급사의 피처 업데이트 파일을 받아 라이선스 파일을 교체·갱신하는 절차가 정석이다.
체감상 가장 흔한 이슈는 포트 충돌과 방화벽 차단인데, 서버 방화벽에서 lmgrd 포트와 벤더 데몬 포트를 함께 허용하는지 꼭 확인하는 습관이 많은 시간을 아껴준다.
병행 설치 시 실행 환경 고정 요령
상위·하위버전이 뒤섞인 PC에서 “내가 클릭한 게 진짜 그 버전이 맞나?”라는 불안을 없애려면 실행 진입점을 버전 폴더 안으로 끌어오면 된다.
예를 들어 C:\Siemens\NX2406\UGII\ugraf.exe로 바로가기를 만들고, 바로가기의 시작 위치를 해당 버전 UGII 폴더로 지정해두면, 시스템 PATH가 어떻든 항상 그 버전으로 뜬다.
여기에 SLM_LICENSE_SERVER 같은 라이선스 변수만 시스템 전역 또는 사용자 단위로 정확히 맞춰두면 실행 시 라이선스 미인식 이슈도 줄어든다. NX Open, API, Journal을 자주 돌린다면 각 버전 UGII 경로를 명시적으로 참조하도록 스크립트 상단에 환경을 고정시키는 습관이 특히 유효했다.
여러 플러그인 DLL을 교차 테스트할 땐 버전별 플러그인 폴더도 따로 두어 충돌을 피하는 편이 낫다.
설치가 가능하지만 비권장인 조합과 현실적인 대안

2504 위에 2406, 그리고 그 아래에 NX 12 같은 식으로 내려가며 깔아도 굴러가긴 하지만, 장기적으로 유지보수성을 생각하면 추천하긴 어렵다.
프로젝트 데드라인이 촉박한데 예기치 않은 PATH 충돌, 레지스트리 꼬임, API 참조 오류가 터지면 손해가 크다. 내 경험상 가장 스트레스가 적은 조합은 “가상머신에 구버전, 호스트엔 최신버전”이다.
디스크 스냅샷으로 환경 복구도 쉬워서 구버전 고객 데이터를 열어볼 일이 많은 기술지원 포지션일수록 이 전략의 체감 이득이 컸다.
클린 업그레이드가 필요한 순간을 구분하는 기준
하위버전 실행 자체는 되더라도, 회사 표준 템플릿, 재질 라이브러리, Check-Mate 룰셋, 팀센터 통합 같은 주변 요소가 최신만 가정하고 만들어져 있으면 구버전에서는 미세하게 다른 결과가 나온다.
표면 분석이나 솔버 UI가 바뀐 시점(NX 2406 전후)처럼 워크플로 차이가 큰 변화도 있으니, 팀 차원의 품질 일관성을 중시한다면 특정 마일스톤 이후에는 구버전을 단계적으로 퇴역시키는 결정을 빠르게 내려주는 게 건강하다.
반대로 레거시 데이터 이관이 남아 있다면 구버전 유지 개연성이 크므로, 그 기간만큼은 병행 설치 전략을 고수하는 게 현실적이다.
라이선스 파일 줄마다 의미를 알아두면 문제 해결이 빨라진다
라이선스 파일의 SERVER 줄에는 서버 호스트네임과 호스트ID, 그리고 lmgrd 포트가 들어간다.
DAEMON 줄은 ugslmd 벤더 데몬과 그 바이너리 경로가 이어지고, 필요하면 전용 포트를 바인딩할 수도 있다.
FEATURE 줄에는 피처 이름, 만료일, 수량, 옵션이 적힌다. 현장에서 장애가 나면 대부분 SERVER/DAEMON 포트 충돌, 또는 FEATURE 불일치다.

로그에 “cannot connect to license server system” 같은 문구가 보이면 네트워크·방화벽부터 의심하고, “Invalid hostid”라면 물리 NIC 교체나 가상화 환경 변경으로 호스트ID가 바뀐 상황을 점검하는 게 빠른 루트였다.
이런 날것의 감각을 한 번 익혀두면 주말 야간에도 침착하게 복구할 수 있다.
버전별 환경변수와 실행 팁 한눈에 정리
| 호환유무 | 권장 설정 | 추가 팁 |
|---|---|---|
| 2504와 2406 병행 | 버전별 폴더 분리 설치, 각 폴더 ugraf.exe로 바로가기 생성, SLM_LICENSE_SERVER 설정 | NX Command Prompt로 해당 버전 환경 선로딩 후 실행하면 안정적 |
| 2504 + NX 12 병행 | SLM_LICENSE_SERVER 기본, 필요 시 UGS_LICENSE_SERVER도 병행 설정 | FlexNet 서버는 가급적 최신 유지 |
| API/저널 병행 테스트 | 스크립트 시작부에 UGII 경로를 명시 지정 | 버전별 플러그인 출력 폴더를 분리 |
| 제거·정리 | 최신 버전부터 언인스톨, 남은 환경변수 수동 점검 | 레지스트리/Path 잔여 항목 확인 |
즉 NX 하위호한 설치에 대해서는 단순하게 이해하면 된다.
먼저 설치 경로를 분리하고, 실행 진입점을 버전 폴더로 고정하고, 라이선스 서버 변수를 정확히 잡아두면 상위버전이 먼저 설치되어 있어도 하위버전은 충분히 공존한다.
그리고 이 모든 걸 관통하는 안정성의 열쇠는 라이선스 서버를 신뢰할 수 있게 운용하는 일이다. 한 번 정석대로 세팅해두면 다음 프로젝트부터는 “버전이 달라서 못 연다” 같은 허무한 이유로 시간을 잃는 일이 확 줄어든다.
