Toolbox: لا تبدأ الحاويات عندما يكون / etc / localtime رابطًا رمزيًا مطلقًا على المضيف (على سبيل المثال ، Arch و Ubuntu)

تم إنشاؤها على ٩ نوفمبر ٢٠٢٠  ·  10تعليقات  ·  مصدر: containers/toolbox

صف الخلل
بعد الترقية إلى إصدار مربع الأدوات 0.0.97 ، لا يمكنني بدء تشغيل أي من صناديق الأدوات بعد الآن.

ناتج toolbox enter work :

DEBU Running as real user ID 1000                 
DEBU Resolved absolute path to the executable as /usr/bin/toolbox 
DEBU Running on a cgroups v1 host                 
DEBU Checking if /etc/subgid and /etc/subuid have entries for user x 
DEBU TOOLBOX_PATH is /usr/bin/toolbox             
DEBU Toolbox config directory is /home/x/.config/toolbox 
DEBU Current Podman version is 2.1.1              
DEBU Old Podman version is 2.1.1                  
DEBU Migration not needed: Podman version 2.1.1 is unchanged 
DEBU Resolving container and image names          
DEBU Container: 'work'                            
DEBU Image: ''                                    
DEBU Release: ''                                  
DEBU Resolved container and image names           
DEBU Container: 'work'                            
DEBU Image: 'fedora-toolbox:31'                   
DEBU Release: '31'                                
DEBU Checking if container work exists            
DEBU Inspecting mounts of container work          
DEBU Starting container work                      
DEBU Inspecting entry point of container work     
DEBU Entry point PID is a float64                 
DEBU Entry point of container work is toolbox (PID=0) 
Error: invalid entry point PID of container work

الإخراج هو نفسه للحاويات التي تم إنشاؤها قبل التحديث وبعده. يمكن بدء تشغيل Toolboxes بعد التخفيض إلى 0.0.96 ويمكن إدخالها في 0.0.97 بمجرد بدئها.

خطوات كيفية إعادة إنتاج السلوك

  1. ابدأ مربع الأدوات

سلوك متوقع
بدأ Toolbox

السلوك الفعلي
حدث خطأ Error: invalid entry point PID of container work ولم يبدأ تشغيل مربع الأدوات.

الناتج toolbox --version (v0.0.90 +)
toolbox version 0.0.97

معلومات حزمة Toolbox ( rpm -q toolbox )
toolbox-0.0.97-1-x86_64 (arch)

ناتج podman version

Version:      2.1.1
API Version:  2.0.0
Go Version:   go1.15.2
Git Commit:   9f6d6ba0b314d86521b66183c9ce48eaa2da1de2
Built:        Sat Sep 26 16:50:37 2020
OS/Arch:      linux/amd64

معلومات حزمة Podman ( rpm -q podman )
podman-2.1.1-1-x86_64 (arch)

معلومات حول نظام التشغيل الخاص بك
ارشلينكس

1. Bug

التعليق الأكثر فائدة

أواجه نفس المشكلة بالضبط (على Arch Linux أيضًا). أدى التخفيض إلى 0.0.96 إلى الحيلة بالنسبة لي.

هذه هي سجلات Podman الخاصة بصندوق أدوات Fedora 32:

$ podman logs fedora-toolbox-32
level=debug msg="Running as real user ID 0"
level=debug msg="Resolved absolute path to the executable as /usr/bin/toolbox"
level=debug msg="TOOLBOX_PATH is /usr/bin/toolbox"
level=debug msg="XDG_RUNTIME_DIR is unset"
level=debug msg="XDG_RUNTIME_DIR set to /run/user/1000"
level=debug msg="Creating /run/.toolboxenv"
level=debug msg="Monitoring host"
level=debug msg="Path /run/host/etc exists"
level=debug msg="Resolved /etc/localtime to /usr/share/zoneinfo/Europe/Amsterdam"
Error: /etc/localtime points to unknown location

ال 10 كومينتر

أواجه نفس المشكلة بالضبط (على Arch Linux أيضًا). أدى التخفيض إلى 0.0.96 إلى الحيلة بالنسبة لي.

هذه هي سجلات Podman الخاصة بصندوق أدوات Fedora 32:

$ podman logs fedora-toolbox-32
level=debug msg="Running as real user ID 0"
level=debug msg="Resolved absolute path to the executable as /usr/bin/toolbox"
level=debug msg="TOOLBOX_PATH is /usr/bin/toolbox"
level=debug msg="XDG_RUNTIME_DIR is unset"
level=debug msg="XDG_RUNTIME_DIR set to /run/user/1000"
level=debug msg="Creating /run/.toolboxenv"
level=debug msg="Monitoring host"
level=debug msg="Path /run/host/etc exists"
level=debug msg="Resolved /etc/localtime to /usr/share/zoneinfo/Europe/Amsterdam"
Error: /etc/localtime points to unknown location

أرى نفس الشيء

