Linux包系列的知識(附:Ubuntu16.04升級到18.04的案例)


Linux基礎:https://www.cnblogs.com/dunitian/p/4822808.html#linux

之前看到朋友還動不動 apt-get update upgrade,就很納悶,后來發現原來他只是知道這個更新命令卻不知其意,所以每次安裝個包就把所有apt-get的常用清除+更新命令打一遍

后來~就有了這篇文章了,算給小白普及下吧:(后面有實戰案例)

Ubuntu不得不說的就是這個apt出問題的處理 :(換源就不說了`/etc/apt/sources.list`)

# 一般刪除這幾個鎖文件,然后再重新配置下就可以了
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
# 簡寫(千萬注意空格,不然你就是rm -rf / + 跑路了)
# sudo rm /var/lib/apt/lists/lock /var/cache/apt/archives/lock /var/lib/dpkg/lock sudo rm /var/lib/dpkg/lock-frontend

# 重新配置下
sudo dpkg --configure -a

簡單講:你不修改添加源,不需要updae,如果你想升級下軟件upgrade,如果你想大升級dist-upgrade

包相關命令:

清除無用包:apt-get clean && apt-get autoclean   #一般用apt-get autoclean就夠了

更新源:apt-get update    #同步 /etc/apt/sources.list 源的索引,這樣才知道是不是有最新的包

更新包:apt-get upgrade   #更新所有已安裝的軟件(upgrade只是簡單的更新包,不管這些依賴,它不添不刪。)

更新包2:apt-get dist-upgrade #包與包之間存在各種依賴關系。而dist-upgrade可以根據依賴關系的變化添刪包。(依賴有時會出錯,建議新手謹慎使用

補充:在執行 upgrade or dist-upgrade 之前一定要執行 update, 這樣才能獲取最新

安裝軟件:apt-get install XXX [--reinstall] #--reinstall 是重新安裝包,一般都是用 apt-get install XXX

修復依賴:apt-get -f install       #修復依賴,類似於win里面的缺少dll,-f之后他幫你修復安裝一些依賴(安裝搜狗拼音實例有用到)

刪除軟件:apt-get remove XXX [--purge] #--purge 卸載的時候把配置文件也刪了,完全刪除包可以用這個選項:apt-get remove XXX --purge

---------------------------------------------------------------------------------------------------------------------------------------------------------

其他命令:(特殊環境下使用)

搜索軟件:apt-get search xxx

檢查是否有損壞的依賴:apt-get check   (偶爾想起來或者軟件打不開的時候使用【有時候被清理了】)

獲取包信息:apt-cache show xxx

有哪些依賴:apt-cache depends xxx    (比如安裝一個包,修復依賴也失敗,那就看看有哪些依賴,自己手動安裝)

被哪些包依賴:apt-cache rdepends xxx  (比如卸載一個包的時候,查一下被哪些包依賴)

下載該包源代碼:apt-get source xxx

安裝相關編譯環境:apt-get build-dep xxx

實戰案例:

簡單說下,先清一下無用包,再update更新下源的索引,接着升級。之前一直以為dist-upgrade之后系統就滾動升級了,比如原來16.04.1后來可能變成16.04.2。

