OpenWRT에 설치된 모든 패키지를 업그레이드하는 방법은 무엇입니까?

OpenWRT에 설치된 모든 패키지를 업그레이드하는 방법은 무엇입니까?

나는 단지

apt-get upgrade
apt upgrade
yum update

OpenWRT 또는 LEDE를 사용하시나요?

답변1

아니요하나의명령이나 매개변수를 사용하면 쉽게 할 수 있습니다.모든 패키지를 업그레이드하려면 LEDE가 권장합니다.,

opkg list-upgradable | cut -f 1 -d ' ' | xargs -r opkg upgrade  

사람들이 AWK 등을 사용하는 덜 효율적인 다른 방법이 있습니다.

하나중요한 경고종종 LEDE/OpenWRT의 광범위한 사용이 동반됩니다.opkg

OpenWrt 펌웨어는 기본 시스템을 압축된 읽기 전용 파티션에 저장하므로,기본 시스템 패키지에 대한 모든 업데이트는 읽기-쓰기 파티션에 기록되므로 압축된 기본 시스템 파티션의 이전 버전을 덮어쓰는 것보다 더 많은 공간을 사용하게 됩니다.내부 플래시 메모리의 사용 가능한 공간과 기본 시스템 패키지 업데이트에 필요한 공간을 확인하는 것이 좋습니다.

답변2

내가 아는 한, 이 질문에 대한 정답은 다음과 같습니다.적절한 업그레이드와 동일하지 않음OpenWrt에는 동등한 기능을 생성할 수 있는 명령 세트가 없습니다. OpenWrt 저장소는 최종 사용자 패키지를 업데이트된 상태로 유지하기 위해 유지 관리되지 않으며(새로 고침을 통해 한 버전에서 다른 버전으로 이동해야 함) opkg는 종속성을 처리하거나 확인하지도 않습니다.

하나 있다OpenWRT 사용자 가이드의 Infobox 경고이 주제를 부분적으로 다루었습니다.

일반적으로 opkg 업그레이드는 사용하지 않는 것이 좋습니다. 이는 거의 모든 상황에서 피해야 합니다. 특히, 대량 업그레이드의 경우 심각한 문제가 발생할 가능성이 높지만, 단일 패키지 업그레이드도 문제가 발생할 수 있습니다. 또한 이는 OpenWrt 버전(주요 릴리스 및 유지 관리 업그레이드)을 업그레이드하기 위한 sysupgrade 경로와 크게 다르다는 점을 강조해야 합니다. opkg 업그레이드는 OpenWrt 버전을 업데이트하지 않습니다. sysupgrade만이 이 작업을 수행할 수 있습니다. 둘은 동일하지 않습니다.

Linux의 "대규모 배포판"과 달리 OpenWrt는 리소스가 제한된 시스템에 최적화되어 있습니다. 여기에는 내장 ABI(Application Binary Interface) 호환성 및 커널 버전 종속성 확인 기능이 없는 opkg 패키지 관리자가 포함됩니다. 때로는 문제가 없을 수도 있지만 보장할 수는 없으며 업그레이드로 인해 사소한 것부터 심각한 것까지 다양한 유형의 비호환성 문제가 발생할 수 있으며 문제 해결이 어려울 수 있습니다. 또한 opkg 업그레이드 프로세스는 플래시 저장 공간을 소비합니다. 원래 패키지(ROM에 저장됨)를 덮어쓰지 않으며 덮어쓸 수 없기 때문에 업그레이드된 패키지를 r/w 덮어쓰기에 저장해야 합니다.

다음과 같이 요약됩니다.

맹목적으로 패키지를 업그레이드하면(수동으로 또는 스크립트를 통해) 모든 종류의 문제가 발생할 수 있습니다.

특정 패키지의 최신 버전이 있다고 해서 해당 패키지를 설치해야 하거나 올바르게 작동한다는 의미는 아닙니다. 업그레이드를 수행하기 전에 자신에게 알려서 업그레이드하는 것이 안전한지 확인하십시오.

마침내

OpenWrt에서 패키지를 관리/설치하는 방법에는 LuCI 웹 인터페이스 소프트웨어 메뉴(시스템 > 소프트웨어)를 사용하는 것과 명령줄 인터페이스(CLI)를 사용하는 두 가지 방법이 있습니다. 두 방법 모두 동일한 CLI opkg 실행 파일을 호출하며 OpenWrt 19.07.0부터 LuCI 인터페이스에는 이제 사용 가능한 업그레이드가 있는 패키지를 나열하는 "업데이트" 탭이 있습니다. LuCI 업그레이드... 버튼은 이 문서에서 설명한 것과 동일한 opkg 업그레이드 명령을 실행합니다. LuCI 및 CLI를 사용하여 패키지를 업그레이드할 때도 동일한 경고가 적용됩니다.

전체 정보 상자는 읽을 가치가 있습니다. 상단에 나타납니다사용자 가이드의 이 섹션에서는 사용 가능한 패키지 업그레이드를 표시하는 방법에 대해 설명합니다..

내 원본 게시물의 나머지 부분은 아래에 남아 있습니다.

OpenWrt 포럼에서 인용:

OpenWrt에 대한 경험이 더 많은 사람들은 opkg로 업그레이드하는 것이 문제가 발생할 수 있기 때문에 (아주 구체적인 이유가 없는 한) 나쁜 생각이라는 것을 알고 있습니다. 그러나 다른 많은 사용자들은 이 사실을 모르고 있습니다. 그들은 이것이 다른 Linux 설치와 똑같으며 대부분의 경우 업그레이드가 작동해야 한다고 생각합니다.

그리고

