Offline Package Installation I

本文详细介绍了在无网络环境下如何下载并安装Ansible、Docker及Kubernetes所需的所有依赖包,包括使用yum-plugin-downloadonly、yumdownloader及repotrack等工具的步骤与技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

When I was working on the upgrade DS k8s installer issue, I ran into the problem that I need to install ansible, docker and kubeadm offline. In the production environment, we may not have internet access, that means we need to prepare the rpms and dependencies needed and create a self-contained installer.

Download missing rpms without installing

Note: This method is (by-design) sensitive to the existence of already-installed packages. It will only download actual dependencies you need for that particular box, not all.

First let's install the yum-plugin-downloadonly:

yum install -y yum-plugin-downloadonly
yum install --downloadonly --downloaddir=<directory> <package:version>

For example, I want to get missing rpms for vim editor, reside them in /root/vim folder

mkdir -p /root/vim
yum install --downloadonly --downloaddir=/root/vim vim

uc?id=1l5sohiuz020QXowIfKddAtIlUyjJWmFl

List the target folder:

uc?id=1o9fPX-boaTBYl7r6y2uzDFePAsLa9G9B

Another way is using yumdownloader that is from yum-utils. The difference is if the package is already installed completely, yumdownloader will download the outermost rpm but --downloadonly will do nothing.

yum install -y yum-utils
yumdownloader --resolve --destdir=/root/vim vim

uc?id=1I_QfnLAWpj-CNKnfZAvF4yKjZ6U8xHET

Download all rpms without installing

yum & yumdownloader

Usually what we really want is to resolve all dependencies and download them, yumdownloader or yum --downloadonly with --installroot option is the solution.

Keep in mind, that yumdownloader will use your yum database when resolving dependencies.

For example if you download bash, which needs glibc, it will resolve glibc and skip it, since it is installed. If you want to download all dependencies, use a different installroot instead.

mkdir -p /root/vim
mkdir -p /root/new_root
yumdownloader --installroot=/root/new_root --destdir=/root/vim/ --resolve vim

Let's check how many ansible related rpms are here, way to many then what we get from the first section methods.

ls -ltr /root/vim | wc -l
57
repotrack

This method can also resolve and download all dependencies, repotrack is from yum-utils, it will down all the dependencies for any architecture by default if it doesn't appear you specified the architecture which could account for the difference in what you see downloaded.

mkdir -p /root/vim
repotrack -p /root/vim vim-enhanced

if you check /root/vim, there are some i686 rpms, once you delete them and count again, 57 the same as we use yumdownloader above.

Note: actually repotrack has -a option to specify arch, but I am not able to figure it out, when I specify x86_64, it still download i686.

Install local rpms

Now the problem is how to install these rpms in correct order, install them one by one is obviously infeasible, the method that can resolve their dependencies and install automatically is welcome:

yum --disablerepo=* --skip-broken install -y /root/vim/*.rpm

转载于:https://www.cnblogs.com/chengdol/p/10437673.html

EPRobot@EPRobot:~/robot_ws$ cd ~/robot_ws # 在每次打开新终端时运行 EPRobot@EPRobot:~/robot_ws$ catkin_make Base path: /home/EPRobot/robot_ws Source space: /home/EPRobot/robot_ws/src Build space: /home/EPRobot/robot_ws/build Devel space: /home/EPRobot/robot_ws/devel Install space: /home/EPRobot/robot_ws/install #### #### Running command: "make cmake_check_build_system" in "/home/EPRobot/robot_ws/build" #### -- Using CATKIN_DEVEL_PREFIX: /home/EPRobot/robot_ws/devel -- Using CMAKE_PREFIX_PATH: /home/EPRobot/robot_ws/devel;/opt/ros/melodic -- This workspace overlays: /home/EPRobot/robot_ws/devel;/opt/ros/melodic -- Found PythonInterp: /usr/bin/python2 (found suitable version "2.7.17", minimum required is "2") -- Using PYTHON_EXECUTABLE: /usr/bin/python2 -- Using Debian Python package layout -- Using empy: /usr/bin/empy -- Using CATKIN_ENABLE_TESTING: ON -- Call enable_testing() -- Using CATKIN_TEST_RESULTS_DIR: /home/EPRobot/robot_ws/build/test_results -- Found gtest sources under '/usr/src/googletest': gtests will be built -- Found gmock sources under '/usr/src/googletest': gmock will be built -- Found PythonInterp: /usr/bin/python2 (found version "2.7.17") -- Using Python nosetests: /usr/bin/nosetests-2.7 -- catkin 0.7.29 -- BUILD_SHARED_LIBS is on -- BUILD_SHARED_LIBS is on -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ~~ traversing 62 packages in topological order: -- ~~ - astra_launch -- ~~ - base_control -- ~~ - hibot_follower -- ~~ - lslidar (metapackage) -- ~~ - navigation (metapackage) -- ~~ - robot_navigation -- ~~ - robot_upstart -- ~~ - simple_navigation_goals -- ~~ - lslidar_msgs -- ~~ - rospy_message_converter -- ~~ - eprobot_auto_home -- ~~ - eprobot_start -- ~~ - ls01d -- ~~ - map_server -- ~~ - hls_lfcd_lds_driver -- ~~ - iiiroboticslidar2 -- ~~ - astra_camera -- ~~ - rplidar_ros -- ~~ - eprobot_joy -- ~~ - lslidar_driver -- ~~ - robot_pose_ekf -- ~~ - sc_mini -- ~~ - amcl -- ~~ - fake_localization -- ~~ - laser_filters -- ~~ - robot_localization -- ~~ - track_detection -- ~~ - voxel_grid -- ~~ - costmap_2d -- ~~ - nav_core -- ~~ - base_local_planner -- ~~ - carrot_planner -- ~~ - clear_costmap_recovery -- ~~ - dwa_local_planner -- ~~ - move_slow_and_clear -- ~~ - navfn -- ~~ - global_planner -- ~~ - rotate_recovery -- ~~ - move_base -- ~~ - teb_local_planner -- ~~ - eprobot_description -- ~~ - xf_mic_asr_offline -- ~~ - ydlidar -- ~~ - yocs_ar_pair_approach -- ~~ - yocs_cmd_vel_mux -- ~~ - yocs_controllers -- ~~ - yocs_keyop -- ~~ - yocs_localization_manager -- ~~ - yocs_math_toolkit -- ~~ - yocs_ar_marker_tracking -- ~~ - yocs_diff_drive_pose_controller -- ~~ - yocs_ar_pair_tracking -- ~~ - yocs_joyop -- ~~ - yocs_navi_toolkit -- ~~ - yocs_navigator -- ~~ - yocs_rapps -- ~~ - yocs_safety_controller -- ~~ - yocs_velocity_smoother -- ~~ - yocs_virtual_sensor -- ~~ - yocs_waypoint_provider -- ~~ - yocs_waypoints_navi -- ~~ - yujin_ocs (metapackage) -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- +++ processing catkin package: 'astra_launch' -- ==> add_subdirectory(ros_astra_launch) -- +++ processing catkin package: 'base_control' -- ==> add_subdirectory(base_control) -- +++ processing catkin package: 'hibot_follower' -- ==> add_subdirectory(hibot_follower) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'system_lib' but neither 'system_lib_INCLUDE_DIRS' nor 'system_lib_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) hibot_follower/CMakeLists.txt:24 (catkin_package) -- +++ processing catkin metapackage: 'lslidar' -- ==> add_subdirectory(lslidar) -- +++ processing catkin metapackage: 'navigation' -- ==> add_subdirectory(navigation-melodic/navigation) -- +++ processing catkin package: 'robot_navigation' -- ==> add_subdirectory(robot_navigation) -- +++ processing catkin package: 'robot_upstart' -- ==> add_subdirectory(robot_upstart) -- +++ processing catkin package: 'simple_navigation_goals' -- ==> add_subdirectory(simple_navigation_goals) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'lslidar_msgs' -- ==> add_subdirectory(lslidar_msgs) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- lslidar_msgs: 5 messages, 0 services -- +++ processing catkin package: 'rospy_message_converter' -- ==> add_subdirectory(rospy_message_converter) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- rospy_message_converter: 4 messages, 1 services -- +++ processing catkin package: 'eprobot_auto_home' -- ==> add_subdirectory(eprobot_auto_home) -- +++ processing catkin package: 'eprobot_start' -- ==> add_subdirectory(eprobot_start) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'system_lib' but neither 'system_lib_INCLUDE_DIRS' nor 'system_lib_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) eprobot_start/CMakeLists.txt:24 (catkin_package) -- +++ processing catkin package: 'ls01d' -- ==> add_subdirectory(lidar/ls01d) -- +++ processing catkin package: 'map_server' -- ==> add_subdirectory(navigation-melodic/map_server) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- filesystem -- system -- +++ processing catkin package: 'hls_lfcd_lds_driver' -- ==> add_subdirectory(lidar/hls_lfcd_lds_driver) -- Boost version: 1.65.1 -- +++ processing catkin package: 'iiiroboticslidar2' -- ==> add_subdirectory(lidar/iiiroboticslidar2_ros) -- +++ processing catkin package: 'astra_camera' -- ==> add_subdirectory(ros_astra_camera) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- system -- thread -- chrono -- date_time -- atomic -- ORRBEC Machine : aarch64 -- ORRBEC Machine Bits : 64 -- ORRBEC : arm64 -- libuvc 0.0.6 -- astra_camera: 0 messages, 19 services -- +++ processing catkin package: 'rplidar_ros' -- ==> add_subdirectory(lidar/rplidar_ros) -- +++ processing catkin package: 'eprobot_joy' -- ==> add_subdirectory(eprobot_joy) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'system_lib' but neither 'system_lib_INCLUDE_DIRS' nor 'system_lib_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) eprobot_joy/CMakeLists.txt:39 (catkin_package) -- +++ processing catkin package: 'lslidar_driver' -- ==> add_subdirectory(lslidar_driver) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 CMake Warning at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:166 (message): catkin_package() DEPENDS on 'boost' but neither 'boost_INCLUDE_DIRS' nor 'boost_LIBRARIES' is defined. Call Stack (most recent call first): /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:102 (_catkin_package) lslidar_driver/CMakeLists.txt:22 (catkin_package) -- +++ processing catkin package: 'robot_pose_ekf' -- ==> add_subdirectory(robot_pose_ekf) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- thread -- chrono -- system -- date_time -- atomic -- robot_pose_ekf: 0 messages, 1 services -- +++ processing catkin package: 'sc_mini' -- ==> add_subdirectory(lidar/sc_mini) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- +++ processing catkin package: 'amcl' -- ==> add_subdirectory(navigation-melodic/amcl) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- +++ processing catkin package: 'fake_localization' -- ==> add_subdirectory(navigation-melodic/fake_localization) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- +++ processing catkin package: 'laser_filters' -- ==> add_subdirectory(laser_filters) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- system -- +++ processing catkin package: 'robot_localization' -- ==> add_subdirectory(robot_localization) robot_localization: You did not request a specific build type: selecting 'RelWithDebInfo'. -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- robot_localization: 0 messages, 7 services -- +++ processing catkin package: 'track_detection' -- ==> add_subdirectory(track_detection) -- +++ processing catkin package: 'voxel_grid' -- ==> add_subdirectory(navigation-melodic/voxel_grid) -- +++ processing catkin package: 'costmap_2d' -- ==> add_subdirectory(navigation-melodic/costmap_2d) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- system -- thread -- chrono -- date_time -- atomic -- costmap_2d: 1 messages, 0 services -- +++ processing catkin package: 'nav_core' -- ==> add_subdirectory(navigation-melodic/nav_core) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'base_local_planner' -- ==> add_subdirectory(navigation-melodic/base_local_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- thread -- chrono -- system -- date_time -- atomic -- base_local_planner: 1 messages, 0 services -- +++ processing catkin package: 'carrot_planner' -- ==> add_subdirectory(navigation-melodic/carrot_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'clear_costmap_recovery' -- ==> add_subdirectory(navigation-melodic/clear_costmap_recovery) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'dwa_local_planner' -- ==> add_subdirectory(navigation-melodic/dwa_local_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'move_slow_and_clear' -- ==> add_subdirectory(navigation-melodic/move_slow_and_clear) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- Boost version: 1.65.1 -- Found the following Boost libraries: -- thread -- chrono -- system -- date_time -- atomic -- +++ processing catkin package: 'navfn' -- ==> add_subdirectory(navigation-melodic/navfn) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- navfn: 0 messages, 2 services -- NAVFN_HAVE_FLTK: , NETPBM: 1 -- FLTK orf NETPBM not found: cannot build navtest -- +++ processing catkin package: 'global_planner' -- ==> add_subdirectory(navigation-melodic/global_planner) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'rotate_recovery' -- ==> add_subdirectory(navigation-melodic/rotate_recovery) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'move_base' -- ==> add_subdirectory(navigation-melodic/move_base) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- +++ processing catkin package: 'teb_local_planner' -- ==> add_subdirectory(teb_local_planner-melodic) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- System: Linux-5.3.0-1030-raspi2 -- /opt/ros/melodic/share/cmake_modules/cmake/../../../share/cmake_modules/cmake/Modules;/home/EPRobot/robot_ws/src/teb_local_planner-melodic/cmake_modules -- Boost version: 1.65.1 -- Found the following Boost libraries: -- system -- thread -- graph -- chrono -- date_time -- atomic -- Found SuiteSparse -- Searching for g2o ... -- Found g2o headers in: /opt/ros/melodic/include/g2o -- Found libg2o: /opt/ros/melodic/lib/libg2o_csparse_extension.so;/opt/ros/melodic/lib/libg2o_core.so;/opt/ros/melodic/lib/libg2o_stuff.so;/opt/ros/melodic/lib/libg2o_types_slam2d.so;/opt/ros/melodic/lib/libg2o_types_slam3d.so;/opt/ros/melodic/lib/libg2o_solver_cholmod.so;/opt/ros/melodic/lib/libg2o_solver_pcg.so;/opt/ros/melodic/lib/libg2o_solver_csparse.so;/opt/ros/melodic/lib/libg2o_incremental.so -- teb_local_planner: 3 messages, 0 services -- +++ processing catkin package: 'eprobot_description' -- ==> add_subdirectory(eprobot_description) -- +++ processing catkin package: 'xf_mic_asr_offline' -- ==> add_subdirectory(xf_mic_asr_offline) -- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy -- xf_mic_asr_offline: 2 messages, 7 services -- +++ processing catkin package: 'ydlidar' -- ==> add_subdirectory(ydlidar) -- +++ processing catkin package: 'yocs_ar_pair_approach' -- ==> add_subdirectory(yujin_ocs/yocs_ar_pair_approach) -- +++ processing catkin package: 'yocs_cmd_vel_mux' -- ==> add_subdirectory(yujin_ocs/yocs_cmd_vel_mux) -- +++ processing catkin package: 'yocs_controllers' -- ==> add_subdirectory(yujin_ocs/yocs_controllers) -- +++ processing catkin package: 'yocs_keyop' -- ==> add_subdirectory(yujin_ocs/yocs_keyop) -- Could NOT find ecl_threads (missing: ecl_threads_DIR) -- Could not find the required component 'ecl_threads'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found. CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package): Could not find a package configuration file provided by "ecl_threads" with any of the following names: ecl_threadsConfig.cmake ecl_threads-config.cmake Add the installation prefix of "ecl_threads" to CMAKE_PREFIX_PATH or set "ecl_threads_DIR" to a directory containing one of the above files. If "ecl_threads" provides a separate development package or SDK, be sure it has been installed. Call Stack (most recent call first): yujin_ocs/yocs_keyop/CMakeLists.txt:3 (find_package) -- Configuring incomplete, errors occurred! See also "/home/EPRobot/robot_ws/build/CMakeFiles/CMakeOutput.log". See also "/home/EPRobot/robot_ws/build/CMakeFiles/CMakeError.log". Makefile:9560: recipe for target 'cmake_check_build_system' failed make: *** [cmake_check_build_system] Error 1 Invoking "make cmake_check_build_system" failed EPRobot@EPRobot:~/robot_ws$ source devel/setup.bash # 在每次打开新终端时运行
最新发布
07-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值