最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux制作deb包的方法詳解

 更新時間:2024年12月11日 10:59:42   作者:飄飄燃雪  
為了方便管理一些程序或腳本,可以將這些程序以及腳本都制作在一個deb包中,?本文主要為大家介紹了如何制作一個deb包,有需要的小伙伴可以參考下

為了方便管理一些程序或腳本,可以將這些程序以及腳本都制作在一個deb包中, 本章節(jié)將介紹如何制作一個deb包, 制作deb的方式很多,如使用dpkg-deb方式、使用checkinstall方式、使用dh_make方式及修改原有的deb包, 本章將介紹如何從零制作一個自己的deb包,以及修改原有的deb包。

什么是deb包

deb包是在linux系統(tǒng)下的一種安裝包,有時我們在網(wǎng)上下載的Linux軟件安裝包也會以deb包的形式出現(xiàn), 由于它是基于tar包的,所以同樣會記錄著文件的權(quán)限信息(讀、寫、可執(zhí)行)、所有者、用戶組等。

我們可以使用命令:dpkg -l 來查看系統(tǒng)以及安裝了哪些deb包

deb包的組成結(jié)構(gòu)

安裝的內(nèi)容,這部分類似linux的根目錄,表示需要將軟件安裝到linux系統(tǒng)上的文件目錄。

控制信息(放在DEBIAN目錄下),通常DEBIAN目錄下有如下幾個文件。

changelog: 文件記錄了deb包的作者、版本以及最后一次更新日期等信息;

control: 文件記錄了包名、版本號、架構(gòu)、維護者及描述等信息;

copyright: 文件記錄了一些版權(quán)信息;

preinst安裝之前調(diào)用

# !/bin/bash
echo '準備安裝<你的文件名>'
#執(zhí)行安裝之前的準備命令,可以省略
你的命令

postinst安裝完成調(diào)用

# !/bin/bash
#更新桌面圖標數(shù)據(jù)庫
update-desktop-database /usr/share/applications || true
#獲取當前的用戶名
username=`getent passwd \`who\` | head -n 1 | cut -d : -f 1`
#判斷桌面文件夾是否存在
if [ -d "/home/${username}/Desktop" ]; then
echo 'Desktop exist'
#將你的桌面文件復(fù)制到桌面
cp 你的.desktop文件 /home/${username}/Desktop
else
echo '桌面文件夾存在'
#中文系統(tǒng)自動復(fù)制到中文桌面
cp 你的.desktop文件 /home/${username}/桌面
fi

postrm:卸載完成調(diào)用

# !/bin/bash
#可以省略
rm -rf 你創(chuàng)建的軟鏈接文件
echo '已經(jīng)卸載<你的文件名>'

prerm:卸載之前調(diào)用

# !/bin/bash
echo '準備卸載<你的文件名>'
#執(zhí)行卸載之前的準備命令,可以省略
你的命令

其中control、postinst、postrm為必要文件。

從零開始創(chuàng)建自己的deb包

sudo apt-get install build-essential debhelper make autoconf automake dpkg-dev fakeroot pbuilder gnupg -y

my-package/
├── DEBIAN
│   ├── control
│   ├── preinst (可選)
│   ├──postinst (可選)
│   ├── prerm (可選)
│   └── postrm (可選)
└── usr
└── share
└── my-package
└── my-script.sh

在hello_deb目錄下創(chuàng)建DEBIAN及opt/hello_deb目錄,DEBIAN目錄下包含控制信息文件, 而在opt/hello_deb目錄下創(chuàng)建hello_deb.sh文件則表示我們需要將hello_deb.sh文件安裝到 linux系統(tǒng)的opt/hello_deb目錄下。

然后分別給予postinst、postrm、hello_deb.sh文件可執(zhí)行權(quán)限,postinst和postrm的權(quán)限必須>=0555且<=0775。

hello_deb/DEBIAN/control

Package: test-deb
Version: 1.0.0
Architecture: arm64
Maintainer: Your Name <your.email@example.com>
Description: A sample package
 This is a sample package to demonstrate how to create a deb package.

control文件的末尾需添加一個空行,否則會報錯“缺失結(jié)尾的換行符”