level=debug msg="Running as real user ID 0"
level=debug msg="Resolved absolute path to the executable as /usr/bin/toolbox"
level=debug msg="TOOLBOX_PATH is /usr/bin/toolbox"
level=debug msg="XDG_RUNTIME_DIR is unset"
level=debug msg="XDG_RUNTIME_DIR set to /run/user/1000"
level=debug msg="Creating /run/.toolboxenv"
level=debug msg="Monitoring host"
level=debug msg="Path /run/host/etc exists"
level=debug msg="Preparing to redirect /etc/localtime to /run/host/etc/localtime"
level=debug msg="/run/host/etc/localtime is a symbolic link"
level=debug msg="Redirecting /etc/localtime to /run/host/etc/localtime"
level=debug msg="Resolved /etc/localtime to /usr/share/zoneinfo/Europe/Copenhagen"
Error: /etc/localtime points to unknown location

هل يمكن أن يكون سبب هذا هو 4c9b80aee2b2ee3162b82e309718a23792d0e103؟

أنا أواجه نفس المشكلة في Manjaro (مقوس). من خلال تنفيذ الالتزامات ، وجدت أن b9a0bd5f0c2a2421ec15eea286ca20f03b7152d2 هو الجاني. يبدو أن 4c9b80aee2b2ee3162b82e309718a23792d0e103 هي الأخيرة التي تعمل بشكل صحيح.

هل جرب أحد 0.0.98.1 على Arch Linux؟

بدافع الفضول ، لا تحتوي أنظمة مضيف Arch لديك على /etc/localtime ؟

نعم ، لدى مضيفي Arch / etc / localtime. إنه ارتباط رمزي إلى / usr / share / zoneinfo /.
المشكلة هي أن صندوق الأدوات يحتوي على:

        const zoneInfoRoot = "/run/host/usr/share/zoneinfo"

        if !strings.HasPrefix(localTimeEvaled, zoneInfoRoot) {
                return errors.New("/etc/localtime points to unknown location")
        }

إذا قمت بتغيير zoneInfoRoot إلى "/usr/share/zoneinfo" ، فسيعمل صندوق الأدوات بشكل جيد.

قبل استدعاء updateTimeZoneFromLocalTime() ، يتم تحديث الرابط / etc / localtime ليشير إلى نفس المسار مثل / run / host / etc / localtime points to.
أخفق في معرفة كيف يجب أن يجعل ذلك / etc / localtime نقطة في / تشغيل / مضيف ، لأن ملفات المضيف لا تعرف أي شيء عن toolbox.

لذلك ما لم أفوت شيئًا ، ربما يكون واضحًا لأي شخص آخر ، يجب تغيير / إصلاح zoneInfoRoot . إذا كانت هناك حالات استخدام لـ / etc / localtime للإشارة إلى / run / host / usr / share / zoneinfo / ... و / usr / share / zoneinfo / ... أعتقد أنه يمكننا التحقق من كلا الاحتمالين ، و حل timeZone بناءً على البادئة المطابقة.

نعم ، لدى مضيفي Arch / etc / localtime. إنه ارتباط رمزي بـ
/ usr / share / zoneinfo /.

حسنًا ، لا يشبه الوضع في Fedora CoreOS.

يجب معالجة ذلك من خلال https://github.com/containers/toolbox/pull/634

ومع ذلك ، يجب أن أذكر أن كلا من Arch و Ubuntu يجب أن يستخدموا روابط رمزية نسبية. إذا فعلوا ذلك ، فسيستمر هذا في العمل فقط ، لأن الروابط الرمزية النسبية قادرة على التعامل مع المواقف الشبيهة بالجذور ، وهذا أفضل. على سبيل المثال ، في Fedora Workstation لدينا:

$ ls -l /etc/localtime 
lrwxrwxrwx. 1 root root 35 Jan  5 18:20 /etc/localtime -> ../usr/share/zoneinfo/Europe/Prague

حيث أرى في Ubuntu 18.04:

$ ls -l /etc/localtime 
lrwxrwxrwx 1 root root 33 lis 11 16:21 /etc/localtime -> /usr/share/zoneinfo/Europe/Prague

ولكن ، إذا استخدمت timedatectl فسيتم إصلاحه :

$ timedatectl set-timezone Europe/Prague
$ ls -l /etc/localtime 
lrwxrwxrwx 1 root root 35 led 12 20:29 /etc/localtime -> ../usr/share/zoneinfo/Europe/Prague

نعم ، يعد تغيير الارتباط الرمزي / etc / localtime إلى مطلق حل بديل قابل للاستخدام. سأستخدم هذا الآن ، شكرا.

لكن أعتقد أن # 634 يجب أن يتم دمجها. لا أرى فائدة كبيرة في عدم دعم مثل هذه الروابط الرمزية المطلقة.

إغلاق. اشعر بإعادة الفتح أو اترك تعليقًا إذا كنت تعتقد أن هذا لم يتم إصلاحه بعد.

وشكرًا على اختبار Toolbox.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات