uos打包——公网deb包转uos的deb包
這篇文章主要介紹公網上的deb包如何轉化為符合uos規范的deb包
一,獲取deb包
1. 本文檔使用eog包進行演示從舊規則的包改成新規則的包的過程示例.2. 使用apt download eog或者其他方式來下載一個舊規則的eog包uos@uos-PC:~/Desktop$ mkdir eog uos@uos-PC:~/Desktop$ cd eog/uos@uos-PC:~/Desktop/eog$ apt download eoguos@uos-PC:~/Desktop/eog$ lseog_3.28.4-2+b1_amd64.deb3. 使用dpkg-deb -R pkg.deb test 將包名為pkg的deb包解壓到test目錄下uos@uos-PC:~/Desktop/eog$ dpkg-deb -R eog_3.28.4-2+b1_amd64.deb testuos@uos-PC:~/Desktop/eog$ lseog_3.28.4-2+b1_amd64.deb test二,改包名
1. 按照新規則,我們要使用倒置域名規則來命令包名,并且要升級一下版本號修改test目錄下的DEBIAN目錄下的control文件,具體為修改Package字段和Version字段2. 修改前:Package: eogVersion: 3.28.4-2+b1修改后:Package: org.gnome.eogVersion: 3.28.4-3+b1版本號由軟件版本號和打包版本號組成,由`-`分割,左邊是軟件版本號,右邊是打包版本號,我們升級版本號只修改打包版本號,其他的不需要改變三,創建UOS規范包結構
1,UOS包結構基本目錄 ,entries下的文件夾,只需把有的移動過來就行
└── org.gnome.eog #此目錄以包名命名├── entries│ ├── applications #放desktop文件│ ├── autostart #放自啟動入口文件│ ├── icons #應用的圖標文件,根據大小放進不同的目錄下的apps/目錄下,svg格式的放在scalable/apps/目錄下│ │ └── hicolor│ │ ├── 128x128│ │ │ └── apps│ │ ├── 16x16│ │ │ └── apps│ │ ├── 24x24│ │ │ └── apps│ │ ├── 256x256│ │ │ └── apps│ │ ├── 32x32│ │ │ └── apps│ │ ├── 48x48│ │ │ └── apps│ │ ├── 512x512│ │ │ └── apps│ │ ├── 64x64│ │ │ └── apps│ │ └── scalable│ │ └── apps│ ├── plugins #插件的目錄│ └── services #dbus服務目錄│ └── glib-2.0 #schema文件│ └── GConf #gseetings文件│ └── locale #語言包文件├── files #其他文件└── info #應用的一些信息2,參考腳本,entries下的文件夾來自/usr/share/, 沒有的文件夾可以注釋掉。
#!/bin/bash# 包名 pkg="org.gnome.eog"mkdir -p $(pwd)/test/opt/apps/${pkg}/files mkdir -p $(pwd)/test/opt/apps/${pkg}/entriesmv $(pwd)/test/usr/bin $(pwd)/test/opt/apps/${pkg}/files/ mv $(pwd)/test/usr/lib $(pwd)/test/opt/apps/${pkg}/files/mv $(pwd)/test/usr/share/applications $(pwd)/test/opt/apps/${pkg}/entries/ mv $(pwd)/test/usr/share/icons $(pwd)/test/opt/apps/${pkg}/entries/ mv $(pwd)/test/usr/share/GConf $(pwd)/test/opt/apps/${pkg}/entries/ mv $(pwd)/test/usr/share/glib-2.0 $(pwd)/test/opt/apps/${pkg}/entries/ mv $(pwd)/test/usr/share/locale $(pwd)/test/opt/apps/${pkg}/entries/mv $(pwd)/test/usr/share $(pwd)/test/opt/apps/${pkg}/files/rm -r $(pwd)/test/usr3,將腳本放到與test同級的目錄,執行腳本
uos@uos-PC:~/Desktop/eog$ ls chdir.sh eog_3.28.4-2+b1_amd64.deb test uos@uos-PC:~/Desktop/eog$ chmod +x chdir.sh uos@uos-PC:~/Desktop/eog$ ./chdir.sh uos@uos-PC:~/Desktop/eog$ ls chdir.sh eog_3.28.4-2+b1_amd64.deb test uos@uos-PC:~/Desktop/eog$ cd test/ uos@uos-PC:~/Desktop/eog/test$ ls DEBIAN opt uos@uos-PC:~/Desktop/eog/test$四,編輯info文件
1,info文件是應用的描述文件,使用json格式,info文件內容如下:
{"appid": "org.gnome.eog", # 包名"name": "eog", # 程序名"version": "3.28.4", # 程序版本號"arch": ["amd64","arm64","mips64el"], # 支持架構"permissions": { # 暫時沒使用"autostart": false,"notification": false,"trayicon": false,"clipboard": false,"account": false,"bluetooth": false,"camera": false,"audio_record": false,"installed_apps": false}}2,將編輯好的文件放到 與files文件的同級目錄
uos@uos-PC:~/Desktop/eog/test/opt/apps/org.gnome.eog$ ls entries files info uos@uos-PC:~/Desktop/eog/test/opt/apps/org.gnome.eog$五,創建啟動腳本用來導入依賴庫路徑
1,某些包帶有自己的運行依賴庫,舊規則都是安裝在/usr/lib/目錄下,在系統啟動時可以找到需要的運行庫,新規則不允許安裝在/usr/lib/下,所以我們寫一個啟動腳本,先使用LD_LIBRARY_PATH環境變量來導出運行依賴庫的路徑,再去執行可執行文件
2,files文件夾下有lib文件夾的需要導庫腳本,沒有的可以直接執行可執行文件,導庫腳本如下:
- 腳本中的路徑都需要是絕對路徑
- c/c++導入庫路徑腳本參考
- python導入庫路徑腳本參考
- perl導入庫路徑腳本參考
3, 將寫好的啟動腳本放到bin目錄下,新創建的腳本沒有可執行權限,需要先添加可執行權限
uos@uos-PC:~/Desktop/eog/test/opt/apps/org.gnome.eog/files/bin$ chmod +x eog.sh uos@uos-PC:~/Desktop/eog/test/opt/apps/org.gnome.eog/files/bin$ ls eog eog.sh uos@uos-PC:~/Desktop/eog/test/opt/apps/org.gnome.eog/files/bin$六,編輯desktop文件
1,uos規范的deb包會將程序安裝到/opt/apps/包名/的目錄下,desktop文件位于entries/applications目錄下
2,修改Exec字段,將Exec字段改為程序安裝后可執行文件的目錄/opt/apps/org.gnome.eog/files/bin/eog.sh
3,修改Icon字段,將Icon字段改為程序安裝后圖標的目錄/opt/apps/org.gnome.eog/entries/icons/hicolor/256x256/apps/eog.png
4,修改完這兩個字段就可以進行下一步了,如果出現啟動器不顯示,可以參考第四步,該例子中設計語言的字段太多,導致最后啟動器沒有顯示,把一些和語言有關的字段刪除后,啟動器可以正常顯示
[Desktop Entry] Name=Image Viewer Comment=Browse and rotate images Exec=/opt/apps/org.gnome.eog/files/bin/eog.sh %U Icon=/opt/apps/org.gnome.eog/entries/icons/hicolor/256x256/apps/eog.png StartupNotify=true Terminal=false Type=Application Categories=GNOME;GTK;Graphics;2DGraphics;RasterGraphics;Viewer; X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Product=EOG X-GNOME-Bugzilla-Component=general X-GNOME-Bugzilla-Version=3.28.4 X-GNOME-DocPath=eog/eog.xml MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/pjpeg;image/png;image/tiff;image/x-bmp;image/x-gray;image/x-icb;image/x-ico;image/x-png;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-xbitmap;image/x-xpixmap;image/x-pcx;image/svg+xml;image/svg+xml-compressed;image/vnd.wap.wbmp;image/x-icns; Keywords=Picture;Slideshow;Graphics;七,刪除鉤子腳本
1,如果解壓后的包在DEBIAN目錄下有preinst, postinst, prerm, postrm文件,確定沒有用的話,將其刪除,不刪除會導致deb包安裝失敗
2,之前在打包wireshark的過程中需要用到這些鉤子腳本,但是極少數,大部分都是沒有用的,具體可以群里交流
八,壓包和安裝
1,使用dpkg-deb -b test/ 輸出目錄 ,將按照新規則放置好的目錄壓入deb包內
uos@uos-PC:~/Desktop/eog$ ls chdir.sh eog_3.28.4-2+b1_amd64.deb test uos@uos-PC:~/Desktop/eog$ dpkg-deb -b test/ . dpkg-deb: 正在 './org.gnome.eog_3.28.4-2+b1_amd64.deb' 中構建軟件包 'org.gnome.eog'。 uos@uos-PC:~/Desktop/eog$ ls chdir.sh eog_3.28.4-2+b1_amd64.deb org.gnome.eog_3.28.4-2+b1_amd64.deb test uos@uos-PC:~/Desktop/eog$2,使用dpkg -i 安裝或者雙擊deb包安裝,檢查啟動器是否有改程序且能正常使用和卸載,如果正常,打包完成。
3,啟動器中程序名和desktop文件的Name字段對應
3,打包過程中遇到的問題,隨時可以在QQ群交流。QQ群號:942418736
九,Q/A
總結
以上是生活随笔為你收集整理的uos打包——公网deb包转uos的deb包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈RRU、FPGA、ORAN
- 下一篇: iOS 相册多选 相机选择图片