我想安装 libgflags-dev。根据此启动板链接,它位于 ubuntu 存储库中:https://launchpad.net/ubuntu/+source/gflags和http://packages.ubuntu.com/raring/libdevel/libgflags-dev
但是当我尝试使用 sudo apt-get 安装它时,我得到了E: Unable to locate package libgflags-dev
为什么会发生这种情况?我已经从软件中心启用了所有多元宇宙和宇宙。
如何从 apt-get 安装它?
PS我知道我可以简单地下载二进制文件并安装它,但我想知道如何从apt-get执行此操作。
答案1
未针对 Precise 进行包装
正如你所看到的packages.ubuntu.com
带有查询的网站,此功能在 Precise (12.04) 中不可用,但仅适用于 Quantal (12.10) 及更新版本。
这里介绍的是如何从 Quantal 的源代码构建您自己的包,而不是从源代码安装。
手动构建包(反向移植)
对于任何第一次构建包的人来说,这是一个非常详细的描述。
转到
gflags
Launchpad 上的源包()页面:https://launchpad.net/ubuntu/+source/gflags展开“Quantal Quetzal (支持) 2.0-1”版本的部分。
找到源包描述文件(
.dsc
扩展名)。在撰写本文时,这是https://launchpad.net/ubuntu/+archive/primary/+files/gflags_2.0-1.dsc复制链接到您的剪贴板。
打开终端并使用以下命令下载源包
dget
:dget https://launchpad.net/ubuntu/+archive/primary/+files/gflags_2.0-1.dsc
第一次将会失败:
gpg: Signature made Thu 31 May 2012 14:48:41 CEST using RSA key ID 8AE09345 gpg: Can't check signature: public key not found Validation FAILED!!
按照上面的错误消息安装所需的 RSA 密钥:
gpg --keyserver keyserver.ubuntu.com --recv-key 8AE09345
配置 DPKG 开发脚本以使用您的 GPG 密钥环:
echo 'DSCVERIFY_KEYRINGS="/etc/apt/trusted.gpg:~/.gnupg/pubring.gpg"' > ~/.devscripts
再次运行先前的
dget
命令。现在应该可以成功了。跳转到创建的目录:
cd gflags-2.0/
尝试构建包。
debuild -uc -us
选项说明:未签名的更改文件、未签名的新
.dsc
文件。由于您不会重新分发软件包,因此无需签名任何内容。这可能由于缺少构建依赖项而失败,例如:
dpkg-checkbuilddeps: Unmet build dependencies: debhelper
请注意,这确实是特定于系统的。
安装构建依赖项(从获得的输出中满足以上所有内容),例如:
sudo apt-get install debhelper
尝试再次构建包:
debuild -uc -us
在下面的一个目录中,您会找到您的软件包,例如:
$ cd .. $ ls -al *gflags*.deb -rw-r--r-- 1 gert gert 108450 Jun 24 18:59 libgflags2_2.0-1_amd64.deb -rw-r--r-- 1 gert gert 147590 Jun 24 18:59 libgflags-dev_2.0-1_amd64.deb -rw-r--r-- 1 gert gert 14778 Jun 24 18:59 libgflags-doc_2.0-1_all.deb
安装它们:
sudo dpkg -i *gflags*.deb
如果由于二进制依赖关系不满足而失败,请运行
sudo apt-get install -f
完毕!
您可以随时删除或更新它们,就像任何其他包一样。
下次您构建任何包时,都不必经历所有的麻烦……一般来说,配方如下:
dget <.dsc-file>
cd thefolder
debuild -uc -us
sudo dpkg -i ../*somepattern*.deb
答案2
从启动板页面可以看出,gflags 有一个非官方 PPA,它为 precise 提供了 perbuild 二进制文件。我使用了 ppa:fcitx-team/nightly,它看起来运行良好。