軟體包管理腳本
1. 如何用批處理寫自動安裝軟體的腳本
1、新建一個Ergodic.txt文件然後重名成Ergodic.bat文件,然後輸入前置聲明:@echo off,pause。
注意事項:
目前比較常見的批處理包含兩類:DOS批處理和PS批處理。PS批處理是基於強大的圖片編輯軟體Photoshop的,用來批量處理圖片的腳本;而DOS批處理則是基於DOS命令的。
2. linux入門系列——軟體包管理
RedHat 系統中使用的是: rpm (redhat package manager) 現在稱:RPM is Package Manager
Debian : dpt
Ubuntu : apt
在安裝軟體的時候,有可能出現軟體包的相互依賴關系;所以紅帽公司推出了:yum(Yellowdog update modifier)
包的組成部分:
主包:
bind-9.7.1-1..e15.i586.rpm
子包:
bind-libs-9.7.1-1..e15.i586.rpm
bind-utils-9.7.1-1..e15.i586.rpm
包名:
PackageName-Version-Release.Arch.rpm
bind-major-minor-releases-release.arch.rpm
包名-主版本號-次版本號-發行號-rpm包的製作者的發行號.硬體平台.rpm
主版本號:重大改進;
次版本號:某個子功雀或能發生重大變化;
發行號:修改BUG,調整了一點功能;
bind-9.7.1-1.noarch.rpm 這里的noarch表示不區分硬體平台,32和64都可以使用;如果是ppc則是在PowerPc上使用的包;
# rpm -ivh /path/to/Package_Name
-i,--install 表示安裝
-v 表示顯示安裝過程的信息
-h 表示以#顯示安裝的進程,總數為50個;
-vv 顯示更詳細的過程;
--nodeps 安裝的時候忽略依賴關系;
--force 無論之前是否安裝過,都強制安裝,可以實現重裝、降級;
--replacepkgs 重新安裝,替換原有的安裝;
--oldpackage 對軟體包進行降級;
--test Do not install the package, simply check for and report potential conflicts. 不進行安裝,只測試看在安裝的時候有沒有依賴包要裝;
rpm -q soft_name
# rpm -q httpd
rpm -qa 查詢當前系統中已經安裝的rpm軟體包;
# rpm -qa |grep 『ssh*』
rpm -qi soft_name 查詢軟體包的安裝信息:
[root@ns2 rpm]# rpm -qi zlib-devel
Name : zlib-devel Relocations: /usr
Version : 1.2.3 Vendor: CentOS
Release : 4.el5 Build Date: 2011年05月11日 星期三 18時57分15秒
Install Date: 2013年07月21日 星升歲鎮期日 17時02分41秒 Build Host: builder10.centos.org
Group : Development/Libraries Source RPM: zlib-1.2.3-4.el5.src.rpm
Size : 269981 License: BSD
Signature : DSA/SHA1, 2011年09月04日 星期日 03時24分25秒, Key ID a8a447dce8562897
URL : http://www.gzip.org/zlib/
Summary : Zlib 開發的頭文件和庫。
Description :
zlib-devel 軟體包包括開發使用 zlib 壓縮和解縮庫的程序
所需的頭文件和庫。
[root@ns2 rpm]#
rpm -ql soft_name 查看該軟體包在系統中存放了哪些文件;
rpm -qf /path/to/file_name 查看該文件吵粗是由哪個rpm包生成的。
rpm -qc soft_name 查看指定rpm包安裝的配置文件的位置;
rpm -qd soft_name 查看指定rpm包安裝的幫助文件的位置;
rpm -q --scripts soft_name 查看指定rpm包在安裝、卸載、更新的前後,所要執行的shell腳本;
rpm -qp[i|l|d|c|] 即要加上一個「p」選項;
rpm -Uvh /path/to/package_name
如果安裝的指定的軟體包已經安裝過,則進行升級操作,如果沒有安裝過,則就使用指定的這個軟體包進行安裝;
rpm -Fvh /path/to/package_name
如果安裝過,則升級,否則不進行任何操作;
rpm -Fvh --oldpackage package_name 通常用這個來降級一個rpm包;
rpm -e package_name
--nodeps 強制卸載
rpm -V package_name 也可以使用--verify
通常用來檢查安裝後的文件是不是被修改過;
加密演算法:
對稱加密: 加密和解密使用同一個key
非對稱加密:有一對密鑰(公鑰和私鑰),公鑰大家都可以知道,私鑰只有持有人知道;公鑰加密私鑰解,私鑰加密公鑰也可以解。不能由公鑰摧出私鑰,也不能由私鑰摧出公鑰;私鑰還用來做簽名,因為只有私鑰持有人自己才有;
單向加密:使用這種加密演算法加密後,是不可以再還原的。通常用它來做數據完整性的驗證,也就是驗證數據在傳輸的過程中有沒有被別人修改過。
在紅帽的系統中,/etc/pki/rpm-gpg/目錄下面存放了紅帽公司的gpg-key(相當於公鑰),所以只需要把這個gpgkey導入到系統中就可以驗證了。導入方法如下:
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
接下來就可以對將要安裝的rpm包進行驗證了:
# rpm -K /path/to/package_file
dsa,gpg驗證來源的合法性,也就是驗證簽名。但是可以使用--nosignature 來跳過簽名驗證;
sha1,md5驗證軟體包的完整性,可以使用--nodigest 來跳過完整性驗證;
rpm --rebuilddb 重建資料庫
--initdb 初始化資料庫
yum install -y pack1 pack2 安裝指定的軟體包
yum remove pack1 pack2 -y 刪除指定的軟體包
yum update pack1 pack2 更新指定的軟體包
yum list installed 列出所有已經安裝的軟體包
yum update 更新源
yum search string 搜索包含string的軟體包
yum install package_name 獲取軟體包信息
# tar zxf nginx-1.4.7.tar.gz -C /usr/src
# configure --prefix=/usr/local/nginx --conf-path=/etc
# make
# make install
由於使用的是源碼包安裝在非正常路徑下。所以還要做以下的調整:
修改/etc/profile文件。或是在/etc/profile.d/下創建一個以.sh結尾的文件;再把二進製程序的路徑export出來就行了;
在/etc/ld.so.conf.d/中創建一個以.conf文件結尾的文件,而後把要增添的路徑直接寫入此文件中就行了;
這樣系統就會在下次啟動的時候,自動載入這些新增加的庫;如果想讓系統馬上可以找到這些新增加的庫,就必須執行下面的命令:
# ldconfig 通知系統重新搜索庫文件,還可以加上-v選項,表示顯示過程;
默認的頭文件搜索路徑是:/usr/include/
要添加新的頭文件搜索路徑,可以使用鏈接的方式:
ln -s /usr/local/nginx/include/* /usr/include/
或
ln -s /usr/local/nginx/include /usr/include/nginx
這時可以修改/etc/man.conf文件,在裡面添加以下內容:
MANPATH /usr/local/nginx/man
還有一種方式就是臨時使用:
# man -M /usr/local/nginx/man nginx 這樣就可以查看nginx的man手冊了;
3. 怎樣把ubuntu已安裝的軟體列表導出腳本好保存以後運行腳本直接安裝原來想要的軟體
備份系統已安裝軟體的清單,採用如下命令 (dpkg命令後的參數前是兩個減號「-」):
sudo dpkg --get-selections > ~/Desktop/package.selections
恢復安裝軟體,升級系統。先將以前備份的package.selections文件拷貝到桌面,後採用如下命令:
sudo dpkg --set-selections < ~/Desktop/package.selections && apt-get dselect-upgrade
4. python包管理工具pip的安裝和使用
Python有兩個著名的包管理工具easy_install.py和pip。在Python2.7的安裝包中,easy_install.py是默認安裝的,而pip需要我們手動安裝。
方法1:利用常用curl獲取
>>後面是指定獲取的pip腳本的名字,也可以是curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
方法2:利用wget獲取,先要安裝wget
備註:看網上還有利用easy_install安裝pip,但是我嘗試了並沒有成功
原因是 Python.org sites 終止支持TLS1.0和1.1版本,TLS需要>=1.2
參考: https://stackoverflow.com/questions/49768770/not-able-to-install-python-packages-ssl-tlsv1-alert-protocol-version
主要命令:
所有命令中,最重要的兩個命令是install和uninstall。
pip支持四種方式安裝python包。
從PyPI安裝一個包
安裝一個全局區域的包,一般需要sudo許可權。在mac系統上,即使是管理員也無法安裝,自從OS X El Capitan及以後的版本包含了一套安全技術(System Integrity Protection簡稱為SIP)來防止惡意軟體修改系統保護區域。具體可參考SIP。因此,我們有時候需要將PyPI包安裝到用戶區,這個時候,可以用.
pip在升級軟體包之前會自動卸載舊的軟體包。
可以將所有需要安裝的包放入一個requirements.txt文件中,然後可以一次安裝。requirements.txt 文件的每一行都要表明安裝的內容,而且盡量不要依賴文件中指定包的前後安裝順序。
從git安裝
從svn安裝
從一個分支安裝
還有很多其他的包安裝功能,但是上面的已經滿足了大部分需求。其他的請參考 文檔 。
pip uninstall可以卸載大部分的包,除了一下兩種情況
使用方式主要有兩種:
卸載單個包
卸載多個包
pip check用來驗證已安裝的包是否有兼容的依賴性問題。
上面的結果說明matplotlib包有兩個依賴包沒有安裝。
pip search用來搜索名字或者摘要中包含搜索關鍵字的PyPI包。
選項只有一個,就是指定PyPI的url,默認url為 https://pypi.python.org/pypi
例如,search frida
以下兩者都可以用,結果同上。
pip list命令會按照字典序排列列舉已安裝的包,包括可編輯的包。
主要有如下選項:
輸出格式:
legacy:將要被廢棄
freeze
columns
json
當某些時候debug的時候,需要提供一個完整的python環境,python freeze提供了此功能,它能夠輸出機器上python環境的快照(所有已安裝的包)。
下面是freeze命令的選項:
輸出用戶區安裝的前5個安裝包:
pip show可以用來顯示每個包的具體信息。show命令只有一個選項 -f,用來顯示安裝包的文件列表。
$ pip show -f|--files packageName
更多命令請參考 文檔
pip默認的index-url是 https://pypi.python.org/pypi/ ,
為了提高速度,我們可以更改pip源為國內的阿里雲源。更改方法如下:
創建配置文件
添加阿里源
pip.conf內容如下:
5. Perl Package Manager 是什麼軟體
Perl Package Manager 簡稱 ppm, 是 perl 的一個附帶軟體, 主要功能就是幫你 "無痛裝包"!
( 所謂包就是 package, 可以當是擴展, 又或者相對於 c 的 lib ) 在 perl 裏手動裝一個包實在是一件很痛苦的事 ,首先你要從 cpan 下載一個包, 解壓後, 再 perl makefile, 再 nmake, make install ...... 這樣寫一大輪, 更糟的是如果這個包還需要另一個包才能運你就得每個包都重覆以上動作, 而且, 不一定成功 ( 本人的經驗是十次有六次都是失敗的 ) .
ppm 就將以上的動作自動化. 自動追加裝載附帶需要的包. 並提供 GUI 和 Command line 兩種介面
例如: ppm install Mail::Sender 這樣就會自動幫你下載一個叫 Mail::Sender 的包, 並安裝妥當.
6. 如何安裝 rpm 軟體包管理器
在Windows下安裝軟體時,只需用滑鼠雙擊軟體的安裝程序,或者用Zip等解壓縮軟體解壓縮即可安裝。在Linux下安裝軟體對初學者來說,難度高於Windows下軟體安裝。下面我就詳細講解Linux下如何安裝軟體。 先來看看Linux軟體擴展名。軟體後綴為.rpm最初是Red Hat Linux提供的一種包封裝格式,現在許多Linux發行版本都使用;後綴為.deb是Den Linux提供的一種包封裝格式;後綴為.tar.gz、tar.Z、tar.bz2或.tgz是使用Unix系統打包工具tar打包的;後綴為.bin的一般是一些商業軟體。通過擴展名可以了解軟體格式,進而了解軟體安裝。 RPM格式軟體包的安裝 1.簡介 幾乎所有的Linux發行版本都使用某種形式的軟體包管理安裝、更新和卸載軟體。與直接從源代碼安裝相比,軟體包管理易於安裝和卸載;易於更新已安裝的軟體包;易於保護配置文件;易於跟蹤已安裝文件。 RPM全稱是Red Hat Package Manager(Red Hat包管理器)。RPM本質上就是一個包,包含可以立即在特定機器體系結構攜仿畢上安裝和運行的Linux軟體。RPM示意圖見圖1。 大多數Linux RPM軟體包的命名有一定的規律,它遵循名稱-版本-修正版-類型-MYsoftware-1.2-1.i386.rpm 。 2.安裝RPM包軟體 # rpm -ivh MYsoftware-1.2 -1.i386.rpm RPM命令主要參數: -i 安裝軟體。 -t 測試安裝,不是真的安裝。 -p 顯示安裝進度。 -f 忽略任何錯誤。 -U 升級安裝。 -v 檢測套件是否正確安裝。 這些參數可以同時採用。更多的內容可以參考RPM的命令幫助。 3.卸載軟體 # rpm -e 軟體名 需要說明的是,上面代碼中使用的是軟體名,而不是軟體包名。例如,要卸載software-1.2.-1.i386.rpm這個包時,應執行: #rpm -e software 4.強行卸載RPM包 有時除去一個RPM是不行的,尤其是系統上有別的程序依賴於它的時候。如果執行命令會顯示如下錯誤信息: ## rpm -e xsnow error: removing these packages would break dependencies: /usr/X11R6/bin/xsnow is needed by x-amusements-1.0-1 在這種情況下,可以用--force選項重新安裝xsnow: # rpm -ivh --force xsnow-1.41-1.i386.rpm 這里推薦使用工具軟體Kleandisk,用它可以安全徹底清理掉不再使用的RPM包。 5.安裝.src.rpm類型的文件 目前RPM有兩種模式,一種是已經過編碼的(i386.rpm),一種是未經大返編碼的(src.rpm)。 rpm --rebuild Filename.src.rpm 這時系統會建立一個文件Filenamr.rpm,在/usr/src/redflag/RPMS/子目錄下,一般是i386,具體情況和Linux發行版本有關。然後執行下面代碼即可: rpm -ivh /usr/src/regflag/RPMS/i386/Filename.rpm 使用辯芹deb打包的軟體安裝 deb是Debian Linux提供的一個包管理器,它與RPM十分類似。但由於RPM出現得早,並且應用廣泛,所以在各種版本的Linux中都常見到,而Debian的包管理器dpkg只出現在Debina Linux中。它的優點是不用被嚴格的依賴性檢查所困擾,缺點是只在Debian Linux發行版中才能見到這個包管理工具。 1. 安裝 # dpkg -i MYsoftware-1.2.-1.deb 2. 卸載 # dpkg -e MYsoftware 使用源代碼進行軟體安裝和RPM安裝方式相比,使用源代碼進行軟體安裝會復雜一些,但是用源代碼安裝軟體是Linux下進行軟體安裝的重要手段,也是運行Linux的最主要的優勢之一。使用源代碼安裝軟體,能按照用戶的需要選擇定製的安裝方式進行安裝,而不是僅僅依靠那些在安裝包中的預配置的參數選擇安裝。另外,仍然有一些軟體程序只能從源代碼處進行安裝。 現在有很多地方都提供源代碼包,到底在什麼地方獲得取決於軟體的特殊需要。對於那些使用比較普遍的軟體,如Sendmail,可以從商業網站處下載源代碼軟體包(如[url]http://www.sendmail.org[/url])。一般的軟體包,可從開發者的Web站點下載。下面介紹一下安裝步驟: 1.解壓數據包 源代碼軟體通常以.tar.gz做為擴展名,也有tar.Z、tar.bz2或.tgz為擴展名的。不同擴展名解壓縮命令也不相同,見表1。 2.編譯軟體 成功解壓縮源代碼文件後,進入解包的目錄。在安裝前閱讀Readme文件和Install文件。盡管許多源代碼文件包都使用基本相同的命令,但是有時在閱讀這些文件時能發現一些重要的區別。例如,有些軟體包含一個可以安裝的安裝腳本程序(.sh)。在安裝前閱讀這些說明文件,有助於安裝成功和節約時間。 在安裝軟體以前要成為root用戶。實現這一點通常有兩種方式:在另一台終端以root用戶登錄,或者輸入「su」,此時系統會提示輸入root用戶的密碼。輸入密碼以後,就將一直擁有root用戶的許可權。如果已經是root用戶,那就可以進行下一步。 通常的安裝方法是從安裝包的目錄執行以下命令: gunzip soft1.tar.gz cd soft1 #. /configure #配置# make #調用make# make install #安裝源代碼# 刪除安裝時產生的臨時文件: #make clean 卸載軟體: #make uninstall 有些軟體包的源代碼編譯安裝後可以用make uninstall命令卸載。如果不提供此功能,則軟體的卸載必須手動刪除。由於軟體可能將文件分散地安裝在系統的多個目錄中,往往很難把它刪除干凈,應該在編譯前進行配置。 .bin文件安裝 擴展名為.bin文件是二進制的,它也是源程序經編譯後得到的機器語言。有一些軟體可以發布為以.bin為後綴的安裝包,例如,流媒體播放器RealONE。如果安裝過RealONE的Windows版的話,那麼安裝RealONE for Linux版本(文件名:r1p1_linux22_libc6_i386_a1.bin)就非常簡單了: #chmod +x r1p1_linux22_libc6_i386_a1.bin ./ r1p1_linux22_libc6_i386_a1.bin 接下來選擇安裝方式,有普通安裝和高級安裝兩種。如果不想改動安裝目錄,就可選擇普通安裝,整個安裝過程幾乎和在Windwos下一樣。 .bin文件的卸載,以RealONE for Linux為例,如果採用普通安裝方式的話,在用戶主目錄下會有Real和Realplayer9兩個文件夾,把它們刪除即可。 Linux綠色軟體 Linux也有一些綠色軟體,不過不是很多。Linux系統提供一種機制:自動響應軟體運行進程的要求,為它設定好可以馬上運行的環境。這種機制可以是一種介面,或者是中間件。程序員編寫的程序可以直接拷貝分發,不用安裝,只要點擊程序的圖標,訪問操作系統提供的介面,設定好就可以工作。若要刪除軟體,直接刪除就可以,不用鏈接文件。這是最簡單的軟體安裝、卸載方式。 上面介紹了Linux軟體安裝的方法,對於Linux初學者來說,RPM安裝是一個不錯的選擇。如果想真正掌握Linux系統,源代碼安裝仍然是Linux下軟體安裝的重要手段。
參考:http://wenwen.soso.com/z/q70442165.htm