ubuntu20.04安裝StarUML2

土豆西瓜大芝麻發表於2020-11-25

存在的問題

  • StarUML官網下載地址 提供的最新StarUML3只有AppImage格式的,需要wine才行。所以我選擇的是StarUML2。
  • StarUML2依賴libgcrypt11和libcurl3。libgcrypt11是ubuntu14.04的依賴庫,可以去找deb包解決;而libcurl3不行,由於curl依賴libcurl4,libcurl3和libcurl4衝突,安裝libcurl3會導致curl的解除安裝,從而導致transmission的解除安裝。

解決方案

1、下載StarUML2的deb和libgcrypt11依賴的deb。

StarUML2官網下載地址

libgcrypt11下載地址

libgcrypt11還依賴multiarch-support,multiarch-support的下載地址

# cd到下載目錄中,然後執行安裝命令
sudo apt-get install ./multiarch-support_2.19-0ubuntu6.15_amd64.deb
sudo apt-get install ./libgcrypt11_1.5.3-2ubuntu4.6_amd64.deb

2、改變curl的版本,使得它同時支援libcurl3和libcurl4。

# 這是別人自己重新打包的一個curl版本。
# 原理也很簡單,就是讓apt-get把libcurl3解釋為libcurl4,這樣當apt-get要檢索starUML依賴的libcurl3時,就會檢索到已安裝的libcurl4,這樣就不會提示找不到依賴了。對於使用沒有影響。
sudo add-apt-repository ppa:xapienz/curl34
sudo apt-get update
sudo apt-get install curl

3、依賴問題都解決了,就能安裝StarUML2了。

# cd到下載目錄中,然後執行安裝命令
sudo apt-get install ./StarUML-v2.8.1-64-bit.deb

破解

# 修改驗證指令碼
sudo vi /opt/staruml/www/license/node/LicenseManagerDomain.js

破解的原理也比較簡單:

對於starUML的驗證函式,直接返回一個license資訊。這樣starUML就會認為你已經有了一個有效的license。

// 在函式validate中新增內容:
function validate(PK, name, product, licenseKey) {
    var pk, decrypted;
	// 破解 - 開始
	return {
		name:"test",
        product:"StartUML",
        licenseType:"vip",
        quantity:"staruml.io",
        licenseKey:"starumllicense"
    };
    // 破解 - 結束
    try {
        pk = new NodeRSA(PK);
        decrypted = pk.decrypt(licenseKey, 'utf8');
    } catch (err) {
        return false;
    }
    var terms = decrypted.trim().split("\n");
    if (terms[0] === name && terms[1] === product) {
        return { 
            name: name, 
            product: product, 
            licenseType: terms[2],
            quantity: terms[3],
            licenseKey: licenseKey
        };
    } else {
        return false;
    }
}

相關文章