在Arch Linux构建一个软件包

我想要在Arch Linux本地构建一个软件包的想法其实是因为我人比较懒散。

由于Arch Linux所带的几套图标主题我不是很喜欢,但是却又喜欢Fedora上的Humman-Dark软件包所带的一套图标集,就想把它搞到Arch Linux上来。

虽然Fedora的软件包格式是rpm的,但这难不倒我。在我看来,仅仅包含一些图标文件的软件包应该是与架构平台等无关的,图标格式也应该是兼容的,在Arch Linux上应该可以正常使用。

事实上,rpm解包之后也只是一堆文件,最初我是用了一个Makefile(可以用来安装,卸载)来完成这个工作的,后来就厌烦了这样做。

听说Arch Linux是可以自己构建软件包的。于是:

最简单的过程类似于以下步骤,更多详细教程可以移步Arch Linux WiKi。

创建一个临时构建目录,并创建PKGBUILD(示例文件可以从/usr/share/pacman/下找到)

它是一个shell脚本,在Bash上能保证运行的很好。随时可以运行makepkg测试创建的PKGBUILD是否工作正常。

makepkg要求下面的几个变量和一个package函数是必须在PKGBUILD脚本中定义的:

pkgname= //定义软件包名

pkgvar= //定义软件包版本

arch = (‘value‘) //定义软件包架构,value可选值有i686,x86_64,如果没有架构,应该是any。如果软件包允许在多个架构上构建,但最终只能运行在一种架构上,可以将多个值使用单引号引起来,然后使用空格隔开

....

source=(‘‘) //source用于指定软件源码包文件名,可以是一个因特网上的路径,也可以是本地上(这时可以引用pkgname和pkgvar变量)的源码包,它也允许像架构一样指定多个值。

md5sum= //校验和可以使用makepkg -g自动生成并追加到PKGBUILD

$ makepkg -g >> PKGBUILD

pkgdir(代表pkg)和srcdir(代表src)这两个变量不需要定义,它们会在构建之前被自动创建,因此可以直接在函数中引用它们。

build函数只有在有需要编译的代码时才会有意义,这个函数定义在package函数之前。

package这个函数是makepkg工具唯一要求必须在PKGBUILD脚本中定义的。

构建环境是在一个faceroot环境,一旦构建成功,那么makepkg会在构建目录下创建一个可以供pacman直接安装的软件包(格式:$(pkgname)-$(pkgvar)-.$(arch).tar.xz)

时间: 2024-10-26 10:13:21

在Arch Linux构建一个软件包的相关文章

在Arch Linux构建安装RhytmCat

Linux没有windows那么多好用的媒体播放器,而且在Linux系统上,多媒体格式是受限的,安装好系统之后默认并不包含解码器,需要自行搜索安装解码器以便支持各种多媒体的播放,如果需要的话.更糟糕的是,Linux系统上的软件在处理中文编码时表现得并不友好,比如说播放列表和中文歌词.....直接乱码问题.尽管用easytag处理后还是会有乱码问题,但已经很少了. RhythmCat是基于gstreamer后端的一个音乐播放器,支持显示歌词,能处理简单的中文,依赖于插件也能实现windows上那种

构建一个简单的Linux系统 MenuOs —— start_kernel到init进程(20135304刘世鹏)

构建一个简单的Linux系统 MenuOs —— start_kernel到init进程 作者:刘世鹏20135304 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核代码简介 内核源码三个个重要目录 arch占有代码量最大,支持不同cpu的源代码,arch/x86目录下的代码是我们关注的重点 init,内核启动相关的代码基本都在init目录下,init/main.c中start_kernel是整

第三周——构建一个简单的Linux系统MenuOS

[洪韶武 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ] 第三周  构建一个简单的Linux系统MenuOS

Linux实验报告-构建一个LVS的DR模型

Linux实验报告-构建一个LVS的DR模型 实验背景: 学习笔记,构建一个LVS的DR模型 实验目的: 了解LVS的DR模型工作原理 实现一个LVS的DR模型的实验 实验环境: Vmware Workstation 9,CentOS 6.4  实验步骤: 1,实验目的规划如下模型,CIP.VIP.DIP与RIP在同一网段 2.RS1上配置如下: 配置内核参数: #echo 1 > /prco/sys/net/ipv4/conf/lo/arp_ignore                    

linux新手学习之Arch Linux入门经验分享

我一直是以Ubuntu与Fedora作为新手入门的系统,但是其实我真正想推荐的是Arch,经过前面的学习,或许你对Linux已经有了一个大致的了解,现在如果你想加速你的步伐,也许可以看看本文.如果要问为什么学习Linux,我也只能回答Just for fun 我一直是以 Ubuntu 与 Fedora 作为新手入门的系统,但是其实我真正想推荐的是 Arch ,经过前面的学习,或许你对 Linux 已经有了一个大致的了解,现在如果你想加速你的步伐,也许可以看看本文.如果要问为什么学习 Linux

Linux系统管理之——软件包管理

安装.升级和卸载应用软件是影响用户对操作系统评价的决定性因素之一. 本文从基本的rpm/dpkg命令行出发,以CentOS和UBUNTU为例,介绍典型Linux系统中应用软件的管理和使用: 软件包管理工具的作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询: RPM全称为:Redhat PacesgeManager,最早由RedHat公司制定实施,随后被GNU开源操作系统接收并成为很多Linux系统(RHEL)的既定软件标准: DEB软件包管理工具--D

Arch Linux 简易打包指南

这两天给 Kreogist µ 打 Arch Linux 包,照着 wiki 跟着搞,同时在肥猫和 Wicast C 及暴君还有 jimmy66 等强力大腿及小伙伴的支持下,几番折腾终于打好了,也算是入了个门. 搞完过来发现也算简单,总体来说其实就是一个 PKGBUILD 文件的编写.就着给 µ 打的这个包写个简单指南.在写的时候实在太不知道怎么写的地方还可以直接参考一下其他软件包的 PKGBUILD 是怎么写的我才不会说呢. 编写 PKGBUILD 在最开头,复制一份原型: /usr/shar

Arch linux

这里将介绍Arch Linux使用问题的解决方法,在这里拿出来和大家分享一下Linux目前较适用于小型的网络,Arch Linux 是个针对 i686i686/x86-64 优化的 Linux 发行版. Arch Linux基本理念是快速.轻巧.弹性与简单.它只安装最小化的基本系统,用户可以根据自己的特定需求选择配置安装相应的软件.官方不提供GUIpei最初灵感源于 Per Lidén 开发的一个非常不错的 CRUX 发行版.Arch Linux可以平滑升级,提供多数软件的最新稳定版本. Arc

Arch Linux 的AUR用户软件仓库

==== Arch 官方软件仓库, 共10998个(20190325), 使用pacman搜索安装. https://www.archlinux.org/packages/Core 210 Extra 2048Community 4184以上是/etc/pacman.conf配置里默认启用的包.下面是不常用或不稳定的包,默认不开启,所以使用pacman -Ss搜索不到的.multilib,282; KDE-Unstable,253; multilib-Testing,1; Community-T