什么是 apt-get?
apt-get
是一个功能强大且免费的包管理命令行程序,用于与Ubuntu’s APT
(Advanced Packaging Tool
) 库执行安装新软件包、删除现有软件包、升级现有软件包甚至用于升级整个操作系统。
什么是 apt-cache?
apt-cache
命令行工具用于搜索 apt 软件包缓存。简单来说,这个工具用于搜索软件包,收集软件包信息,也用于搜索可以安装的可用软件包
Debian或者
Ubuntu`基于系统。
1. 如何列出所有可用的包?
代码语言:javascript复制要列出所有可用的包,请输入以下命令。
$ apt-cache pkgnames
代码语言:javascript复制esseract-ocr-epo
pipenightdreams
mumudvb
tbb-examples
libsvm-java
libmrpt-hmtslam0.9
libboost-timer1.50-dev
kcm-touchpad
g -4.5-multilib
...
2. 如何找到软件的包名和描述?
代码语言:javascript复制要在安装之前找出包名称及其描述,请使用
search
旗帜。使用search
和apt-cache
将显示带有简短描述的匹配包列表。假设你想了解包的描述vsftpd
,那么命令就是。
$ apt-cache search vsftpd
代码语言:javascript复制vsftpd - lightweight, efficient FTP server written for security
ccze - A robust, modular log coloriser
ftpd - File Transfer Protocol (FTP) server
yasat - simple stupid audit tool
代码语言:javascript复制查找并列出所有以
vsftpd
开头的包,你可以使用以下命令。
$ apt-cache pkgnames vsftpd
代码语言:javascript复制vsttpd
3. 如何查看包信息?
代码语言:javascript复制例如,如果你想检查软件包信息及其简短说明,请说(版本号、校验和、大小、安装大小、类别等)。用
show
子命令如下所示。
$ apt-cache show netcat
代码语言:javascript复制Package: netcat
Priority: optional
Section: universe/net
Installed-Size: 30
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Ruben Molina <rmolina@udea.edu.co>
Architecture: all
Version: 1.10-40
Depends: netcat-traditional (>= 1.10-39)
Filename: pool/universe/n/netcat/netcat_1.10-40_all.deb
Size: 3340
MD5sum: 37c303f02b260481fa4fc9fb8b2c1004
SHA1: 0371a3950d6967480985aa014fbb6fb898bcea3a
SHA256: eeecb4c93f03f455d2c3f57b0a1e83b54dbeced0918ae563784e86a37bcc16c9
Description-en: TCP/IP swiss army knife -- transitional package
This is a "dummy" package that depends on lenny's default version of
netcat, to ease upgrades. It may be safely removed.
Description-md5: 1353f8c1d079348417c2180319bdde09
Bugs: https://bugs.launchpad.net/ubuntu/ filebug
Origin: Ubuntu
4. 如何检查特定包的依赖关系?
代码语言:javascript复制使用
showpkg
子命令来检查特定软件包的依赖关系。是否安装了这些依赖包。例如,使用showpkg
命令和包名。
$ apt-cache showpkg vsftpd
代码语言:javascript复制Package: vsftpd
Versions:
2.3.5-3ubuntu1 (/var/lib/apt/lists/in.archive.ubuntu.com_ubuntu_dists_quantal_main_binary-i386_Packages)
Description Language:
File: /var/lib/apt/lists/in.archive.ubuntu.com_ubuntu_dists_quantal_main_binary-i386_Packages
MD5: 81386f72ac91a5ea48f8db0b023f3f9b
Description Language: en
File: /var/lib/apt/lists/in.archive.ubuntu.com_ubuntu_dists_quantal_main_i18n_Translation-en
MD5: 81386f72ac91a5ea48f8db0b023f3f9b
Reverse Depends:
ubumirror,vsftpd
harden-servers,vsftpd
Dependencies:
2.3.5-3ubuntu1 - debconf (18 0.5) debconf-2.0 (0 (null)) upstart-job (0 (null)) libc6 (2 2.15) libcap2 (2 2.10) libpam0g (2 0.99.7.1) libssl1.0.0 (2 1.0.0) libwrap0 (2 7.6-4~) adduser (0 (null)) libpam-modules (0 (null)) netbase (0 (null)) logrotate (0 (null)) ftp-server (0 (null)) ftp-server (0 (null))
Provides:
2.3.5-3ubuntu1 - ftp-server
Reverse Provides:
5. 如何查看缓存的统计信息
代码语言:javascript复制
stats
子命令将显示有关缓存的整体统计信息。例如,以下命令将显示 Total package names 是在缓存中找到的包数。
$ apt-cache stats
代码语言:javascript复制Total package names: 51868 (1,037 k)
Total package structures: 51868 (2,490 k)
Normal packages: 39505
Pure virtual packages: 602
Single virtual packages: 3819
Mixed virtual packages: 1052
Missing: 6890
Total distinct versions: 43015 (2,753 k)
Total distinct descriptions: 81048 (1,945 k)
Total dependencies: 252299 (7,064 k)
Total ver/file relations: 45567 (729 k)
Total Desc/File relations: 81048 (1,297 k)
Total Provides mappings: 8228 (165 k)
Total globbed strings: 286 (3,518 )
Total dependency version space: 1,145 k
Total slack space: 62.6 k
Total space accounted for: 13.3 M
6. 如何更新系统包
代码语言:javascript复制这
update
命令用于从指定的源重新同步包索引文件/etc/apt/sources.list
文件。update 命令从它们的位置获取包并将包更新到更新的版本。
$ sudo apt-get update
代码语言:javascript复制[sudo] password for tecmint:
Ign http://security.ubuntu.com quantal-security InRelease
Get:1 http://security.ubuntu.com quantal-security Release.gpg [933 B]
Get:2 http://security.ubuntu.com quantal-security Release [49.6 kB]
Ign http://in.archive.ubuntu.com quantal InRelease
Ign http://in.archive.ubuntu.com quantal-updates InRelease
Get:3 http://repo.varnish-cache.org precise InRelease [13.7 kB]
Ign http://in.archive.ubuntu.com quantal-backports InRelease
Hit http://in.archive.ubuntu.com quantal Release.gpg
Get:4 http://security.ubuntu.com quantal-security/main Sources [34.8 kB]
Get:5 http://in.archive.ubuntu.com quantal-updates Release.gpg [933 B]
...
7. 如何升级软件包
代码语言:javascript复制
upgrade
命令用于升级系统上所有当前安装的软件包。在任何情况下,当前安装的软件包都不会被删除,或者尚未安装的软件包也不会被检索和安装以满足升级依赖性。
$ sudo apt-get upgrade
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
linux-headers-generic linux-image-generic wine1.5 wine1.5-i386
The following packages will be upgraded:
activity-log-manager-common activity-log-manager-control-center adium-theme-ubuntu alacarte
alsa-base app-install-data-partner appmenu-gtk appmenu-gtk3 apport apport-gtk apt
apt-transport-https apt-utils aptdaemon aptdaemon-data at-spi2-core bamfdaemon base-files bind9-host
...
代码语言:javascript复制如果你要升级,而不管是否添加或删除软件包来满足依赖关系,请使用
dist-upgrade
子命令。
$ sudo apt-get dist-upgrade
8. 如何安装或升级特定软件包?
代码语言:javascript复制
install
子命令被一个或多个希望安装或升级的软件包跟踪。
$ sudo apt-get install netcat
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
netcat-traditional
The following NEW packages will be installed:
netcat netcat-traditional
0 upgraded, 2 newly installed, 0 to remove and 328 not upgraded.
Need to get 67.1 kB of archives.
After this operation, 186 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://in.archive.ubuntu.com/ubuntu/ quantal/universe netcat-traditional i386 1.10-40 [63.8 kB]
Get:2 http://in.archive.ubuntu.com/ubuntu/ quantal/universe netcat all 1.10-40 [3,340 B]
Fetched 67.1 kB in 1s (37.5 kB/s)
Selecting previously unselected package netcat-traditional.
(Reading database ... 216118 files and directories currently installed.)
Unpacking netcat-traditional (from .../netcat-traditional_1.10-40_i386.deb) ...
Selecting previously unselected package netcat.
Unpacking netcat (from .../netcat_1.10-40_all.deb) ...
Processing triggers for man-db ...
Setting up netcat-traditional (1.10-40) ...
Setting up netcat (1.10-40) ...
9. 如何安装多个包?
代码语言:javascript复制你可以在命令中添加多个软件包名称,以便同时安装多个软件包。例如,以下命令将安装包
[nethogs]
和[goaccess]
。
$ sudo apt-get install nethogs goaccess
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
goaccess is already the newest version.
nethogs is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.
10. 如何使用通配符安装多个包
代码语言:javascript复制借助正则表达式,你可以使用一个字符串添加多个包。例如,我们使用
*
通配符来安装几个包含name
字符串,名称将是package-name
。
$ sudo apt-get install '*name*'
11. 如何在不升级的情况下安装软件包
代码语言:javascript复制使用 sub
–no-upgrade
命令将阻止已安装的软件包升级。
$ sudo apt-get install packageName --no-upgrade
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
Skipping vsftpd, it is already installed and upgrade is not set.
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.
12. 如何只升级特定的包
代码语言:javascript复制
–only-upgrade
命令不安装新包,但它只升级已经安装的包并禁用包的新安装。
$ sudo apt-get install packageName --only-upgrade
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
vsftpd is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.
13. 如何安装特定的软件包版本?
代码语言:javascript复制假设你只想安装特定版本的软件包,只需使用
=
与包名并附加所需的版本。
$ sudo apt-get install vsftpd=2.3.5-3ubuntu1
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
vsftpd is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.
14. 如何在没有配置的情况下删除包
代码语言:javascript复制卸载软件包而不删除它们的配置文件(以便以后重新使用相同的配置)。使用
remove
命令如图所示。
$ sudo apt-get remove vsftpd
代码语言:javascript复制[sudo] password for tecmint:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
vsftpd
0 upgraded, 0 newly installed, 1 to remove and 328 not upgraded.
After this operation, 364 kB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 216156 files and directories currently installed.)
Removing vsftpd ...
vsftpd stop/waiting
Processing triggers for ureadahead ...
Processing triggers for man-db ...
15. 我如何完全删除包
代码语言:javascript复制要删除软件包,包括其配置文件,请使用
purge
子命令如下所示。
$ sudo apt-get purge vsftpd
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
vsftpd*
0 upgraded, 0 newly installed, 1 to remove and 328 not upgraded.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? y
(Reading database ... 216107 files and directories currently installed.)
Removing vsftpd ...
Purging configuration files for vsftpd ...
Processing triggers for ureadahead ...
代码语言:javascript复制或者,你可以将这两个命令组合在一起,如下所示。
$ sudo apt-get remove --purge vsftpd
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
vsftpd*
0 upgraded, 0 newly installed, 1 to remove and 328 not upgraded.
After this operation, 364 kB disk space will be freed.
Do you want to continue [Y/n]? y
(Reading database ... 216156 files and directories currently installed.)
Removing vsftpd ...
vsftpd stop/waiting
Purging configuration files for vsftpd ...
Processing triggers for ureadahead ...
Processing triggers for man-db ...
16. 如何清理磁盘空间
代码语言:javascript复制
clean
命令用于通过清理检索(下载)来释放磁盘空间.deb
来自本地存储库的文件(包)。
$ sudo apt-get clean
17. 如何只下载包的源代码
代码语言:javascript复制要仅下载特定包的源代码,请使用选项
–download-only source
带有'package-name',如图所示。
$ sudo apt-get --download-only source vsftpd
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 220 kB of source archives.
Get:1 http://in.archive.ubuntu.com/ubuntu/ quantal/main vsftpd 2.3.5-3ubuntu1 (dsc) [1,883 B]
Get:2 http://in.archive.ubuntu.com/ubuntu/ quantal/main vsftpd 2.3.5-3ubuntu1 (tar) [188 kB]
Get:3 http://in.archive.ubuntu.com/ubuntu/ quantal/main vsftpd 2.3.5-3ubuntu1 (diff) [30.5 kB]
Fetched 220 kB in 4s (49.1 kB/s)
Download complete and in download only mode
18. 如何下载和解压包
代码语言:javascript复制要将包的源代码下载并解压到特定目录,请键入以下命令。
$ sudo apt-get source vsftpd
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 220 kB of source archives.
Get:1 http://in.archive.ubuntu.com/ubuntu/ quantal/main vsftpd 2.3.5-3ubuntu1 (dsc) [1,883 B]
Get:2 http://in.archive.ubuntu.com/ubuntu/ quantal/main vsftpd 2.3.5-3ubuntu1 (tar) [188 kB]
Get:3 http://in.archive.ubuntu.com/ubuntu/ quantal/main vsftpd 2.3.5-3ubuntu1 (diff) [30.5 kB]
Fetched 220 kB in 1s (112 kB/s)
gpgv: Signature made Thursday 24 May 2012 02:35:09 AM IST using RSA key ID 2C48EE4E
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./vsftpd_2.3.5-3ubuntu1.dsc
dpkg-source: info: extracting vsftpd in vsftpd-2.3.5
dpkg-source: info: unpacking vsftpd_2.3.5.orig.tar.gz
dpkg-source: info: unpacking vsftpd_2.3.5-3ubuntu1.debian.tar.gz
dpkg-source: info: applying 01-builddefs.patch
dpkg-source: info: applying 02-config.patch
dpkg-source: info: applying 03-db-doc.patch
dpkg-source: info: applying 04-link-local.patch
dpkg-source: info: applying 05-whitespaces.patch
dpkg-source: info: applying 06-greedy.patch
dpkg-source: info: applying 07-utf8.patch
dpkg-source: info: applying 08-manpage.patch
dpkg-source: info: applying 09-s390.patch
dpkg-source: info: applying 10-remote-dos.patch
dpkg-source: info: applying 11-alpha.patch
dpkg-source: info: applying 09-disable-anonymous.patch
dpkg-source: info: applying 12-ubuntu-use-snakeoil-ssl.patch
19. 如何下载、解压和编译一个包
代码语言:javascript复制你也可以同时下载、解压和编译源代码,使用选项
–compile
如下所示。
$ sudo apt-get --compile source goaccess
代码语言:javascript复制[sudo] password for tecmint:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Need to get 130 kB of source archives.
Get:1 http://in.archive.ubuntu.com/ubuntu/ quantal/universe goaccess 1:0.5-1 (dsc) [1,120 B]
Get:2 http://in.archive.ubuntu.com/ubuntu/ quantal/universe goaccess 1:0.5-1 (tar) [127 kB]
Get:3 http://in.archive.ubuntu.com/ubuntu/ quantal/universe goaccess 1:0.5-1 (diff) [2,075 B]
Fetched 130 kB in 1s (68.0 kB/s)
gpgv: Signature made Tuesday 26 June 2012 09:38:24 AM IST using DSA key ID A9FD4821
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./goaccess_0.5-1.dsc
dpkg-source: info: extracting goaccess in goaccess-0.5
dpkg-source: info: unpacking goaccess_0.5.orig.tar.gz
dpkg-source: info: unpacking goaccess_0.5-1.debian.tar.gz
dpkg-buildpackage: source package goaccess
dpkg-buildpackage: source version 1:0.5-1
dpkg-buildpackage: source changed by Chris Taylor <ctaylor@debian.org>
dpkg-buildpackage: host architecture i386
dpkg-source --before-build goaccess-0.5
dpkg-checkbuilddeps: Unmet build dependencies: debhelper (>= 9) autotools-dev libncurses5-dev libglib2.0-dev libgeoip-dev autoconf
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
...
20. 如何在不安装的情况下下载软件包
代码语言:javascript复制使用
download
选项,你可以下载任何给定的软件包而无需安装它。例如,下面的命令只会下载nethogs
打包到当前工作目录。
$ sudo apt-get download nethogs
代码语言:javascript复制Get:1 Downloading nethogs 0.8.0-1 [27.1 kB]
Fetched 27.1 kB in 3s (7,506 B/s)
21. 如何查看包的变更日志?
代码语言:javascript复制
changelog
标志下载软件包更改日志并显示已安装的软件包版本。
$ sudo apt-get changelog vsftpd
代码语言:javascript复制vsftpd (2.3.5-3ubuntu1) quantal; urgency=low
* Merge from Debian testing (LP: #1003644). Remaining changes:
debian/vsftpd.upstart: migrate vsftpd to upstart.
Add apport hook (LP: #513978):
- debian/vsftpd.apport: Added.
- debian/control: Build-depends on dh-apport.
- debian/rules: Add --with apport.
Add debian/watch file.
debian/patches/09-disable-anonymous.patch: Disable anonymous login
by default. (LP: #528860)
* debian/patches/12-ubuntu-us-snakeoil-ssl.patch: Use snakeoil SSL
certificates and key.
-- Andres Rodriguez <andreserl@ubuntu.com> Wed, 23 May 2012 16:59:36 -0400
...
22. 如何检查已损坏的依赖项?
代码语言:javascript复制
check
命令是一个诊断工具。它用于更新包缓存并检查损坏的依赖项。
$ sudo apt-get check
代码语言:javascript复制[sudo] password for tecmint:
Reading package lists... Done
Building dependency tree
Reading state information... Done
23. 如何搜索和构建依赖?
代码语言:javascript复制这个
build-dep
命令搜索系统中的本地存储库并安装package.json的构建依赖项。如果本地存储库中不存在该包,它将返回错误代码。
$ sudo apt-get build-dep netcat
代码语言:javascript复制The following NEW packages will be installed:
debhelper dh-apparmor html2text po-debconf quilt
0 upgraded, 5 newly installed, 0 to remove and 328 not upgraded.
Need to get 1,219 kB of archives.
After this operation, 2,592 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://in.archive.ubuntu.com/ubuntu/ quantal/main html2text i386 1.3.2a-15build1 [91.4 kB]
Get:2 http://in.archive.ubuntu.com/ubuntu/ quantal/main po-debconf all 1.0.16 nmu2ubuntu1 [210 kB]
Get:3 http://in.archive.ubuntu.com/ubuntu/ quantal/main dh-apparmor all 2.8.0-0ubuntu5 [9,846 B]
Get:4 http://in.archive.ubuntu.com/ubuntu/ quantal/main debhelper all 9.20120608ubuntu1 [623 kB]
Get:5 http://in.archive.ubuntu.com/ubuntu/ quantal/main quilt all 0.60-2 [285 kB]
Fetched 1,219 kB in 4s (285 kB/s)
...
24. 如何自动清理 Apt-Get 缓存?
代码语言:javascript复制
autoclean
命令删除所有.deb
文件来自/var/cache/apt/archives
释放大量磁盘空间。
$ sudo apt-get autoclean
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
25. 如何自动删除已安装的软件包?
代码语言:javascript复制
autoremove
sub 命令用于自动删除那些肯定安装以满足其他包的依赖关系但现在不再需要的包。例如,以下命令将删除已安装的包及其依赖项。
$ sudo apt-get autoremove vsftpd
代码语言:javascript复制Reading package lists... Done
Building dependency tree
Reading state information... Done
Package 'vsftpd' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 328 not upgraded.
相关文章
Linux之yum命令
linux中RPM命令的20个实际示例
linux之yum下载rpm包离线安装