一、apt的使用

apt是在Ubuntu上的软件安装管理工具,很多人都非常熟悉。但这里面有一些应用的技巧可能还是值得说明一下。同时说明一下,老版本的Ubuntu中使用apt-get,apt-cache相对来说不容易理解,对新手不太友好,在高版本中已经使用apt将二者的功能融合了。
需要说明两个命令:

sudo apt update    #升级软件包索引
sudo apt upgrade  [package_name]   #升级所有包 [指定包]

前者一般是在更新源或者很久不更新软件的情况下使用,后者则是在前者使用后一次全面更新相关包。

二、在安装中的应用

在实际的软件安装过程中会遇到这些问题,是否源中或者缓存中有这个软件?安装的软件的信息?软件安装的版本和位置等等。这些往往都会有一细问题出现。比如安装了一个版本的软件或者库,但和需要此库的软件不匹配。怎么发现?发现后如何删除更新等等。下面就把这个说明一下:
1、显示可用软件列表
使用 sudo apt list

:$ sudo apt list |grep libtbb*    #列可用软件包
[sudo] fjf 的密码:

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libtbb-dev/jammy 2021.5.0-7ubuntu2 amd64
libtbb-dev/jammy 2021.5.0-7ubuntu2 i386
libtbb-doc/jammy,jammy 2021.5.0-7ubuntu2 all
libtbb12/jammy 2021.5.0-7ubuntu2 amd64
libtbb12/jammy 2021.5.0-7ubuntu2 i386
libtbb2-dev/jammy 2020.3-1ubuntu3 amd64
libtbb2-dev/jammy 2020.3-1ubuntu3 i386
libtbb2-doc/jammy,jammy 2020.3-1ubuntu3 all
libtbb2/jammy 2020.3-1ubuntu3 amd64
libtbb2/jammy 2020.3-1ubuntu3 i386
libtbbmalloc2/jammy 2021.5.0-7ubuntu2 amd64
libtbbmalloc2/jammy 2021.5.0-7ubuntu2 i386
libtbox-dev/jammy 1.6.7-1 amd64

上面的库如果已经安装成功,则会在哪一行的后面注释有已安装,否则就是面的情况,一个都没有安装(会显示所有的版本,上面是两个12和2)。如果显示不到自己需要的软件,就得更新源了。这个网上有一大堆方法,这里不再赘述。
另外:

apt list --installed     #查看已安装包
apt list --upgradeable   #查看可升级包

2、查找软件
使用apt search package_name(实际需要替换成需要的包名)

:$ apt search libtbb*
正在排序... 完成
全文搜索... 完成  
libcctbx-dev/jammy 2021.12+ds1-4ubuntu1 amd64
  Computational Crystallography Toolbox (headers)

libtbb-dev/jammy 2021.5.0-7ubuntu2 amd64
  parallelism library for C++ - development files

libtbb-doc/jammy,jammy 2021.5.0-7ubuntu2 all
  parallelism library for C++ - documentation

libtbb12/jammy 2021.5.0-7ubuntu2 amd64
  parallelism library for C++ - runtime files

libtbb2/jammy 2020.3-1ubuntu3 amd64
  parallelism library for C++ - runtime files

libtbb2-dev/jammy 2020.3-1ubuntu3 amd64
  parallelism library for C++ - development files

libtbb2-doc/jammy,jammy 2020.3-1ubuntu3 all
  parallelism library for C++ - documentation

libtbbmalloc2/jammy 2021.5.0-7ubuntu2 amd64
  parallelism helper library for C++ - runtime files

libtbox-dev/jammy 1.6.7-1 amd64
  glib-like multi-platform c library (development files)

这里很多命令都可以使用正则,有的时候儿有些命令可能需要引号也可能不需要,不必刻意记,试几下就好,反正就是重复执行命令都是快捷键。

3、显示软件信息
使用 apt show package_name(实际需要替换成软件包名)

:$ apt show libtbb-dev
Package: libtbb-dev
Version: 2021.5.0-7ubuntu2
Priority: extra
Section: universe/libdevel
Source: onetbb
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1,457 kB
Depends: libtbb12 (= 2021.5.0-7ubuntu2)
Suggests: libtbb-doc
Homepage: https://www.threadingbuildingblocks.org/
Download-Size: 191 kB
APT-Sources: https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/universe amd64 Package
......

有了这些信息,就可以根据自己的需要是否处理问题了。

4、删除包
删除包有两个命令:

sudo apt remove package_name [package_name0] [package_name1]  #删除一至N个软件包
或
sudo apt purge package_name        #不但删除软件还删除相关配置,比如一些偏好等等

使用第一个软件包时,为了删除在安装软件包时安装的其它一些依赖,使用下面的命令来删除:

sudo apt autoremove

这个就不举例子了,有兴趣可以自己安装一个软件来试一下。

有了这几个命令技巧,就可以配合着一般都会用的apt install来处理一些安装软件的问题了,比如版本不匹配,先list一下或者Serach一下版本,Show一下当前版本,然后删除,删除依赖,再重新安装指定的软件版本就可以了。

5、aptitude
这个命令默认也是没有的,可以安装一下,这个类似于图形化界面,有兴趣的可以用一下。

6、安装本地包
一般来说,安装本地包比较方便,各种方法和文件都有,比如.run,.deb等等。安装方式也有dpkg,sh,这里说一下用apt install。一般大家用这个命令都是从网上下载安装,其实它也可以本地安装包:

sudo apt install <path>/<package_name>.deb

三、apt-file

默认是没有安装这个命令的,可以用下面的命令来安装:

sudo apt install apt-file
apt-file update

需要注意的是,如果更新的源,也需要重新执行update命令。
这个命令有点类似于库依赖查看的命令ldd,如果需要软件的依赖就可以用他,比如安装软件需要一个库libgthread-2.0.so.0没找到,可以用下面的方法:

:$ apt-file search libgthread-2.0.so.0

apt-file search libgthread-2.0.so.0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.7200.1
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0.7200.4

这时候儿就可以用apt install libglib2.0-0来安装这个依赖了。也可以用前面的list来查看一下可用的版本,如是32位还是64位的等等。

:$ sudo apt list libglib2.0-0
正在列表... 完成
libglib2.0-0/jammy-updates 2.72.4-0ubuntu2 amd64 [可从该版本升级:2.72.1-1]
libglib2.0-0/jammy-updates 2.72.4-0ubuntu2 i386

当然,apt-file 也提供了list命令:

:$  apt-file list libglib2.0-0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/glib-2.0/gio-launch-desktop
libglib2.0-0: /usr/lib/x86_64-linux-gnu/glib-2.0/gio-querymodules
libglib2.0-0: /usr/lib/x86_64-linux-gnu/glib-2.0/glib-compile-schemas
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7200.1
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.7200.4
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.1
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7200.4
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.7200.1
libglib2.0-0: /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0.7200.4
......

四、总结

在软件安装上,原来用apt安装相当方便、顺捷,也没遇到过什么大的问题,一般来说只要源给力,软件安装问题都不大,顶大自己手动下一个so来放到指定位置再设置下环境变量就足够了。可这几天安装编译一个开源软件就遇到了这种糟心的事儿,软件库安装成功了,结果和原来的软件库不匹配,总是有各种小问题,后来发现后才通过上述的方法给搞定。
说白了,还是用得少。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