當前位置:首頁 » 視頻軟體 » 怎樣下載ipk軟體
擴展閱讀
BD流式軟體界面怎樣設置 2025-02-01 00:34:44
怎樣設置視頻 2025-02-01 00:34:41
怎樣保存剪映視頻到本地 2025-02-01 00:20:43

怎樣下載ipk軟體

發布時間: 2022-03-14 02:34:17

① linux 下怎麼安裝 ipk 程序

很多新手對linux下的軟體安裝存在誤解,現在簡單解釋一下:
這類源代碼包需要解壓後(tar.gz的用tarzxvf解壓,tar.bz2的用tarjxvf解壓),進入解壓目錄,一般都有一個INSTALL的文本文件,裡面一般都是安裝的詳細說明,可以用vi、nano、pico或X下面的文本編輯器(如gedit,gvim,kedit等)打開查看,安裝一般就是三個步驟:
1、configure,這一步一般用來生成Makefile,為下一步的編譯做准備,你可以通過在configure後加上參數來對安裝進行控制,比如代碼:
./configure--prefix=/usr
上面的意思是將該軟體安裝在/usr下面,執行文件就會安裝在/usr/bin(而不是默認的/usr/local/bin),資源文件就會安裝在/usr/share(而不是默認的/usr/local/share)。同時一些軟體的配置文件你可以通過指定--sys-config=參數進行設定。有一些軟體還可以加上--with、--enable、--without、--disable等等參數對編譯加以控制,你可以通過允許./configure--help察看詳細的說明幫助。
2、make,這一步就是編譯,大多數的源代碼包都經過這一步進行編譯(當然有些perl或python編寫的軟體需要調用perl或python來進行編譯)。如果在make過程中出現error,你就要記下錯誤代碼(注意不僅僅是最後一行),然後你可以向開發者提交bugreport(一般在INSTALL里有提交地址),或者你的系統少了一些依賴庫等,這些需要自己仔細研究錯誤代碼。
3、makeinsatll,這條命令來進行安裝(當然有些軟體需要先運行makecheck或maketest來進行一些測試),這一步一般需要你有root許可權(因為要向系統寫入文件)。
安裝完畢後你就可以刪除解壓目錄了。採用源代碼編譯方式來安裝軟體是Linux系統下最常見的安裝軟體方法,而且這種方法使你可以更加自由地控制安裝細節,所以提倡大家多使用該方法安裝軟體。
PS:對於bin類型的安裝文件,一般給該文件加上可執行許可權,再運行之即可,如:代碼:

② 求助,openwrt安裝ipk軟體報錯

有兩種方式安裝: 登錄路由web界面(一般是192.168.1.1),在openwrt的軟體安裝界面上選擇上傳安裝。 登錄openwrt控制台,可用ssh登錄或通過路由的TTL介面在控制台用命令進行安裝:用winscp將下載的ipk安裝包上傳到路由器中

③ 怎樣下載ipk軟體

建議樓主參考:
http://jingyan..com/article/380abd0a717a061d90192ca8.html

④ linux平台的ipk軟體在哪下

有,ipk是換主題的。去http://www.noahe.com/index.html。點擊進入右上角的諾亞論壇http://club.noahe.com/index.php,左邊的欄目中的產品專區的網路學習機的np1100裡面就有關於ipk格式的軟體,還有很多有趣的東西呢!我還注冊了個號:lilyswt1。

望投我,打字很累

⑤ 誰有手機ipk格式的軟體help

電腦下載一個91手機助手、然後用數據線連接電腦裡面所下載人軟體都是IPK格式的,你所想要的軟體91助手都有,你想不到的軟體游戲他也都有、滿意就採納吧

⑥ 如何提取ipk文件

control.tar.gz中包含了control、md5sums、preinst、postinst、prerm、postrm這幾個文件,其中control是必須的,其它都是可選的。

data.tar.gz中包含了要安裝的程序和數據。

ipk的安裝對於大多數用戶來說都是使用preware、WebOS Quick Install、Internalz Pro來安裝程序的。如果不考慮postinst腳本,那麼使用這些工具安裝的文件都是相對於/media/cryptofs/apps目錄進行安裝的。如果直接使用不帶-o參數的ipkg install命令安裝的話,那麼安裝的文件都是相對於/目錄的。也就是說ipk包中實際上並不包含相對於那個路徑進行安裝的信息。安裝到哪兒只跟安裝的方式有關。

rootfs.tar.gz中那些預先安裝好的包都是相對於/目錄安裝的。相對於/目錄安裝的程序,用戶通過preware、WebOS Quick Install和系統自帶的軟體包管理器都是無法卸載的,但並不是說就真的無法卸載,實際上只要你願意,這些包都可以在root帳號下用ipkg remove命令來卸載掉。

我們在上一節中有一個<carrier>.tar沒有介紹(<carrier>表示att、wr、verizon等),之所以沒介紹主要原因就是我們需要先了解上面的這些內容,然後才比較容易解釋這個<carrier>.tar。

這個<carrier>.tar中的主要內容就是一些ipk包,另外,還有一個installer.xml。這個installer.xml如果不是要做跨運營商或跨機型移植,是不需要修改的。那麼剩下的就是運營商定製的一些ipk包了。這些包是在刷機程序把rootfs.tar.gz寫入設備之後,進行安裝的。他們都是相對於/目錄進行安裝的。因此這些包從本質上來講,跟rootfs.tar.gz中預先安裝的包是沒有區別的。唯一的區別就是rootfs.tar.gz中的包是預先安裝好的,<carrier>.tar中的包是在刷機過程中進行安裝的。而ROM驗證md5sums的過程是在<carrier>.tar中的所有ipk安裝之後才進行的。因此,<carrier>.tar中的包也是需要進行md5sums驗證的。

既然<carrier>.tar中的包也需要驗證,所以對於放在<carrier>.tar中的包來說,它的control.tar.gz中的md5sums不是可選的,而是必須的。如果缺少了這個md5sums,那麼刷機到82%時,同樣會因為無法通過md5sums驗證而終止刷機,無法重啟。

要生成一個帶md5sums的ipk,如果靠手工來計算編寫md5sums,並自己通過tar、gzip、ar等命令來打包實在是麻煩的很。實際上前人早在10年前就做好了這樣的打包腳本,叫ipkg-build。我們可以直接拿來用。

下面是這個腳本的完整內容:

#!/bin/sh

# ipkg-build -- construct a .ipk from a directory
# Carl Worth <[email protected]>
# based on a script by Steve Redler IV, [email protected] 5-21-2001
set -e

ipkg_extract_value() {
sed -e "s/^[^:]*:[[:space:]]*//"
}

required_field() {
field=$1

value=`grep "^$field:" < $CONTROL/control | ipkg_extract_value`
if [ -z "$value" ]; then
echo "*** Error: $CONTROL/control is missing field $field" >&2
return 1
fi
echo $value
return 0
}

pkg_appears_sane() {
local pkg_dir=$1

local owd=`pwd`
cd $pkg_dir

PKG_ERROR=0

large_uid_files=`find . -uid +99`
if [ -n "$large_uid_files" ]; then
echo "*** Warning: The following files have a UID greater than 99.
You probably want to chown these to a system user: " >&2
ls -ld $large_uid_files
echo >&2
fi


if [ ! -f "$CONTROL/control" ]; then
echo "*** Error: Control file $pkg_dir/$CONTROL/control not found." >&2
cd $owd
return 1
fi

pkg=`required_field Package`
[ "$?" -ne 0 ] && PKG_ERROR=1

version=`required_field Version | sed 's/.*://;'`
[ "$?" -ne 0 ] && PKG_ERROR=1

arch=`required_field Architecture`
[ "$?" -ne 0 ] && PKG_ERROR=1

required_field Maintainer >/dev/null
[ "$?" -ne 0 ] && PKG_ERROR=1

required_field Description >/dev/null
[ "$?" -ne 0 ] && PKG_ERROR=1

section=`required_field Section`
[ "$?" -ne 0 ] && PKG_ERROR=1
if [ -z "$section" ]; then
echo "The Section field should have one of the following values:" >&2
echo "Games, Multimedia, Communications, Settings, Utilies, Applications, Console, Misc" >&2
fi

priority=`required_field Priority`
[ "$?" -ne 0 ] && PKG_ERROR=1
if [ -z "$priority" ]; then
echo "The Priority field should have one of the following values:" >&2
echo "required, important, standard, optional, extra." >&2
echo "If you don't know which priority value you should be using, then use \`optional'" >&2
fi

if echo $pkg | grep '[^a-z0-9.+-]'; then
echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2
PKG_ERROR=1;
fi

local bad_fields=`sed -ne 's/^\([^[:space:]][^:[:space:]]\+[[:space:]]\+\)[^:].*/\1/p' < $CONTROL/control | sed -e 's/\\n//'`
if [ -n "$bad_fields" ]; then
bad_fields=`echo $bad_fields`
echo "*** Error: The following fields in $CONTROL/control are missing a ':'" >&2
echo " $bad_fields" >&2
echo "ipkg-build: This may be e to a missing initial space for a multi-line field value" >&2
PKG_ERROR=1
fi

for script in $CONTROL/preinst $CONTROL/postinst $CONTROL/prerm $CONTROL/postrm; do
if [ -f $script -a ! -x $script ]; then
echo "*** Error: package script $script is not executable" >&2
PKG_ERROR=1
fi
done

if [ -f $CONTROL/conffiles ]; then
for cf in `cat $CONTROL/conffiles`; do
if [ ! -f ./$cf ]; then
echo "*** Error: $CONTROL/conffiles mentions conffile $cf which does not exist" >&2
PKG_ERROR=1
fi
done
fi

cd $owd
return $PKG_ERROR
}

###
# ipkg-build "main"
###

case $# in
1)
dest_dir=.
;;
2)
dest_dir=$2
;;
*)
echo "Usage: ipkg-build <pkg_directory> [<destination_directory>]" >&2
exit 1
;;
esac

pkg_dir=$1

if [ ! -d $pkg_dir ]; then
echo "*** Error: Directory $pkg_dir does not exist" >&2
exit 1
fi

# CONTROL is second so that it takes precedence
CONTROL=
[ -d $pkg_dir/DEBIAN ] && CONTROL=DEBIAN
[ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL
if [ -z "$CONTROL" ]; then
echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2
exit 1
fi

if ! pkg_appears_sane $pkg_dir; then
echo >&2
echo "ipkg-build: Please fix the above errors and try again." >&2
exit 1
fi

tmp_dir=$dest_dir/IPKG_BUILD.$$
mkdir $tmp_dir

(cd $pkg_dir/data; find . -type f -print0 | xargs -0 md5sum ) > $pkg_dir/$CONTROL/md5sums
if [ ! -f "$pkg_dir/files.txt" ]; then
(cd $pkg_dir/data; find . -type f -print0 |xargs -0 grep '' -l) >$pkg_dir/files.txt
fi
# tar -C $pkg_dir/data -cf $tmp_dir/data.tar -T $pkg_dir/files.txt -h --verify
tar -C $pkg_dir/data -cf $tmp_dir/data.tar . --verify
gzip -f $tmp_dir/data.tar
tar -C $pkg_dir/$CONTROL -czf $tmp_dir/control.tar.gz .

echo "2.0" > $tmp_dir/debian-binary

pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk
#tar -C $tmp_dir -czf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz
(cd $tmp_dir ;ar -qc $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz ; mv $pkg_file ../)
rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz
rmdir $tmp_dir

echo "Packaged contents of $pkg_dir into $pkg_file"
這個腳本我對它作過一處非常細微的修改,舊的腳本中在打包data.tar.gz時,對軟連接和硬連接是將連接指向的文件進行打包的。而實際上我們沒有必要這樣做,我們可以直接將連接以原始方式打包到ipk的data.tar.gz中,這是ipk包允許的。而且實際上webOS系統中原本有好多包本來就是帶有軟連接的,如果不做這個修改,後面我們就不能正確的將系統全部打包回ipk。

好了,有了這個腳本,我們就可以自製ipk包了。首先建立一個包的目錄,通常我們以包名來命名,然後在其下建立兩個目錄,分別為CONTROL和data,注意大小寫。

CONTROL目錄下放control.tar.gz解壓之後的內容。其中不必包含md5sums,即使包含在打包時也會重新生成,因此不必擔心md5sums的正確性。

data目錄下放data.tar.gz解壓之後的內容。注意它是相對於/的,裡面的內容要包含相對於/的路徑。另外,即使你希望這些內容被安裝到/media/cryptofs/apps,也不要把這個路徑建立到data目錄下,這個路徑是在安裝時才決定的。

之後你可以對這兩個目錄下的內容進行修改編輯,添加刪除內容都可以。修改完畢之後,退回到這個包目錄的上級目錄下,然後將其擁有者和用戶組都改為root(對於普通包是這樣的,對於系統包來說,我們應該在解壓系統包時就保留系統包的用戶組,在修改時不要變更原來文件的用戶組)。最後執行ipkg-build 包名,就可以重新打包生成修改之後的ipk了。

⑦ 如何製作ipk軟體

先打開電腦 再按製作ipk軟體 就可以啦

⑧ 在線等,OpenWrt怎麼安裝軟體

下載一個軟體的ipk包,並且上傳到路由器(我是用WinSCP上傳的), 用ssh登錄路由器, 然後在終端輸入命令:
opkg install 某個ipk包
注意ipk軟體包一定要與你路由器的版本和架構一致,否則安裝不上。

⑨ ipk格式的軟體

下載
NDS看圖軟體Image Viewer 1.1(以後版本可能還會更新)
http://down.tgbus.com/soft/19823.shtml

Image Viewer可以看IPK格式的漫畫,IPK格式漫畫很多DS網站都有下載,也可以自己轉(H的最好自己轉),很方便 本教程默認使用英語的系統,和日語系統差不多 下載解壓縮後,img2ipk.exe就是轉換軟體,點File里第一個選項,選擇轉換的文件夾,然後選一張封面就行了.
注意!轉換是按照文件名排序的,要在轉換前先自己起好名字,如"001,002......101,102......",不要起"1,2,3......11,12",可能會引起排序錯誤 option里可以設置輸出的文件夾 選好後,按start就開始轉了,速度不錯

MakeNDSROM.exe可以輸出DS用的ROM,如果是免DLDI補丁的燒錄卡,選第2項,其他燒錄卡選第一項,然後會在文件夾下生成許多ROM文件,選擇一個自己燒錄卡用的,復制到存儲卡里,當然,別忘了把IPK漫畫也放進去,然後就能看漫畫了. 注意,暫時模擬器不支持,請用DS主機閱覽(應該不會有人用模擬器看漫畫吧...) 用DS進入程序後,把機器豎過來,右邊是漫畫列表,左邊是預覽,用觸筆選擇(上圖)
之後看到下圖,右邊是每頁的小圖,左邊大圖,下面的三角可以進行設置(貌似還有MP3音樂功能)
(PS.由於是日文軟體,部分簡體漢字不支持,但問題不大) 然後選擇一張漫畫,用筆點,進行觀看,通過觸筆來選擇閱讀區域,調整大小(大小我一般設50),可以切換雙屏同時看,象用電腦看一樣,也可以換橫屏. 十字鍵和ABXY也能移動畫面,select返回上一級
IPK格式漫畫下載網站 NDSBBS漫畫區
http://www.ndsbbs.com/thread.php?fid=147TGBUS PG工坊資源發布(DPG和IPK在一起)
http://bbs.tgbus.com/viewthread.php?tid=2810752&extra=page%3D1TGBUS NDS相關資源區 (DPG和IPK在一起)
http://bbs.tgbus.com/forumdisplay.php?fid=168

⑩ 如何安裝ipk包

ipk文件實際上是用ar命令打包的一個歸檔包。沒有數字簽名的ipk中一般包含control.tar.gz、data.tar.gz和debian-binary這三個文件。

其中debian-binary裡面是固定的。

control.tar.gz中包含了control、md5sums、preinst、postinst、prerm、postrm這幾個文件,其中control是必須的,其它都是可選的。

data.tar.gz中包含了要安裝的程序和數據。

ipk的安裝對於大多數用戶來說都是使用preware、WebOS Quick Install、Internalz Pro來安裝程序的。如果不考慮postinst腳本,那麼使用這些工具安裝的文件都是相對於/media/cryptofs/apps目錄進行安裝的。如果直接使用不帶-o參數的ipkg install命令安裝的話,那麼安裝的文件都是相對於/目錄的。也就是說ipk包中實際上並不包含相對於那個路徑進行安裝的信息。安裝到哪兒只跟安裝的方式有關。

rootfs.tar.gz中那些預先安裝好的包都是相對於/目錄安裝的。相對於/目錄安裝的程序,用戶通過preware、WebOS Quick Install和系統自帶的軟體包管理器都是無法卸載的,但並不是說就真的無法卸載,實際上只要你願意,這些包都可以在root帳號下用ipkg remove命令來卸載掉。

我們在上一節中有一個<carrier>.tar沒有介紹(<carrier>表示att、wr、verizon等),之所以沒介紹主要原因就是我們需要先了解上面的這些內容,然後才比較容易解釋這個<carrier>.tar。

這個<carrier>.tar中的主要內容就是一些ipk包,另外,還有一個installer.xml。這個installer.xml如果不是要做跨運營商或跨機型移植,是不需要修改的。那麼剩下的就是運營商定製的一些ipk包了。這些包是在刷機程序把rootfs.tar.gz寫入設備之後,進行安裝的。他們都是相對於/目錄進行安裝的。因此這些包從本質上來講,跟rootfs.tar.gz中預先安裝的包是沒有區別的。唯一的區別就是rootfs.tar.gz中的包是預先安裝好的,<carrier>.tar中的包是在刷機過程中進行安裝的。而ROM驗證md5sums的過程是在<carrier>.tar中的所有ipk安裝之後才進行的。因此,<carrier>.tar中的包也是需要進行md5sums驗證的。

既然<carrier>.tar中的包也需要驗證,所以對於放在<carrier>.tar中的包來說,它的control.tar.gz中的md5sums不是可選的,而是必須的。如果缺少了這個md5sums,那麼刷機到82%時,同樣會因為無法通過md5sums驗證而終止刷機,無法重啟。

要生成一個帶md5sums的ipk,如果靠手工來計算編寫md5sums,並自己通過tar、gzip、ar等命令來打包實在是麻煩的很。實際上前人早在10年前就做好了這樣的打包腳本,叫ipkg-build。我們可以直接拿來用。

下面是這個腳本的完整內容:

#!/bin/sh

# ipkg-build -- construct a .ipk from a directory
# Carl Worth <[email protected]>
# based on a script by Steve Redler IV, [email protected] 5-21-2001
set -e

ipkg_extract_value() {
sed -e "s/^[^:]*:[[:space:]]*//"
}

required_field() {
field=$1

value=`grep "^$field:" < $CONTROL/control | ipkg_extract_value`
if [ -z "$value" ]; then
echo "*** Error: $CONTROL/control is missing field $field" >&2
return 1
fi
echo $value
return 0
}

pkg_appears_sane() {
local pkg_dir=$1

local owd=`pwd`
cd $pkg_dir

PKG_ERROR=0

large_uid_files=`find . -uid +99`
if [ -n "$large_uid_files" ]; then
echo "*** Warning: The following files have a UID greater than 99.
You probably want to chown these to a system user: " >&2
ls -ld $large_uid_files
echo >&2
fi


if [ ! -f "$CONTROL/control" ]; then
echo "*** Error: Control file $pkg_dir/$CONTROL/control not found." >&2
cd $owd
return 1
fi

pkg=`required_field Package`
[ "$?" -ne 0 ] && PKG_ERROR=1

version=`required_field Version | sed 's/.*://;'`
[ "$?" -ne 0 ] && PKG_ERROR=1

arch=`required_field Architecture`
[ "$?" -ne 0 ] && PKG_ERROR=1

required_field Maintainer >/dev/null
[ "$?" -ne 0 ] && PKG_ERROR=1

required_field Description >/dev/null
[ "$?" -ne 0 ] && PKG_ERROR=1

section=`required_field Section`
[ "$?" -ne 0 ] && PKG_ERROR=1
if [ -z "$section" ]; then
echo "The Section field should have one of the following values:" >&2
echo "Games, Multimedia, Communications, Settings, Utilies, Applications, Console, Misc" >&2
fi

priority=`required_field Priority`
[ "$?" -ne 0 ] && PKG_ERROR=1
if [ -z "$priority" ]; then
echo "The Priority field should have one of the following values:" >&2
echo "required, important, standard, optional, extra." >&2
echo "If you don't know which priority value you should be using, then use \`optional'" >&2
fi

if echo $pkg | grep '[^a-z0-9.+-]'; then
echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2
PKG_ERROR=1;
fi

local bad_fields=`sed -ne 's/^\([^[:space:]][^:[:space:]]\+[[:space:]]\+\)[^:].*/\1/p' < $CONTROL/control | sed -e 's/\\n//'`
if [ -n "$bad_fields" ]; then
bad_fields=`echo $bad_fields`
echo "*** Error: The following fields in $CONTROL/control are missing a ':'" >&2
echo " $bad_fields" >&2
echo "ipkg-build: This may be e to a missing initial space for a multi-line field value" >&2
PKG_ERROR=1
fi

for script in $CONTROL/preinst $CONTROL/postinst $CONTROL/prerm $CONTROL/postrm; do
if [ -f $script -a ! -x $script ]; then
echo "*** Error: package script $script is not executable" >&2
PKG_ERROR=1
fi
done

if [ -f $CONTROL/conffiles ]; then
for cf in `cat $CONTROL/conffiles`; do
if [ ! -f ./$cf ]; then
echo "*** Error: $CONTROL/conffiles mentions conffile $cf which does not exist" >&2
PKG_ERROR=1
fi
done
fi

cd $owd
return $PKG_ERROR
}

###
# ipkg-build "main"
###

case $# in
1)
dest_dir=.
;;
2)
dest_dir=$2
;;
*)
echo "Usage: ipkg-build <pkg_directory> [<destination_directory>]" >&2
exit 1
;;
esac