若以后想升級這個deb包,可以修改該包的版本號Version,值得注意的是Architecture, 前面我們也有講到,就是該deb包所支持的處理器架構(gòu),因為最終要將該deb包安裝到arm64處理器的板卡上, 所以我們應(yīng)該在Architecture中填入arm64屬性,大家可根據(jù)自己的需求做相應(yīng)修改即可, 如果不知道你的處理器架可以通過dpkg -l命令來查看已安裝的deb包持支的架構(gòu), 或者輸入lscpu查看處理器信息,aarch64就是arm64架構(gòu)。若想支持所有架構(gòu),可以填入all屬性, 如果Architecture屬性與當前處理器架構(gòu)屬性不匹配的話,deb包將無法成功安裝, 且control的屬性信息必須以字母或者數(shù)字開頭,不然可能導(dǎo)致打包出錯。

hello_deb/DEBIAN/postinst

#!/bin/bash
echo "deb installing"

當安裝了該deb包以后,系統(tǒng)會默認執(zhí)行postinst腳本, 通常我們利用該腳本來搭建一些為軟件執(zhí)行的環(huán)境(如創(chuàng)建目錄、修改權(quán)限等), 值得注意的是該文件需具有可執(zhí)行權(quán)限。 這里寫的比較簡單,判斷第一個參數(shù),僅供參考。

最后我們來看下真正的程序主體,為了簡單起見,此處以一個簡單的腳本為例。

hello_deb/opt/hello_deb/hello_deb.sh

#! /bin/bash

echo Hello deb!
echo This is a test script!!!

腳本僅僅是打印兩句信息,用戶可自行設(shè)置需要執(zhí)行的程序。

構(gòu)建打包

萬事俱備,只欠東風(fēng),當備齊了制作deb包的基本原材料之后我們便可以開始制作屬于自己的deb包了, 進入hello_deb目錄下,也就是DEBIAN及home文件夾所在的目錄,接著輸入如下命令來構(gòu)建軟件包。

sudo dpkg-deb -b ../hello_deb ../hello_deb_1.0.0_arm64.deb

其中dpkg-deb是構(gòu)建deb包命令,-b參數(shù)表示要構(gòu)建一個deb包, …/hello_deb參數(shù)表示要構(gòu)建deb包原材料的路徑, …/hello_deb_1.0.0_arm64.deb參數(shù)表示將該deb包構(gòu)建在當前目錄的上級目錄中, 一般我們構(gòu)建deb包的名字都會遵循這么一個原則, 其命名方式為:軟件名稱+軟件版本號+該軟件所支持的處理器架構(gòu), 如軟件名為hello_deb,版本號為1.0.0,所支持的處理器架構(gòu)為arm64。

打包成功后會輸出如下信息,并可在上級目錄查看到deb安裝包

#命令
dpkg -c  hello_deb_1.0.0_arm64.deb

#打印信息
drwxrwxr-x jiawen/jiawen     0 2022-10-12 09:27 ./
drwxrwxr-x jiawen/jiawen     0 2022-10-12 09:28 ./opt/
drwxrwxr-x jiawen/jiawen     0 2022-10-12 09:28 ./opt/hello_deb/
-rwxrwxrwx jiawen/jiawen    59 2022-10-12 09:41 ./opt/hello_deb/hello_deb.sh

也可使用如下命令查看deb包信息:

#命令
dpkg --info  hello_deb_1.0.0_arm64.deb

#打印信息
new Debian package, version 2.0.
size 976 bytes: control archive=496 bytes.
    190 字節(jié),    9 行      control
    100 字節(jié),    4 行   *  postinst             #!/bin/bash
    138 字節(jié),    7 行   *  postrm               #!/bin/bash
Package: hello-deb
Version: 1.0.0
Section: free
Priority: optional
Essential: no
Architecture: arm64
Maintainer: embedfire <embedfire@embedfire.com>
Provides: hell_deb
Description: deb test

輸入“sudo dpkg -i hello_deb_1.0.0_arm64.deb”命令即可安裝, 其中-i 參數(shù)表示安裝軟件,即install

解包

新建一個update_deb目錄,使用 dpkg -X 命令將deb包解壓到update_deb目錄中。

$ ls
Desktop    Downloads  Pictures  Templates  hello_deb_1.0.0_arm64.deb
Documents  Music      Public    Videos
$ mkdir update_deb
$ sudo dpkg -X  hello_deb_1.0.0_arm64.deb  update_deb/
./
./opt/
./opt/hello_deb/
./opt/hello_deb/hello_deb.sh
$

進入update_deb目錄下可看到并沒DEBIAN相關(guān)目錄,在update_deb目錄下使用 dpkg -e 解壓出控制文件相關(guān)信息。

