如何通过命令行安装一个.deb
文件?
软件包是通过dpkg
命令(Debian Package Management System)手动**安装的。dpkg
是apt-get
和aptitude
等命令的后端,而这些命令又是软件中心和Synaptic等图形化安装程序的后端。
大致上是这样的。
dpkg
--> apt-get
, aptitude
--> Synaptic, Software Center
但当然最简单的安装软件包的方法是,首先是GUI应用程序(Synaptic、Software Center等),其次是终端命令apt-get
和aptitude
,它们为后台的dpkg增加了一个非常好的用户友好的方法,包括但不限于打包的依赖关系,控制什么已经安装、需要更新、未安装、损坏的软件包,等等。最后是dpkg
命令,它是所有这些命令的基础。
由于dpkg是基础,你可以用它来直接从命令行安装打包。
sudo dpkg -i DEB_PACKAGE
例如,如果软件包文件名为askubuntu_2.0.deb
,那么你应该执行sudo dpkg -i askubuntu_2.0.deb
。如果dpkg
由于依赖性问题报告了一个错误,你可以运行sudo apt-get install -f
来下载缺少的依赖性并配置一切。如果报告错误,你将不得不按照例如https://askubuntu.com/questions/140246/how-do-i-resolve-unmet-dependencies,自己整理出依赖关系。
sudo dpkg -r PACKAGE_NAME
例如,如果该软件包被称为 "askubuntu",那么你应该执行 "sudo dpkg -r askubuntu"。
sudo dpkg-reconfigure PACKAGE_NAME
当你需要重新配置与所述软件包相关的东西时,这很有用。一些有用的例子是,当你想启用Ctrl+Alt+Backspace以重置X服务器时,你会如下。
sudo dpkg-reconfigure keyboard-configuration
另一个好办法是,当你需要为服务器或你的本地测试计算机设置时区时,你可以使用tzdata
包。
sudo dpkg-reconfigure tzdata
蝶变(.deb)软件包是Ubuntu中使用的软件包。你可以在你的系统中安装任何.deb软件包。.deb文件通常可以从你的文件管理器(Nautilus)中安装,只需点击它们即可,因为Ubuntu中已经设置了与默认安装程序的关联。这些说明是为那些希望从命令行终端(Terminal)安装软件包的人准备的。
要安装下载的Debian(Ubuntu)软件包(.deb)。打开终端并输入
sudo dpkg -i packagename.deb
要删除一个 Debian (Ubuntu) 软件包 (.deb)。
sudo dpkg -r packagename
要重新配置/修复一个已安装的 Debian (Ubuntu) 软件包(.deb)。
sudo dpkg-reconfigure packagename
你是否在寻找所有dpkg命令? 请点击这个链接进行阅读。
15个管理基于Debian的Linux服务器的dpkg命令][1] 。
有两个动作,分别是dpkg-query
和dpkg-deb
。
# sudo dpkg -i {package_name}
# sudo dpkg -i skype-ubuntu-precise_4.2.0.11-1_i386.deb
# sudo dpkg -r {package_name}
# sudo dpkg -r vlc
# sudo dpkg -P {package_name}
# sudo dpkg -P vlc
你可以用管道将命令转到 "less"(一个分页器),这样你就可以更容易地滚动内容。
# dpkg -l | less
# dpkg -l {package_name}
# dpkg -l vlc
# dpkg -l | vlc
而这将显示软件包将被安装的位置。 这里的"-S"(大写的 "S")可以搜索该软件包是否被安装。
# sudo dpkg -S {package_name}
# sudo dpkg -S skype
这里-R
是递归的。
递归处理所有在指定目录及其子目录中找到的与模式*.deb
匹配的常规文件)。
# sudo dpkg -R --install {package_location}
# sudo dpkg -R --install /home/sysadmin/soft
这里的-p
(小写p
)将显示软件包信息。
# dpkg -p {package_name}
# dpkg -p apache2
使用-c
(小写c
)来显示内容。
# sudo dpkg -c {package_name}
# sudo dpkg -c skype-ubuntu-precise_4.2.0.11-1_i386.deb
*.deb
包文件。使用-x
(小写x
)提取。
# dpkg -x {package_name} {location_were_to_extract}
# dpkg -x libqt4-phonon_4.6.3-4+squeeze1_i386.deb /home/sysadmin/
使用"-X"(大写 "X")来显示提取的内容。
# dpkg -X {package_name} {location_were_to_extract}
# dpkg -X libqt4-phonon_4.6.3-4+squeeze1_i386.deb /home/sysadmin/
这里的 "一 "代表信息。
# dpkg -I {package_name}
# dpkg -I libqt4-phonon_4.6.3-4+squeeze1_i386.deb
dpkg-reconfigure
在软件包已经安装后重新配置它们。
传给它一个或多个要重新配置的软件包的名称。
它将询问配置问题, 就像第一次安装软件包时一样。
# dpkg-reconfigure postfix
这将重新配置postfix
,就像你第一次安装时一样。
需要了解更多关于dpkg
命令的信息吗?
请看一下手册页面。
# man dpkg
[1]: https://www.linuxsysadmins.com/30-dpkg-commands-to-manage-debian-based-linux-servers/
gdebi
命令行解决方案。这里是在Ubuntu上用命令行安装.deb文件的最佳方法。
sudo gdebi skype.deb
如果你还没有安装gdebi
,请使用sudo apt install gdebi-core
安装。
gdebi
会查找.deb
文件的所有依赖关系,并在尝试安装.deb
文件之前安装它们。
我发现这比 "sudo dpkg -i skype.deb && "要好得多。
sudo apt install -f。 后者在某些情况下太急于删除依赖关系了。 例如,当我试图安装Skype时,它试图删除96个(!)包,包括
compiz和
unity等包!
gdebi`给出的错误信息要清晰得多。
$ sudo gdebi skype.deb
Cannot install 'libqtgui:i386'
顺便说一句,这里是[该特定问题的解决方案][1]。
[1]: [1]:https://askubuntu.com/a/553283/2355
创建自己的脚本安装程序debInstaller
,如下所示。
#!/bin/bash
dpkg -i "$@"
apt-get --yes --fix-broken install
用以下方法使脚本可执行
chmod +x debInstaller
然后将其移动到你的PATH中的一些目录,或者将当前目录添加到你的PATH中。
我打算把它移到/usr/bin中。
sudo cp debInstaller /usr/bin
现在你可以使用命令安装任何.deb
包。
sudo debInstaller some-package.deb
这个方法的附加值是解决依赖问题,因为大多数情况下,你'用dpkg -i
安装.deb
时,会因为依赖错误而面临一些问题,所以你必须用apt-get install -f
来解决,这个脚本会帮你完成这个工作,但这里我用apt-get --yes --fix-broken install
来自动解决这些错误,不需要用户干预。