apt-get详细使用

NAME
apt-get - APT包处理程序--基于命令行

SYNOPSIS
apt-get [-asqdyfmubV] [-o=config_string] [-c=config_file] [-t=target_release] [-a=architecture] {update | upgrade | dselect-upgrade | dist-upgrade | install pkg [{=pkg_version_number | /target_release}]...  | remove pkg...  | purge pkg...  | source pkg [{=pkg_version_number | /target_release}]...  | build-dep pkg [{=pkg_version_number | /target_release}]...  | download pkg [{=pkg_version_number | /target_release}]...  | check | clean | autoclean | autoremove | {-v | --version} | {-h | --help}}

DESCRIPTION
apt-get是一种基于命令行的包处理工具,被认为是相对于其它apt库的“后端”(指在命令行下)工具,同样也有一些“前端”(基于图形模式)下工具,如aptitude(8),synaptic(8)和wajig(1).

除了-h,或是--help这两个参数,下面的子命令之一必须使用。

update
update是被用来与它们的源中的包索引文件进行同步的。 可用的软件包的索引是从/etc/apt/sources.list文件中指定的路径获取的。举个例子,当我们使用Debian时,这个命令就取出并扫描Packages.gz的文件,因为这样就能得到升级了的包和新的包的信息了。更新(update)应该在使用upgrade或是dist-upgrade这2个子命令之前使用。请注意:因爲无法预知包文件的大小,所以整體更新進度表將不正確。
(译者注:所以請注意,update並不真正升級安裝在系統上的軟件包,只是查詢Packages.gz,以此來得知哪些软件包可更新)。

upgrade
upgrade是用来安装當前已经安裝在本地系統上的所有软件的最新版本的。如果已经安装的软件有最新版了,那么就会被升级,决对不会导致现在已经安装的软件被卸载或是没有安装的软件被安装了。现已经安装的软件如果不被升级,那么它也不会有任何改变,包括它的安装状态也都不会改变。update应该在upgrade之前先执行一次,这样apt-get就会知道哪些软件有了新版本。
 (译者注:upgrade只会在现有基础上升级软件包, 而不会安装额外的软件包, 如果新版本的软件的依赖关系发生变化, 引入了新的依赖包, 则现有系统将不能满足新版本的依赖关系, 故软件包无法升级, 被保留)

dist-upgrade
dist-upgrade除了执行上面的子命令upgrade的功能之外,还可以智能处理新版本的软件的变更依赖关系。apt-get有一个“聪明”的冲突解决系统,必要的话,它会尝试升级最重要的包而不升级不太重要的包。所以,dist-upgrade命令可能会因此删除一些軟件包。/etc/apt/sources.list里有一个列表,告诉了它從哪里寻找更新的软件包。
(译者注:dist-upgrade 可以智能的解决依赖关系,即如果新版本增加了新的依赖包, dist-upgrade将为了满足依赖关系,而试图安装新增加的依赖包。)

dselect-upgrade
dselect-upgrade用来与传统的debian包“前端”(基于图形)管理工具dselect(1)配合使用。dselect-upgrade遵从dselect(1)对于可用軟件包的狀態字段的更新所做的改变,并进行必要处理以实现dselect(1)所完成的更新。举个例子:可以删去旧的包,并且安装上新的包。(注者注:upgrade和dist-upgrade只会更新,并不会做出把原来的软件删除再装上新的这类的处理)