reboot重啟一下,update-manager -d 運行更新管理,點下升級,一路下一步就好了(逆天是懶人一個,系統大版本跨越的命令基本上很少用,所以就懶得記了,附錄有命令安裝

dnt@MZY-PC:~$ sudo apt-get clean 
dnt@MZY-PC:~$ sudo apt-get autoclean 
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
dnt@MZY-PC:~$ sudo apt-get update 
忽略:1 http://dl.google.com/linux/chrome/deb stable InRelease
命中:2 http://archive.ubuntukylin.com:10006/ubuntukylin xenial InRelease       
命中:3 http://dl.google.com/linux/chrome/deb stable Release                    
命中:4 http://mirrors.ustc.edu.cn/ubuntu xenial InRelease                      
命中:6 http://mirrors.ustc.edu.cn/ubuntu xenial-updates InRelease      
命中:7 http://mirrors.ustc.edu.cn/ubuntu xenial-security InRelease    
命中:8 http://packages.microsoft.com/repos/vscode stable InRelease
正在讀取軟件包列表... 完成                       
dnt@MZY-PC:~$ sudo apt-get upgrade 
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
正在計算更新... 完成
下列軟件包的版本將保持不變:
  cups-filters cups-filters-core-drivers gir1.2-javascriptcoregtk-4.0
  gir1.2-webkit2-4.0 google-chrome-stable libjavascriptcoregtk-4.0-18
  libwebkit2gtk-4.0-37 libwebkit2gtk-4.0-37-gtk2 linux-generic-hwe-16.04
  linux-headers-generic-hwe-16.04 linux-image-generic-hwe-16.04
  linux-signed-generic-hwe-16.04 linux-signed-image-generic-hwe-16.04 qpdf
升級了 0 個軟件包,新安裝了 0 個軟件包,要卸載 0 個軟件包,有 14 個軟件包未被升級。
dnt@MZY-PC:~$ cat /etc/issue
Ubuntu 16.04.4 LTS \n \l

dnt@MZY-PC:~$ sudo apt-get dist-upgrade 
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
正在計算更新... 完成
下列軟件包是自動安裝的並且現在不需要了:
  libappindicator1 libindicator7
使用'sudo apt autoremove'來卸載它(它們)。
下列【新】軟件包將被安裝:
  amd64-microcode intel-microcode iucode-tool libqpdf21 libwebpdemux1 linux-headers-4.13.0-43 linux-headers-4.13.0-43-generic
  linux-image-4.13.0-43-generic linux-image-extra-4.13.0-43-generic linux-signed-image-4.13.0-43-generic
下列軟件包將被升級:
  cups-filters cups-filters-core-drivers gir1.2-javascriptcoregtk-4.0 gir1.2-webkit2-4.0 google-chrome-stable libjavascriptcoregtk-4.0-18
  libwebkit2gtk-4.0-37 libwebkit2gtk-4.0-37-gtk2 linux-generic-hwe-16.04 linux-headers-generic-hwe-16.04 linux-image-generic-hwe-16.04
  linux-signed-generic-hwe-16.04 linux-signed-image-generic-hwe-16.04 qpdf
升級了 14 個軟件包,新安裝了 10 個軟件包,要卸載 0 個軟件包,有 0 個軟件包未被升級。
需要下載 143 MB 的歸檔。
解壓縮后會消耗 300 MB 的額外空間。
您希望繼續執行嗎? [Y/n] y
獲取:1 http://mirrors.ustc.edu.cn/ubuntu xenial-updates/main amd64 libqpdf21 amd64 8.0.2-3~16.04.1 [315 kB]
獲取:2 http://dl.google.com/linux/chrome/deb stable/main amd64 google-chrome-stable amd64 66.0.3359.181-1 [52.3 MB]
獲取:3 http://mirrors.ustc.edu.cn/ubuntu xenial-updates/main amd64 cups-filters-core-drivers amd64 1.8.3-2ubuntu3.4 [128 kB]
獲取:4 http://mirrors.ustc.edu.cn/ubuntu xenial-updates/main amd64 cups-filters amd64 1.8.3-2ubuntu3.4 [448 kB]

dnt@MZY-PC:~$ reboot

dnt@MZY-PC:~$ cat /etc/issue
Ubuntu 16.04.4 LTS \n \l

dnt@MZY-PC:~$ sudo update-manager -d
[sudo] dnt 的密碼: 
/usr/bin/update-manager:28: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import Gtk
/usr/lib/python3/dist-packages/UpdateManager/UnitySupport.py:29: PyGIWarning: Dbusmenu was imported without specifying a version first. Use gi.require_version('Dbusmenu', '0.4') before import to ensure that the right version gets loaded.
  from gi.repository import Dbusmenu, Unity
/usr/lib/python3/dist-packages/UpdateManager/UnitySupport.py:29: PyGIWarning: Unity was imported without specifying a version first. Use gi.require_version('Unity', '7.0') before import to ensure that the right version gets loaded.
  from gi.repository import Dbusmenu, Unity

附錄:(原文地址

  1. 更新Ubuntu 16.04 

    在升級之前, 您應該先更新當前的16.04. 建議升級之前更新/升級所有已安裝的軟件包.

    運行以下命令:

    sudo apt update && sudo apt dist-upgrade && sudo apt autoremove

  2. 安裝Ubuntu update manager

    更新完 系統后,運行以下命令安裝update-manager-core(如果您沒有安裝).

    sudo apt-get isntall update-manager-core

  3. 打開update-manager配置文件並確保提示行設置為  lts

    sudo nano /etc/update-manager/release-upgrades

    執行升級命令:

    sudo do-release-upgrade -d

    當屏幕出現升級提示是 選擇y

    等待所有的軟件包下載...安裝...到重啟... 當安裝完成后,你的系統就升級到最新的Ubuntu開發版本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM