我能想到的最好方法是使用符号链接
请注意,并非所有程序都安装在同一目录中,而/ opt可能不是最好的移动方式.(例如,仅移动一个文件夹/程序,请参阅结束)
这就是我用EasyPeasy(Ubuntu 10.04)所做的
请仔细遵循此代码,如果使用不当,某些命令可能会删除重要文件.
首先,您需要确保/ opt(或您的发行版默认apt-get安装目录)为空.如果您最有可能在opt文件夹中有数据,则可以先将其移至其他位置以便安全保存:
sudo mkdir /New_Location/newtmp # Generates Temporary Folder for Programs
sudo cp -a /opt/* /New_Location/newtmp # Moves Programs to Temp folder
Run Code Online (Sandbox Code Playgroud)
备份后,您可以删除原始目录:
sudo rm -rf /opt/ # Removes opt directory
Run Code Online (Sandbox Code Playgroud)
然后,您可以在具有大量空间的驱动器中创建新的Program Files文件夹,并创建符号链接:
sudo mkdir /New_Location/Program-Files # Generates New Program Directory
sudo ln -s /New_Location/Program-Files /opt # Creates Symbolic Link
Run Code Online (Sandbox Code Playgroud)
最后将所有旧程序文件移动到新文件夹并清理临时数据:
sudo cp -a /New_Location/newtmp/* /New_Location/Program-Files # Moves Programs to Program Files Folder
sudo rm -rf /New_Location/newtmp/ # Removes Temp folder
Run Code Online (Sandbox Code Playgroud)
如果您只想移动占用空间大小的单个程序,则可以使用相同的过程.
例如:移动Java(JVM约300MB)执行以下操作.使用磁盘使用率分析器检查java目录.我的是/ usr/lib/jvm
sudo mkdir /New_Location/Program-Files/Java # Generates New Program Directory
sudo cp -a /usr/lib/jvm/* /New_Location/Program-Files/Java # Moves Program to new folder
sudo rm -rf /usr/lib/jvm # Removes opt directory
sudo ln -s /New_Location/Program-Files/Java /usr/lib/jvm # Creates Symbolic Link
Run Code Online (Sandbox Code Playgroud)
此时最好进行重启,应该清除缓存.
快乐黑客有限情报
您不能:安装路径在包中进行硬编码(例如:请参阅:http://packages.ubuntu.com/oneiric/i386/mono-runtime/filelist).此路径通常是/ usr而不是/ opt,但它取决于包.如果要覆盖默认目录,则必须手动提取包的内容.但是,它无法工作:配置文件,有时甚至是二进制文件,将继续使用旧路径.因此,您必须更新它们才能使包正常工作.