精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Arch Linux 軟件包制作入門

系統 Linux
PKGBUILD 文件是為 Arch Linux 及其衍生版(如 Manjaro)構建和創建軟件包的方式。如果你曾經使用過 AUR(即 Arch Linux 的用戶維護的 PKGBUILD 存儲庫),你甚至可能也遇到過它們。

PKGBUILD 文件是為 Arch Linux 及其衍生版(如 Manjaro)構建和創建軟件包的方式。

如果你曾經使用過 AUR(即 Arch Linux 的用戶維護的 PKGBUILD 存儲庫),你甚至可能也遇到過它們。

但是,到底是如何從 PKGBUILD 到可安裝軟件包的呢?這兩者之間到底發生了什么,如何把自己的軟件制作成軟件包呢?你將在這篇文章中了解這些。

[[427062]]

PKGBUILD 基礎知識

對于那些熟悉 Bash 或其他 shell 的人來說,你可能知道,PKGBUILD 就是一個帶有一些變量的 shell 腳本。

PKGBUILD 文件由變量和函數組成,所有這些都是用來定義軟件包本身,以及如何構建它。

為了從 PKGBUILD 中創建一個軟件包,需要使用 makepkg 命令行工具。在獲得 PKGBUILD 文件后,你只需在包含 PKGBUILD 的目錄中運行 `makepkg',就可以得到一個可安裝的軟件包了。

在本教程中,你將會看到我剛剛制作的軟件包,它在運行時打印出 “Hello World!”。

準備

為了繼續學習本教程,你需要創建幾個文件。

首先,你需要創建一個名為 PKGBUILD 的文件,它將作為構建你的軟件包的“配方”。

你需要做的另一個文件是一個叫 hello-world.sh 的文件。我稍后會解釋它的用途。

你也可以用一個命令來創建這兩個文件:

  1. touch PKGBUILD hello-world.sh 

你可以用 ls 命令檢查這些文件是否被創建。

然后你就可以開始了!

設置你的 PKGBUILD 文件

我不會讓你復制粘貼整個文件,而是和你一起鍵入每一行,這樣你就能更好地理解每一行的目的。如果你不喜歡這種學習方式,我強烈推薦 Arch 維基 中為 Arch Linux 創建軟件包的文章。

這篇文章也沒有介紹 PKGBUILD 中可以設置的每一個選項,只是介紹了一些常用的選項,以便你能盡快上手。

說完了這些,打開你的文本編輯器,讓我們直接進入正題吧。

pkgname

首先是 pkgname 變量。這是安裝時定義軟件包名稱的東西,也是 Arch Linux 的軟件包管理器 pacman 跟蹤軟件包的方式。

這個變量(以及其他一些變量)的格式是 variable=value,變量名在左邊,變量的值在右邊,用等號隔開。

要設置包的名稱,請在 PKGBUILD 中輸入以下內容:

  1. pkgname="hello-world" 
  • 要設置一個不同的軟件包名稱,用你的軟件包的名稱替換 hello-world。
  • 這并不設置用于運行程序的命令,這將在下面的 package() 部分中處理。

pkgver

正如變量名稱本身所述,它設置了你的軟件包的版本(即 1.0.0)。這在用戶更新他們的系統時很有用,因為設置更高的版本會提示用戶升級。

要設置版本號,請在 PKGBUILD 中輸入以下內容(在前一行之后):

  1. pkgver="1.0.0" 

pkgrel

這與 pkgver 變量有關,通常不需要知道。不過和 pkgver 變量一樣,如果它被換到一個更高的數字,就將通知用戶進行升級。

它適用于任何需要保持 pkgver 不變的情況下,例如 PKGBUILD 本身發生了變化。如果你為一個你使用的程序創建了一個 PKGBUILD(并希望保持軟件包的版本相同),而你需要修復 PKGBUILD 本身的一個錯誤,這將是非常有用的。

要設置這個變量,請在 PKGBUILD 中輸入以下內容:

  1. pkgver="1" 

這個變量應該 總是 從 1 開始,然后一次一次地向上移動。當 pkgver 本身向上移動時,這個變量可以(也應該)重置為 1,因為 pkgver 本身會通知用戶升級。

pkgdesc

這將設置軟件包的描述,用于幫助更好地識別該軟件包。

要設置它,只需將描述放在引號內:

  1. pkgdesc="Hello world in your terminal!" 

arch

這個變量設置軟件包所兼容的 硬件架構。如果你不明白什么是架構,那也沒關系,因為在大多數情況下,這個變量幾乎是無用的。

無論如何,makepkg 仍然需要設置它,這樣它就知道這個軟件包與我們的系統是兼容的。

這個變量支持設置多個值,所以 makepkg 需要一個不同的語法,如下所示。

要設置它,請在 PKGBUILD 中輸入以下內容:

  1. arch=("x86_64"

如果你要設置多個值,需要用空格和引號分隔每個值,像這樣。arch=(“x86_x64" "arm")。

depends

這列出了提供了我們的軟件包所需功能的所有軟件包。與 arch 一樣,它也可以包含多個值,因此必須使用括號語法。

由于我們的軟件包沒有任何依賴關系,所以我們不需要在 PKGBUILD 中輸入這個字段。然而,如果我們的軟件包有依賴關系,我們就會使用與 arch 相同的語法。

optdepends

這里列出了那些并不是提供所需功能而是額外功能的軟件包。

這與 depends 的語法相同。

conflicts

這告訴 pacman 哪些軟件包會導致我們的軟件包出現問題,或者以我們不希望的方式行事。

這里列出的任何軟件包都會在我們的軟件包被安裝之前被卸載。

這與 depends 的語法相同。

license

這定義了你的程序所采用的 軟件許可證。如果你需要幫助你選擇一個許可證,Arch 維基 提供了一些信息。如果你不知道該怎么設置,將其設置為 custom 也可以。

這與 arch 和 depends 的語法相同:

  1. license=("custom"

source

這就是 makepkg 如何知道要用什么文件來構建我們的軟件包。它可以包含各種不同類型的源,包括本地文件和 URL。

在添加本地文件時,要輸入相對于 PKGBUILD 文件的文件路徑,比如以下目錄布局:

  1. PKGBUILD 
  2. file.txt 
  3. src/file.sh 

如果你想在我們的 PKGBUILD 中包括 file.sh,你需要輸入 src/file.sh 作為其名稱。

當輸入 URL 時,你只需輸入完整的 URL,即 https://mirrors.creativecommons.org/presskit/logos/cc.logo.large.png。

你的這個軟件包只需要 hello-world.sh 文件,由于它和 PKGBUILD 在同一個目錄中,你只需輸入它的名字作為 source 的值。

這個變量也使用與 arch 和 depends 相同的語法:

  1. source=("hello-world.sh"

sha512sums

這是用來驗證 source 中的文件沒有被修改或下載錯誤。如何獲得這個值的信息可以在 Arch 維基關于 PKGBUILD 的文章 中找到。

如果你寧愿不設置這個(或者你只是不需要,例如對于本地文件),你可以為 source 變量中的每個文件輸入 SKIP:

  1. sha512sums=("SKIP"

package()

這是最后一個,也是實際制作我們的包的最重要的部分。在處理這個問題時,知道兩個變量很重要。

  • ${srcdir}:這是 makepkg 放置 source 變量中文件的地方。在這個目錄中,你可以與這些文件進行交互,并對文件進行任何其他需要的修改。
  • ${pkgdir}:這是我們放置將被安裝在系統中的文件的地方。 ${pkgdir} 的文件夾結構是按照實際系統中的情況設置的(例如,使用 pacman 安裝時,${pkgdir}/usr/bin/hello-world 會創建文件 /usr/bin/hello-world)。

package() 包含一個用于創建軟件包的命令列表。

因此,如果(假設)你需要有個在 /usr/share/motto.txt 寫著 “Linux is superior to Windows ”的文件,你會運行這樣的東西:

  1. package() { 
  2.   mkdir -p "${pkgdir}/usr/share" 
  3.   echo "Linux is superior to Windows" | tee "${pkgdir}/usr/share/motto.txt" 

關于上述命令的一些說明:

  • ${pkgdir} 里面最初是 不包含 目錄的。如果你跳過了 mkdir 命令,tee 會輸出一個錯誤,說這個目錄不存在。
  • 在指定目錄時,總是 在它們前面加上 ${pkgdir} 或 ${srcdir} 變量。如果輸入 /usr/share/motto.txt,就會按照字面意義指向你當前運行的系統中的 /usr/share/motto.txt。

對于你的 PKGBUILD,你將把 hello-world.sh 文件放在目標系統的 /usr/bin/hello-world 中。你還將使該文件在運行時說 “Hello to you!”。

要做到這一點,請在 PKGBUILD 中輸入以下內容:

  1. package() { 
  2.   echo 'Hello to you!' > "${srcdir}/hello-world.sh" 
  3.   mkdir -p "${pkgdir}/usr/bin" 
  4.   cp "${srcdir}/hello-world.sh" "${pkgdir}/usr/bin/hello-world" 
  5.   chmod +x "${pkgdir}/usr/bin/hello-world" 

然后就完成了!用 makepkg -si 構建和安裝軟件包,然后在終端運行 hello-world,查看其輸出。

總結

就這樣,你已經制作了你的第一個 PKGBUILD!你走在了為自己甚至是為 AUR 制作實際的軟件包的路上。

有什么問題,或者有什么地方不對嗎?請隨時在下面的評論區發表。

責任編輯:未麗燕 來源: Linux中國
相關推薦

2018-06-22 10:05:04

Arch LinuxDEB軟件包

2018-06-11 08:50:46

LinuxArch Linux降級軟件包

2018-07-10 08:59:07

LinuxArch Linux軟件包

2010-03-01 17:43:55

Linux Xsupp

2010-01-07 14:44:14

Linux安裝KDE

2010-03-03 09:43:34

Linux軟件包

2010-03-03 16:39:01

Linux軟件包依賴

2016-01-29 14:32:19

Linux軟件包管理

2018-10-29 14:10:19

Linux軟件包命令

2011-09-15 11:14:12

2023-01-02 11:34:04

LinuxFlatpak軟件包

2023-01-03 15:53:00

LinuxFlatpak軟件包

2020-11-11 08:00:00

Linux系統修復

2021-02-09 20:40:32

Arch LinuxLinuxpacman

2010-01-13 10:02:21

LinuxRPM軟件包

2022-05-09 10:51:26

Snap軟件包Ubuntu

2015-11-03 14:23:10

新手Arch LinuxLinux

2010-02-05 14:46:20

Ubuntu軟件包

2018-10-15 11:00:28

Linux軟件包命令

2021-01-21 12:22:33

LinuxChrome谷歌
點贊
收藏

51CTO技術棧公眾號

91精品国产综合久久男男| 亚洲一级黄色av| 欧美国产综合在线| 色婷婷av一区二区三区之e本道| 亚洲毛片播放| 中文字幕日本精品| 日本人妻一区二区三区| 正在播放日韩精品| 亚洲视频在线一区观看| 精品综合在线| 国产精品无码AV| 国产精品亚洲欧美| 久久久91精品国产| 美女又爽又黄视频毛茸茸| 91嫩草国产线观看亚洲一区二区| 亚洲线精品一区二区三区| 日本一区二区三区视频在线观看 | 亚洲精彩视频| 日韩精品小视频| 午夜影院免费观看视频| 国产精品专区免费| 亚洲国产精品影院| 亚洲国产精品毛片| 嫩草研究院在线| 国产精品一区二区在线观看网站| 国产91免费观看| 久久中文字幕无码| 91成人免费| 在线视频日本亚洲性| 一起草在线视频| 日韩精品中文字幕一区二区| 欧美三级资源在线| 久久久一本二本三本| 污视频在线免费观看网站| 中文字幕av资源一区| 鲁丝一区二区三区免费| 空姐吹箫视频大全| 国产一区 二区 三区一级| 国产成人精品久久二区二区91| 国产在线拍揄自揄拍| 亚洲最新av| 中文字幕一精品亚洲无线一区| 黄色a一级视频| 久久成人福利| 亚洲成人在线视频播放| 欧美熟妇精品一区二区| 精品国产第一国产综合精品| 欧美精品乱码久久久久久按摩 | 色一情一乱一伦一区二区三欧美| 无码国产精品一区二区免费16| 国产v综合v亚洲欧| 99www免费人成精品| 国产视频www| 国产麻豆日韩欧美久久| 91麻豆国产精品| 国产精品久久久久久久一区二区| 日日摸夜夜添夜夜添精品视频| 欧美一区二区三区免费观看| 日产精品久久久| 国产精品普通话对白| 5278欧美一区二区三区| 国产乱国产乱老熟| 久久久综合网| 国产精品欧美激情| 91麻豆视频在线观看| 激情另类小说区图片区视频区| 成人激情在线播放| 精品人妻少妇嫩草av无码专区 | 蜜桃传媒一区二区亚洲av| 亚洲成人一品| 亚洲片av在线| 欧日韩不卡视频| 亚洲a一区二区三区| 精品中文字幕在线| 国产一级免费观看| 午夜在线一区| 国产精品老女人精品视频| 亚洲天堂aaa| 国产高清在线观看免费不卡| 国产麻豆一区二区三区在线观看| 天天射天天色天天干| 久久精品亚洲精品国产欧美| 一区二区精品在线观看| 污片在线免费观看| 疯狂欧美牲乱大交777| 一本久道中文无码字幕av| 日韩成人免费av| 日韩欧美视频一区| 欧洲女同同性吃奶| **女人18毛片一区二区| 97免费中文视频在线观看| 亚洲自拍一区在线观看| 精品一区二区三区在线播放视频| 成人在线免费观看一区| 美国一级片在线免费观看视频| 国产精品日产欧美久久久久| 日本wwwcom| 精品无人乱码一区二区三区| 日韩欧美亚洲国产另类| 亚洲码无人客一区二区三区| 亚洲人体av| 欧洲成人在线视频| 国产三区在线播放| 久久久99久久| 日韩精品一区二区在线视频| 日韩一区二区三区免费| 精品国产伦一区二区三区观看体验| 中文字幕一区二区三区人妻不卡| 婷婷亚洲最大| 日本久久久久久久久久久| 不卡av中文字幕| 欧美激情中文字幕一区二区| 国产日韩欧美精品在线观看| 黄色精品视频网站| 国产丝袜一区视频在线观看| 国产成人综合在线视频| 日日骚欧美日韩| 精品国产_亚洲人成在线| 黄av在线播放| 欧美色爱综合网| 亚洲欧美日本一区| 精品1区2区3区4区| 亚洲a中文字幕| 在线观看二区| 色综合久久综合| 三级视频网站在线观看| 欧美人成在线| 91精品国产综合久久久久久久久| 精品成人一区二区三区免费视频| 亚洲成人自拍一区| 亚洲熟女乱综合一区二区| 久久国产亚洲精品| 国产精品久久久久77777| 亚洲三区在线播放| 午夜精品久久久久久久| 国产女主播在线播放| 综合在线一区| 91日本在线视频| 男人的天堂在线视频免费观看| 在线一区二区三区四区五区| 强伦人妻一区二区三区| 国产精品久久国产愉拍| 国产欧美日本在线| 2019中文字幕在线电影免费| 日韩精品专区在线影院重磅| 超碰在线国产97| 国产精品一区三区| 粉嫩av一区二区三区天美传媒| 伊人亚洲精品| 久久午夜a级毛片| 国产男女猛烈无遮挡| 亚洲欧美影音先锋| 欧美性猛交xxxx乱大交91| 五月天久久网站| 92国产精品久久久久首页| 久草免费在线| 欧美一区二区三区四区五区| 久久精品黄色片| 粉嫩绯色av一区二区在线观看| 国产一级大片免费看| 在线综合色站| 国内偷自视频区视频综合| 天堂v在线观看| 色猫猫国产区一区二在线视频| 丰满少妇高潮一区二区| 日韩精品国产欧美| 伊人天天久久大香线蕉av色| 国产精品一区二区三区av| 色综合视频一区中文字幕| 亚洲免费成人在线| 日韩欧美国产网站| 日韩精品电影一区二区三区| 国精产品一区一区三区mba视频| 国产午夜精品视频一区二区三区| 国产精品美女在线观看直播| 欧洲成人免费视频| 麻豆免费在线视频| 亚洲福利视频在线| 好吊色在线视频| 国产精品久久久久7777按摩| 国产精品二区视频| 先锋a资源在线看亚洲| 亚洲v国产v在线观看| 91亚洲无吗| 国产黑人绿帽在线第一区| 美女免费久久| 亚洲精品久久7777777| 亚洲天堂免费av| 亚洲高清三级视频| 久久视频精品在线观看| 国产成人啪免费观看软件 | 色是在线视频| 日韩中文字幕网| 人妻无码中文字幕免费视频蜜桃| 在线观看视频一区| 香蕉视频一区二区| 国产精品久久久久影院老司| 国产日韩视频一区| 九色综合狠狠综合久久| 波多野结衣之无限发射| 国产大片一区| 蜜桃久久影院| 一区二区精彩视频| 国产精品入口免费视频一| 9999在线视频| 久久视频免费在线播放| 韩国精品视频| 亚洲国产精品久久久久| 国产精品久久久久久久久久久久久久久久久久 | 超级碰在线观看| 欧美日一区二区| 狠狠色噜噜狠狠色综合久| 未满十八勿进黄网站一区不卡| 91成人国产在线观看| av网站大全在线| 中文字幕一区电影| 久青草国产在线| 亚洲成色777777在线观看影院| 国产又粗又大又爽| 欧美亚洲免费在线一区| 91视频免费网址| 亚洲午夜激情av| 亚洲av鲁丝一区二区三区| 欧美激情中文不卡| 欧美日韩高清丝袜| 26uuu久久天堂性欧美| 亚洲国产精品第一页| 韩国理伦片一区二区三区在线播放| 国产裸体舞一区二区三区| 亚洲久久一区| 日韩黄色短视频| 国内揄拍国内精品久久| 亚洲第一综合网站| 羞羞答答成人影院www| 亚洲欧美久久久久一区二区三区| 国产精品手机在线播放| 久久资源av| 日韩mv欧美mv国产网站| 国产一区精品视频| 欧美日韩一本| 国精产品99永久一区一区| 国产乱人伦精品一区| 国产成人成网站在线播放青青| 欧美经典影片视频网站| 亚洲一区二区久久久久久久| 成人黄色91| 亚洲伊人久久综合| 精品一区二区三区四区五区| 91天堂在线观看| 欧美电影在线观看一区| 国产福利久久精品| 老牛精品亚洲成av人片| 精品在线视频一区二区三区| 欧美日韩麻豆| 欧美日韩最好看的视频| 精品久久久中文字幕| 台湾成人av| 色综合咪咪久久网| 日韩视频在线观看视频| 欧美精品二区| 国产综合中文字幕| 久久一日本道色综合久久| 日本美女高潮视频| 精品一区二区三区影院在线午夜| 中文字幕1234区| 丁香天五香天堂综合| 成人无码www在线看免费| 国产清纯白嫩初高生在线观看91 | 欧美顶级大胆免费视频| 艳母动漫在线观看| 国模大胆一区二区三区| www.浪潮av.com| 免费高清在线一区| 天天干天天曰天天操| www.欧美色图| 91精品国自产在线| 亚洲精品一卡二卡| 日产欧产va高清| 欧美伊人久久久久久午夜久久久久| 一级成人免费视频| 亚洲精品一区二区精华| 国产高清在线观看| 欧美日韩国产成人在线| 26uuu亚洲电影| 91在线观看免费高清| 日韩av午夜| 中文字幕剧情在线观看一区| 在线成人欧美| 五月天中文字幕在线| 成人午夜视频福利| 美国黄色特级片| 午夜视频在线观看一区| 久久精品99北条麻妃| 日韩欧美第一区| 国产大学生校花援交在线播放| 欧美成人午夜免费视在线看片 | 91在线播放国产| 国产成人高清| 免费高清一区二区三区| 日韩电影在线看| 怡红院一区二区| 中文字幕一区二区三区不卡 | 一本色道久久精品| 999久久久精品视频| 久久婷婷成人综合色| 亚洲av鲁丝一区二区三区 | 性欧美xxxx视频在线观看| 国产成人毛片| 蜜桃视频在线观看91| 黄色精品免费| 天天操天天干天天做| 久久久精品综合| 国产福利久久久| 欧美理论电影在线| 福利片在线看| 欧美中文字幕在线观看| 91成人午夜| 综合一区中文字幕| 日韩精品视频网| av网站免费在线播放| 亚洲永久免费av| 国产免费高清视频| 色系列之999| 三上悠亚激情av一区二区三区| 国产欧美在线一区二区| 欧美一区成人| 一级黄色在线播放| 国产精品免费视频一区| 国产免费一级视频| 日韩精品视频观看| av电影免费在线看| 国产在线精品一区| 一区视频在线看| 欧美熟妇精品一区二区蜜桃视频| 亚洲精品免费在线| 99视频免费看| 欧美成人久久久| 国产专区精品| 亚洲国产精品女人| 国产尤物一区二区| 青花影视在线观看免费高清| 欧美精品在线一区二区三区| 尤物在线视频| 91久久夜色精品国产网站| 欧美电影《睫毛膏》| 青青草久久伊人| 中文字幕一区二区三区视频| 亚洲香蕉在线视频| 久久精品视频一| 国产精品日本一区二区三区在线| 一区二区在线观看网站| 久久国产精品色婷婷| 国产人妻精品一区二区三区不卡| 91麻豆精品国产91久久久久久久久 | 91国产精品| 日韩在线视频在线| 成人av免费在线| 国产日产精品一区二区三区| 精品视频在线播放免| 91tv亚洲精品香蕉国产一区| 亚洲免费不卡| 国产精品一区三区| 日韩字幕在线观看| 亚洲欧美中文另类| 国产毛片精品久久| 免费在线精品视频| 从欧美一区二区三区| 日本va欧美va国产激情| 亚洲色图偷窥自拍| 亚洲人体在线| 人人妻人人澡人人爽欧美一区双| 91视频.com| 亚洲一卡二卡在线观看| 欧美第一黄网免费网站| 欧美aaaaa级| 免费涩涩18网站入口| 亚洲精品成人天堂一二三| 人妻一区二区三区免费| 日韩美女免费线视频| 性欧美69xoxoxoxo| 久久精品综合视频| 制服丝袜激情欧洲亚洲| 国产无遮挡裸体视频在线观看| 日韩不卡av| 国产风韵犹存在线视精品| 亚洲av中文无码乱人伦在线视色| 色婷婷综合成人av| 极品一区美女高清| 日日躁夜夜躁aaaabbbb| 亚洲福利视频一区二区| www在线播放| 国产精品国产三级国产专区53 | 国产高清欧美| 国产乱了高清露脸对白| 欧美日韩成人综合在线一区二区| 白浆在线视频| 一区二区三区精品国产| 99久久综合国产精品| 亚洲香蕉在线视频| 欧美孕妇与黑人孕交|