如何安裝 StarUML-v2.8.0-64-bit.deb ? [論壇 - 新手村]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊

« 1 (2)


回覆: 如何安裝 StarUML-v2.8.0-64-bit.deb ?
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 30
HP : 148 / 743
MP : 418 / 10734
EXP: 75
離線
以下測試的環境是「Xubuntu 16.04 amd64 英文界面」。


================================================================================

## 前提說明

這篇回覆,提供另一種安裝的方式,不透過「套件管理系統」的安裝方式。
可以對照「#10」來看。

原本的「StarUML-v2.8.0-64-bit.deb」會安裝「StarUML」到「/opt」底下,
這篇要介紹安裝到「~/app」這個資料夾底下,您也可以安裝到其他的路徑。

關於「Desktop Entry」,「系統全域」是安裝到「/usr/share/applications/」
這篇要介紹安裝到「個人區域」,也就是安裝到「~/.local/share/applications」

關於「Icon」,「系統全域」是安裝到「/usr/share/icons/」
這篇要介紹安裝到「個人區域」,也就是安裝到「~/.local/share/icons」

關於上面提到「libgcrypt11」的問題,上面「#10」「#9
原本是安裝到「系統全域」的「/lib/x86_64-linux-gnu/」, <-- 我的環境是這個路徑。
這篇要介紹安裝到「~/app/StarUML/opt/staruml/lib/」<-- 可以參考「~/app/StarUML/opt/staruml/staruml」的內容。


關於「libudev.so.0」,也是一樣的模式,上面的「#10
原本是設定到「系統全域」的「/lib/x86_64-linux-gnu/」,
這篇要介紹安裝到「~/app/StarUML/opt/staruml/lib/」<-- 可以參考「StarUML-v2.8.0-64-bit.deb」的「Maintainer Scripts」,
最底下會說明,如何找到「Maintainer Scripts」。

再來還會提到兩個輔助工具「xdg-desktop-menu」和「xdg-icon-resource」,是屬於「xdg-utils」這個套件。
跟「Desktop Entry」和「Icon」有關。


================================================================================

## 安裝步驟

執行下面這段「Script」。


#!/usr/bin/env bash

## install-app.sh

## 產生放置資料夾
mkdir -p $HOME/app


## 切換到「$HOME/app」這個資料夾
cd $HOME/app

## 下載 deb 檔
wget -c http://staruml.io/download/release/v2.8.0/StarUML-v2.8.0-64-bit.deb
wget -c http://security.ubuntu.com/ubuntu/pool/main/libg/libgcrypt11/libgcrypt11_1.5.3-2ubuntu4.4_amd64.deb


## 解開 deb 檔
dpkg -x StarUML-v2.8.0-64-bit.deb StarUML
dpkg -x libgcrypt11_1.5.3-2ubuntu4.4_amd64.deb libgcrypt11


## 複製「libgcrypt.so.11」和「libgcrypt.so.11.8.2」到「StarUML/opt/staruml/lib/」
cp libgcrypt11/lib/x86_64-linux-gnu/libgcrypt.so.11 StarUML/opt/staruml/lib/
cp libgcrypt11/lib/x86_64-linux-gnu/libgcrypt.so.11.8.2 StarUML/opt/staruml/lib/


## 產生「StarUML/opt/staruml/lib/libudev.so.0」
ln -s /lib/x86_64-linux-gnu/libudev.so.1 StarUML/opt/staruml/lib/libudev.so.0



然後執行「~/app/StarUML/opt/staruml/staruml」就會啟動「staruml」。


$ ~/app/StarUML/opt/staruml/staruml



底下會解釋如何安裝「Desktop Entry」和「Icon」。

================================================================================

## 其他相依套件

執行


$ dpkg -f StarUML-v2.8.0-64-bit.deb Depends



顯示


