zypper,如何在本地 ~/bin 目录中安装包

zypper,如何在本地 ~/bin 目录中安装包

~/bin如何使用 在我的目录中安装软件包zypper?我首先以 root 身份下载该软件包,然后尝试以非 root 身份安装它,但这样会遇到依赖性问题。

# zypper in --download-only wireshark
...
$ zypper -R /home/ec2-user/bin in /var/cache/zypp/packages/SMT-http_smt-ec2_susecloud_net:SLE11-SDK-SP3-Updates/rpm/x86_64/wireshark-1.10.11-0.2.1.x86_64.rpm
Loading repository data...
Reading installed packages...
Resolving package dependencies...

Problem: nothing provides libadns.so.1()(64bit) needed by wireshark-1.10.11-0.2.1.x86_64
 Solution 1: do not install wireshark-1.10.11-0.2.1.x86_64
 Solution 2: break wireshark-1.10.11-0.2.1.x86_64 by ignoring some of its dependencies

是否有一些类似于 --prefix 的 zypper 选项?顺便说一句,我只想要 的分析功能tshark。谢谢。

答案1

简短的回答是你不知道。在阅读了手册页、帮助部分或网站后,我还没有找到方法。

你什么要做的就是下载 rpm,然后将其安装到不同的目录中。

您应该能够通过以下操作来做到这一点:

zypper in --download-only wireshark
rpm --prefix=/home/ec2-user/ -ivh /var/cache/zypp/packages/SMT-http_smt-ec2_susecloud_net:SLE11-SDK-SP3-Updates/rpm/x86_64/wireshark-1.10.11-0.2.1.x86_64.rpm

不要问我为什么,我认为这与 zypper 自己的内部数据库和处理发行版升级有关。

答案2

参考手册,zypper有一个--root选项:

-R,--根
       在不同的根目录上运行。该选项影响
       repos.d 目录和元数据缓存的位置
       目录并导致 rpm 使用 --root 选项运行
       进行软件包的实际安装或删除。注意
       ZYpp锁仍然是在原始系统中创建的
       作为临时文件。另请参阅文件部分。

它使用--root的选项来实现rpm。根据手册页:

- 根目录

    使用以 DIRECTORY 为根目录的系统进行所有操作。注意
    这意味着数据库将在 DIRECTORY 下读取或修改
    并且任何 %pre 或 %post scriptlet 都在 chroot(2) 之后运行
    目录。

换句话说,--root更改 RPM 数据库的位置,但对软件包的安装位置没有影响。

由于zypper没有记录支持重新定位软件包,请考虑下载它。回到它的手册:

-d, --仅下载
       仅下载软件包以供以后安装。

/var/cache/zypp/packages
       如果为存储库设置了 keeppackages 属性(请参阅修改
       fyrepo 命令),安装过程中下载的所有 RPM 文件
       将被保存在这里。另请参阅 clean 命令来清理这些
       缓存目录。

一些软件包支持一个--prefix选项,使它们可以重新定位。这些更多的是例外而不是规则。大多数包都是不是可重新定位。如果这是其中之一,您可以使用rpm2cpio将文件解压到您选择的目录。

进一步阅读:

答案3

zypper 具有与您所要求的--root <dir>相对应的选项。--prefix尽管如此也考虑SailorCire 的回答

相关内容