Ubuntu系統apt新增第三方PPA源

2022-09-05 18:01:07

一、前言

1.1目的

在使用Ubuntu時往往apt源會自帶很多常用軟體,但是大部分都是比較老的版本,本文主要是為了實現以下兩個目的:

通過新增第三方的PPA源解決軟體版本過低或者沒有安裝包的情況;

Apt使用的一些基本命令。

1.2相關檔案:

PPA介紹可以參考此文章:技術|Ubuntu PPA 使用指南 https://linux.cn/article-10456-1.html

PPA的網址:https://launchpad.net/ubuntu/+ppas

二、apt命令

2.1基本用法

查詢倉庫彙總軟體的所有版本

~# apt-cache madison nginx

~# apt-cache show nginx | grep -i version

安裝指定版本:

語法: apt-get install <>=<>

~# apt-get -y install nginx=1.14-1~xenial

查詢倉庫中軟體的所有版本及安裝情況

~# apt-cache policy nginx

使用apt-get install -s模擬安裝軟體(不指定版本預設下載源中最新版本)

 ~# apt-get install -s apache2 

2.2關於ppa的一些命令

匯入ppa源的命令:

add-apt-repository ppa:源作者/軟體名

PPA弊端

如果不將一些失效的PPA刪除,就會是apt update 變慢甚至出錯。所以及時刪除,刪除 PPA 源 命令: add-apt-repository -r ppa:user/ppa-name

更徹底的辦法:

首先查詢並刪除不需要的key:

apt-key list #列出已儲存在系統中key

apt-key del keyname #從本地trusted資料庫刪除key
apt-key del 1362 21EE520DDFAF0A905689B9316A7BC7917B12
apt-key update #更新本地trusted資料庫,刪除過期沒用的key
到源的目錄:cd /etc/apt/sources.list.d/,刪除不需要的源地址檔案
清空/var/lib/apt/lists裡的檔案: cd /var/lib/apt && sudo rm -rf lists && sudo mkdir lists

當然還有自己作死遇到的問題:The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY keyname

解決辦法:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys keyname #刪錯了key重新載入回來

三、apt部署新版本的redis

3.1檢視版本及軟體版本

先檢視apt可以下載的redis版本(如下可以下載最新的是5.5版本,已安裝版本沒有)

~# apt-cache policy redis-server
redis-server:
 Installed: none
 Candidate: 5:5.0.7-2ubuntu0.1
 Version table:
 *** 5:5.0.7-2ubuntu0.1 500
​    500 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-updates/universe amd64 Packages
​    500 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-security/universe amd64 Packages
   5:5.0.7-2 500
​    500 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal/universe amd64 Packages

檢視Ubuntu的版本

~# cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.5 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

3.2查詢PPA源

去PPA上https://launchpad.net/ubuntu/+ppas查詢可用的redis源

在搜尋欄上輸入redis進行查詢

可以看到這個源的作者是redislabs,而且有符合focal版本的源,最新為7.0.4版本

3.3新增ppa源

有sources.list設定新增和add-apt-repositor命令新增兩種方法:

方法一:sources.list設定新增

在/etc/apt/sources.list檔案中新增以下設定:

deb http://ppa.launchpad.net/redislabs/redis/ubuntu trusty main
deb-src http://ppa.launchpad.net/redislabs/redis/ubuntu trusty main

​ 更新apt源

~# apt-get update

方法二:命令新增

新增add-apt-repository命令

~# apt-get install python-software-properties		#Ubuntu12.04以下
~# apt-get install software-properties-common 	#Ubuntu12.10版本以上

新增ppa源(會自動新增符合自己版本的源)

~# add-apt-repository ppa:redislabs/redis-server 

更新apt源

~# apt-get update

再次檢視可下載版本:

~# apt-cache policy redis-server
redis-server:
 Installed: 6:7.0.4-1rl1~focal1
 Candidate: 6:7.0.4-1rl1~focal1
 Version table:
 *** 6:7.0.4-1rl1~focal1 500