OPKG를 사용하여 업그레이드하지 마십시오!

진심으로 그러지 마세요. 한 번. 자신이 무엇을 하고 있는지 알지 못한다면, 그 일을 해야 할 타당한 이유가 있어야 하며, 라우터가 원활하게 작동하지 않을 경우 그에 따른 결과를 감수할 의향이 있어야 합니다. 플래시 공간을 소비하지만 더 중요한 것은 커널 불일치 및 기타 손상된 종속성이 있을 수 있으며, 이로 인해 OpenWrt에 모든 종류의 문제가 발생할 수 있습니다. 그 중 일부는 단지 짜증나는 수준이고 일부는 매우 심각할 수 있습니다. 등.

그리고

절대 opkg를 사용하여 업그레이드하지 마십시오. 이 방법은 심각한 문제를 일으킬 수 있으며 실제로 버전을 업그레이드하지 않습니다. 어떤 사람들은 opkg 업그레이드를 성공적으로 사용했다고 말할 것입니다. 그러나 그러한 모든 사람들에게는 전적으로 프로세스로 인해 발생한 문제(사소하거나 중대한 문제)를 겪은 사람들이 더 많습니다. 그냥 하지 마세요

간단히 말해서, LUCI가 이를 수행하기 위한 GUI 옵션을 포함하지 않는 이유가 있습니다. 여기의 다른 답변에서 제안된 접근 방식은 apt/apt-get과 비슷한 것을 달성하지만 기본 도구는 apt 또는 yum과 다르게 작동합니다. 발생할 수 있는 문제는 앞서 언급한 저장 공간 부족 가능성(나쁜 일이지만 조심하면 피할 수 있음)을 넘어서는 것입니다.

인용하다: https://forum.openwrt.org/t/okpg-upgrade-safeguards/30326
https://forum.openwrt.org/t/opkg-upgrade-vs-flashing-sysupgrade/58906
https://forum.openwrt.org/t/sysupgrade-instead-of-opkg-upgrade/32897/4

저는 OpenWRT 전문가가 아닙니다. "update wrt"에 대한 웹 검색 결과가 여전히 상위권에 있기 때문에 이 게시물을 방문하게 되었습니다. 이 스레드를 읽은 후 위에 링크된 스레드를 포함하여 OpenWrt 포럼을 계속 진행했습니다. 나는 단지 나보다 해당 주제에 대해 더 잘 알고 있는 사람이 작성했을 수 있는 정보를 발견하여 최종 사용자가 향후 문제를 피할 수 있도록 돕기 위해 노력하고 있습니다.

OpenWrt 패키지를 최신 상태로 유지하기 위해 다양한 명령을 사용하는 것을 계속해서 옹호하려는 분들은 시간을 내어 이것이 제공된 도구를 사용하는 합리적인 방법인지 OpenWrt 팀과 함께 확인하시기 바랍니다. 나는 틀렸다는 것을 증명하고 싶습니다.

답변3

opkg-upgrade더 나은 방식으로 업그레이드를 처리하기 위해 호출되는 작은 스크립트를 만들었습니다 .

github에서 찾을 수 있습니다:
https://github.com/tavinus/opkg-upgrade

업그레이드가 매우 쉬워집니다.
opkg-upgrade

Curl/Wget 설치 지침은 여기에 있습니다!


상술 한 바와 같이읽어보기.md파일이 있지만 업그레이드에 문제가 있을 수 있습니다.

발생할 수 있는 문제:

  • 호박 문제(ROM은 읽기 전용이므로 업그레이드하려면 플래시 또는 extroot에 추가 공간이 필요합니다).
  • 개발/트렁크(베타) 문제(베타 버전은 업그레이드 중에 소프트 브릭이 될 수 있습니다).
  • 공간 문제(다운로드 및 설치를 위해서는 충분한 여유 공간이 필요합니다).

또한 CRON에서 업그레이드하는 것은 매우 나쁜 생각이라는 점을 언급하고 싶습니다!
일반 Linux 배포판에서도 맹목적으로 업그레이드하는 것은 좋은 생각이 아니라고 말하고 싶습니다.
업그레이드하는 동안 잘못될 수 있는 일이 많이 있으며 OpenWrt는 벽돌이 될 수 있는 장치에서 실행되는 경우가 많기 때문에 무인으로 수행할 의미가 훨씬 적습니다.

간단히 말해서, 업그레이드할 수 있는 유일한 상황은 다음과 같습니다.

  • 거대한 USB 스틱에서 extroot를 사용하는 경우
  • 내장 플래시 메모리가 32Mb 이상인 경우
  • 만약에아니요개발/트렁크 사용(베타)
  • 충분한 공간이 있는 ext4 FS에서 실행하는 경우(x86 메탈, VM 등)

그럼에도 불구하고 나는 cron에서 업그레이드하지 않을 것입니다.
또한 내부 플래시를 업그레이드하기 전에 (큰 플래시라도) 성능이 더 빨리 저하되므로 20번을 고려하겠습니다.

내 스크립트에는 사용 가능한 업데이트가 포함된 이메일 보고서를 보내는 옵션이 있습니다.
따라서 cron에 보고 도구를 추가하면 사람들이 이메일을 받은 후 수동으로 업그레이드할 수 있다고 제안합니다. 이는 업그레이드 수정 옵션을 제공하는 동시에 보안을 더욱 강화합니다.


건배 !

답변4

이런 오류가 발생하면

잠시 후 각 파일을 개별적으로 업그레이드해 보세요.

opkg list-upgradable | cut -f 1 -d ' ' | while IFS='$\n' read -r line; do opkg install $line ; done

관련 정보