标签 apt-get 下的文章

这是一个有趣的工具,它可以替代 apt-get 来安装 Ubuntu 上的第三方 deb 包。它应该能帮为你节省时间!

deb-get

Ubuntu MATE 的负责人 Martin Wimpress 为 Linux 用户带来了另一个有趣的项目。

你可能不知道,这个 Martin 经常开发一些有趣的东西。去年,我们报道了 Quickemu,它通过一个基于 QEMU 的 GUI 工具,帮助用户在 Linux 中创建虚拟机,使这个过程变得简单。

现在,他又带来了一个有趣的 deb-get 工具,其目标是为第三方 .deb 包模仿 apt-get 的支持。

让我们来详细了解一下它吧!

Deb Get:使用 CLI 无缝安装第三方 deb 包

当官方软件库中没有你想安装的软件包时(比如 Google Chrome、Vivaldi 等),你必须先 添加一个 PPA(非官方/官方) 或者下载 .deb 文件后 手动安装

如果我现在告诉你,你可以直接在终端中安装它们,就好像官方软件库中有它们一样呢?

这就是 deb-get 工具想要做到的事。

通常,当在终端中安装一个软件包时,你会使用下面的命令:

sudo apt install packagename

或者

sudo apt-get install packagename

要使用这个工具,你只需把 apt-get 替换为 deb-get,其他格式保持不变。就像下面这样:

sudo deb-get install packagename

举个例子,通常,我们 在 Linux 上安装 Vivaldi 时需要添加 PPA 或下载 .deb 文件。

现在,如果你在系统上配置好了 deb-get 工具(配置指南在本文末尾),你就可以使用以下命令轻松地安装 Vivaldi:

sudo deb-get install vivaldi-stable

另外,类似于 apt-get upgrade,你可以使用下面的命令来升级软件包:

sudo deb-get upgrade
注意: 虽然 deb-get 使安装第三方 .deb 包变得很容易,但它是有限制的,你只能安装它提供的核实列表中的软件。不过,它已经支持许多 必要的应用程序,相信支持的软件包列表很快就会扩大。

你也可以使用下面的命令,检查你 deb-get 可用软件包的列表:

sudo deb-get list

deb-get

在基于 Ubuntu 的发行版上设置 deb-get

deb-get 工具适用于 Ubuntu 22.04 LTS(我测试过),也应该适用于其他基于 Ubuntu 的发行版。

你可以使用下面的命令来安装它:

sudo apt install curl && curl -sL https://raw.githubusercontent.com/wimpysworld/deb-get/main/deb-get | sudo -E bash -s install deb-get

或者,你可以在它的 GitHub 发布页面 手动下载它的 deb 包。

要了解更多关于它的信息,以及可用的命令/功能,你可以访问它的 GitHub 页面

你怎么看待 deb-get 试图实现支持第三方软件包的 apt-get?你认为它有用吗?请在评论区留言,发表你的看法吧!

来源:OMG!Ubuntu!


via: https://news.itsfoss.com/deb-get-ubuntu/

作者:Ankush Das 选题:lkxed 译者:lkxed 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

大多数使用基于 Debian 的系统的人通常会使用 apt-get 来安装软件包和升级,但是我们多久才清理一次?让我们看下该工具本身的一些清理选项。

在基于 Debian 的系统上运行 apt-get 命令是很常规的。软件包的更新相当频繁,诸如 apt-get updateapt-get upgrade 之类的命令使此过程非常容易。另一方面,你多久使用一次 apt-get cleanapt-get autocleanapt-get autoremove

这些命令会在 apt-get 的安装操作后清理并删除仍在系统上但不再需要的文件,这通常是因为需要它们的程序已经卸载。

apt-get clean

apt-get clean 命令清除遗留在 /var/cache 中的已取回的包文件的本地仓库。它清除的目录是 /var/cache/apt/archives//var/cache/apt/archives/partial/。它留在 /var/cache/apt/archives 中的唯一文件是 lock 文件和 partial 子目录。

在运行清理操作之前,目录中可能包含许多文件:

