Linux实用工具-apt-get使用总结

功能

ubuntu下面的软件包管理工具。

后面直接通过例子来给出最常见的使用方式。

举例

常用的例子

更新本机中的数据库缓存

$sudo apt-get update

安装软件之前,首先更新数据库缓存,通过缓存 apt-get 可以知道从哪里下载需要安装的软件。

查找包含部分关键字的软件包

$sudo apt-cache search <你要查找的name>

安装指定的软件

$sudo apt-get install <你要安装的软件包>

下载软件包源代码(如果有的话)

$apt-get source <你要下载的源代码包名>

更多信息

安装和卸载

更新本机中的数据库缓存

$sudo apt-get update

最好定期更新一下使你自己机器上面的数据和服务器(/etc/apt/sources.list列出)上面的信息保持一致,在安装软件之前可以运行一下这个命令保证成功性。

安装软件

#apt-get install packagename

这里将安装你需要的在 sources.lists 中的最新的软件包,如果有其他依赖则自动安装相应的依赖软件包。packagename可以是多个软件包。

一些有用的选项:

-h This help text.
-d Download only - do NOT install or unpack archives
-f Attempt to continue if the integrity check fails
-s No-act. Perform ordering simulation
-y Assume Yes to all queries and do not prompt
-u Show a list of upgraded packages as well

卸载软件(用install)

#apt-get install packagename-

在需要卸载的包后面加上一个'-'(我没有实验过),当然可以 apt-get install p1 p2- 这样多个命令合并了,装p1卸p2。

卸载软件2

#apt-get remove packagename

这会卸载相应的软件,同时也会卸载依赖的部分,没办法指定不卸载依赖的。但是软件的配置文件还是会留在系统中。

完全卸载软件包括删除配置

#apt-get --purge remove packagename

这样配置文件也会被删除。

安装软件2(用remove)

#apt-get remove packagename+

这个和用 install 来卸载软件的意义类似,在包名称后面添加一个+,表示安装。

修复或者只安装最新版本

#apt-get --reinstall install packagename

这里,如果你的软件包被破坏了,或者你想要安装一个最新的软件,运行这个。

升级软件包

升级软件包1

#apt-get -u upgrade

这里加上-u选项列出将要升级的软件,可能会提示有些软件不会升级,因为可能会破坏依赖关系,更好的方法是利用 apt-get dist-upgrade

你可以通过cd或者添加源地址来更新,如果你想从cd来升级,首先运行 apt-cdrom 把cd中的软件添加到 /etc/apt/sources 源中,然后运行 apt-get dist-upgrade 来升级,但是因为 apt-get 总是使用最新版本,如果cd中的不是最新的版本,那么也不会用到cd。

升级软件包2

#apt-get -u dist-upgrade

这样安装的软件前面 apt-get -u upgrade 安不了的也会安装了,但个别的仍然不能安装,例如:升级会导致需要卸载一些包,卸载这些包会导致另外的软件不能用,所以就不升级了。

升级软件包3

#apt-get -u install packagename

假设前面升级的时候packagename无法升级,那么这个命令会升级packagename如果需要卸载某些模块而卸载这些模块导致一些软件无法使用,那么干脆把这些软件都卸载了,然后升级,这个命令会导致packagename最终升级了。

清理没用的包文件

apt-get 安装软件包的时候, apt 会从 /etc/apt/sources.list 里面将相应的软件包恢复出来,把它们存放在一个本地的文档库中( /var/cache/apt/archives/ )然后才开始安装,随着时间的增长,这将不断地消耗硬盘的空间。

清理所有的缓存文件

#apt-get clean

这会清理所 /var/cache/apt/archives//var/cache/apt/archives/partial/ 中没有被锁定的文件。当然你再次安装软件的时候,这个软件又被恢复到本地文档库中了。

仅仅清理旧的缓存文件

#apt-get autoclean

