syncthing-macos 프로젝트는 검소한 기본 MacOS 동기 트레이 응용 프로그램 번들입니다. 자체 동기화 인스턴스를 번들로 연결하고 배경 프로세스 동기화를 래프트하여 기본 MACOS 응용 프로그램과 비슷하게 작동하며 웹 브라우저 인터페이스를 사용하여 명령 줄 유틸리티와 덜 작동합니다.
기능은 다음과 같습니다.
~/Library/Application Support/Syncthing/syncthing.log , finder-> go -> 폴더로 이동하여 열 수 있습니다.
주목 : 이것은 공식 동기화 MACOS 응용 프로그램 번들입니다. 다른 동기화 인스턴스 나 랩퍼가 실행되지 않으면이 응용 프로그램이 작동하지 않습니다!
현재 OS X 10.13 이상이 필요합니다. Syncthing-Macos는 동기화 바이너리와 번들 된 응용 프로그램으로 디스크 이미지로 패키지됩니다.
설치하려면 DMG를 다운로드하고 마운트 한 다음 응용 프로그램을 드래그 앤 드롭하여 설치하십시오. 필요한 구성은 원격 동기화 인스턴스를 프로비저닝 할 때 API 키 및 URL을 설정하는 것입니다. 로컬 인스턴스가 자동 구성됩니다. syncthing-macos 응용 프로그램 번들은 Sparkle을 사용하여 자체 업데이트 메커니즘을 갖기 때문에 syncthing 의 자동 업데이터를 비활성화합니다.
최신 버전은 Github 릴리스에서 제공되거나 Homebrew brew install --cask syncthing 사용하여 설치할 수도 있습니다.
모든 크로스 플랫폼 접근 방식은 Apple MacOS가 제공하는 모든 기본 시설을 사용할 수 없습니다. 자동 업데이트, 벡터 아이콘 세트 (retina-ready)를 포함하고 애플리케이션 번들 생성. GUI는 Xcode로 설계되었으며 모든 것이 "기본 접근법"인 Objective-C와 Swift의 혼합으로 코딩됩니다.
이 프로젝트의 목표는 기본 MACOS 동기화 트레이를 유지하지만 사용할 수 있도록하는 것입니다. 그래프가없고 고급 구성 창이 없습니다. 매우 간단한 래퍼를 제공하므로 사용자는 SHINC를 CommandLine 응용 프로그램으로 인식하지 않습니다. 그것은 작별 인사를하기 위해 노력하고 있으며 항상 Apple Human Interface 지침을 따라 최대한 기본 응용 프로그램을 느끼게됩니다.
현재 상태는 문제 추적기 (버그 태그 필터링)를 참조하십시오.
기부금 및 문제 보고서를 환영합니다.
MIT
지원되지 않는 OS 버전의 경우 자동 업데이트가 수동으로 비활성화되어야합니다.
syncthing-macos 자체 동기 인스턴스를 실행하고 API 키를 자동으로 감지하도록 설계되었습니다. 기본 설정 창은 로컬 실행 인스턴스를 가리키는 데 사용되며 원격 인스턴스는 지원되지 않습니다. 고유 한 인스턴스를 실행하고 고급/개발 목적으로 지적 할 수 있습니다. 무엇을하고 있는지 알고있는 경우에만 설정 만 변경해야합니다.
추가 동기화 명령 선 매개 변수 설정은 숨겨진 기능입니다. 응용 프로그램 기본 구성을 사용 하여이 글을 작성해야합니다. 파라미터가 공백을 포함 할 수없는 유일한 전류 제한 사항!. 아래의 예에서 감사 로그가 활성화됩니다.
defaults write com.github.xor-gate.syncthing-macosx Arguments '--audit --auditfile=/Users/JohnDoe/staudit.log'
기본 IP 주소가 127.0.0.1에서 192.168.1.102와 같은 라우팅 가능한 주소로 변경되면 트레이 응용 프로그램 환경 설정도 설정해야합니다. 그렇지 않으면 API에 액세스 할 수 없으며 '오프라인'상태를 유지합니다. 구성을 깨뜨린 경우 go-> 폴더로 이동하는 Finder를 사용하여 ~/Library/Application Support/Syncthing/config.xml 에서 파일을 수동으로 편집 할 수 있습니다. 트레이에서 동기화 서비스를 다시 시작하십시오.
com.apple.provenance metadata의 문제) XATTR 동기화 기능을 사용하면 MacOS 13.0에서 MacOS <13.0으로 동기화 될 때 실패합니다. 이 기능을 사용하는 경우 동기화를 중지하고 /Users/<user>/Library/Application Support/Syncthing/config.xml 에있는 구성 XML 파일을 수동으로 편집해야합니다. 또는 동기화 데몬 인스턴스를 실행할 때의 위치는 응용 프로그램 번들을 관리하지 않았습니다). Web UI가 아직 XATTR 필터 관리를 지원하지 않기 때문에 구성 파일을 수동으로 편집해야합니다 (v1.22.1-1).
공유 폴더 당 xattrFilter 다음과 같이 구성되어야합니다.
<folder id="..." ...>
<xattrFilter>
...
<entry match="com.apple.provenance" permit="false"/>
<entry match="*" permit="true"/>
</xattrFilter>
</folder>
참고 : com.apple.provenance xattrFilter entry 참조하십시오.
자세한 내용은 #185 및 포럼 게시물도 참조하십시오.
Mac OS X에서 응용 프로그램 폴더에서 휴지통으로 응용 프로그램을 삭제합니다. 그러나 일부 사용자 별 파일은 다른 곳에 보관되어 있으며 $HOME/Library/Application Support/Syncthing 아래에 있습니다. 이 폴더의 파일은 구성, 암호화/프로필 파일 및 데이터베이스 캐시입니다. 자세한 내용은 docs.syncthing.net/users/config.html을 참조하십시오.
기본적으로 동기화 MACOS 응용 프로그램은 업데이트를 자동으로 확인합니다. 자동 업데이트 확인을 비활성화 (또는 다시 활성화)하려면 명령 라인에서 Sparkle Updater 매개 변수를 설정해야합니다.
defaults write com.github.xor-gate.syncthing-macosx SUEnableAutomaticChecks 0
이 설정은 공급되지 않으므로 CommandLine에서만 사용할 수 있습니다. 시스템이 더 이상 지원되지 않고 지원되지 않는 업데이트에 대한 통지를 받고 싶지 않은 경우 권장됩니다.
GIT 서브 모듈을 컴파일하기 전에 :
git submodule update --init
Xcode에서 코딩 할 때는 새로운 syncthing.xcworkspace 사용해야합니다.
Xcode 또는 실행으로 빌드 :
make debug
자동으로 Universal Binary Syncthing Syncthing을 다운로드하여 응용 프로그램 번들에 추가합니다.
릴리스 빌드의 경우 응용 프로그램 빌드에 서명하고 분산 가능한 DMG를 생성합니다.
make release-dmg
스크립트는 사용 가능한 첫 번째 개발자 ID를 선택하고 앱에 서명합니다. 서명 ID를 지정하려면 SYNCTHING_APP_CODE_SIGN_IDENTITY 환경 변수를 사용하십시오.
SYNCTHING_APP_CODE_SIGN_IDENTITY="Mac Developer: [email protected] (XB59MXU8EC)" make release-dmg
동기화 설정은 NSDefaults 기능을 사용합니다. 명령 선에서 모든 설정은 다음과 같이 표시 될 수 있습니다.
jerry@Jerrys-iMac ~ % defaults read com.github.xor-gate.syncthing-macosx
{
ApiKey = rR7YrEDLKhNETJZKgySmnYPZvebY9qgk;
Executable = "/Applications/Syncthing.app/Contents/Resources/syncthing/syncthing";
SUEnableAutomaticChecks = 1;
SUHasLaunchedBefore = 1;
SULastCheckTime = "2021-01-08 12:05:53 +0000";
SUSendProfileInfo = 0;
StartAtLogin = 1;
URI = "http://127.0.0.1:8384";
}
Executable 속성 (전원 사용자 만) NICE GUI를 사용하려고하지만 Syncthing.app 번들 외부에있는 고유 한 실행 파일이 있으면 Executable 구성 매개 변수를 내장 터미널 또는 ITERM2를 사용하여 defaults 명령 선 도구와 함께 수동으로 덮어 쓸 수 있습니다. 마지막 인수는 동기화 데몬 골랑 응용 프로그램으로 변경되어야합니다.
defaults write com.github.xor-gate.syncthing-macosx Executable /Users/jerry/develop/Syncthing/exe/syncthing
번들 경로로 다시 복원하려면 속성의 삭제를 사용하십시오. 자동으로 다시 재설정됩니다.
defaults delete com.github.xor-gate.syncthing-macosx Executable
Cocoapods는 종속성 관리에 사용됩니다. Homebrew 패키지 관리자와 함께 설치할 수 있습니다. Cocoapods에 대한 자세한 내용은 Cocoapods 가이드를 읽으십시오.
-<bundle index> 번호로 추가 된 배송 된 동기화 실행 버전을 사용합니다. 따라서 0.14.28 첫 번째 빌드/패키지와 동기화하는 경우 0.14.28-1 로 버전으로 표시됩니다. 현재 syncthing-macos 에 대해 별도의 버전을 가질 필요가 없습니다. 또한 래퍼를 동기화 릴리스와 단단히 결합시킵니다.
syncthing/Scripts/syncthing-resource.sh 로 가져옵니다syncthing/Scripts/create-dmg.sh 로 생성됩니다syncthing/Info.plist, key CFBundleShortVersionStringSYNCTHING_APP_CODE_SIGN_IDENTITY 환경 변수를 통해 지정된 것)와 함께 서명합니다. syncthing/syncthing-macos 안정적인 릴리스 및 동기화 서비스 (데몬)의 릴리스 후보 만 배송합니다.
DMG가 생성 된 후에는 공증을 받으려면 Apple에 보내야합니다. Apple에서 배포를 위해 앱을 올바르게 확인하면 spctl 로 확인할 수 있습니다.
spctl -a -t exec -vvv /Volumes/Syncthing/Syncthing.app
/Volumes/Syncthing/Syncthing.app: accepted
source=Notarized Developer ID
origin=Developer ID Application: Jakob Borg (LQE5SYM783)
올바르게 공증되지 않으면 다음 출력이 보입니다 (소스 참고) :
spctl -a -t exec -vvv /Volumes/Syncthing/Syncthing.app
/Volumes/Syncthing/Syncthing.app: accepted
source=Developer ID
origin=Developer ID Application: Jakob Borg (LQE5SYM783)
또한 https://developer.apple.com/documentation/xcode/notarizing_macos_software_before_diptribution의 Apple 개발자 문서도 참조하십시오
semver 모듈이 설치된 상태에서 Python 가상 환경을 활성화하십시오. 예를 들어 source venv/bin/activate .
번들 동기화를 업데이트하려면 make release-update 기본적으로 수행하는 기본 폴더에서 실행해야합니다.
syncthing/Scripts/syncthing-resource.sh , SYNCTHING_VERSION 업데이트
syncthing/Info.plist 업데이트
CFBundleShortVersionString : 사용자 읽기 가능한 문자열 (예 : 1.27.10-1 )CFBundleVersion : 증가 버전 카운터 (예 : 1.27.10-1 의 경우 102701001 )Git Branch가 GitHub로 눌렀을 때 GitHub 조치 CI 서버는 자동으로 디버그 및 릴리스를 빌드합니다.
올바르게 서명하고 공증 된 github.com 액션에서 릴리스 .dmg 수동으로 다운로드하십시오.
태그 v<major>.<minor>.<patch>-<bundle index>
Sparkle Updater Appcast.xml의 배포를 실행하십시오. GitHub을 바꾸면 JSON을 Sparkle Appcast.xml 파일로 출시합니다. (Sparkle Documentation 참조) 사용자에게 추진합니다.