/var/cache/apt/archives/db5.3-util_5.3.28+dfsg1-0.6ubuntu1_amd64.deb
/var/cache/apt/archives/db-util_1%3a5.3.21~exp1ubuntu2_all.deb
/var/cache/apt/archives/lock
/var/cache/apt/archives/postfix_3.4.5-1ubuntu1_amd64.deb
/var/cache/apt/archives/sasl2-bin_2.1.27+dfsg-1build3_amd64.deb

之后,只会存在这些:

$ sudo ls -lR /var/cache/apt/archives
/var/cache/apt/archives:
total 4
-rw-r----- 1 root root    0 Jan  5  2018 lock
drwx------ 2 _apt root 4096 Nov 12 07:24 partial

/var/cache/apt/archives/partial:
total 0                 <== 空

apt-get clean 命令通常用于根据需要清除磁盘空间,一般作为定期计划维护的一部分。

apt-get autoclean

apt-get autoclean 类似于 apt-get clean,它会清除已检索包文件的本地仓库,但它只会删除不会再下载且几乎无用的文件。它有助于防止缓存过大。

apt-get autoremove

apt-get autoremove 将删除自动安装的软件包,因为某些其他软件包需要它们,但是在删除了其他软件包之后,而不再需要它们。有时会在升级时建议运行此命令。

The following packages were automatically installed and are no longer required:
  g++-8 gir1.2-mutter-4 libapache2-mod-php7.2 libcrystalhd3
  libdouble-conversion1 libgnome-desktop-3-17 libigdgmm5 libisl19 libllvm8
  liblouisutdml8 libmutter-4-0 libmysqlclient20 libpoppler85 libstdc++-8-dev
  libtagc0 libvpx5 libx265-165 php7.2 php7.2-cli php7.2-common php7.2-json
  php7.2-opcache php7.2-readline
Use 'sudo apt autoremove' to remove them.                       <==

要删除的软件包通常称为“未使用的依赖项”。实际上,一个好的做法是在卸载软件包后使用 autoremove,以确保不会留下不需要的文件。


via: https://www.networkworld.com/article/3453032/cleaning-up-with-apt-get.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 Ubuntu 或者它的衍生版如 Linux Mint(我已经作为日常工作使用的系统)中使用 apt-get 命令或者其相对更新的APT 管理工具时,你可能会在命令行中看到一个 unable to lock the administration directory (/var/lib/dpkg/) is another process using it 的错误。

这个错误尤其对那些对这个错误原因不了解的 Linux(Ubuntu)新手而言更加恼人。

下面是一个例子,展示了出现在 Ubuntu 16.10 上的文件锁定错误:

tecmint@TecMint:~$ sudo apt install neofetch
[sudo] password for tecmint:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg), is another process using it?

下面的输出是另外一个可能显示的错误:

E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/ 
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) 
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

你将来遇到这个错误该怎么去解决?有好几种方法处理这个错误,但是本篇中我们会用两种或许是最简单和最有效的方法来解决它。

1、找出并杀掉所有 apt-get 或者 apt 进程

运行下面的命令来生成所有含有 apt 的进程列表,你可以使用 psgrep 命令并用管道组合来得到含有 apt 或者 apt-get 的进程。

$ ps -A | grep apt

Find apt and apt-get Processes

找出 apt 以及 apt-get 进程

你可以看到上面命令输出的每个 apt-get 或者 apt 进程,使用下面的命令杀掉每个进程

上面截图中的第一列是进程 ID(PID)。

$ sudo kill -9 processnumber
或者
$ sudo kill -SIGKILL processnumber

比如,下面命令中的9SIGKILL 的信号数,它会杀掉第一个 apt 进程:

$ sudo kill -9 13431
或者
$ sudo kill -SIGKILL 13431

2、 删除锁定的文件

锁定的文件会阻止 Linux 系统中某些文件或者数据的访问,这个概念也存在于 Windows 或者其他的操作系统中。

一旦你运行了 apt-get 或者 apt 命令,锁定文件将会创建于 /var/lib/apt/lists//var/lib/dpkg//var/cache/apt/archives/ 中。

这有助于运行中的 apt-get 或者 apt 进程能够避免被其它需要使用相同文件的用户或者系统进程所打断。当该进程执行完毕后,锁定文件将会删除。

重要提醒:万一你在没有看到 apt-get 或者 apt 进程的情况下在上面两个不同的文件夹中看到了锁定文件,这是因为进程由于某个原因被杀掉了,因此你需要删除锁定文件来避免该错误。

首先运行下面的命令来移除 /var/lib/dpkg/ 文件夹下的锁定文件:

$ sudo rm /var/lib/dpkg/lock

之后像下面这样强制重新配置软件包:

$ sudo dpkg --configure -a

也可以删除 /var/lib/apt/lists/ 以及缓存文件夹下的锁定文件:

$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock

接下来,更新你的软件包源列表:

$ sudo apt update
或者
$ sudo apt-get update

总结一下,对于 Ubuntu(以及它的衍生版)用户在使用 apt-get 或者 apt 也叫 aptitude 命令时遇到的问题,我们已经用两种方法来解决了。

你有什么可以分享出来的有效的方法来处理这个错误么?在下面的评论区联系我们。

除此之外,你可能还希望了解如何找出并杀掉运行的进程,你可以阅读这篇用 kill、pkill、killall 来中止进程指南来了解。


via: http://www.tecmint.com/fix-unable-to-lock-the-administration-directory-var-lib-dpkg-lock

作者:Aaron Kili 译者:geekpi 校对:wxy

本文由 LCTT 组织编译,Linux中国 荣誉推出

我该如何加速在 Ubuntu Linux 16.04 或者 14.04 LTS 上从多个仓库中下载包的 apt-get 或者 apt 命令?

你需要使用到 apt-fast 这个 shell 封装器。它会通过多个连接同时下载一个包来加速 apt-get/apt 和 aptitude 命令。所有的包都会同时下载。它使用 aria2c 作为默认的下载加速器。

安装 apt-fast 工具

在 Ubuntu Linux 14.04 或者之后的版本尝试下面的命令:

$ sudo add-apt-repository ppa:saiarcot895/myppa

示例输出:

更新你的仓库:

$ sudo apt-get update

或者

$ sudo apt update

安装 apt-fast:

$ sudo apt-get -y install apt-fast

或者

$ sudo apt -y install apt-fast

示例输出:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  aria2 libc-ares2 libssh2-1
Suggested packages:
  aptitude
The following NEW packages will be installed:
  apt-fast aria2 libc-ares2 libssh2-1
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,282 kB of archives.
After this operation, 4,786 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://01.archive.ubuntu.com/ubuntu xenial/universe amd64 libssh2-1 amd64 1.5.0-2 [70.3 kB]
Get:2 http://ppa.launchpad.net/saiarcot895/myppa/ubuntu xenial/main amd64 apt-fast all 1.8.3~137+git7b72bb7-0ubuntu1~ppa3~xenial1 [34.4 kB]
Get:3 http://01.archive.ubuntu.com/ubuntu xenial/main amd64 libc-ares2 amd64 1.10.0-3 [33.9 kB]
Get:4 http://01.archive.ubuntu.com/ubuntu xenial/universe amd64 aria2 amd64 1.19.0-1build1 [1,143 kB]
54% [4 aria2 486 kB/1,143 kB 42%]                                    20.4 kB/s 32s

配置 apt-fast

你将会得到下面的提示(必须输入一个5到16的数值):

并且

你也可以直接编辑设置:

$ sudo vi /etc/apt-fast.conf
请注意这个工具并不是给慢速网络连接的,它是给快速网络连接的。如果你的网速慢,那么你将无法从这个工具中得到好处。

我该怎么使用 apt-fast 命令?

语法是:

apt-fast command
apt-fast [options] command

使用 apt-fast 取回新的包列表

sudo apt-fast update

使用 apt-fast 执行升级

sudo apt-fast upgrade

执行发行版升级(发布或者强制内核升级),输入:

$ sudo apt-fast dist-upgrade

安装新的包

语法是:

sudo apt-fast install pkg

比如要安装 nginx,输入:

$ sudo apt-fast install nginx

示例输出:

删除包

$ sudo apt-fast remove pkg
$ sudo apt-fast remove nginx

删除包和它的配置文件

$ sudo apt-fast purge pkg
$ sudo apt-fast purge nginx