~/update_deb$ ls
opt
~/update_deb$ sudo dpkg -e ../hello_deb_1.0.0_arm64.deb
~/update_deb$ ls -al
total 16
drwxrwxr-x  4 1001 1001 4096 Oct 12 13:37 .
drwxr-xr-x 15 cat  cat  4096 Oct 12 13:35 ..
drwxr-xr-x  2 root root 4096 Oct 12 09:28 DEBIAN
drwxrwxr-x  3 1001 1001 4096 Oct 12 09:28 opt

~/update_deb$ tree
.
|-- DEBIAN
|   |-- control
|   |-- postinst
|   `-- postrm
`-- opt
    `-- hello_deb
        `-- hello_deb.sh

3 directories, 4 files

此時就可以對程序主體進行修改了

以上就是Linux制作deb包的方法詳解的詳細內(nèi)容,更多關(guān)于Linux制作deb包的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • linux(centos7)搭建SVN服務(wù)器的思路

    linux(centos7)搭建SVN服務(wù)器的思路

    這篇文章主要為大家詳細介紹了linux搭建SVN服務(wù)器的思路,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 有關(guān)Ubuntu在關(guān)蓋休眠后可行的拯救方法

    有關(guān)Ubuntu在關(guān)蓋休眠后可行的拯救方法

    這篇文章主要介紹了有關(guān)Ubuntu在關(guān)蓋休眠后可行的拯救方法的相關(guān)資料,需要的朋友可以參考下
    2026-02-02
  • varnish 配置文件分享(sens楊 注釋)

    varnish 配置文件分享(sens楊 注釋)

    varnish 為目前新興起來的軟件,由于中文文檔比較少,配置文件比較復(fù)雜,所以在運用起來也是特別的費勁。一個偶然的機會在一個群里,有位varnish高手( sens楊 )發(fā)表了一篇他對varnish配置文件理解的文檔。對于學(xué)者來說很有價值。所以轉(zhuǎn)載了過來
    2016-02-02
  • 關(guān)于Linux的curl指令使用總結(jié)

    關(guān)于Linux的curl指令使用總結(jié)

    這篇文章主要介紹了關(guān)于Linux的curl指令使用總結(jié),具有很好的參考價值,希望對大家有所幫助。
    2023-04-04
  • 解決Centos7 安裝騰達U12無線網(wǎng)卡驅(qū)動問題

    解決Centos7 安裝騰達U12無線網(wǎng)卡驅(qū)動問題

    這篇文章主要介紹了Centos7 安裝騰達U12無線網(wǎng)卡驅(qū)動,本文給出了解決過程,通過兩種方法給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • 80端口被占用 Apache啟動失敗的解決方法

    80端口被占用 Apache啟動失敗的解決方法

    80端口被占用,Apache啟動失敗,遇到這個問題真的很頭疼,這篇文章主要就為大家介紹了80端口被占用,Apache啟動失敗的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Linux系統(tǒng)默認的目錄使用以及作用說明

    Linux系統(tǒng)默認的目錄使用以及作用說明

    這篇文章主要介紹了Linux系統(tǒng)默認的目錄使用以及作用說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • sshd 限制登陸的幾種方法總結(jié)

    sshd 限制登陸的幾種方法總結(jié)

    這篇文章主要介紹了sshd 限制登陸的幾種方法總結(jié)的相關(guān)資料,這里說明幾種方法并附有實現(xiàn)命令,需要的朋友可以參考下
    2017-02-02
  • Centos7修改主機名hostname的三種方法

    Centos7修改主機名hostname的三種方法

    今天小編就為大家分享一篇關(guān)于Centos7修改主機名hostname的三種方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • CentOS7搭建gerrit 代碼審查服務(wù)方法

    CentOS7搭建gerrit 代碼審查服務(wù)方法

    下面小編就為大家分享一篇CentOS7搭建gerrit 代碼審查服務(wù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03

最新評論

潮安县| 浪卡子县| 乐安县| 从江县| 龙江县| 垦利县| 温宿县| 伊金霍洛旗| 康乐县| 区。| 原平市| 南靖县| 普格县| 黄平县| 阿坝县| 临湘市| 姜堰市| 宁河县| 合川市| 栾川县| 松溪县| 日喀则市| 克拉玛依市| 酒泉市| 梁平县| 阜宁县| 措勤县| 闽清县| 金昌市| 汤阴县| 丹棱县| 汪清县| 边坝县| 翼城县| 曲阜市| 辽源市| 东阳市| 濮阳市| 襄城县| 三亚市| 略阳县|