~/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 的回答