gconf-service, libasound2 (>= 1.0.23), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.11), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.2.14), libexpat1 (>= 1.95.8), libfontconfig1 (>= 2.8.0), libfreetype6 (>= 2.3.9), libgcc1 (>= 1:4.1.1), libgconf-2-4 (>= 2.31.1), libgcrypt11 (>= 1.4.5), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.18.0), libgtk2.0-0 (>= 2.24.0), libnspr4 (>= 1.8.0.10), libnss3 (>= 3.12.6), libpango1.0-0 (>= 1.22.0), libstdc++6 (>= 4.6), libudev0 (>= 147) | libudev1 (>= 198), libx11-6 (>= 2:1.4.99.1), libxcomposite1 (>= 1:0.3-1), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxrandr2 (>= 2:1.2.0), libxrender1, ca-certificates, libcurl3, lsb-base (>= 3.2), xdg-utils (>= 1.0.2), wget



我測試的系統,目前已經有安裝很多套件了,應該有滿足上面的相依,所以我沒有再做其他安裝的動作
若您的系統,有缺上面相依的套件的話,就請自行安裝。
目前還沒有花時間把這段去寫成「script」。也許有其他人可以來補充。

================================================================================

## 安裝 Desktop Entry

只要產生一個檔案「~/.local/share/applications/staruml.desktop」,填寫相關的格式就行了。



目前這篇討論的是安裝到個人的HOME底下,所以就不安裝在「/usr/share/applications/staruml.desktop」這個路徑。

除了自行撰寫,剛剛解開的「StarUML-v2.8.0-64-bit.deb」裡面也有提供一個檔案「StarUML/opt/staruml/staruml.desktop」。

原本的內容如下


[Desktop Entry]
Name=StarUML
Type=Application
Categories=Development
Exec=/opt/staruml/staruml %U
Icon=staruml
MimeType=text/html;
Keywords=Design;Modeling;Development;UML;




以下假設使用的帳號叫「user」,所以家目錄就是「/home/user」

所以複製「StarUML/opt/staruml/staruml.desktop」這個檔案
到「~/.local/share/applications/staruml.desktop」,

然後修改「~/.local/share/applications/staruml.desktop」。
只要將「Exec=/opt/staruml/staruml %U」
改成「Exec=/home/user/app/StarUML/opt/staruml/staruml %U」就行了


這樣就可以在「開始功能表 」找到「StarUML」的啟用圖示,
「Xubuntu」的「開始功能表」使用的是「whiskermenu」
所以「StarUML」的啟用圖示,除了可以打關鍵字找到,
也可以在「Development / StarUML」找到,可以參考上面的「Categories=Development」。



以下是參考的「Script」。

參考一


#!/usr/bin/env bash

## install-desktop-entry-1.sh

SRC_STARUML_DESKTOP_PATH=StarUML/opt/staruml/staruml.desktop
DES_STARUML_DESKTOP_PATH=~/.local/share/applications/staruml.desktop

SRC_STARUML_EXEC_PATH=/opt/staruml/staruml
DES_STARUML_EXEC_PATH=$(pwd)/StarUML/opt/staruml/staruml

