美文网首页
Batocera软件包管理器(pacman)

Batocera软件包管理器(pacman)

作者: Alvin00 | 来源:发表于2020-06-16 22:40 被阅读0次

Batocera现在集成了一个程序包管理器Pacman,因此您可以轻松地安装/升级/删除自己的程序包,或由Batocera社区提供和托管的程序包。

显然,由Batocera托管的软件包将永远不会包含受版权保护的资料,仅包括免费软件或共享软件ROM,自制软件,免费游戏,主题,免费音乐主题等。这是一种轻松自定义Batocera的方式,可以更好地满足您的需求。

使用包管理器的优点是:

一个软件包包含所有需要的文件:ROM,抓取的元数据,gamelist.xml中的更新…

您可以直接从Internet安装软件包

您可以在有新版本的软件包可用时更新它们

您可以轻松删除不再需要的软件包

依赖关系会自动解决

选择Pacman是因为它重量轻,非常轻便,并且具有Batocera的版本,您可以在没有完整开发环境的情况下将自己的pacman软件包打包在Batocera盒子上。Batocera提供了其特定工具(从ArchLinux的完整pacman发行版中精简了)。

从技术角度来看,pacman软件包只是一个.tar.xz存档-与Batocera的格式完全相同boot.tar.xz。

如何将pacman用作用户?

首先要做的是将本地pacman DB与Batocera的存储库(用于软件包的“应用商店”)同步。

# pacman -Sy

:: Synchronizing package databases...

batocera                            768.0  B  0.00  B/s 00:00 [----------------------------------------------] 100%

然后,您可以搜索所有可用的软件包

# pacman -Ss

batocera/bezels-default-glazed 1.0.0-1

    Batocera bezels with a CRT effect

batocera/nes-alter-ego 1.0.0-1

    NES freeware puzzle game - manual provided as a pdf

batocera/ports-quake-shareware 1.0.0-1

    Quake game files (shareware version)

您可以从字符串中搜索,例如pacman -Ss bezels。

为了安装/升级软件包,您可以输入:

# pacman -S nes-alter-ego

resolving dependencies...

looking for conflicting packages...

Packages (1) nes-alter-ego-1.0.0-1

Total Download Size:  0.40 MiB

Total Installed Size:  0.49 MiB

:: Proceed with installation? [Y/n]

(1/1) checking keys in keyring                                                  [----------------------------------------------] 100%

(1/1) checking package integrity                                                [----------------------------------------------] 100%

(1/1) loading package files                                                    [----------------------------------------------] 100%

(1/1) checking for file conflicts                                              [----------------------------------------------] 100%

(1/1) checking available disk space                                            [----------------------------------------------] 100%

(1/1) reinstalling nes-alter-ego                                                [----------------------------------------------] 100%

:: Running post-transaction hooks...

(1/1) batocera-install.hook

Entry for Alter_Ego.nes added in /userdata/roms/nes/gamelist.xml

从EmulationStation重新加载游戏列表,您就可以玩这个新安装的游戏!

删除软件包:

# pacman -R nes-alter-ego

checking dependencies...

Packages (1) nes-alter-ego-1.0.0-1

Total Removed Size:  0.47 MiB

:: Do you want to remove these packages? [Y/n]

:: Processing package changes...

(1/1) removing nes-alter-ego                            [-----------------------------------------------------------------------------] 100%

如何创建自己的pacman软件包?

这非常容易,您不需要真正的开发技能-基本的脚本已足够!

对于此示例,我们将使用可从https://www.romhacking.net/homebrew/1/获得的NES免费自制ROM Alter Ego。

首先,创建一个新目录,将其安装在Batocera盒上(相对于根目录/),然后复制最终安装包的目录。把所有的目录和所需的文件,以及两个附加的说明文件称为包装.PKGINFO和.BATOEXEC。

# find ./

./

./userdata

./userdata/roms

./userdata/roms/nes

