在使用Ubuntu時往往apt源會自帶很多常用軟體,但是大部分都是比較老的版本,本文主要是為了實現以下兩個目的:
通過新增第三方的PPA源解決軟體版本過低或者沒有安裝包的情況;
Apt使用的一些基本命令。
PPA介紹可以參考此文章:技術|Ubuntu PPA 使用指南 https://linux.cn/article-10456-1.html
PPA的網址:https://launchpad.net/ubuntu/+ppas
查詢倉庫彙總軟體的所有版本
~# 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
匯入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版本(如下可以下載最新的是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
去PPA上https://launchpad.net/ubuntu/+ppas查詢可用的redis源
在搜尋欄上輸入redis進行查詢
可以看到這個源的作者是redislabs,而且有符合focal版本的源,最新為7.0.4版本
有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
下載預設版本(預設為最新的)
~# 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
編輯組態檔新增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
完成