問題描述
我在這台機器上沒有root權限。
我想知道是否有辦法下載下傳Ubuntu軟體包并将它們安裝為non-root?
可能在我的~/bin或~/usr/share或類似的東西?這會起作用嗎?
最佳解決辦法
Apt不直接支援它,但有辦法做到這一點。
一種是使用schroot建立non-root chroot。這是一個有點involved process,但你應該能夠找到社群幫助為許多開發人員設定chroot環境來編譯代碼。
我知道的第二種方法是從.deb包安裝。您可以從網站下載下傳它,或者如果它位于可以下載下傳的Ubuntu存儲庫中。
apt-get download package
将package替換為軟體包的名稱
一旦你有你的deb檔案直接從指令行調用dpkg。以下示例将package.deb安裝到您的主目錄中。
dpkg -i package.deb --force-not-root --root=$HOME
像這樣使用dpkg的缺點是錯誤資訊很可能是神秘的; dpkg不會自動解決依賴關系或建立它期望的目錄結構。
最後,您可以使用apt-get source指令來擷取軟體包的源代碼并将其配置為在本地安裝。通常這看起來像這樣:
apt-get source package
cd package
./configure --prefix=$HOME
make
make install
這種方法的缺點是你需要這種方法可用的開發環境才能工作,并且你可能會發現自己編譯了數十個包來解決所有的依賴關系。
次佳解決辦法
我假設你想安裝jedit。首先你必須找到包并下載下傳它。我拿着deb file from some mirror并打開一個控制台/終端:
mkdir /tmp/jedit && cd /tmp/jedit – 在tmp中建立了一個新的方向,并進行了更改。
wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb – 下載下傳包
ar x jedit_4.3.1.dfsg-0ubuntu1_all.deb或易于輸入的ar x *.deb – 提取檔案内容
tar xvzf data.tar.gz – 檔案data.tar.gz具有執行軟體所需的所有東西
usr/bin/jedit打開編輯器
完成:-)
您可以将檔案移動到主目錄中的某個位置,然後從那裡執行它們。
第三種解決辦法
我寫了一個名為JuJu的程式,它基本上允許在你的$ HOME /.juju目錄中有一個非常小的Linux發行版(隻包含軟體包管理器)。
它允許您的自定義系統通過proot通路主目錄,是以,您可以安裝任何沒有root權限的軟體包。它可以正常運作到所有主要的Linux發行版,唯一的限制是JuJu可以在最低推薦版本2.6.32的Linux核心上運作。
例如,安裝JuJu安裝jedit之後:
$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit
參考資料