ESC_SRC_STARUML_EXEC_PATH=${SRC_STARUML_EXEC_PATH//\//\\\/}
ESC_DES_STARUML_EXEC_PATH=${DES_STARUML_EXEC_PATH//\//\\\/}

## cp StarUML/opt/staruml/staruml.desktop ~/.local/share/applications/staruml.desktop

##  可以使用下面這一行進行複製。
# cp "$SRC_STARUML_DESKTOP_PATH" "DES_STARUML_DESKTOP_PATH"

## 也可以透過「xdg-desktop-menu」這個工具來產生。
xdg-desktop-menu install $SRC_STARUML_DESKTOP_PATH --novendor


## 顯示「執行取代的指令」
echo sed -i -e "s/${ESC_SRC_STARUML_EXEC_PATH}/${ESC_DES_STARUML_EXEC_PATH}/g" $DES_STARUML_DESKTOP_PATH

## 真正「執行取代的指令」
sed -i -e "s/${ESC_SRC_STARUML_EXEC_PATH}/${ESC_DES_STARUML_EXEC_PATH}/g" $DES_STARUML_DESKTOP_PATH





參考二


#!/usr/bin/env bash

## install-desktop-entry-1.sh

STARUML_MENU_PATH=$HOME/.local/share/applications/staruml.desktop
STARUML_DESKTOP_PATH=$HOME/Desktop/staruml.desktop
STARUML_EXEC_PATH=$(pwd)/StarUML/opt/staruml/staruml

cat > $STARUML_MENU_PATH << EOF
[Desktop Entry]
Name=StarUML
Type=Application
Categories=Development
Exec=$STARUML_EXEC_PATH %U
Icon=staruml
MimeType=text/html;
Keywords=Design;Modeling;Development;UML;
EOF

## 複製一份到「~/Desktop/staruml.desktop」
cp $STARUML_MENU_PATH $STARUML_DESKTOP_PATH
chmod u+x $STARUML_DESKTOP_PATH

## 或是產生一個「Symbolic link」到「~/Desktop/staruml.desktop」也行
## ln -s $STARUML_MENU_PATH $STARUML_DESKTOP_PATH




另外也可以複製一份到「~/Desktop/staruml.desktop」,
或是做個捷徑到「~/Desktop/staruml.desktop」,
這樣就會在「桌面」顯示圖示,可以點選啟動「staruml」。
這個可以參考之前寫的另一篇「回覆#2」。


關於「Icon=staruml」,接續著來說明「如何安裝 Icon」。

================================================================================

## 安裝 Icon

在「~/app/StarUML/opt/staruml/」,有四個「png」檔。

執行


$ ls ~/app/StarUML/opt/staruml/*.png -1



顯示


/home/user/app/StarUML/opt/staruml/appshell128.png
/home/user/app/StarUML/opt/staruml/appshell256.png
/home/user/app/StarUML/opt/staruml/appshell32.png
/home/user/app/StarUML/opt/staruml/appshell48.png



現在分別將這四個檔案複製到下面四個路徑


~/.local/share/icons/hicolor/128x128/apps/staruml.png
~/.local/share/icons/hicolor/256x256/apps/staruml.png
~/.local/share/icons/hicolor/32x32/apps/staruml.png
~/.local/share/icons/hicolor/48x48/apps/staruml.png



所以可以執行下面的簡易「Script」來達到這個動作


#!/usr/bin/env bash

## 確保資料夾存在
mkdir -p ~/.local/share/icons/hicolor/128x128/
mkdir -p ~/.local/share/icons/hicolor/256x256/
mkdir -p ~/.local/share/icons/hicolor/32x32/
mkdir -p ~/.local/share/icons/hicolor/48x48/

## 複製icon檔案
cp ~/app/StarUML/opt/staruml/appshell128.png ~/.local/share/icons/hicolor/128x128/apps/staruml.png
cp ~/app/StarUML/opt/staruml/appshell256.png ~/.local/share/icons/hicolor/256x256/apps/staruml.png
cp ~/app/StarUML/opt/staruml/appshell32.png ~/.local/share/icons/hicolor/32x32/apps/staruml.png
cp ~/app/StarUML/opt/staruml/appshell48.png ~/.local/share/icons/hicolor/48x48/apps/staruml.png




我們可以執行下面的指令來確認


$ ls ~/.local/share/icons/hicolor/*/apps/staruml.png -1



顯示


/home/user/.local/share/icons/hicolor/128x128/apps/staruml.png
/home/user/.local/share/icons/hicolor/256x256/apps/staruml.png
/home/user/.local/share/icons/hicolor/32x32/apps/staruml.png
/home/user/.local/share/icons/hicolor/48x48/apps/staruml.png



我們也可以透過「xdg-icon-resource」這個輔助工具來達到這個動作。
底下會在額外說明「xdg-icon-resource」的用法。

以下是參考「Script」。


#!/usr/bin/env bash

xdg-icon-resource install --novendor --mode user --size 128 StarUML/opt/staruml/appshell128.png staruml
xdg-icon-resource install --novendor --mode user --size 256 StarUML/opt/staruml/appshell256.png staruml
xdg-icon-resource install --novendor --mode user --size 32 StarUML/opt/staruml/appshell32.png staruml
xdg-icon-resource install --novendor --mode user --size 48 StarUML/opt/staruml/appshell48.png staruml



上面的兩個方式,我們也可以改寫,以下是參考「Script」


#!/usr/bin/env bash

## https://www.google.com.tw/#q=sed+replace+string
## https://www.cyberciti.biz/tips/bash-shell-parameter-substitution-2.html
## https://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/

STARUML_APP_DIR_PATH=$HOME/app/StarUML/opt/staruml
for icon in "$STARUML_APP_DIR_PATH"/*.png; do
	size="${icon##*/appshell}"
	size="${size%.png}"
	#echo mkdir -p "~/.local/share/icons/hicolor/""$size""x""$size""/"
	mkdir -p "$HOME/.local/share/icons/hicolor/""$size""x""$size""/"
	#echo cp $icon "$HOME/.local/share/icons/hicolor/""$size""x"$size"/apps/staruml.png"
	cp $icon "$HOME/.local/share/icons/hicolor/""$size""x"$size"/apps/staruml.png"
done




使用「xdg-icon-resource」


#!/usr/bin/env bash

STARUML_APP_DIR_PATH=$HOME/app/StarUML/opt/staruml
for icon in "$STARUML_APP_DIR_PATH"/*.png; do
	size="${icon##*/appshell}"
	size="${size%.png}"
	echo xdg-icon-resource install --novendor --mode user --size "$size" "$icon" staruml
	xdg-icon-resource install --novendor --mode user --size "$size" "$icon" staruml
done




================================================================================

## 移除 Icon

若是要移除,只要把剛剛安裝的4個檔案刪除就行了。


rm -f ~/.local/share/icons/hicolor/128x128/apps/staruml.png
rm -f ~/.local/share/icons/hicolor/256x256/apps/staruml.png
rm -f ~/.local/share/icons/hicolor/32x32/apps/staruml.png
rm -f ~/.local/share/icons/hicolor/48x48/apps/staruml.png



執行下面指令確認


$ ls ~/.local/share/icons/hicolor/*/apps/staruml.png -1


會顯示


ls: cannot access '/home/user/.local/share/icons/hicolor/*/apps/staruml.png': No such file or directory



一樣可以透過「xdg-icon-resource」這個輔助工具來達到「移除」這個動作。


xdg-icon-resource uninstall --novendor --mode user --size 128 staruml
xdg-icon-resource uninstall --novendor --mode user --size 256 staruml
xdg-icon-resource uninstall --novendor --mode user --size 32 staruml
xdg-icon-resource uninstall --novendor --mode user --size 48 staruml



上面兩種方式,一樣改寫如下


#!/usr/bin/env bash

STARUML_APP_DIR_PATH=$HOME/app/StarUML/opt/staruml
for icon in "$STARUML_APP_DIR_PATH"/*.png; do
	size="${icon##*/appshell}"
	size="${size%.png}"
	#echo rm -f "$HOME/.local/share/icons/hicolor/""$size""x"$size"/apps/staruml.png"
	rm -f "$HOME/.local/share/icons/hicolor/""$size""x"$size"/apps/staruml.png"
done



使用「xdg-icon-resource」的「script」


#!/usr/bin/env bash

STARUML_APP_DIR_PATH=$HOME/app/StarUML/opt/staruml
for icon in "$STARUML_APP_DIR_PATH"/*.png; do
	size="${icon##*/appshell}"
	size="${size%.png}"
	echo xdg-icon-resource uninstall --novendor --mode user --size "$size" staruml
	xdg-icon-resource uninstall --novendor --mode user --size "$size" staruml
