aptget源码
‘壹’ DEBIAN安装软件apt-get与源代码编译的区别和优劣
在 linux 系统中,使用 apt-get 获取软件并安装自动化更高一些。但是有些驱动程序是没有现成的,是必须需要自行从网上下载后,再和系统的内核一起进行编译。如果是从网上下载源代码来进行编译的话,用户操作起来就得麻烦一些。
‘贰’ 如何查看ubuntu的源代码
下面以查看ls这个命令的源代码为例:
1.输入 which ls
liuwei@liuwei:~/test$ which ls
/bin/ls
2.输入sudo dpkg -S /bin/ls
liuwei@liuwei:~/test$ sudo dpkg -S /bin/ls
coreutils: /bin/ls
3.输入sudo apt-get source coreutilsliuwei@liuwei:~/test$ sudo apt-get source coreutils
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
需要下载 12.3 MB 的源代码包。
获取:1 http://debian.ustc.e.cn/ubuntu/ trusty/main coreutils 8.21-1ubuntu5 (dsc) [1,335 B]
获取:2 http://debian.ustc.e.cn/ubuntu/ trusty/main coreutils 8.21-1ubuntu5 (tar) [12.3 MB]
获取:3 http://debian.ustc.e.cn/ubuntu/ trusty/main coreutils 8.21-1ubuntu5 (diff) [30.6 kB]
下载 12.3 MB,耗时 56秒 (218 kB/s)
gpgv: 于 2014年03月24日 星期一 15时03分17秒 CST 创建的签名,使用 DSA,钥匙号 C6CEA0C9
gpgv: 无法检查签名:找不到公钥
dpkg-source: 警告: 对 ./coreutils_8.21-1ubuntu5.dsc 校验签名失败
dpkg-source: info: extracting coreutils in coreutils-8.21
dpkg-source: info: unpacking coreutils_8.21.orig.tar.gz
dpkg-source: info: applying coreutils_8.21-1ubuntu5.diff.gz
此时可能会发生如上所述的找不到公钥的情况,解决方法如下:
先sudo apt-get udpate
liuwei@liuwei:~/test$ sudo apt-get update
再输入 gpg --keyserver subkeys.pgp.net --recv C6CEA0C9,其中C6CEA0C9为上述钥匙号
liuwei@liuwei:~/test$ gpg --keyserver subkeys.pgp.net --recv C6CEA0C9
gpg: 下载密钥‘C6CEA0C9’,从 hkp 服务器 subkeys.pgp.net
gpg: 公钥服务器超时
gpg: 从公钥服务器接收失败:公钥服务器错误
此时可能会出现从公钥服务器接收失败:公钥服务器错误的提示,解决方法如下:
输入sudo apt-get update
liuwei@liuwei:~/test$ sudo apt-get update
再gpg --keyserver subkeys.pgp.net --recv C6CEA0C9
liuwei@liuwei:~/test$ gpg --keyserver subkeys.pgp.net --recv C6CEA0C9
gpg: 下载密钥‘C6CEA0C9’,从 hkp 服务器 subkeys.pgp.net
gpg: 密钥 C6CEA0C9:公钥“Adam Conrad <[email protected]>”已导入
gpg: 没有找到任何绝对信任的密钥
gpg: 合计被处理的数量:1
gpg: 已导入:1
再gpg --export --armor C6CEA0C9 | sudo apt-key add -
liuwei@liuwei:~/test$ gpg --export --armor C6CEA0C9 | sudo apt-key add -
OK
此时再 ls,会发现多出了如下文件:
liuwei@liuwei:~/test$ ls
coreutils-8.21 coreutils_8.21-1ubuntu5.dsc
coreutils_8.21-1ubuntu5.diff.gz coreutils_8.21.orig.tar.gz
在coreutils-8.21中就可以查看源码了。
‘叁’ ubuntu下如何获取源码包和源码
1、在获取源码包之前,确保在软件源配置文件/etc/apt/sources.list中添加了deb-src项 2、使用如下命令获取xxx源码包的详细信息: sudo apt-cache showsrc xxx这用来查询当前镜像站点中是否有该源码包。 3、源码包中通常包含3个文件,分别以dsc,orig.tar.gz和diff.gz为后缀名。 sudo apt-get source xxx 命令来获取源码包,它会将源码包下载到用户当前目录 并在命令执行过程中,调用dpkg-source命令,根据dsc文件中的信息,将源码包解压到同名目录中,应用程序的源代码就在这里面。 sudo apt-get source xxx 要强调的是,在下载源码包前,必须确保安装了dpkg-dev(执行”apt-get install dpkg-dev”来安装), 否则,只会下载源码包的3个文件,但不会解压缩源码包。当然你也可以自己用dpkg-source命令去解压缩源码包。 4、在编译源码包前,需要安装具有依赖关系的相关软件包。使用”apt-get build-dep”命令可以主动获取并安装所有相关的软件包。 sudo apt-get build-dep xxx 5、现在可以来编译源码包了,首先进入源码所在目录,使用dpkg-buildpackage命令来编译源码包,它会将生成的Deb软件包放置在上层目录中。cd xxx sudo dpkg-buildpackage 这样就会编译生成xxx_i386.deb 6、安装软件包。使用”dpkg –i”命令来安装生成的Deb软件包。
‘肆’ 在linux 下,怎么获得自由软件的源码,如firefox,openoffice,谢谢了
如果是ubutnu/debian系统,可以通过apt-get命令获取源代码,如:
apt-get source firefox
‘伍’ Linux下apt-get的软件一般的安装路径都在什么地方源码路径在哪儿
apt-get安装目录和安装路径:
apt-get 下载后,软件所在路径是:/var/cache/apt/archives
ubuntu 默认的PATH为
PATH=/home/brightman/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:
/usr/bin:/sbin:/bin:/usr/games
apt-get install安装目录是包的维护者确定的,不是用户
$ dpkg -L packagename
dpkg -L +软件包的名字,可以知道这个软件包包含了哪些文件
系统安装软件一般在/usr/share,可执行的文件在/usr/bin,配置文件可能安装到了/etc下等。
文档一般在 /usr/share
可执行文件 /usr/bin
配置文件 /etc
lib文件 /usr/lib
‘陆’ 如何查看linux命令源代码和函数源代码
1. 以搜索ls命令源码为例,先搜索命令所在包,命令如下:
lpj@lpj-linux:~$ which ls
/bin/ls
2. 用命令搜索该软件所在包,代码如下:
lpj@lpj-linux:~$ dpkg -S /bin/ls
coreutils: /bin/ls
3. 从上一步中可以知道ls命令的实现在包coreutils中,用apt安装(说安装有些歧义,主要是区分apt-get -d)该包的源代码然后解压,代码如下:
sudo apt-get source coreutils
cd /usr/src/coreutils-XXX #XXX表示版本号
sudo tar zxvf coreutils-XXX.tar.gz
或者只下载源码,然后手动打补丁再解压,代码如下:
sudo apt-get -d source coreutils
cd /usr/src
tar zxvf coreutils-XXX.tar.gz
gzip -d coreutils-XXX.diff.gz #这一步会生成coreutils-XXX.diff文件
patch -p0 < coreutils-XXX.diff
cd coreutils-XXX
tar zxvf coreutils-XXX.tar.gz
OK,这几步执行完后,就可以进入/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令对应的源代码了
‘柒’ 怎样提取一个软件的源代码
1、一款知名的开源软件,大部分都有自己的官方网站,我们可以从它的官方网站上去下载。
比如,下载linux内核源码,我们可以搜索一下官网,然后去下载。
‘捌’ 如何在Debian或Ubuntu上安装完整的内核源码
在Debian上安装完整的内核源码
在下载内核源码之前,先安装dpkg-dev,其中包含你在Debian上生成源代码时需要的开发工具套件。不仅如此,dpkg-dev中还包含在用来解压Debian源码包并自动打补丁的工具dpgk-source。
$ sudo apt-get install dpkg-dev
然后,运行以下命令下载完整的内核源码。
$ apt-get source linux-image-$(uname -r)
伴随着完整内核源码(linux_X.X.XX.orig.tar.xz)的还有一些可用的内核补丁(linux_X.X.X+XXX.debian.tar.xz)和源码控制文件(linux_XXXX.dsc),这些都将被下载并存储到当前目录。在.dsc文件中会指出如何给内核源码打补丁。
当下载完成,以上的命令将会自动调用工具dpkg-source将下载的内核源码解压到当前的目录中,与此同时根据.dsc文件来下补丁。
最终完整的内核源码树将会以"linux-X.X.XX"的形式呈现在当前目录中。
在Ubuntu上安装完整内核源码
如果你想安装完整内核源码的话,以上在Debian上的那一套做法在Ubuntu上仍然奏效。
在Ubuntu上还有另一套方法安装完整内核源码。事实上,你可以查一下由Canonical为Ubuntu不同发行版维护的内核源码树。
$ sudo apt-get install git$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-$(lsb_release --codename | cut -f2).git
举个例子,如果你使用的是Ubuntu 14.04,以上的命令将会查看Git的"ubuntu-trusty"仓库中的代码。
一旦在你对Git仓库的查询结束后,使用以下的命令来安装用来访问生成内核源码树所需依赖的重要开发包。