./userdata/roms/nes/Alter_Ego.nes

./userdata/roms/nes/media

./userdata/roms/nes/media/images

./userdata/roms/nes/media/images/Alter_Ego.png

./userdata/roms/nes/Alter_Ego.pdf

./.PKGINFO

./.BATOEXEC

这是这样的内容.PKGINFO-唯一的强制性代码行是以下示例中的前5行pkgnamepkgverpkgdescarchgroup),其余的batocera-makepkg将由实际生成程序包的脚本处理。

# cat .PKGINFO 

pkgname = nes-alter-ego 

pkgver = 1.0.0-1

pkgdesc = NES freeware puzzle game - manual provided as Alter_Ego.pdf

arch = any

group = bezel

packager = your_name

url = http://where_is_this_coming.from/

另一个文件是.BATOEXEC,它使您能够添加元数据或执行命令。通常,对于添加新ROM的软件包,您需要将其添加到中gamelist.xml。它的语法非常简单:第一行定义了您想要执行的操作,而文件的其余部分描述了要执行的操作。要在gamelist.xml中添加<game>节点,下面是一个典型.BATOEXEC文件:

# cat .BATOEXEC

gamelist = nes

<game>

  <path>./Alter_Ego.nes</path>

  <name>Alter Ego</name>

  <desc>Freeware puzzle game for NES, a port of the original (by Denis Grachev for the ZX Spectrum). Swap positions with your 'alter ego' to move about the level and obtain all the bouncing pixels.</desc>

  <rating>0.6</rating>

  <releasedate>20110827T000000</releasedate>

  <developer>Shiru</developer>

  <publisher></publisher>

  <genre>Puzzle</genre>

  <players>1</players>

  <image>./media/images/Alter_Ego.png</image>

  <video></video>

</game>

ArchLinux的完整makepkg软件包,因为它需要Perl和Batocera上没有的其他依赖项,因此要用独立编写出来的batocera-makepkg,batocera-makepkg仅取决于Batashera的Bash和Buildroot / Busybox:

# batocera-makepkg 

Creating package ../nes-alter-ego-1.0.0-1-any.pkg.tar.xz ...

SUCCESS: package ../nes-alter-ego-1.0.0-1-any.pkg.tar.xz correctly generated

您的pacman软件包已在上层目录中生成。该脚本不会覆盖现有的程序包(使用该程序包的新版本,1.0.0-2如需要的话-或者,当然,您也可以在重新创建以前的程序包之前将其删除)。

BATOEXEC文件

您还记得在MS-DOS时代必须写一个AUTOEXEC.BAT文件来描述做什么的日子吗?这就是该名称的灵感来源.BATOEXEC:它描述了安装/升级或删除软件包时可以执行的操作。

第一行描述了您要执行的操作。当前,BATOEXEC接受两个命令:gamelist和exec。

游戏清单

在第一行,告诉您要在哪个系统中添加一个段gamelist.xml,然后从第二行开始,可以<game>将要插入的子树放置在该系统中。

例:

# cat .BATOEXEC

gamelist = nes

<game>

  <path>./Alter_Ego.nes</path>

  <name>Alter Ego</name>

  <desc>Freeware puzzle game for NES, a port of the original (by Denis Grachev for the ZX Spectrum). Swap positions with your 'alter ego' to move about the level and obtain all the bouncing pixels.</desc>

  <rating>0.6</rating>

  <releasedate>20110827T000000</releasedate>

  <developer>Shiru</developer>

  <publisher></publisher>

  <genre>Puzzle</genre>

  <players>1</players>

  <image>./media/images/Alter_Ego.png</image>

  <video></video>

</game>

执行

在第一行中,您告诉您要使用的命令解释器,然后告诉您要执行的命令。仅接受-c命令参数的解释器可用。例如,您可以使用Bash或Python,它们是Batocera大量使用的工具。

如果在.INSTALL_START和.INSTALL_END或.UNINSTALL_START和之间定义部分.UNINSTALL_END,则仅在安装/升级或删除软件包时执行这些命令。这些部分之外的命令将在任何情况下执行(例如:date在以下示例中)

# cat .BATOEXEC

exec = /bin/bash

date

.INSTALL_START

echo "installing bezels with glazed effect..."

.INSTALL_END

.UNINSTALL_START

echo "Uninstalling bezels with glazed effect..."

.UNINSTALL_END

一个.BATOEXEC文件不是强制使用batocera-makepkg(如果你打包EmulationStation主题,或者如果你打包国防部跟踪器的音乐......如果你没有做任何具体...为例)。

管理您自己的存储库

您可以使用pacman来管理自己的软件包库(例如,如果要将自己的ROM添加到Batocera游戏商店分发的免费ROM中)。

为此,您可以通过在/userdata/system/pacman/pacman.conf以下位置添加新的部分来创建本地存储库:

[private_repo]

Server            = file:///userdata/local_repo/

服务器可以是本地目录/userdata/local_repo/,也可以将其托管在自己的Web服务器上。

要将软件包添加到本地存储库,请将新软件包复制mypackage-1.0.0-1.tar.xz到本地存储库所在的位置并键入:

# repo-add /userdata/local_repo/private_repo.db.tar.gz mypackage-1.0.0-1-any.pkg.tar.xz

==> Extracting private_repo.db.tar.gz to a temporary location...

==> Extracting private_repo.files.tar.gz to a temporary location...

==> Adding package 'mypackage-1.0.0-1-any.pkg.tar.xz'

  -> Computing checksums...

  -> Creating 'desc' db entry...

  -> Creating 'files' db entry...

==> Creating updated database file '/userdata/local_repo/private_repo.db.tar.gz'

将软件包添加到您pacman -Sy的仓库后,通过键入pacman与最新信息进行同步,现在就可以从存储库中安装软件包了。

无需设置存储库来测试您自己的软件包。您只需输入以下内容即可简单地以.tar.xz格式安装或升级本地软件包:

pacman -U mypackage-1.0.0-1.tar.xz

要从存储库中删除软件包,您可以使用repo-remove。

相关文章

  • Batocera软件包管理器(pacman)

    Batocera现在集成了一个程序包管理器Pacman,因此您可以轻松地安装/升级/删除自己的程序包,或由Bato...

  • pacman

    pacman 是什么?以下引用自 Arch Linux wiki 的描述: pacman软件包管理器是 Arch ...

  • Linux包管理器用法整理

    Pacman 包管理器 Pacman是Arch Linux 的包管理器,也是 MSYS2的包管理器,算是比较好用的...

  • pacman 软件包管理器,损坏重装

    在manjaro中想卸载掉Python3.7,不小心把系统的全部依赖也卸载了,导致pacman不能正常使用,参考w...

  • Manjaro安装LNMP

    更新软件包 sudo pacman -Syu 安装主键 pacman -S nginx php-fpm maria...

  • pacman命令详解

    Pacman 是一个软件包管理器,作为ArchLinux发行版的一部分。简单来说,就是和apt-get之于Ubun...

  • Pacman常用命令

    Pacman是Arch Linux 的包管理器。它将一个简单的二进制包格式和易用的构建系统结合了起来。不管软件包是...

  • pacman包管理工具

    列出已经安装的软件包 pacman -Q 查看virtualbox包是否已经安装 pacman -Q virtua...

  • pacman基本使用

    安装软件 pacman -S (软件名):安装软件,若有多个软件包,空格分隔 pacman -S --needed...

  • ArchLinux

    [TOC] ArchLinux 常用命令 功能命令pacman安装软件包-S cronie卸载软件包-R cron...

网友评论

      本文标题:Batocera软件包管理器(pacman)

      本文链接:https://www.haomeiwen.com/subject/osudxktx.html