install
install後面跟上要一個或多個要安裝或升級的軟件包名稱。並不要要求使用包的全稱(舉個例子,在Debian系統中,比如要安装apt-utils软件包,直接使用apt-get install apt-utils就可以了,不需要写出软件包的版本号 apt-utils_1.4.6_amd64.deb),并且指定安装的软件包所需的所有软件包也将被检索和安装。/etc/apt/sources.list文件用于定位所需的软件包。如果指定要安裝的軟件包名後面跟上連接符號“-”,則表示如果該軟件包已經安裝了,則刪除之。同理,如果换成加号“+”,那么该软件包就会被安装。这些特性的优先级高于apt-get的冲突分析系统。
如果要安装一个软件的特定版本,那么可以在这个软件的名称后面加上等号“=”和版本号。如果要想能选择安装哪个發行版本(指稳定版,测试版和非稳定版),可在包名称后加上反斜扛“/”和發行版本(stable,testing,unstable)。
注意,这两种安装方式都可能会导致软件版本的降低,请慎重使用。
如果要升级一个或多个已安装的软件包,而不升级系统上的每个软件包,也是使用該子命令。"upgrade"會安裝當前系統上所有已安裝的軟件的最新版本,"install"将仅安装指定的软件包的最新版本。 只需提供您希望升级的软件包的名称,如果有较新版本可用,则将下载并安装它(及其依赖包,如上所述)。
如果软件名称中使用了“.”、“?”或是”*”,而它们会被认为是POSIX正則表達式处理。任何被匹配的包都被安装(或删除),如:'lo.*'就可以匹配'how-lo'和'lowest'(译者:这是前后都匹配的,可能跟其它场合的正則有点不太一样。) 如果這樣不夠精確,可以使用字符貓定符'^'和'$',或者使用特定的正則表達式。

remove
remove和install完全相同,只是remove是用来删除软件的(所以用法请参考install)。并且remove不會刪除其配置文件。但如果在名称后面跟上加号“+”,那么该软件反而会被安装。

purge
purge同remove,但是purge表示完全清除(軟件的配置文件也會被刪除)。

source
source使得apt-get获取源碼包。APT将检查可用的包以决定要获取哪个源碼包。找到並下載該源碼包的最新版到當前目錄中,如果使用选项APT::Default-Release,將會下載默認版本。而-t选项或每个包使用pkg/release語法设置则会下载相应的包。

在sources.list文件中,源碼包和二進制包被分開配置,源碼包通過deb-src行配置。這就意味着你需要在你的倉庫中添加這樣的行;否則你可能會收到錯誤的(太舊的/太新的)源碼包,或者根本沒有。
如果指定了--compile選項,則源碼包會被使用dpkg-buildpackage編譯成二進制的.deb文件,其中,--host-architecture選項可以指定架構。如果--download-only指定了,則源碼包不會被解壓。

可以通过在源码包名称后跟上等号“=”和版本号来获取特定版本的源码包,这样做可以精確匹配源碼包名稱和版本號,这个操作会隐式启用APT::Get::Only-Source選項。
 注意:源碼包並不像二進制包那樣會更新dpkg數據庫。它只会下载到當前目錄中,就如同你自己去网站上下载源码包一样。

build-dep
build-dep 將爲了滿足編譯的某個源碼包的依賴關系而使得apt-get安裝/刪除軟件包。--host-architecture选项可以指定架构。
(翻譯者注:build-dep参数是指建立某个要编译的软件的环境,可以这样理解:比如我们现在要手工编译apache2源码,那如果想让编译正常通过,你可以使用apt-get build-dep apache2,這樣一來,apt-get就會把編譯apache過程中需要依賴的包安裝好)。

check
check是一个诊断工具,用于更新软件包的缓存,并检查已经不满足的依赖关系。

download
download  将给定的二进制包下载到当前目录中。

clean
clear会清除下载到本地的包文件。它们清空以下目录中除了被锁定的文件以外的所有的文件
/var/cache/apt/archives/
/var/cache/apt/archives/partial/

autoclean  或者  auto-clean
就像clean一樣,autoclean清除下載到本地的包文件。不同的是,它只刪除那些不能再从软件仓库中下載的包文件(这就是说,Debian或Kali已经不维护那些软件包了,或者那些软件包有了一个新的名字)和很大程度上無用的包文件。这样就可以在很长的时间内保持高速缓存,而不会使其無限制的增大。配置选项APT::Clean-Installed设置为off时将防止已經安装的软件包被擦除。

autoremove  或者 auto-remove
autoremove是被用来刪除那些以前安装其它包时为使其满足依赖关系而额外安装的包(译者注:这些包在满足过特定的依赖关系后就不会再被使用,可以安全地删除)

changelog
changelog尝试下载软件包的更新日志并显示。默认情况下,它显示已安装版本的更改日志。 但是,可以指定与install命令相同的选项。