done



================================================================================

## 說明 「xdg-icon-resource」的使用方法

先執行

$ man xdg-icon-resource

可以看到其中一段


xdg-icon-resource install [--noupdate] [--novendor] [--theme theme] [--context context] [--mode mode] --size size icon-file [icon-name]



先給下面這段「pattern」,等會可以對照著看


~/.local/share/icons/$theme/$sizex$size/$context/$icon-name.$extension-name



剛剛的例子,

要安裝「~/app/StarUML/opt/staruml/appshell128.png」這個icon檔案,

到「~/.local/share/icons/hicolor/128x128/apps/staruml.png」這個路徑
這個路徑,可以對照上面的「pattern」。

所以欄位如下


theme: hicolor
size: 128
context: apps
icon-name: staruml
extension-name: png



然後以下是安裝的動作


## 確保資料夾存在
mkdir -p ~/.local/share/icons/hicolor/128x128/apps

## 透過「cp」,執行安裝的動作
cp ~/app/StarUML/opt/staruml/appshell128.png ~/.local/share/icons/hicolor/128x128/apps/staruml.png




若是透過「xdg-icon-resource」的方式安裝,指令如下,


xdg-icon-resource install --novendor --theme hicolor --context apps --mode user --size 128 ~/app/StarUML/opt/staruml/appshell128.png staruml



欄位如下


--theme: hicolor <-- 預設值是「hicolor」 ,所以「--theme hicolor」可省略
--context: apps <-- 預設值是「apps」,所以「--context apps」可省略
--mode: user <-- 預設值是「system」,所以「--mode user」不可省略
--size: 128
icon-file: ~/app/StarUML/opt/staruml/appshell128.png
icon-name: staruml




所以上面可以省略一些欄位,改寫如下


xdg-icon-resource install --novendor --mode user --size 128 ~/app/StarUML/opt/staruml/appshell128.png staruml



關於「--mode」

*「--mode user」指的是安裝到「~/.local/share/icons/」
*「--mode system」指的是安裝到「/usr/share/icons/」


還有要注意上面的「icon-name」是「staruml」,所以指令下的時候,必須填寫「--novendor」。
否則就會出現下面的訊息


xdg-icon-resource: icon name 'staruml' does not have a proper vendor prefix
A vendor prefix consists of alpha characters ([a-zA-Z]) and is terminated
with a dash ("-"). An example icon name is 'example-staruml'
Use --novendor to override or 'xdg-icon-resource --manual' for additional info.



若是要移除剛剛安裝的icon檔案,執行指令如下


rm -f ~/.local/share/icons/hicolor/128x128/apps/staruml.png



一樣可以透過「xdg-icon-resource」的方式移除,指令如下,


xdg-icon-resource uninstall --novendor --theme hicolor --context apps --mode user --size 128 staruml



或是


xdg-icon-resource uninstall --novendor --mode user --size 128 staruml



================================================================================

## xdg-utils

關於「xdg-icon-resource」的使用方法,在寫這篇「回覆」的時候,本來要寫一個類似這篇的案例說明,
雖然腦海中預先有想法了,不過那時候我寫完「xfconf-query」的用法後,就擱置了。
那時候本來預計要透過「Sublime Text 3」來當範例說明,
所以各位看官也可以拿「Sublime Text 3」來當「練習」。

接下來簡易探索「xdg-utils」這個套件

執行


$ which xdg-icon-resource



顯示


/usr/bin/xdg-icon-resource



執行


$ dpkg -S /usr/bin/xdg-icon-resource



顯示


xdg-utils: /usr/bin/xdg-icon-resource



表示「/usr/bin/xdg-icon-resource」是屬於「xdg-utils」這個套件。

也可以改寫成下面這一行指令,一樣會顯示上面的結果