这会清理旧版本的 /var/cache/apt/archives//var/cache/apt/archives/partial/ 中的文件。旧版本是指已经有更新的版本的软件了,再下载的话应下载最新的而不是这个旧版本的了。根据 apt-show-versions -p 可以知道哪些是旧的。

安装指定版本的软件包

#apt-get install package=version

查找信息

查找一个含有packagename字符串的包

$apt-cache search packagename

这样将输出所包含packagename字符串的包。

显示软件包的详细信息

$apt-cache show stella

这包含了软件包许多的信息,例如如果你已经安装了这个软件包,信息里面也会显示。

显示软件包的大致信息

$apt-cache showpkg packagename

这会显示大致的信息。

查看那些包可以升级的信息

$apt-show-versions -u

这个 apt-show-versions 工具需要安装一下的。

查看当前特定软件版本

$apt-show-versions -p packagename

检查packagename依赖的包

$apt-cache depends packagename

工作相关

安装编译源代码需要的库(包)

#apt-get build-dep packagename

所的源代码包一个 Build-Depends 域,指明了从源代码编译这个包需要安装的软件。上面的命令可以下载这些包,其中 packagename 是包名。

查看编译一个包需要哪些其他的库(包)

#apt-cache show packagename

如果你只是想要检查编译一个包需要哪些其他的包,那么可以利用上面的命令,其中'packagename'是包名。

下载包packagename的源代码

$apt-get source packagename

这将在当前目录下载个文件: *.orig.tar.gz,*.dsc,*.diff.gz 。如果这个包是debian的,那么最后一个文件没有,并且第一个文件名里面不包括"orig"字符串。

.dsc 文件被 dpkg-source 使用,把源代码包解压到目录 packagename-version .每一个下载的源代码包里面都有一个 debian/ 目录,这个目录包含了用于创建 .deb 包的文件。

下载的时候自动把源代码包编译

$apt-get -b source packagename

可能是编译成.deb包,我没有试过。

根据下载的源代码创建deb包

$dpkg-buildpackage -rfakeroot -uc -b

如果你决定在下载的时候不创建deb包,你可以以后通过在下载的包之后创建的目录里面运行这个命令来创建。

直接利用包管理器安装包

#dpkg -i file.deb

需要直接使用包管理器,运行这个命令来安装包。

dpkg查找

已知软件包中有一个文件,根据文件查找软件包

#dpkg -S stdio.h

输入之后,输出如下:

libc6-dev: /usr/include/stdio.h
libc6-dev: /usr/include/bits/stdio.h
perl: /usr/lib/perl/5.6.0/CORE/nostdio.h

这在知道包中某些文件的时候,来根据文件查找软件包这种情况下非常用。

查找安装在你的机器上面的软件包

#dpkg -l

自动安装缺失的软件

#auto-apt run command

这里,command是你要运行的命令。例如 auto-apt run ./configure .当缺失依赖软件的时候,它会询问你安装,方便了编译。安装之后会继续运行。 auto-apt 需要保持一个最新的数据库,利用这个命令进行更新: auto-apt update , auto-apt updatedb 以及 auto-apt update-local

apt-get 查找

利用 apt-file 根据文件名查找相应的软件包

$apt-file search filename

如果你只知道程序名字filename,那么你可以运行这个命令,它的工作方式和 dpkg -S 差不多,就是根据某个软件包里可能包含的文件来查找这个软件包的名字。另外,它也会显示包含这个文件的没有安装的软件包。当你编译的时候,提示缺了什么头文件的时候,利用这个很方便地确定需要装哪些软件包(当然利用 audo-apt 更方便).

列出一个软件包中包含的文件

$apt-file list packagename

这里, apt-file 是根据一个数据库来读取信息的,所以需要保持数据库是最新的。

更新apt-file的数据库

#apt-file update

默认情况下, apt-file 的数据库和 auto-apt 是一样的。

其他

问题:

  • 如何查看已经安装的软件?
  • 如何确定一个软件是否已经安装?

参考

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355