pkg_dir=$1

if [ ! -d $pkg_dir ]; then
echo "*** Error: Directory $pkg_dir does not exist" >&2
exit 1
fi

# CONTROL is second so that it takes precedence
CONTROL=
[ -d $pkg_dir/DEBIAN ] && CONTROL=DEBIAN
[ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL
if [ -z "$CONTROL" ]; then
echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2
exit 1
fi

if ! pkg_appears_sane $pkg_dir; then
echo >&2
echo "ipkg-build: Please fix the above errors and try again." >&2
exit 1
fi

tmp_dir=$dest_dir/IPKG_BUILD.$$
mkdir $tmp_dir

(cd $pkg_dir/data; find . -type f -print0 | xargs -0 md5sum ) > $pkg_dir/$CONTROL/md5sums
if [ ! -f "$pkg_dir/files.txt" ]; then
(cd $pkg_dir/data; find . -type f -print0 |xargs -0 grep '' -l) >$pkg_dir/files.txt
fi
# tar -C $pkg_dir/data -cf $tmp_dir/data.tar -T $pkg_dir/files.txt -h --verify
tar -C $pkg_dir/data -cf $tmp_dir/data.tar . --verify
gzip -f $tmp_dir/data.tar
tar -C $pkg_dir/$CONTROL -czf $tmp_dir/control.tar.gz .

echo "2.0" > $tmp_dir/debian-binary

pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk
#tar -C $tmp_dir -czf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz
(cd $tmp_dir ;ar -qc $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz ; mv $pkg_file ../)
rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz
rmdir $tmp_dir

echo "Packaged contents of $pkg_dir into $pkg_file"
這個腳本我對它作過一處非常細微的修改,舊的腳本中在打包data.tar.gz時,對軟連接和硬連接是將連接指向的文件進行打包的。而實際上我們沒有必要這樣做,我們可以直接將連接以原始方式打包到ipk的data.tar.gz中,這是ipk包允許的。而且實際上webOS系統中原本有好多包本來就是帶有軟連接的,如果不做這個修改,後面我們就不能正確的將系統全部打包回ipk。

好了,有了這個腳本,我們就可以自製ipk包了。首先建立一個包的目錄,通常我們以包名來命名,然後在其下建立兩個目錄,分別為CONTROL和data,注意大小寫。

CONTROL目錄下放control.tar.gz解壓之後的內容。其中不必包含md5sums,即使包含在打包時也會重新生成,因此不必擔心md5sums的正確性。

data目錄下放data.tar.gz解壓之後的內容。注意它是相對於/的,裡面的內容要包含相對於/的路徑。另外,即使你希望這些內容被安裝到/media/cryptofs/apps,也不要把這個路徑建立到data目錄下,這個路徑是在安裝時才決定的。

之後你可以對這兩個目錄下的內容進行修改編輯,添加刪除內容都可以。修改完畢之後,退回到這個包目錄的上級目錄下,然後將其擁有者和用戶組都改為root(對於普通包是這樣的,對於系統包來說,我們應該在解壓系統包時就保留系統包的用戶組,在修改時不要變更原來文件的用戶組)。最後執行ipkg-build 包名,就可以重新打包生成修改之後的ipk了。