Manjaro系统安装.rpm或.deb软件
尽管AUR被称为这个星球上最大的软件资源库,但不可避免的,我们有时会遇到在AUR库中没有待装软件,而待装软件官网只提供.rpm或.deb软件包的情况。本文将介绍如何利用.rpm或.deb软件包资源创建一个Arch软件包,然后在Manjaro系统下安装这些软件。
1. 通过.deb包安装(推荐)
1.1. .deb包安装流程简述:
- 用一个叫“Debtap”的软件将.deb软件包转换成Arch软件包
- 用我们熟悉的
pacman
命令安装上一步创建的Arch软件包
1.2. 准备工作:
- 确保系统已安装
debtap
,可通过以下命令查询
1 | debtap -v #查询debtap安装的版本号 |
若没安装也可通过(pacaur
、packer
、yaourt
)三种方式下载debtap源码文件然后安装debtap,以下是通过yaourt
安装debtap的示例。yaourt -S debtap
命令会下载debtap源码文件压缩包及PKGBUILD
配置文件,我们只需要在下载完成后编译并安装debtap即可:
1 | sudo pacman -S yaourt #安装yaourt |
确保系统已安装
bash
,binutils
,pkgfile
和fakeroot
一般情况均已安装。安装Debtap和所有上述依赖项后,运行以下命令来创建/更新pkgfile和debtap数据库(至少执行一次)。命令执行目录:~ 1
2
3
4sudo debtap -u
# 等待。。。创建/更新pkgfile和debtap数据库。当看到下列信息时,表明debtap已安装完毕。
==> Generating base group packages list...
==> All steps successfully completed!去待安装软件官网下载与你系统相匹配的(64位或32位)
.deb
软件包,推荐下载到~/Downloads
目录
1.3. 实际操作及代码
跳转到.deb软件包的下载目录:
如果准备工作中.deb软件包
下载到~/Downloads
目录的话命令执行目录:~ 1
cd ~/Downloads
用
debtap
命令转换.deb软件包为arch软件包执行命令目录:你下载的.deb文件目录 eg:~/Download 1
2
3
4
5
6
7debtap EasyConnect_x64.deb
# 如果您不想在程序包转换期间回答任何问题,可使用-q标志绕过所有问题
debtap -q EasyConnect_x64.deb(建议)
# 或使用-Q标志绕过所有问题(不建议使用)
debtap -Q EasyConnect_x64.deb系统将要求您输入软件包维护者和许可证的名称。 只需输入它们并按ENTER键即可开始转换过程。软件包转换需要几秒钟到几分钟,具体取决于您的CPU速度。期间可以喝杯咖啡休息一下
若标志绕过所有问题,则不需要以下操作 1
2
3:: Enter Packager name: --> EasyConnect
:: Enter package license: --> 填'GPL'或'unknow'
:: If you want to edit: --> Enter(跳过编辑)转换完成后会在当前目录生成一个Arch软件包:
packagename.pkg.tar.xz
形式的文件(eg:easyconnect-7.6.3.0.86415-1-x86_64.pkg.tar.xz
)用熟悉的
pacman
命令安装刚创建的Arch软件包命令执行目录:刚刚转换Arch包的文件目录 1
2#安装刚创建的Arch软件包
sudo pacman -U easyconnect-7.6.3.0.86415-1-x86_64.pkg.tar.xz恭喜,至此已顺利安装软件。
若安装失败或想卸载该软件,执行以下命令即可
1 | sudo pacman -R easyconnect |
2. 通过.rpm软件包安装
2.1. .rpm安装流程简述:
- 新建一个文件夹作为软件安装目录,并将待安装软件
.rpm
软件包移动到该文件夹内 - 在安装文件夹内创建并配置
PKGBUILD
文件 - 在待装软件文件夹内运行
makepkg
,然后创建Arch软件包 - 用我们熟悉的
pacman
命令安装上一步创建的Arch软件包
2.2. 准备工作:
- 确保系统已安装
rpmextract
命令执行目录:~ 1
sudo pacman -S rpmextract #安装rpmextract
- 去待安装软件官网下载与你系统相匹配的(64位或32位)
.rpm
软件包
2.3. 实际操作及代码:
新建一个软件的安装文件夹,并将待安装软件
.rpm
包移动到该文件夹内1
2
3mkdir package #新建待安装软件文件夹,取名尽量具有可读性
cd package #跳转到该文件夹
#将待安装软件.rpm包复制到该文件夹内在待装软件文件夹内创建并配置
PKGBUILD
文件
这个PKGBUILD
文件包含有关我们将要创建的包的所有配置信息,而Manjaro系统自带原生的PKGBUILD
文件模板,所以直接复制到本目录再配置一下便可,可参考:官方PKGBUILD文件配置说明。1
2cp /usr/share/pacman/PKGBUILD.proto PKGBUILD #复制系统自带的原生PKGBUILD文件模板到待安装软件目录
gedit PKGBUILD #配置PKGBUILD文件我的
PKGBUILD
文件最终配置如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21pkgname=google-musicmanager-beta
pkgver=current
pkgrel=1
pkgdesc="Add a simple disprection."
arch=('x86_64')
url="https://music.google.com/"
license=('unknown')
depends=('libidn')
makedepends=('rpmextract')
options=('emptydirs')
source=("http://dl.google.com/linux/direct/google-musicmanager-beta_current_x86_64.rpm")
md5sums=('6c05f087f9cd77563b7d001584e3b2d8')
build() {
cd "$pkgdir"
rpmextract.sh ../google-musicmanager-beta_current_x86_64.rpm
}
package() {
cd $srcdir
rsync -ruDq $srcdir $pkgdir
}PKGBUILD
文件中代码说明如下:1
2
3
4
5
6
7
8
9
10
11
12
13程序名称(强制格式:小写,无空格等)
版本(默认“current”吧)
内部版本号,对于包的每次更改都应增加1
简短描述(少于约80个字符)
架构(i686,x86_64,两者任意一种,或都支持)
包的官方网站的URL(可选)
许可证(GPL,BSD,unknown等)
程序可能具有的任何依赖项(若多个以空格分隔,而不是逗号)
只需要构建但不运行程序的依赖关系('rpmextract optipng'或'rpmextract')
任意选项(在这种情况下,提取后有一些空目录,我发现不必要,所以我使用了emptydirs选项)
源文件列表(如果是URL,则会在安装时下载这些.rpm文件,但也可以直接将.rpm软件包放在与PKGBUILD文件相同的文件夹中)
文件的md5sums列表(您可以通过在包含文件的文件夹中运行“makepkg -g”来获取这些文件的md5sums)。
最后是构建脚本进行提取在待装软件文件夹内运行
makepkg
创建Arch软件包
首先,在待装软件文件夹内运行makepkg -g
。其次,待下载PKGBUILD文件中指定文件并返回一行md5sum
,并复制md5sum
到PKGBUILD文件中 。再次,再根据提示安装依赖项。最后,用makepkg
创建最终的Arch软件包(即:pkgname.pkg.tar.xz
文件)命令执行目录:待装软件文件夹内 1
2
3makepkg -g #该命令将下载PKGBUILD文件中指定文件并返回一md5sum行
gedit PKGBUILD #再次编辑PKGBUILD文件,将返回的md5sums行复制到md5sums=('')中
makepkg #创建Arch包,可能会提示存在尚未安装的依赖项,按提示安装所需依赖项用熟悉的
pacman
命令安装刚创建的Arch软件包命令执行目录:刚刚转换Arch包的文件目录 1
pacman -U pkgname.pkg.tar.xz
恭喜,至此已顺利安装软件。
若安装失败或想卸载该软件,执行以下命令即可
1
pacman -R pkgname #其中pkgname为PKGBUILD文件中配置的软件名
3. Linux每日一练
在Linux系统中搜索文件命令find
1 | sudo find / -name *example*.* |