精品欧美一区二区三区在线观看 _久久久久国色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麻豆视频| 亚洲欧美电影| 国产精品免费大片| 亚洲高清视频中文字幕| 日韩小视频在线| 女性女同性aⅴ免费观女性恋| hs视频在线观看| 99久久99久久精品国产片桃花| 日本高清久久| 国产毛片久久| 欧美精品一区二区三区蜜桃视频| eeuss中文| 91精品国自产| 天堂美国久久| 日韩国产精品视频| 国产人妻777人伦精品hd| 亚洲精品无码久久久| 欧美日韩中文| 精品国产一区a| 国产wwwxx| 日本免费视频在线观看| 深爱激情综合| 日本韩国欧美国产| 日本不卡久久| 中文字幕人妻精品一区| 欧美精品一区二区三区中文字幕| 一本在线高清不卡dvd| 日本视频一区二区在线观看| 成 人片 黄 色 大 片| 欧美午夜精品| www.欧美免费| 亚洲一级黄色录像| 日韩午夜电影免费看| 亚洲同性同志一二三专区| 亚洲精品免费网站| 国产精品theporn动漫| 欧美人妖视频| 欧美亚洲综合一区| 日本老太婆做爰视频| 亚洲国产日韩在线观看| 国内精品伊人久久久久av一坑| 久久电影一区二区| 欧美极品欧美精品欧美图片| 可以在线观看的av| 麻豆精品国产传媒mv男同| 久久精品中文字幕电影| 日本天堂在线播放| 色偷偷色偷偷色偷偷在线视频| 久久久久久**毛片大全| 91免费精品国偷自产在线| 日本三级黄色大片| 成人激情电影在线| 精品成a人在线观看| 日韩高清免费观看| 97国产精东麻豆人妻电影| 男人添女人下部高潮视频在线观看 | 亚洲在线日韩| 国产亚洲精品一区二555| 依人在线免费视频| а√天堂中文资源在线bt| 日本一区二区视频在线| 国产91视觉| 欧美激情一区二区三区免费观看| 欧美日本一区| 久久久久久久久久久久久久久久久久av | 久久亚洲精品小早川怜子66| 99久久婷婷国产综合| 国产福利一区二区精品秒拍| 欧美亚洲国产怡红院影院| 国产精品一区二区羞羞答答| 在线成人免费| 日本韩国欧美一区| 91女神在线观看| 欧美日韩午夜电影网| 在线视频你懂得一区| bt天堂新版中文在线地址| jizz在线观看视频| www激情久久| 成人免费视频网站| 婷婷伊人综合中文字幕| 国产一区二三区好的| 日韩av电影手机在线| 久久久久久福利| 天天做天天爱天天爽综合网| 久久91亚洲人成电影网站| 狂野欧美性猛交| 国产成人手机高清在线观看网站| 色小说视频一区| 亚洲色成人网站www永久四虎| 国产精品色在线网站| 亚洲伦理中文字幕| av网站有哪些| 国产精品tv| 亚洲日韩中文字幕| 性高潮久久久久久久| 97人人精品| 日韩网站在线观看| 日韩欧美一级视频| 国产精品久久久亚洲一区| 国产精品视频中文字幕91| 色老头在线视频| 日韩二区在线观看| 国产精品扒开腿做爽爽爽男男| 国产嫩bbwbbw高潮| 毛片一区二区| 国产精品白嫩美女在线观看 | 在线观看91久久久久久| 久久亚洲AV成人无码国产野外 | 欧洲久久久久久| 18+激情视频在线| 综合久久一区二区三区| 中文字幕日韩精品一区二区| 在线观看免费网站黄| 国产精品天美传媒沈樵| 亚洲欧美丝袜| а√天堂资源地址在线下载| 亚洲精品网站在线观看| 激情成人开心网| 99久久精品免费看国产小宝寻花| 亚洲超丰满肉感bbw| 日韩视频在线视频| 亚洲爽爆av| 一区二区三区久久精品| 波多野结衣国产| 国产91精品在线观看| 国产日韩亚洲精品| 免费成人av电影| 亚洲午夜视频在线| 久久精品网站视频| 欧美v亚洲v综合v国产v仙踪林| 91精品国产综合久久精品麻豆| 亚洲丝袜在线观看| 欧美1区2区3区4区| 欧美激情第一页xxx| 国产三级av片| 成人av在线看| 日韩精品久久一区| aa在线视频| 欧美精品在线一区二区三区| 久久无码专区国产精品s| 午夜久久免费观看| 国内精品国产三级国产在线专| 亚洲乱码国产乱码精品| 91蜜桃婷婷狠狠久久综合9色| 欧美男女爱爱视频| 精品123区| 日韩视频免费观看高清完整版 | 韩国日本不卡在线| 丁香社区五月天| 久久久久88色偷偷免费| 成人在线观看黄| 日本午夜一区| www.日韩免费| 中日韩在线观看视频| 国产精品久久久久久久久晋中| 青青青在线观看视频| 亚洲欧美日本国产| 国产亚洲一区精品| 成人免费视频国产免费| 国产精品 日产精品 欧美精品| 久久久久久久久久久久久久久久av| 91精品专区| 欧美人与禽zozo性伦| 欧美极品jizzhd欧美仙踪林| 精品国产精品国产偷麻豆| 国产成人免费91av在线| 成人av无码一区二区三区| 亚洲精品免费播放| 美女一区二区三区视频| 成人在线视频免费观看| 国产精品网站大全| 黄色成人影院| 91黄色在线观看| 午夜影院黄色片| 国内一区二区视频| 成年女人18级毛片毛片免费| 日韩一级电影| 欧美日韩国产91| 天天色天天操天天射| 精品久久久久久久久久| 又黄又爽又色的视频| 欧美精选一区二区三区| 国产男人精品视频| 97超碰在线公开在线看免费| 欧美r级电影在线观看| 国产精品酒店视频| 国产一区在线看| 免费一级特黄特色毛片久久看| 免费毛片在线不卡| 成人免费福利在线| 91在线高清| 日韩欧美视频一区| 91香蕉一区二区三区在线观看| 母乳一区在线观看| 91免费网站视频| 久久九九热re6这里有精品| 日韩在线视频播放| 亚洲奶汁xxxx哺乳期| 色成年激情久久综合| 最新一区二区三区| 精品一区在线看| 水蜜桃亚洲一二三四在线| 中文字幕资源网在线观看免费| 曰本色欧美视频在线| 亚洲精品97久久中文字幕| 在线观看亚洲精品视频| 免费中文字幕视频| 国产精品一卡二卡在线观看| 激情五月五月婷婷| 国产精品一区免费在线 | 亚洲女人久久久| 91网站在线播放| 五月天婷婷影视| 欧美激情777| 久久综合色一本| 老司机成人影院| 亚洲一区第一页| 神马久久久久久久久久| 欧美人妇做爰xxxⅹ性高电影| 西西44rtwww国产精品| 亚洲欧美电影院| 亚洲自拍偷拍图| 蜜臀av在线播放一区二区三区| 视频一区二区在线观看| 亚洲日本视频在线| 国产精品视频网站| 永久免费网站在线| 最近2019中文字幕第三页视频| 天堂视频中文在线| 欧美在线三级电影| 成人在线免费看视频| 国产日韩欧美高清| 精品久久久99| 好吊视频一区二区三区四区| 久久视频在线观看中文字幕| 网站一区二区| 亚洲专区国产精品| 国产亚洲人成a在线v网站| 国产精品成人久久久久| 欧美男人天堂| 97色伦亚洲国产| av资源中文在线| 97精品久久久中文字幕免费| 国内高清免费在线视频| 亚洲精品视频免费在线观看| 亚洲视频中文字幕在线观看| 亚洲自拍另类综合| 亚洲自拍偷拍图| 国产日韩欧美精品一区| 在线小视频你懂的| 国产视频一区在线观看| 欧美另类z0zx974| 国产蜜臀av在线一区二区三区| 亚洲色图日韩精品| 国产精品欧美一区喷水| 免费在线观看日韩av| 久久福利毛片| 黄色一级免费大片| 韩国久久久久| 欧美一级欧美一级| 99精品国产在热久久| 一区二区视频国产| 91久久久精品国产| 日本一道在线观看| 亚洲国产欧美国产综合一区| 一卡二卡3卡四卡高清精品视频| 精品综合久久88少妇激情| 国语精品中文字幕| 国产精品美女久久久久人| 91久久久一线二线三线品牌| 久久爱91午夜羞羞| 国产精品自拍小视频| 国产精品久久久久久av公交车| 99re国产在线播放| 欧美性生活一级| 亚洲综合成人婷婷小说| 国产精品一线| 日本一区免费观看| 999久久久免费精品国产| www国产无套内射com| 国产精品毛片| 中文字幕成人在线视频| 国产99久久久国产精品潘金网站| 国产精品300页| 国产精品三级电影| 欧美日韩精品一区二区三区视频播放 | 91精品久久久久久久久| 亚洲综合电影| 国产日韩av在线| 老司机aⅴ在线精品导航| 日韩精品电影网站| 国产精品久久久久久免费免熟| 99精品在线| 免费网站永久免费观看| 亚洲一区国产一区| 亚洲欧美国产中文| jvid福利写真一区二区三区| 国产成年人视频网站| 高潮精品一区videoshd| 男人舔女人下部高潮全视频| 亚洲自拍偷拍av| 在线免费观看一区二区| 亚洲第一精品久久忘忧草社区| 国产丝袜在线视频| 51精品国自产在线| 最新中文字幕免费| 日韩美女视频在线| av女优在线| 97精品视频在线播放| 成人国产精品一区二区网站| 欧美一区二区在线视频观看| 国产主播一区| 最新国产黄色网址| 久久嫩草精品久久久精品一| 美国黄色a级片| 亚洲人一二三区| 波多野结衣理论片| 亚洲国产一区二区三区在线观看| 人妻无码中文字幕| 亚洲护士老师的毛茸茸最新章节| 黄色在线视频网站| 国产精品91视频| 精品国产午夜肉伦伦影院| 18视频在线观看娇喘| 日本女人一区二区三区| 99视频在线视频| 成人av在线播放网址| 国产成人自拍网站| 欧美日韩一区在线观看| 91好色先生tv| 一区三区二区视频| 绿色成人影院| 国产精品一区二区你懂得| 少妇精品导航| 亚洲色欲久久久综合网东京热| 精品一区二区三区免费毛片爱 | 国产日产欧美一区| 国产免费观看av| 亚洲精品国产欧美| av日韩国产| 国产成人女人毛片视频在线| 国一区二区在线观看| 国产又黄又嫩又滑又白| 亚洲图片欧美激情| av中文字幕免费在线观看| 久久视频免费观看| 国产美女精品视频免费播放软件| 一级二级三级欧美| 精品亚洲免费视频| 欧美精品乱码视频一二专区| 欧美一级高清片| 羞羞的视频在线看| 久久久久久欧美| 亚洲高清在线一区| 国产美女永久无遮挡| 不卡一区二区三区四区| 99热国产在线观看| 欧美日韩久久一区二区| 日本精品在线| 91免费欧美精品| 欧美午夜国产| 欧美 日本 国产| 在线一区二区视频| 尤物视频在线免费观看| 亚洲综合小说区| 亚洲国内自拍| 野外性满足hd| 欧美日韩中文另类| 欧美三级黄网| 国产www精品| 欧美性感美女一区二区| 8x8x成人免费视频| 亚洲成a人片在线观看中文| 亚洲欧洲精品视频| 欧美成人免费观看| 美女视频亚洲色图| 精品国产成人av在线免| 中文一区二区完整视频在线观看| 国产免费一区二区三区免费视频| 欧美黑人视频一区| 亚洲区小说区图片区qvod按摩| 日本一道在线观看| 99re免费视频精品全部| 九九热只有精品| 日韩精品极品在线观看| 欧美日韩五区| 亚洲av综合色区| 99精品黄色片免费大全| 中文字幕有码视频| 欧美肥老妇视频| 啄木系列成人av电影| 免费欧美一级片| 欧美日韩一区二区免费在线观看 | 厕沟全景美女厕沟精品| 先锋影音网一区| 伊人成人222| 欧美日韩亚洲精品一区二区三区| 日本不卡不卡| 欧美精品在线一区|