Нет, это невозможно. Невозможно для обычных пользователей удалить файл: обязательно.
Вам понадобится sudo, чтобы пользователи не могли удалять файлы. Ваш администратор всегда сможет удалить файл. sudo chattr +i test может предотвратить удаление, но требует sudo. Простой sudo chattr -i test позволяет удалить файл. Ни один другой пользователь, кроме администратора, не может использовать chattr.И ... просто перезагрузка и переход в режим спасения позволят этому человеку удалять этот файл. Это был бы риск для безопасности, если бы был способ никогда не удалять файл.
Вот maven3 PPA, который отлично работал для меня на 64-битном Ubuntu 11.10
sudo add-apt-repository ppa:natecarlson/maven3
sudo apt-get update && sudo apt-get install maven3
Если у вас уже установлен maven2 из канонических репозиториев, это не заменит его, а даст вам двоичный файл mvn3.
Если вы предпочитаете иметь двоичный файл mvn вместо mvn3, вы можете просто сделать следующее:
sudo ln -s /usr/bin/mvn3 /usr/bin/mvn
Источник
Вопрос старый, но золото. Я должен был найти решение сегодня. Вот так. Нет необходимости использовать небезопасный репозиторий, потому что maven3 уже включен в репозитории Ubuntu. Решение в Ubuntu 14.04 LTS будет выглядеть следующим образом:
sudo apt-get install maven sudo update-alternatives --config mvnСо второй командой вам предлагается установить используемую версию. Вы можете отличить правильные каталоги, выбрав путь, в котором maven2 НЕ является его частью.
*0 /usr/share/maven2/bin/mvn 200 Auto-Modus
1 /usr/share/maven/bin/mvn 150 manueller Modus
2 /usr/share/maven2/bin/mvn 200 manueller Modus
В моем случае мне пришлось выбрать maven3
С помощью выданной команды mvn -v вы можете проверить, удалось ли выполнить настройку и была ли выбрана правильная версия. Ниже приведен пример возвращаемых значений.
~$ mvn -version
Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.7.0_75, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
Default locale: de_DE, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-45-generic", arch: "amd64", family: "unix"
Надеюсь, это вам немного поможет.
Я создал новый скрипт, который должен не только установить Maven + добавить его в bin, но и поднять, если вы используете Ubuntu в качестве гостя VirtualBox, а затем пытается установить существующую папку «.m2» и maven, которая может / может не содержит существующих настроек.
Maven остается прежним, если он работает в Windows или Unix, поэтому вы можете использовать один и тот же Maven между ними, это ваша настройка VirtualBox ...
PS. Обратите внимание на сборку сценариев, которые могут монтировать / отключать общие папки из / usr / local / bin:)
#!/bin/bash
#Author: Yucca Nel http://thejarbar.org
#Will restart system
PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:."
export PATH
#Modify these variables as needed...
tempWork=/tmp/work
defaultStartScript=/etc/init.d/rc.local
defaultMaven=3.0.3
locBin=/usr/local/bin
mavenUsrLib=/usr/lib/maven
mkdir -p $mavenUsrLib
mkdir -p $HOME/.m2
read -p "Please [Enter] full path name of your local startup script ($defaultStartScript is the default). Please
make sure on this before providing a value by consulting documentation for your system:" locStartScript
locStartScript=${locStartScript:-$defaultStartScript}
read -p "Please [Enter] Maven Version ($defaultMaven is default):" mavenVersion
mavenVersion=${mavenVersion:-$defaultMaven}
if [ ! -f $locStartScript ]
then
echo "The file you provided could not be found. Remember to include the full path and try again. Exiting in 7 secs..."
sleep 7
exit 1
fi
mkdir -p /$tempWork
cd /$tempWork
sudo wget http://mirrors.powertech.no/www.apache.org/dist//maven/binaries/apache-maven-$mavenVersion-bin.tar.gz
tar -zxvf ./*
#Move it to a more logical location
sudo mv -f ./apache-maven-$mavenVersion $mavenUsrLib/
#If you have Maven on Windows and use VirtualBox, you can set up the maven to be a virtualbox shared folder.
#The name must match the name used below (ignore if irrelevant to you).
if [ -f /sbin/mount.vboxsf ]
then
sudo /sbin/umount $HOME/.m2
sudo /sbin/umount $mavenUsrLib
sudo /sbin/mount.vboxsf .m2 $HOME/.m2
sudo /sbin/mount.vboxsf maven $mavenUsrLib
fi
if mountpoint -q $HOME/.m2 && mountpoint -q $mavenUsrLib
then
#Add it to the start script to automate process...
sudo sed -ie '$d' $locStartScript
if ! grep "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" $locStartScript
then
echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" | sudo tee -a $locStartScript
fi
if ! grep "sudo /sbin/mount.vboxsf maven $mavenUsrLib" $locStartScript
then
echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" | sudo tee -a $locStartScript
fi
echo "exit 0" | sudo tee -a $locStartScript
sudo chmod +x $locStartScript
#Create a mount and unmount script file...
rm -rf $tempWork/*
echo '#!/bin/bash' > $tempWork/maven-mount.sh
echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" >> $tempWork/maven-mount.sh
echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" >> $tempWork/maven-mount.sh
echo "echo 'mounted maven'" >> $tempWork/maven-mount.sh
echo "exit 0" >> $tempWork/maven-mount.sh
echo '#!/bin/bash' > $tempWork/maven-umount.sh
echo "sudo umount $HOME/.m2" >> $tempWork/netbeans-umount.sh
echo "sudo umount $mavenUsrLib" >> $tempWork/netbeans-umount.sh
echo "echo 'unmounted maven'" >> $tempWork/maven-mount.sh
echo 'exit 0' >> $tempWork/maven-umount.sh
#Script for mounting ALL VirtualBox shared solders....
#If there isn't one create one...
if [ ! -f $locBin/mount-all-from-host.sh ]
then
echo '#!/bin/bash' > $tempWork/mount-all-from-host.sh
echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" | sudo tee -a $tempWork/mount-all-from-host.sh
echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" | sudo tee -a $tempWork/mount-all-from-host.sh
echo "exit 0" | sudo tee -a $tempWork/mount-all-from-host.sh
#Otherwise if there is one, but no mount, add one...
elif ! grep "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" $locBin/mount-all-from-host.sh
then
sudo sed -ie '$d' $locBin/mount-all-from-host.sh
echo "sudo /sbin/mount.vboxsf .m2 $HOME/.m2" | sudo tee -a $locBin/mount-all-from-host.sh
echo "exit 0" | sudo tee -a $locBin/mount-all-from-host.sh
elif ! grep "sudo /sbin/mount.vboxsf maven $mavenUsrLib" $locBin/mount-all-from-host.sh
then
sudo sed -ie '$d' $locBin/mount-all-from-host.sh
echo "sudo /sbin/mount.vboxsf maven $mavenUsrLib" | sudo tee -a $locBin/mount-all-from-host.sh
echo "exit 0" | sudo tee -a $locBin/mount-all-from-host.sh
fi
#Script for unmounting ALL VirtualBox shared folders...
#If there isn't one create one...
if [ ! -f $locBin/umount-all-from-host.sh ]
then
echo '#!/bin/bash' > $tempWork/umount-all-from-host.sh
echo "sudo umount -a -t vboxsf" | sudo tee -a $tempWork/umount-all-from-host.sh
echo "echo 'unmounted all VirtualBox shared folders'" | sudo tee -a $tempWork/umount-all-from-host.sh
echo "exit 0" | sudo tee -a $tempWork/umount-all-from-host.sh
fi
sudo chmod +x $tempWork/*
sudo mv -f $tempWork/*.sh $locBin/
rm -rf $tempWork
fi
sudo ln -f -s $mavenUsrLib/apache-maven-$mavenVersion/bin/* /usr/bin/
sudo rm -rf $tempWork
sudo reboot
exit 0
Здесь maven3 PPA, который может решить эту проблему.
Следуйте установке:
sudo apt-get purge maven maven2 maven3
sudo add-apt-repository ppa:andrei-pozolotin/maven3
sudo apt-get update && sudo apt-get install maven3
И теперь вы установили Следуйте установке: :
nazar@lelyak-desktop ~ $ mvn -version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T14:57:37+03:00)
Maven home: /usr/share/maven3
Java version: 1.7.0_80, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-24-generic", arch: "amd64", family: "unix"
Ссылка на Launchpad
Я обновил, но получил классную ошибку. Чтобы исправить это:
Потратив некоторое время на различные комбинации, я обнаружил, что это связано с тем, что у меня есть как M2_HOME, так и M3_HOME, установленные в моих переменных окружения. Когда я удалил M2_HOME из моих переменных окружения, я мог бы получить это работая снова. Может быть, это может сэкономить какое-то серьезное время для кого-то.
Загрузите maven с официального сайта maven и извлеките
Переместите каталог приложения в / usr / local
sudo cp -R apache-maven-X.X.X /usr/local
Сделайте мягкую ссылку в / usr / bin для универсального доступа mvn
sudo ln -s /usr/local/apache-maven-X.X.X/bin/mvn /usr/bin/mvn
Проверить установку mvn
mvn --version
Если вам не нравится PPA (архив личных пакетов), в котором у вас нет уверенности в происхождении, это альтернатива.
С точки зрения безопасности, если вы не знаете, откуда она взялась, не устанавливайте его.
В моей связанной статье я извлекаю последний файл из apache, который является известным и надежный источник. Вы можете получить последнюю версию
\#identify the latest version of maven latest=$(curl http://www-us.apache.org/dist/maven/maven-3/ | tac | sed -ne 's/[^0-9]*\(\([0-9]\.\)\{0,3\}[0-9]\).*/\1/p' | head -1) \#download it wget http://www-us.apache.org/dist/maven/maven-3/$latest/binaries/apache-maven-$latest-bin.tar.gz, а затем установить ее из
\#Unpack it sudo tar -zxf apache-maven-$latest-bin.tar.gz -C /usr/local/ \#create a sym link to it sudo ln -s /usr/local/apache-maven-$latest/bin/mvn /usr/bin/mvn, как указано в ссылке выше, и мое сообщение в
stackoverflow askubuntu [ ! d9]