indextargets
Displays by default a deb822 formatted listing of information about all data files (aka index targets) apt-get update would download. Supports a --format option to modify the output format as well as accepts lines of the default output to filter the records by. The command is mainly used as an interface for external tools working with APT to get information as well as filenames for downloaded files so they can use them as well instead of downloading them again on their own. Detailed documentation is omitted here and can instead be found in the file /usr/share/doc/apt-doc/acquire-additional-files.txt shipped by the apt-doc package.



OPTIONS

以下的所有的命令行选项都可以在配置文件进行设置。 您可以使用-f-,--no-f, -f=no来覆盖配置文件的布尔选项。

--no-install-recommends
不要将推荐的软件包视为安装的依赖包,意思是不安装推荐的软件包。

配置item,APT::Install-Recommends

--install-suggests
将建议的软件包视为安装的依赖关系,意思是安装建议的软件包。

配置item,APT::Install-Suggests

-d, --download-only
 包文件仅被下载,不会解压包,也不会安装包。

配置item,APT::Get::Download-Only

-f, --fix-broken   修复已经被破坏的包依赖关系
尝试纠正系统上的损坏的包依赖关系。此选项与install/remove一起使用时,可以不指定任何软件包以允许APT推断出可能的解决方案,如果指定了软件包,就必须完全纠正该依赖问题。首次运行APT时,该选项是必要的;APT本身不允许在系统上存在破坏的包依赖关系。系统的依赖关系结构可能会被破坏,因此需要手动干预(通常意味着使用dpkg --remove来消除一些违规包)。该选项与-m选项一起使用可能会在某些情况下产生错误。

配置item,APT::Get::Fix-Broken。

-m, --ignore-missing, --fix-missing    忽略完整性检查失败的包
忽略丢失的包;如果无法检索到软件包或下载后的软件包的完整性检查失败(损坏的软件包文件),就阻止这些包继续使用并返回结果。与-f选项一起使用此选项可能会在某些情况下产生错误。如果选择了一个软件包来进行安装(特别是如果在命令行中提到这个软件包),那么它不能被下载,它将被静默地阻止。

配置项:APT::Get::Fix-Missing。

--no-download
禁止下载软件包。和 --ignore-missing 一起使用,强制APT仅使用已经下载好的.deb包。

配置item,APT::Get::Download

-q, --quiet
静默模式。产生适合的日志记录输出,省略进度指示。更多的q会产生更多的安静,最多可达2。也可以使用-q=#设置静默级别,覆盖配置文件。
请注意,安静级别2意味着-y;您不应该使用-qq,并且没有带上一个无动作的修饰符,比如-d, --print-uris or -s,因为这样APT可能会决定做一些你没想到的事情。

配置项:quiet

-s, --simulate, --just-print, --dry-run, --recon, --no-act
执行基于当前系统状态发生的事件的模拟,但不实际改变系统。apt-get运行时系统状态可能会改变,所以锁定将被禁用(Debug :: NoLocking)。模拟也可以通过非root用户来用户执行,所以可能无法读取所有的apt配置,从而导致模拟失真。A notice expressing this warning is also shown by default for non-root users (APT::Get::Show-User-Simulation-Note).

配置项:APT::Get::Simulate.

 模拟运行打印出一系列行,每行代表一个dpkg操作:configure (Conf), remove (Remv) or unpack (Inst)。方括号表示已破损的包,空方括号表示不重要的破顺(罕见)。

-y, --yes, --assume-yes
自动回答为yes

配置项:APT::Get::Assume-Yes

--assume-no
自动回答为no

配置项:APT::Get::Assume-No

--no-show-upgraded
不要显示所有要升级的软件包列表。

配置项目:APT :: Get :: Show-Upgraded。


-V, --verbose-versions
显示要升级和安装的软件包的所有版本

配置项:APT::Get::Show-Versions.


-a, --host-architecture
此选项 用来指示 apt-get source --compile要编译的软件包的架构以及如何满足跨构建相关性。默认情况下,它没有设置,这意味着主机架构与构建架构(由APT :: Architecture定义)相同。

