我没有 sudo 权限,因此,我想将软件安装到我的主目录中。我有很多软件包要下载,所以我想编写一个脚本来执行此操作。我使用:
apt-get download libopencv-dev
dpkg-deb -x libopencv-dev_2.4.8+dfsg1-2ubuntu1_amd64.deb /my/path
但是当我编写脚本时,我不知道下载的文件名(libopencv-dev_2.4.8+dfsg1-2ubuntu1_amd64.deb
),有人知道如何获取文件名apt-get download
吗?
答案1
您可以尝试解析的输出apt-get download --print-uris
,它仅打印有关下载的信息而不实际下载它:
$ apt-get download vim --print-uris
'http://ppa.launchpad.net/pi-rho/dev/ubuntu/pool/main/v/vim/vim_7.4.1907-1~ppa1~x_amd64.deb' vim_2%3a7.4.1907-1~ppa1~x_amd64.deb 1073208 SHA256:f2d9029ec937fa0d4f16612f21bc2cb4ff2ef8dc16f7f31af660c5cb272d92bc
它会为您提供 URL、文件名、预期大小和哈希值。如果您愿意,您也可以自己执行下载和验证(在这种情况下,您可以下载并保存为您想要的任何文件名)。
目前:
filename=$(apt-get download libopencv-dev --print-uris | awk '{print $2}')
答案2
这是一个名为的脚本downloadthis
。
#!/bin/bash
for i in $(apt-cache show $1 | grep Version | sed 's/^Version..//g')
do apt-get download $1
dpkg-deb -x "$1"*"$i"*deb $2
done
不要忘记使其可执行。
以下是一个使用示例:
./downloadthis libopencv-dev
该脚本将libopencv-dev
在您的主目录中创建一个名为的目录。您可以编辑脚本并更改~/$1
为其他路径(例如/my/path
)。
或者,您可以编辑脚本并更改~/$1
为~/$2
允许您在运行脚本时指定提取目录。
以下是此用法的一个示例:
./downloadthis libopencv-dev /my/path
答案3
制作脚本:
PACKAGE=packagename
apt-get download $PACKAGE
dpkg-deb -x $PACKAGE*.deb /my/path
这应该适用于所有软件包。它可能适用于 PPA 或外部存储库,也可能不适用于。