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行(pkgname,pkgver,pkgdesc,arch和group),其余的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。
网友评论