도와주세요
내 소프트웨어(Java 기반)에 대한 "설치 프로그램"을 생성할 때 염두에 두어야 할 모범 사례나 고려 사항은 무엇입니까?
이를 달성하려면 어떤 단계나 단계를 수행해야 합니까?
조사한 결과 패키지 관리자를 통해 이 작업을 수행하는 것이 좋은 방법이라는 것을 알았습니다.
미리 감사드립니다!
답변1
Windows 스타일의 자동 압축 풀기 설치 프로그램 패키지는 틀림없이 나쁜 습관입니다.
- 자동 압축 풀기 프로그램은 악성 코드의 벡터가 될 수 있습니다. 설치 프로그램을 관리자 권한으로 실행해야 하는 이유에 대해 아무도 의문을 제기하지 않습니다.
- 간단한 설치 프로그램 생성기를 사용하는 경우 일반 추출 및 맬웨어 방지 도구에서 패키지 콘텐츠에 액세스할 수 없어 맬웨어를 숨길 수 있는 또 다른 방법이 만들어질 수 있습니다.
기존 패키지 관리자가 완벽하지 않을 수 있지만 해당 패키지 형식을 사용하면 몇 가지 보안 이점이 있습니다.
- 패킷 형식은 잘 알려져 있고 암호화되어 서명되어 있으므로 변조를 쉽게 감지할 수 있습니다.
- 필요한 경우 패키지 자체에서 단일 바이트 코드를 실행하지 않고 검사를 위해 이러한 패키지를 추출하는 도구가 항상 있습니다.
- 패키지 형식은 필요할 수 있는 사용자 정의 구성 단계를 수행할 수 있는 설치 전/설치 후/제거 스크립트의 실행을 지원합니다.
- 최소한
.deb
패키징 형식에는 완전히 자동화된 비대화형 설치를 위한 패키지 구성(Debian/Ubuntu 세계에서는 "사전 설정"이라고 함)을 지정하는 통합된 방법이 포함되어 있습니다.
무엇을 하든, 소프트웨어를 서버에서 사용하려는 경우 소프트웨어를 비대화형으로 쉽게 설치할 수 있는지 확인해야 합니다. 이렇게 하지 않으면 Ansible, Salt 또는 docker-compose와 같은 도구를 사용하는 관리자가 귀하의 소프트웨어를 싫어할 것입니다.
패키지 관리자가 종속 라이브러리나 기타 패키지를 자동으로 설치하려면 패키지 메타데이터에 종속성을 기록해야 합니다. 적절한 배포판의 "최소" 설치를 통해 패키지를 가상 머신에 설치하여 패키지를 테스트하고 종속성이 패키지에 필요한 모든 것을 자동으로 가져오는지 확인해야 합니다.
또한 모든 종속성이 보안 업데이트를 허용하는지 확인해야 합니다. "패키지 Y의 버전 1.2.3.4가 반드시 필요함"보다 "패키지 Y의 버전 X 이상 필요"로 패키지 종속성을 지정하는 것이 더 좋습니다.
주요 배포판에서는 권장되는 소프트웨어 패키징 방식에 대한 문서를 제공할 수 있습니다. 예를 들어 데비안에는Java 소프트웨어 정책 매뉴얼.소프트웨어를 배포판에 포함할 계획이 없다면 여기에서 벗어날 수 있지만, .dpkg
패키지된 Java 소프트웨어를 처리하는 방법을 배우려면 이 페이지를 읽어야 합니다.