$ dpkg -S $(which xdg-icon-resource)



或是改寫成改寫成下面這一行指令,一樣會顯示上面的結果


$ dpkg -S `which xdg-icon-resource`



執行


$ dpkg -L xdg-utils



顯示


/.
/usr
/usr/bin
/usr/bin/xdg-settings
/usr/bin/xdg-desktop-icon
/usr/bin/xdg-mime
/usr/bin/xdg-open
/usr/bin/xdg-screensaver
/usr/bin/xdg-email
/usr/bin/xdg-icon-resource
/usr/bin/xdg-desktop-menu
/usr/share
/usr/share/doc
/usr/share/doc/xdg-utils
/usr/share/doc/xdg-utils/RELEASE_NOTES
/usr/share/doc/xdg-utils/copyright
/usr/share/doc/xdg-utils/changelog.Debian.gz
/usr/share/doc/xdg-utils/TODO
/usr/share/doc/xdg-utils/README
/usr/share/doc/xdg-utils/NEWS.Debian.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/xdg-open.1.gz
/usr/share/man/man1/xdg-screensaver.1.gz
/usr/share/man/man1/xdg-settings.1.gz
/usr/share/man/man1/xdg-desktop-icon.1.gz
/usr/share/man/man1/xdg-desktop-menu.1.gz
/usr/share/man/man1/xdg-icon-resource.1.gz
/usr/share/man/man1/xdg-email.1.gz
/usr/share/man/man1/xdg-mime.1.gz
/usr/bin/browse



執行下面指令,了解「xdg-utils」這個套件,有哪些manpage可讀 (這個技巧紀錄「在這」)


$ dpkg -L xdg-utils | grep '/man/man.*/'




顯示


/usr/share/man/man1/xdg-open.1.gz
/usr/share/man/man1/xdg-screensaver.1.gz
/usr/share/man/man1/xdg-settings.1.gz
/usr/share/man/man1/xdg-desktop-icon.1.gz
/usr/share/man/man1/xdg-desktop-menu.1.gz
/usr/share/man/man1/xdg-icon-resource.1.gz
/usr/share/man/man1/xdg-email.1.gz
/usr/share/man/man1/xdg-mime.1.gz



$ man xdg-open
$ man xdg-screensaver
$ man xdg-settings
$ man xdg-desktop-icon
$ man xdg-desktop-menu
$ man xdg-icon-resource
$ man xdg-email
$ man xdg-mime


執行


$ file /usr/bin/xdg-icon-resource



顯示


/usr/bin/xdg-icon-resource: POSIX shell script, ASCII text executable



關於「/usr/bin/xdg-icon-resource」是「shell script」,所以有興趣深究的話,也可以直接觀看裡面的內容


$ less /usr/bin/xdg-icon-resource



================================================================================

## StarUML-v2.8.0-64-bit.deb 探索指引

### 「DEBIAN/postinst」

另外可以執行


$ dpkg -e StarUML-v2.8.0-64-bit.deb



會產生一個「DEBIAN」的資料夾,這裡面會放置「Maintainer Scripts」。

執行


$ tree DEBIAN



顯示


DEBIAN/
├── control
├── postinst
├── postrm
└── prerm

0 directories, 4 files



可以研讀「DEBIAN/postinst」這個檔案,裡面有包含上面提到的一些用法。
若是透過「dpkg」安裝「StarUML-v2.8.0-64-bit.deb」,則會在「/var/lib/dpkg/info/staruml.postinst」找到。


### 「StarUML/opt/staruml/staruml」

還有可以研讀「StarUML/opt/staruml/staruml」這個檔案,也是「Shell Script」,
要了解的就是「LD_LIBRARY_PATH」,
這跟我之前提到的這篇「回覆#5」裡面列的「## lib 議題相關參考網址」有關聯。


================================================================================

報告完畢


2/28 3:26:46
應用擴展 工具箱

« 1 (2)

 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.