“usermod:UID‘0‘already exists”
修改run.sh文件部分内容如下:
USER_ID="$(id -u)"if [ USER_ID != 0 ]; thenUSER_ID=1000;
elseUSER_ID=${USER_ID};
fi
完整的run.sh文件如下:
#!/bin/bashset -e# Default settings
CUDA="on"
IMAGE_NAME="autoware/autoware"
TAG_PREFIX="latest"
ROS_DISTRO="melodic"
BASE_ONLY="false"
PRE_RELEASE="off"
AUTOWARE_HOST_DIR=""
USER_ID="$(id -u)"if [ USER_ID != 0 ]; then USER_ID=1000;
else USER_ID=${USER_ID};
fi function usage() {echo "Usage: $0 [OPTIONS]"echo " -b,--base-only <AUTOWARE_HOST_DIR> If provided, run the base image only and mount the provided Autoware folder."echo " Default: Use pre-compiled Autoware image"echo " -c,--cuda <on|off> Enable Cuda support in the Docker."echo " Default: $CUDA"echo " -h,--help Display the usage and exit."echo " -i,--image <name> Set docker images name."echo " Default: $IMAGE_NAME"echo " -p,--pre-release <on|off> Use pre-release image."echo " Default: $PRE_RELEASE"echo " -r,--ros-distro <name> Set ROS distribution name."echo " Default: $ROS_DISTRO"echo " -s,--skip-uid-fix Skip uid modification step required when host uid != 1000"echo " -t,--tag-prefix <tag> Tag prefix use for the docker images."echo " Default: $TAG_PREFIX"
}# Convert a relative directory path to absolute
function abspath() {local path=$1if [ ! -d $path ]; thenexit 1fipushd $path > /dev/nullecho $(pwd)popd > /dev/null
}OPTS=`getopt --options b:c:hi:p:r:st: \--long base-only:,cuda:,help,image-name:,pre-release:,ros-distro:,skip-uid-fix,tag-prefix: \--name "$0" -- "$@"`
eval set -- "$OPTS"while true; docase $1 in-b|--base-only)BASE_ONLY="true"AUTOWARE_HOST_DIR=$(abspath "$2")shift 2;;-c|--cuda)param=$(echo $2 | tr '[:upper:]' '[:lower:]')case "${param}" in"on"|"off") CUDA="${param}" ;;*) echo "Invalid cuda option: $2"; exit 1 ;;esacshift 2;;-h|--help)usageexit 0;;-i|--image-name)IMAGE_NAME="$2"shift 2;;-p|--pre-release)param=$(echo $2 | tr '[:upper:]' '[:lower:]')case "${param}" in"on"|"off") PRE_RELEASE="${param}" ;;*) echo "Invalid pre-release option: $2"; exit 1 ;;esacshift 2;;-r|--ros-distro)ROS_DISTRO="$2"shift 2;;-s|--skip-uid-fix)USER_ID=1000shift 1;;-t|--tag-prefix)TAG_PREFIX="$2"shift 2;;--)if [ ! -z $2 ];thenecho "Invalid parameter: $2"exit 1fibreak;;*)echo "Invalid option"exit 1;;esac
doneecho "Using options:"
echo -e "\tROS distro: $ROS_DISTRO"
echo -e "\tImage name: $IMAGE_NAME"
echo -e "\tTag prefix: $TAG_PREFIX"
echo -e "\tCuda support: $CUDA"
if [ "$BASE_ONLY" == "true" ]; thenecho -e "\tAutoware Home: $AUTOWARE_HOST_DIR"
fi
echo -e "\tPre-release version: $PRE_RELEASE"
echo -e "\tUID: <$USER_ID>"SUFFIX=""
RUNTIME=""XSOCK=/tmp/.X11-unix
XAUTH=$HOME/.XauthoritySHARED_DOCKER_DIR=/home/autoware/shared_dir
SHARED_HOST_DIR=$HOME/shared_dirAUTOWARE_DOCKER_DIR=/home/autoware/AutowareVOLUMES="--volume=$XSOCK:$XSOCK:rw--volume=$XAUTH:$XAUTH:rw--volume=$SHARED_HOST_DIR:$SHARED_DOCKER_DIR:rw"if [ "$BASE_ONLY" == "true" ]; thenSUFFIX=$SUFFIX"-base"VOLUMES="$VOLUMES --volume=$AUTOWARE_HOST_DIR:$AUTOWARE_DOCKER_DIR "
fiif [ $CUDA == "on" ]; thenSUFFIX=$SUFFIX"-cuda"RUNTIME="--runtime=nvidia"
fiif [ $PRE_RELEASE == "on" ]; thenSUFFIX=$SUFFIX"-rc"
fi# Create the shared directory in advance to ensure it is owned by the host user
mkdir -p $SHARED_HOST_DIRIMAGE=$IMAGE_NAME:$TAG_PREFIX-$ROS_DISTRO$SUFFIX
echo "Launching $IMAGE"docker run \-it --rm \$VOLUMES \--env="XAUTHORITY=${XAUTH}" \--env="DISPLAY=${DISPLAY}" \--env="USER_ID=$USER_ID" \--privileged \--net=host \$RUNTIME \$IMAGE
“usermod:UID‘0‘already exists”相关推荐
- cdh的集成phoenix安装_环境篇:Kylin3.0.1集成CDH6.2.0
环境篇:Kylin3.0.1集成CDH6.2.0 Kylin是什么? Apache Kylin™是一个开源的.分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析( ...
- linux uid 内核,Linux内核学习笔记: uid之ruid,euid,suid
s的本质是让某个用户在执行s权限的程序时,拥有该程序文件的属主或者属组一样的访问权限.属主或者属组取决于s的位置 一. Linux 文件权限的表示方法 文件权限用 12 个二进制位表示,如果该位的值是 ...
- usr bin java快捷方式_/ usr / bin / sudo必须由uid 0拥有并设置setuid位
我的Mac(El Capitan)上有usr / bin / sudo问题 . 我打开我的终端并得到: malloc:对象0x7fff38418900的错误:未释放指针被释放在malloc_error ...
- 用事实说话,成熟的ORM性能不是瓶颈,灵活性不是问题:EF5.0、PDF.NET5.0、Dapper原理分析与测试手记...
[本文篇幅较长,可以通过目录查看您感兴趣的内容,或者下载格式良好的PDF版本文件查看] 目录 一.ORM的"三国志" 2 1,PDF.NET诞生历程 2 2,Linq2 ...
- 用事实说话,成熟的ORM性能不是瓶颈,灵活性不是问题:EF5.0、PDF.NET5.0、Dapper...
为什么80%的码农都做不了架构师?>>> 目录 一.ORM的"三国志" 2 1,PDF.NET诞生历程 2 2,Linq2Sql&EF: ...
- 用事实说话,成熟的ORM性能不是瓶颈,灵活性不是问题:EF5.0、PDF.NET5.0、Dapper原理分析与测试手记(转)...
[本文篇幅较长,可以通过目录查看您感兴趣的内容,或者下载格式良好的PDF版本文件查看] 目录 一.ORM的"三国志" 2 1,PDF.NET诞生历程 2 2,Linq2 ...
- 大数据学习系列:Hadoop3.0苦命学习(五)
传送门: 大数据学习系列:Hadoop3.0苦命学习(一) 大数据学习系列:Hadoop3.0苦命学习(二) 大数据学习系列:Hadoop3.0苦命学习(三) 大数据学习系列:Hadoop3.0苦命学 ...
- 大数据学习系列:Hadoop3.0苦命学习(七)
传送门: 大数据学习系列:Hadoop3.0苦命学习(一) 大数据学习系列:Hadoop3.0苦命学习(二) 大数据学习系列:Hadoop3.0苦命学习(三) 大数据学习系列:Hadoop3.0苦命学 ...
- Novate:Retrofit2.0和RxJava的又一次完美改进加强(Tamic博客 -CSDN)
作者/Tamic http://blog.csdn.net/sk719887916/article/details/52195428 前言 用过RxJava和Retrofit的朋友,用久了就会发现Re ...
最新文章
- 关于学习Python的一点学习总结(37->集合运算)
- 《C++面向对象高效编程(第2版)》——2.20 什么是多线程安全类
- 如何在Web服务器IIS 6上配置PHP平台
- 新站上线后应该做哪些有利于seo的工作
- DL之Encoder-Decoder:Encoder-Decoder结构的相关论文、设计思路、关键步骤等配图集合之详细攻略
- python文件输出中文_python文件输出
- 【Qt】Qt中的快捷键汇总
- 实战经验:如何定位控制文件热点块,即读取延迟高的块所在的ASM磁盘
- 在代码中实用协程(二)
- ta-lib依赖安装问题
- (MoMoCMS教程10)创建留言板
- Flutter布局锦囊---蜡笔画的表单
- 【优化算法】贪婪策略和变异策略的混合蚁群算法【含Matlab源码 1521期】
- 朱松纯:AI 需由“心”驱动,实现“心”与“理”的动态平衡
- Linux源码安装pgadmin4,linux安装pgadmin3
- html和js制作个人所得税表格,H5编写个税计算器(JS代码编写).doc
- Python爬取网易云音乐歌手歌曲和歌单!推荐好听的歌吗?
- 计算机类ei和sci期刊,请教大家计算机领域数据挖掘方面有哪些比较好中的EI期刊和SCI期刊 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
- 悬浮窗java_Android悬浮窗示例(floatingwindow)
- 迅猛快捷——基于Gtid搭建Mysql主从,gtid实现主从切换自动同步——@$23$人鱼的眼泪