​    500 https://packages.redis.io/deb focal/main amd64 Packages
​    100 /var/lib/dpkg/status
   6:7.0.4-1rl1~focal1 500
​    500 http://ppa.launchpad.net/redislabs/redis/ubuntu focal/main amd64 Packages
   6:7.0.3-1rl1~focal1 500
​    500 https://packages.redis.io/deb focal/main amd64 Packages
   6:7.0.2-1rl1~focal1 500
​    500 https://packages.redis.io/deb focal/main amd64 Packages
......

由於快取需要時間,過一段時間舊版本的才會被下載

~# apt-cache madison redis
   redis | 6:7.0.4-1rl1~focal1 | https://packages.redis.io/deb focal/main amd64 Packages
   redis | 6:7.0.4-1rl1~focal1 | https://packages.redis.io/deb focal/main all Packages
   redis | 6:7.0.4-1rl1~focal1 | http://ppa.launchpad.net/redislabs/redis/ubuntu focal/main amd64 Packages
   redis | 6:7.0.3-1rl1~focal1 | https://packages.redis.io/deb focal/main amd64 Packages
   redis | 6:7.0.3-1rl1~focal1 | https://packages.redis.io/deb focal/main all Packages
   redis | 6:7.0.2-1rl1~focal1 | https://packages.redis.io/deb focal/main amd64 Packages
   redis | 6:7.0.2-1rl1~focal1 | https://packages.redis.io/deb focal/main all Packages
   redis | 6:7.0.1-1rl1~focal1 | https://packages.redis.io/deb focal/main amd64 Packages
   redis | 6:7.0.1-1rl1~focal1 | https://packages.redis.io/deb focal/main all Packages
   redis | 6:7.0.0-1rl1~focal1 | https://packages.redis.io/deb focal/main amd64 Packages
   redis | 6:7.0.0-1rl1~focal1 | https://packages.redis.io/deb focal/main all Packages
   redis | 6:6.2.7-1rl1~focal1 | https://packages.redis.io/deb focal/main amd64 Packages
   redis | 6:6.2.7-1rl1~focal1 | https://packages.redis.io/deb focal/main all Packages
   redis | 6:6.2.6-3rl1~focal1 | https://packages.redis.io/deb focal/main amd64 Packages
   redis | 6:6.2.6-3rl1~focal1 | https://packages.redis.io/deb focal/main all Packages
   redis | 6:6.2.6-2rl1~focal1 | https://packages.redis.io/deb focal/main amd64 Packages
   redis | 6:6.2.6-2rl1~focal1 | https://packages.redis.io/deb focal/main all Packages

3.4安裝redis

下載預設版本(預設為最新的)

~# apt-get install -y redis-server

下載指定版本

~# apt-get install -y redis-server=7.0.4-1rl1~focal1

檢視下載情況

~# apt-cache policy redis
redis:
 Installed: 6:7.0.4-1rl1~focal1
 Candidate: 6:7.0.4-1rl1~focal1
 Version table:
 *** 6:7.0.4-1rl1~focal1 500
​    500 https://packages.redis.io/deb focal/main amd64 Packages
​    500 https://packages.redis.io/deb focal/main all Packages
​    100 /var/lib/dpkg/statu

3.5 redis優化

編輯組態檔新增redis密碼為:guest

sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis/redis.conf
sed -i "561i maxmemory-policy allkeys-lru" /etc/redis/redis.conf
sed -i "481i requirepass guest" /etc/redis/redis.conf 
cat << EOF >> /etc/redis/redis.conf
rename-command FLUSHALL ""
rename-command FLUSHDB ""
EOF

修改引數

echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
sysctl -p

啟動redis並加入開機自啟

~# systemctl start redis-server && ~# systemctl enable redis-server
~# systemctl status redis-server
~# ps -ef|grep redis
redis   153598    1  0 Aug31 ?     00:03:02 /usr/bin/redis-server 0.0.0.0:6379

完成