我想在 RHEL 伺服器上的使用者本機安裝 Git(我沒有 root 存取權限) 將軟體安裝到本機使用者帳戶的最乾淨/最有組織的方式是什麼?
- 將所有內容安裝在該使用者主目錄中?
- 目錄佈局會是什麼樣子?
- 您會從原始碼還是 RPM 安裝?
- 如果從 RPM 您會使用 YUM 還是 RPM?
答案1
有多種方法可以使用 rpm 在使用者目錄中安裝rpm
,但我不認為這是直接的。我不相信有辦法yum
。
我的標準做法是從原始碼編譯到local
我家中的目錄
$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include
我像/usr/local
擁有 root 權限時一樣下載原始程式碼,例如,在~/local/git
.
編譯時我將前綴設定為local
目錄
$ configure --prefix=/home/user_name/local
$ make
$ make install
然後我將其添加~/local/bin
到我的 $PATH 中.bash_profile
。
當然,從原始碼安裝的痛苦在於您無法獲得自動依賴關係解析。如果發現需要安裝依賴,就按照上面的方法編譯安裝即可。然後,當您編譯時git
,您需要更新編譯標誌,以便它們在正確的位置查找依賴項的庫和包含檔案:
./configure --prefix=/home/user_name/local LDFLAG='-L/home/user_name/local/lib' CFLAGS='-I/home/user_name/local/include' CPPFLAGS='-I/home/user_name/local/include' CXXFLAGS='-I/home/user_name/local/include'
答案2
.rpm 檔案其實是一種存檔形式cpio
,很像 .rpm 的簡單形式tar
。該rpm2cpio
實用程式可能已安裝在系統上,並且不需要權限即可使用;它寫入標準輸出,因此要轉換:
rpm2cpio whatever.rpm > whatever.cpio
您可以man cpio
自己查看,但您現在要做的是以“複製”模式將存檔提供給 cpio:
cat whatever.cpio | cpio -i
這些內容很可能被組織成目錄樹,以便文件進入適當的位置(bin 等)。如果您的密碼中不存在這些文件,您將收到錯誤訊息,但這將列出存檔中的文件(您可以使用-t
/--list
開關獲得相同的結果)。如果您想自動建立目錄,請使用-d
.解壓縮 rpm 的快速方法是:
rpm2cpio whatever.rpm | cpio -i -d
您可以使用它來安裝到 $HOME 中。唯一的問題是程式是否希望在/etc
等待中找到東西,因為許多東西在編譯時出於任何目的都硬編碼了它們的安裝位置。
從原始程式碼建立可能是一個更好的選擇(因為您可以提供正確的位置),但如果您可以使其在任何情況下都可以工作,那麼它會快速而簡單。
此外,午夜指揮官文件瀏覽器 ( mc
),可能還有其他文件瀏覽器,將允許您導航 rpm 或 cpio(或壓縮的 tar 或 zip)層次結構並複製單個文件,就像解壓縮存檔一樣(它創建一個臨時檔案系統,用於瀏覽其中的存檔內容)。
答案3
這是一個替代方案(不使用 yum),權限會很奇怪,但您可以chown
隨後向目標用戶發送:--這也是一個成功或失敗:-(
#-## Download all dependency for the RPM --
#sudo yum install yum-utils
#sudo yumdownloader --resolve --destdir ~/download bash
#-## Install all downloaded to an alternate root
#sudo rpm --initdb --root <user_home_dir>
#sudo rpm --root <user_home_dir> -Uvh --nodeps ~/download/*
然後將適當的位置新增到您的路徑中。