美文网首页
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)

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