删除所有未使用的包

$ sudo apt-fast autoremove

下载源码包

$ sudo apt-fast source pkgNameHere

清理下载的文件

$ sudo apt-fast clean

清理旧的下载文件

$ sudo apt-fast autoclean

验证没有破坏的依赖

$ sudo apt-fast check

下载二进制包到当前目录

$ sudo apt-fast download pkgNameHere
$ sudo apt-fast download nginx

示例输出:

[#7bee0c 0B/0B CN:1 DL:0B]
07/26 15:35:42 [NOTICE] Verification finished successfully. file=/home/vivek/nginx_1.10.0-0ubuntu0.16.04.2_all.deb
07/26 15:35:42 [NOTICE] Download complete: /home/vivek/nginx_1.10.0-0ubuntu0.16.04.2_all.deb
Download Results:
gid   |stat|avg speed  |path/URI
======+====+===========+=======================================================
7bee0c|OK  |        n/a|/home/vivek/nginx_1.10.0-0ubuntu0.16.04.2_all.deb
Status Legend:
(OK):download completed.

下载并显示指定包的 changelog

$ sudo apt-fast changelog pkgNameHere
$ sudo apt-fast changelog nginx

via: http://www.cyberciti.biz/faq/how-to-speed-up-apt-get-apt-command-ubuntu-linux/

作者:VIVEK GITE 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

这些天我正在体验Elementary OS Freya,在这期间,我遇到了一个非常常见的更新错误:Failed to fetch cdrom Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs。完整的错误在运行apt-get update后看上去像这样:

W: Failed to fetch cdrom://elementary OS 0.3 Freya – Daily amd64 (20150208)/dists/trusty/main/binary-amd64/Packages Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs

W: Failed to fetch cdrom://elementary OS 0.3 Freya – Daily amd64 (20150208)/dists/trusty/restricted/binary-amd64/Packages Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs

E: Some index files failed to download. They have been ignored, or old ones used instead.

本篇中,我们会了解如何修复这个错误。

修复apt-get update无法添加新的CD-ROM的错误

这个错误的原因是cdrom已经被包含在源之中。要修复这个问题,我们需要将它从软件源中移除。

在Ubuntu中,找到“软件与更新”:

在Ubuntu Software的第一个标签中,找到cdrom,如果它是勾选的,那么取消勾选。

关闭软件源并再次运行更新。现在应该可以用了。

进一步故障排除:

上面描述的方法已经修复了这个apt-get update cannot be used to add new CD-ROMs错误。但是这个方法对我无效,因为cdrom的选项这时是灰色的,因为我使用的live版本。

现在要修复我们的问题了,我们是要采用命令行路线。打开终端并查看软件源中包含了哪些源:

cat /etc/apt/sources.list

我的输出是下面这样:

deb cdrom:[elementary OS 0.3 _Freya_ – Daily amd64 (20150208)]/ trusty main restricted
deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse

在上面的第一行中。它包含了cdrom。我们需要用‘#’来注释掉这行:

#deb cdrom:[elementary OS 0.3 _Freya_ – Daily amd64 (20150208)]/ trusty main restricted

要用下面的命令来:

sudo gedit /etc/apt/sources.list

在你编辑完软件源后,再次运行apt-get update。“apt-get update cannot be used to add new CD-ROMs”这个错误应该已经修复了。如果你还遇到其他的问题,看一下这篇收集了大部分Ubuntu常见更新错误修复的文章。

我希望这篇教程对你有用。如果你还有其他的问题和建议,请在下面留言。


via: http://itsfoss.com/fix-failed-fetch-cdrom-aptget-update-add-cdroms/

作者:Abhishek 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

如果你正在管理Debian或者Ubuntu服务器,你也许会经常使用dpkg 或者 apt-get命令。这两个命令用来安装、卸载和更新包。

在本篇中,让我们看下如何在基于DEB的系统下检查是否安装了一个包。

要检查特定的包,比如firefox是否安装了,使用这个命令:

dpkg -s firefox

示例输出:

 Package: firefox
 Status: install ok installed
 Priority: optional
 Section: web
 Installed-Size: 93339
 Maintainer: Ubuntu Mozilla Team <[email protected]>
 Architecture: amd64
 Version: 35.0+build3-0ubuntu0.14.04.2
 Replaces: kubuntu-firefox-installer
 Provides: gnome-www-browser, iceweasel, www-browser
 Depends: lsb-release, libasound2 (>= 1.0.16), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.17), libcairo2 (>= 1.2.4), libdbus-1-3 (>= 1.0.2), libdbus-glib-1-2 (>= 0.78), libfontconfig1 (>= 2.9.0), libfreetype6 (>= 2.2.1), libgcc1 (>= 1:4.1.1), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.37.3), libgtk2.0-0 (>= 2.24.0), libpango-1.0-0 (>= 1.22.0), libpangocairo-1.0-0 (>= 1.14.0), libstartup-notification0 (>= 0.8), libstdc++6 (>= 4.6), libx11-6, libxcomposite1 (>= 1:0.3-1), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxrender1, libxt6
 Recommends: xul-ext-ubufox, libcanberra0, libdbusmenu-glib4, libdbusmenu-gtk4
 Suggests: ttf-lyx
 Conffiles:
 /etc/firefox/syspref.js 09e457e65435a1a043521f2bd19cd2a1
 /etc/apport/blacklist.d/firefox ee63264f847e671832d42255912ce144
 /etc/apport/native-origins.d/firefox 7c26b75c7c2b715c89cc6d85338252a4
 /etc/apparmor.d/usr.bin.firefox f54f7a43361c7ecfa3874abca2f292cf
 Description: Safe and easy web browser from Mozilla
 Firefox delivers safe, easy web browsing. A familiar user interface,
 enhanced security features including protection from online identity theft,
 and integrated search let you get the most out of the web.
 Xul-Appid: {ec8030f7-c20a-464f-9b0e-13a3a9e97384}

