rpm -Uvh 升級時的陷阱

来源:https://www.cnblogs.com/shenlinken/archive/2018/01/10/8258840.html
-Advertisement-
Play Games

問題現象 用rpm Uvh升級後,原先的一個軟鏈接被刪除了,而採用先rpm e 卸載rpm包,再rpm ivh 安裝包的方法,這個軟鏈接還在。這個軟鏈接是在rpm包安裝的時候建立,也只有在rpm卸載的時候會刪除。 為什麼Uvh升級的時候會刪除它? 解決過程 軟鏈接的刪除是寫在 sepc文件的%pre ...


問題現象

用rpm -Uvh升級後,原先的一個軟鏈接被刪除了,而採用先rpm -e 卸載rpm包,再rpm -ivh 安裝包的方法,這個軟鏈接還在。這個軟鏈接是在rpm包安裝的時候建立,也只有在rpm卸載的時候會刪除。

為什麼Uvh升級的時候會刪除它?

解決過程

軟鏈接的刪除是寫在 sepc文件的%preun段,軟鏈接的建立在spec文件的%post段,所以我去查了升級的時候,spec文件里各個段的執行順序。

升級時執行順序

1、執行新包spec文件中 %pre 段.
2、安裝新包的相關依賴包.
3、執行新包spec文件中的 %post 段.
4、執行舊包spec文件中的 %preun 段.
5、刪除新包中不需要的舊文件。
6、執行舊包spec文件中的 %postun 段.

答案就很顯然了,升級過程中是先安裝新包,再卸載舊包,所以軟鏈接就被刪除掉了。

解決方法

當進行不同操作的時候,會傳遞不同的參數給段,完整的參數傳遞及釋義如下。

%pre和%post段
當傳遞的第一個參數為1時,表示新安裝一個rpm包。
當傳遞的第一個參數為2時,表示升級一個已經存在的包。

%preun和%postun段
當傳遞的第一個參數為0時,表示刪除一個包。
當傳遞的第一個參數為1時,表示更新一個包。

因此,在刪除鏈接之前判斷一下所傳的參數是0還是1就ok了。

這是個坑!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • linux中搭建solr集群出現org.apache.catalina.LifecycleException: Failed to initialize component ,解決辦法 ...
  • 下載ss-qt5 sudo add-apt-repository ppa:hzwhuang/ss-qt5 sudo apt-get update sudo apt-get install shadowsocks-qt5 宿主機ss打開允許區域網連接 打開虛擬機ss-qt5並設置 填入伺服器地址和密碼 ...
  • 之前,這篇文章:linux系統編程:自己動手寫一個cp命令 已經實現過一個版本。 這裡再來一個版本,涉及知識點: linux系統編程:open常用參數詳解 Linux系統編程:簡單文件IO操作 1 /* 2 * Copyright (C) 2018 . All rights reserved. 3 ...
  • open用於打開一個文件,通過設置不同的flag,可以讓進程只讀,只寫,可讀/可寫等操作 一、對一個不存在或者存在的文件(test.txt),進行寫入操作 1 /* 2 * Copyright (C) 2018 . All rights reserved. 3 * 4 * 文件名稱:cp.c 5 * ...
  • 實現4個LED流水燈效果。 4個LED依次連接在PA5:7、PB6,麵包板接線如下圖。LED驅動參考另一篇隨筆,從Nucleo 5V輸出埠獲得供電。在通過ST-LINK USB供電的情況下,Nucleo-F303RE最大電流為300mA,除去MCU本身約100mA外,足以供給每個LED所需的約20 ...
  • 微軟和思科環境: 在思科認證的學習中,我們需要用到許多類的模擬器,但這些模擬器並不能夠更真實的模擬我們的用戶機在應用中所出現的現象。因此,我們藉由微軟的環境來更真實地體現我們所搭建的網路中的一些應用。 微軟環境:windows server 2003,在虛擬機(VMware)中我們安裝windows ...
  • 想到Gitlab就必定會想到SVN,因為兩者都是代碼管理系統,作為開發人員來說,用習慣了SVN的圖形化界面和SVN代碼更新和提交的方式, 可能就會覺得使用git會比較麻煩,其實不然git使用起來非常方便,並且好處也不少,git後面會成為一種流行和趨勢。所以在這兒簡單的介紹Gitlab 伺服器的搭建和 ...
  • 一、錯誤分析 1、首先本人在出現這種情況的背景是執行如下SQL語句後生成的表空間 但!!!有時候因為你的表空間名和文件名不那麼友好。這時候你很愉快的使用shirt+delete永久刪除(當然,這是我的習慣,如果刪除回回收站直接還原就沒有那麼多麻煩事了)。 那如果這樣子你會發現你再次重新連接回Orac ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...