配置项:APT::Get::Host-Architecture


-P, --build-profiles
此选项 用来激活apt-get source --compile 编译的软件包的build profiles。默认不会激活build profiles。多个build profiles要用逗号隔开。

配置项:APT::Build-Profiles.

-b, --compile, --build
在下载之后编译源代码包。

配置项:APT :: Get :: Compile。

--ignore-hold
Ignore package holds; this causes apt-get to ignore a hold placed on a package.
与dist-upgrade 结合使用, to override a large number of undesired holds.

配置项:APT ::Ignore-Hold

--with-new-pkgs
与升upgrade一起使用时,允许安装新的软件包。如果已经安装的软件包更新的时候需要安装新的依赖关系,这是非常有用的。请注意,此选项与update一起使用的时候,永远不会删除软件包,只允许添加新软件包。

配置项:APT::Get::Upgrade-Allow-New

--no-upgrade
当与install一起使用时,no-upgrade会阻止命令行上的已经安装了的软件包升级。

配置项: APT::Get::Upgrade.

--only-upgrade
不安装新的软件包。当与install一起使用时,only-upgrade将仅安装已经安装的软件包的升级,忽略安装新软件包的请求。

配置项:APT :: Get :: Only-Upgrade。

--allow-downgrades
不推荐使用

--allow-remove-essential
不推荐使用

--allow-change-held-packages
不推荐使用

--force-yes
不推荐使用

--print-uris
打印URI,而不是获取包文件来安装。每个URI将具有路径,目标文件名称,文件大小和预期的MD5哈希。请注意,要写入的文件名不会总是与远程站点上的文件名相匹配! 这也适用于源和update命令。与update命令一起使用时,不包括MD5和大小,并要由用户来解压任何压缩文件。

配置项:APT :: Get :: Print-URIs

--purge
使用purge,而不是remove,来删除任何要删除的包。星号(“*”)将显示在预定要清除的包旁边。remove --purge相当于purge命令。

配置项目:APT :: Get :: Purge

--reinstall
重新安装已经安装过的软件包。

配置项目:APT :: Get :: ReInstall。

--list-cleanup
这个选项是默认打开的; 使用--no-list-cleanup将其关闭。打开时,apt-get将自动管理/ var / lib / apt / lists的内容,以确保废弃的文件被删除。 关闭它的唯一原因是您经常更改您的源列表。

 配置项目:APT :: Get :: List-Cleanup。

-t, --target-release, --default-release
--trivial-only
--no-remove
--auto-remove, --autoremove
--only-source
--diff-only, --dsc-only, --tar-only
--arch-only
--indep-only
--allow-unauthenticated
--no-allow-insecure-repositories
--show-progress
--with-source filename
-h, --help
显示帮助信息

-v, --version
显示版本

-c, --config-file

-o, --option
设置配置选项; 这将设置一个任意的配置选项。 语法是-o Foo :: Bar = bar。 -o和--option可以多次使用来设置不同的选项。

FILES
/etc/apt/sources.list
Locations to fetch packages from. Configuration Item: Dir::Etc::SourceList.
该配置文件定义了获取包文件的地址,也就是软件源地址。配置项 Dir::Etc::SourceList

/etc/apt/sources.list.d/
File fragments for locations to fetch packages from. Configuration Item: Dir::Etc::SourceParts.
该目录下的文件主要用来定义第三方的软件源地址,里面可以有多个.list文件。配置项 Dir::Etc::SourceParts.


/etc/apt/apt.conf
APT configuration file. Configuration Item: Dir::Etc::Main.
APT的配置文件。配置项 Dir::Etc::Main.

/etc/apt/apt.conf.d/
APT configuration file fragments. Configuration Item: Dir::Etc::Parts.

/etc/apt/preferences
Version preferences file. This is where you would specify "pinning", i.e. a preference to get certain packages from a separate source or from a different version of a distribution. Configuration Item: Dir::Etc::Preferences.
这是版本优先文件。

/etc/apt/preferences.d/
File fragments for the version preferences. Configuration Item: Dir::Etc::PreferencesParts.


/var/cache/apt/archives/
Storage area for retrieved package files. Configuration Item: Dir::Cache::Archives.
该目录存储下载的包文件

/var/cache/apt/archives/partial/
Storage area for package files in transit. Configuration Item: Dir::Cache::Archives (partial will be implicitly appended)
该目录存储下载的包文件

/var/lib/apt/lists/
Storage area for state information for each package resource specified in sources.list(5) Configuration Item: Dir::State::Lists.
在sources.list中指定的每个包资源的状态信息的存储区域

/var/lib/apt/lists/partial/
Storage area for state information in transit. Configuration Item: Dir::State::Lists (partial will be implicitly appended)

SEE ALSO
apt-cache(8), apt-cdrom(8), dpkg(1), sources.list(5), apt.conf(5), apt-config(8), apt-secure(8), The APT User's guide in /usr/share/doc/apt-doc/,
apt_preferences(5), the APT Howto.

DIAGNOSTICS
apt-get returns zero on normal operation, decimal 100 on error.

BUGS
APT bug page[1]. If you wish to report a bug in APT, please see /usr/share/doc/debian/bug-reporting.txt or the reportbug(1) command.

AUTHORS
Jason Gunthorpe
APT team

NOTES
1. APT bug page
http://bugs.debian.org/src:apt


-----------------------------------------------------分割線------------------------------------------------------------
apt-add-repository 命令的使用:


NAME
在/etc/apt/sources.list  或者 /etc/apt/sources.list.d中添加或刪除一個倉庫。


SYNOPSIS
add-apt-repository [OPTIONS] REPOSITORY



DESCRIPTION
add-apt-repository是一个脚本,表示將額外的APT軟件倉庫添加到/etc/apt/sources.list文件中或者將該倉庫添加到/etc/apt/sources.list.d/目錄中的文件,或者删除已存在的倉庫。
可以使用的選項如下:
-h,--help显示帮助信息并退出

-m,--massive-debug将大量调试信息打印到命令行中

-r,--remove删除指定的軟件倉庫

-y,--yes  自動回答爲yes

-k,--keyserver使用自定义的keyserver URL而不是默认的

-s,--enable-source允 许从倉庫下载源包


REPOSITORY STRING
REPOSITORY是一个可直接添加到sources.list(5)文件的行,有如下几种形式:
ppa:<user>/<ppa-name>  表示用于添加Personal Package Ar-chives或者启用某个发行组件,该形式的REPOSITORY直接被附加到/etc/apt/sources.list文件中。
第二种形式,  会添加一个文件到/etc/apt/sources.list.d/目录中,并且该文件的deb行加入ppa:<user>/<ppa-name>指定的仓库 。而且,新添加的PPA的GPG公钥也将被下载并添加到apt的钥匙圈。在第三种形式中,给定的分配组件将为所有的源使用。




SEE ALSO
       sources.list(5)

COPYRIGHT
       This manual page was written by Chow Loong Jin <hyperair@gmail.com> for the Debian system  (but  may  be  used  by others). Permission is granted to copy, distribute and/or modify this document under the terms of the  GNU  General  Public  License, Version 2 or any later version published by the Free Software Foundation.

       On  Debian  systems,  the  complete  text of the GNU General Public License can be found in /usr/share/common-licenses.

-----------分割线------------------------------------------------------------------

apt-cache手册

NAME
apt-cache 用于查询apt的缓存


SYNOPSIS
       apt-cache [-agipns] [-o=config_string] [-c=config_file] {gencaches | showpkg pkg...  | showsrc pkg...  | stats | dump | dumpavail | unmet |
                 search regex...  | show pkg [{=pkg_version_number | /target_release}]...  | depends pkg [{=pkg_version_number | /target_release}]...  |
                 rdepends pkg [{=pkg_version_number | /target_release}]...  | pkgnames [prefix]  | dotty pkg [{=pkg_version_number | /target_release}]...
                 | xvcg pkg [{=pkg_version_number | /target_release}]...  | policy [pkg...]  | madison pkg...  | {-v | --version} | {-h | --help}}


DESCRIPTION
apt-cache对APT的包缓存执行各种操作。apt-cache不处理系统的状态,提供了对包元数据的操作和输出。包的元数据是通过apt-get update更新的,所以如果最后一次更新太早,可能会过时,但作为交换,apt-cache独立于配置源的可用性(例如离线)工作。
除非给出-h或--help选项,否则以下命令之一必须存在。

gencaches
 gencaches创建APT的包缓存。


showpkg pkg...
  showpkg显示有关在命令行上列出的软件包的信息。剩余的参数是软件包名称。列出了每个软件包的可用版本和反向依赖关系,以及每个版本的forward dependencies。 Forward (normal) dependencies are  those packages upon which the package in question depends;反向依赖关系是那些依赖于所涉及的软件包的软件包。因此,一个包必须满足前向依赖关系,但是反向依赖关系不需要。
举个栗子: apt-cache showpkg libreadline2  可能的输出为:
               Package: libreadline2
               Versions: 2.1-12(/var/state/apt/lists/foo_Packages),
               Reverse Depends:
                 libreadlineg2,libreadline2
                 libreadline2-altdev,libreadline2
               Dependencies:
               2.1-12 - libc5 (2 5.4.0-0) ncurses3.0 (0 (null))
               Provides:
               2.1-12 -
               Reverse Provides:

  因此,可以看出,libreadline2,版本2.1-12,依赖libc5和ncurses3.0,被libreadlineg2等包依赖。反过来,libreadlineg2和libreadline2-altdev依赖于libreadline2。如果安装了libreadline2,则还必须安装libc5和ncurses3.0(和ldso); libreadlineg2和libreadline2-altdev不必安装。对于输出其余部分的具体含义,最好查阅apt源代码。

stats
stats显示有关缓存的一些统计信息。
用法 apt-cache  stats

showsrc pkg...
 showsrc显示与给定包名称匹配的所有源代码包。显示所有版本,以及声明该名称为二进制包的所有记录。
使用--only-source仅显示源代码包名称。

dump
dump显示缓存中每个软件包的简短列表。 这主要是为了调试。

dumpavail
 dumpavail打印出一个可用的列表标准输出。适合与dpkg(1)一起使用,并由dselect(1)方法调用。


unmet
显示包缓存中所有未满足的依赖关系的摘要。


show pkg...
 show执行类似于dpkg --print-avail的功能; 它显示命名包的包记录。

 search regex...
search使用正则搜索所有的可用包。查阅 regex(7)。搜索软件包名称和描述以查找正则表达式匹配到的包名称和简短的描述,包括虚拟包名称。如果给出--full,则为每个匹配的包产生与show相同的输出,如果给出--names-only,则不搜索长描述,只有包名。


depends pkg...
显示此包依赖的包列表。

rdepends pkg...
显示哪些包依赖于此包

pkgnames [prefix]
 这个命令打印APT知道的每个包的名字。可选参数是过滤名称列表的前缀匹配。输出适用于shell标签的完整功能,且输出产生得非常快。 这个命令最好和--generate选项一起使用。请注意,APT知道的包不一定可用于下载,安装或安装,例如, 虚拟包也列在中生成的列表。


dotty pkg...
dotty可以获取软件包列表,并从GraphViz [1]软件包生成适合dotty使用的输出。结果就是一组代表包之间关系的节点和边。默认情况下,给定的包将追踪所有依赖的包;;这可以产生一个非常大的图。要将输出限制为仅在命令行上列出的软件包,请设置APT :: Cache :: GivenOnly选项。结果节点将有几个形状;普通包是盒子,纯虚拟包是三角形,混合虚拟包是钻石,缺少包是六边形。橙色框意味着递归被停止(叶包),蓝线是预先依赖的,绿线是冲突。  注意,dotty不能绘制更大的包。

xvcg pkg...
 与dotty相同,仅适用于VCG工具xvcg [2]。

policy [pkg...]

madison pkg...


------------------------------------------------------------------------

dpkg命令的使用:
dpkg是debian的包管理器。


评论

此博客中的热门博文

OAuth 2教程

网格策略