如上所见,firefox已经安装了。

同样,你可以使用dpkg-query 命令。这个命令会有一个更好的输出,当然,你可以用通配符。

dpkg-query -l firefox

示例输出:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                 Version                 Architecture            Description
+++-====================================-=======================-=======================-=============================================================================
ii  firefox                              35.0+build3-0ubuntu0.14 amd64                   Safe and easy web browser from Mozilla

要列出你系统中安装的所有包,输入下面的命令:

dpkg --get-selections

示例输出:

abiword                        install
abiword-common                    install
accountsservice                    install
acl                        install
adduser                        install
alsa-base                    install
alsa-utils                    install
anacron                        install
app-install-data                install
apparmor                    install
.
.
.
zeitgeist                    install
zeitgeist-core                    install
zeitgeist-datahub                install
zenity                        install
zenity-common                    install
zip                        install
zlib1g:amd64                    install
zlib1g:i386                    install

上面的输出可能会非常长,这依赖于你的系统已安装的包。

你同样可以通过grep来过滤割到更精确的包。比如,我想要使用dpkg命令查看系统中安装的gcc包:

dpkg --get-selections | grep gcc

示例输出:

gcc                        install
gcc-4.8                        install
gcc-4.8-base:amd64                install
gcc-4.8-base:i386                install
gcc-4.9-base:amd64                install
gcc-4.9-base:i386                install
libgcc-4.8-dev:amd64                install
libgcc1:amd64                    install
libgcc1:i386                    install

此外,你可以使用“-L”参数来找出包中文件的位置。

dpkg -L gcc-4.8

示例输出:

/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/gcc-4.8-base
/usr/share/doc/gcc-4.8-base/README.Bugs
/usr/share/doc/gcc-4.8-base/NEWS.html
/usr/share/doc/gcc-4.8-base/quadmath
/usr/share/doc/gcc-4.8-base/quadmath/changelog.gz
/usr/share/doc/gcc-4.8-base/gcc
.
.
.
/usr/bin/x86_64-linux-gnu-gcc-4.8
/usr/bin/x86_64-linux-gnu-gcc-ar-4.8
/usr/bin/x86_64-linux-gnu-gcov-4.8

就是这样了。希望这篇对你有用。

美好的一天!


via: http://www.unixmen.com/linux-basics-check-package-installed-not-ubuntu/

作者:SK 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出