dpkg/apt学习笔记

经常会用到dpkg和apt命令,但经常会忘记怎么用,因此记录一下平时自己用到过的命令

一.查看程序(命令)属于哪个包

          【命令1:】whereis 命令名

                            用命令1查看程序的路径,有时会包含程序所属的包

           【命令2:】dpkg -S 命令路径

                            用命令2查看程序属于哪个包 ,输出信息可能比较多,可以用grep过滤信息。另外还有apt-file命令可用,如果系统没有这个命令用下面两个命令安装

                           sudo apt-get install -y apt-file

                           apt-file update

                          然后运行

                          apt-file search 命令路径

          【命令3:】dpkg -s 包

                            用命令3查看包的信息。

           【 命令4:】dpkg -L 包

                            用命令4查看包包含哪些文件。

        示例:

二.查看库属于哪个包

        【命令1:】dpkg -S 库路径

                            用命令1查看程序属于哪个包 ,输出信息可能比较多,可以用grep过滤信息。另外还有apt-file命令可用,如果系统没有这个命令用下面两个命令安装

                           sudo apt-get install -y apt-file

                           apt-file update

                          然后运行

                          apt-file search 库路径

          【命令2:】dpkg -s 包

                            用命令2查看包的信息。

           【 命令3:】dpkg -L 包

                            用命令3查看包包含哪些文件。

        示例:

 

*************************************************************************************************************

                                                                    2020.5.5更新

*************************************************************************************************************

一. apt查看安装包版本:

1. apt-cache madison 安装包

# apt-cache madison libstdc++6-8-dbg
libstdc++6-8-dbg | 8.4.0-1ubuntu1~18.04 | http://us.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages
libstdc++6-8-dbg | 8.4.0-1ubuntu1~18.04 | http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages
libstdc++6-8-dbg | 8-20180414-1ubuntu2 | http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
     gcc-8 | 8-20180414-1ubuntu2 | http://us.archive.ubuntu.com/ubuntu bionic/main Sources
     gcc-8 | 8.4.0-1ubuntu1~18.04 | http://us.archive.ubuntu.com/ubuntu bionic-updates/main Sources
     gcc-8 | 8.4.0-1ubuntu1~18.04 | http://security.ubuntu.com/ubuntu bionic-security/main Sources

2. apt-cache policy 安装包
# apt-cache policy libstdc++6-8-dbg
libstdc++6-8-dbg:
  Installed: 8.4.0-1ubuntu1~18.04
  Candidate: 8.4.0-1ubuntu1~18.04
  Version table:
 *** 8.4.0-1ubuntu1~18.04 500
        500 http://us.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages
        500 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages
        100 /var/lib/dpkg/status
     8-20180414-1ubuntu2 500
        500 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages

3. apt-get install -s 安装包名称      (这个命令只是模拟安装时会安装哪些软件列表,但不会例举出每个软件有多少个版本)

4. apt-get source 安装包名称    (这个命令安装安装包对应的源码,apt-cache madison会显示要下载源码包)

5. apt-get install 安装包名称=版本   (版本为apt-cache madison显示的第二行,如上面红色标示的8.4.0-1ubuntu1~18.04)

6. apt-cache search 安装包名称(可用正则表达式)

7. apt-cache show 安装包名称

**************************************************************

案例:

查找libstdc++.so动态库的调试包,并安装源码

1.查看库的路径,可以通过cat /proc/$pid/maps来查看一个程序加载的libstdc++.so库的绝对路径

/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25

2.查看libstdc++.so.6.0.25属于哪个安装包

root@ubuntu:~$ dpkg -S /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
libstdc++6:amd64: /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25

3.查找libstdc++6的调试包(往往名称中包含dbg)

apt-cache search libstdc++.* | grep dbg

这时列出了很多包

比如:libstdc++6-5-dbg libstdc++6-7-dbg libstdc++6-8-dbg等

运行apt list libstdc++6
Listing... Done
libstdc++6/bionic-updates,bionic-security,now 8.4.0-1ubuntu1~18.04 amd64 [installed]

系统中的应该对应得是libstdc++6-8-dbg

4.安装libstdc++6-8-dbg

apt install  libstdc++6-8-dbg

5.查看安装的文件

root@ubuntu# dpkg -L libstdc++6-8-dbg
/.
/usr
/usr/lib
/usr/lib/debug
/usr/lib/debug/.build-id
/usr/lib/debug/.build-id/f2
/usr/lib/debug/.build-id/f2/119a44a99758114620c8e9d8e243d7094f77f6.debug
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/debug
/usr/lib/x86_64-linux-gnu/debug/libstdc++.a
/usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6.0.25
/usr/lib/x86_64-linux-gnu/debug/libstdc++fs.a
/usr/share
/usr/share/doc
/usr/share/gdb
/usr/share/gdb/auto-load
/usr/share/gdb/auto-load/usr
/usr/share/gdb/auto-load/usr/lib
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/debug
/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6.0.25-gdb.py
/usr/lib/x86_64-linux-gnu/debug/libstdc++.so
/usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6
/usr/share/doc/libstdc++6-8-dbg

可以看到/usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6.0.25,这是带调试信息的

root@ubuntu:# file /usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6.0.25
/usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6.0.25: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=da4d52027095b0e48b6c1c12e00f78542e4221f8, with debug_info, not stripped

6.查看对应的源文件信息,对应的是gcc-8(libstdc++6-8-dbg和libstdc++6对应的相同)

root@ubuntu:/home/kehao# apt-cache madison libstdc++6-8-dbg
libstdc++6-8-dbg | 8.4.0-1ubuntu1~18.04 | http://us.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages
libstdc++6-8-dbg | 8.4.0-1ubuntu1~18.04 | http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages
libstdc++6-8-dbg | 8-20180414-1ubuntu2 | http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
     gcc-8 | 8-20180414-1ubuntu2 | http://us.archive.ubuntu.com/ubuntu bionic/main Sources
     gcc-8 | 8.4.0-1ubuntu1~18.04 | http://us.archive.ubuntu.com/ubuntu bionic-updates/main Sources
     gcc-8 | 8.4.0-1ubuntu1~18.04 | http://security.ubuntu.com/ubuntu bionic-security/main Sources
root@ubuntu:/home/kehao# apt-cache madison libstdc++6
libstdc++6 | 8.4.0-1ubuntu1~18.04 | http://us.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
libstdc++6 | 8.4.0-1ubuntu1~18.04 | http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
libstdc++6 | 8-20180414-1ubuntu2 | http://us.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
     gcc-8 | 8-20180414-1ubuntu2 | http://us.archive.ubuntu.com/ubuntu bionic/main Sources
     gcc-8 | 8.4.0-1ubuntu1~18.04 | http://us.archive.ubuntu.com/ubuntu bionic-updates/main Sources
     gcc-8 | 8.4.0-1ubuntu1~18.04 | http://security.ubuntu.com/ubuntu bionic-security/main Sources

7.下载源码

apt source libstdc++6-8-dbg
 

猜你喜欢

转载自blog.csdn.net/kh815/article/details/85061996