我有两个 Ubuntu 系统,它们完全相同。
我在一个系统上执行了几个apt-get install XXX
,可以在 处获取相关的 deb 包/var/cache/apt/archives/
。然后我将这些 deb 文件复制到另一个系统 处/home/me/archives/
并执行apt-get install ./*.deb
。
我以为它应该在本地安装 deb 包,但令我惊讶的是,它仍然重新下载所有 deb 文件。我不知道为什么。
奇怪的有三点:
当我执行时
apt-get install ./*.deb
,会出现很多消息:Note, selecting 'python-rospkg' instead of './python-rospkg_1.1.4-100_all.deb' Note, selecting 'python-serial' instead of './python-serial_3.0.1-1_all.deb' Note, selecting 'python-service-identity' instead of './python-service-identity_16.0.0-2_all.deb' Note, selecting 'python-setuptools' instead of './python-setuptools_20.7.0-1_all.deb' Note, selecting 'python-sip-dev' instead of './python-sip-dev_4.17+dfsg-1build1_amd64.deb' Note, selecting 'python-sip' instead of './python-sip_4.17+dfsg-1build1_amd64.deb' Note, selecting 'python-six' instead of './python-six_1.10.0-3_all.deb'
例如,我尝试安装其中一个 deb 包,
apt-get install libwebp-dev_0.4.4-1_amd64.deb
但总是出现错误:Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package libwebp-dev_0.4.4-1_amd64.deb E: Couldn't find any package by glob 'libwebp-dev_0.4.4-1_amd64.deb' E: Couldn't find any package by regex 'libwebp-dev_0.4.4-1_amd64.deb'
我也尝试过用
dpkg -i *.deb
安装这些本地的 deb 包,但是出现了缺少某些包的错误,于是我就执行apt install -f
从网上获取缺少的 deb 包,但是从网上获取的缺少的包和本地原有的包一模一样...
总之,我的系统无法按预期安装本地 deb 包。
答案1
“apt-get” 命令不能随心所欲地使用。您只能从存储库中安装它。但正确的方法是使用“dpkg”或“apt”命令:
sudo dpkg -i package_name.deb
或者
sudo apt install package_name.deb
使用 dpkg 可能会破坏软件包依赖关系,因为它不会自动解决该问题,因此您可以使用 apt-get 来解决问题:
sudo apt-get install -f
答案2
问题就出在这里:
我执行了几个apt install XXX
,都是关于python模块的,比如python-numpy
etc. 我以为会依赖python2.7
sopython2.7
会自动下载安装但是我错了(可能是因为python3.5
默认已经安装了?我也不知道具体原因)。也就是说我还要执行一个命令:apt install python2.7
。否则apt install ./*deb
会重新下载所有的包。而且我也不知道为什么dpkg -i *.deb && apt install -f
没有安装python2.7
。
无论如何,安装python2.7
并将其 deb 包与其他包放在一起后,我可以使用命令在本地安装它们全部apt install ./*.deb
。