V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
dawn009
V2EX  ›  Linux

Linux 软件有时会忘记是从哪个源安装的,升级时不知道该使用哪个命令

  •  
  •   dawn009 · 2023-03-05 16:17:50 +08:00 · 3004 次点击
    这是一个创建于 630 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有的是从包管理器直接安装(有可能有多个包管理器),有的是 Flathub ,有的是 AppImage ,有的是下载的安装包,还有的是直接编译的。 时间长了会忘记当初是怎么安装的,升级时不太确定执行哪个命令。 大家如何解决这个问题?

    21 条回复    2023-03-16 21:10:32 +08:00
    dethan
        1
    dethan  
       2023-03-05 16:20:06 +08:00 via Android
    做记录?
    dawn009
        2
    dawn009  
    OP
       2023-03-05 16:24:03 +08:00
    @dethan 多了一项额外成本。很多时候装软件要么在工作流中为了解决其他问题,要么在尝试多个同类软件,不太可能分心去做记录。
    paperseller
        3
    paperseller  
       2023-03-05 16:27:15 +08:00 via iPhone   ❤️ 5
    如果有桌面环境可以安装 bauh 多源包管理器,除了自编译的其他都覆盖了
    dawn009
        4
    dawn009  
    OP
       2023-03-05 16:30:20 +08:00
    @paperseller 我去试试,感谢!
    GeruzoniAnsasu
        5
    GeruzoniAnsasu  
       2023-03-05 16:36:02 +08:00
    history | grep ……
    adoyle
        6
    adoyle  
       2023-03-05 17:00:19 +08:00 via Android
    通过查看软件的安装路径来确定是哪个包管理器安装的
    0o0O0o0O0o
        7
    0o0O0o0O0o  
       2023-03-05 17:23:12 +08:00 via iPhone
    每天打开电脑第一件事就是习惯性执行更新小脚本,里面是电脑上所有包管理的更新命令,不通过包管理安装的软件也会在安装后就把检查更新加进去。
    yanqiyu
        8
    yanqiyu  
       2023-03-05 17:32:22 +08:00
    我的做法就是尽量避免安装的太杂,要么系统包要么 flatpak
    再没办法就容器伺候
    Owenjia
        9
    Owenjia  
       2023-03-05 17:35:26 +08:00
    包管理基本都是可以查看软件包来源的,比如:dpkg -S /path/to/file ; rpm -qf /path/to/file ; qfile /path/to/file 。
    不在包管理管理范围内的可能麻烦点,像 appimage 可以检查命令行参数,自编译的可以在编译时指定个单独的 prefix 让它不跟别的混在一起,另外还可以拿 bwrap/firejail 单独搞一个目录结构放一些声誉不太好的私有软件。
    就个人来说,我是尽量所有的软件都通过包管理( portage )安装,仓库里没有的就自己单独打包维护一个,包管理提供的功能相对比较丰富,管理方便。比如可以避免覆盖系统文件,检测是文件内容是否被篡改过。
    bjzhush
        10
    bjzhush  
       2023-03-05 17:44:20 +08:00
    ps -ef|grep appName
    找出路径之后就知道下一步了
    littlewing
        11
    littlewing  
       2023-03-05 19:29:59 +08:00
    使用 archlinux
    Joomaen
        12
    Joomaen  
       2023-03-05 21:42:16 +08:00
    隔几天就 dup 系统更新一下,再 flatpak update 下
    orangie
        13
    orangie  
       2023-03-05 21:57:35 +08:00
    不知道的时候就各个管理器都尝试一下列出已安装软件,谁列出来了应该就是谁的。
    littlezzll
        14
    littlezzll  
       2023-03-06 08:39:36 +08:00 via Android
    LindsayZhou
        15
    LindsayZhou  
       2023-03-06 08:46:09 +08:00
    所以 AUR 是个好东西,AUR 里都没有的可以自己写 PKGBUILD 打包,写起来挺简单的。
    julyclyde
        16
    julyclyde  
       2023-03-06 09:22:39 +08:00
    @Owenjia 你说的这些是按文件查包,不是按包查源
    lechain
        17
    lechain  
       2023-03-06 10:07:31 +08:00
    11 楼说的对(
    Owenjia
        18
    Owenjia  
       2023-03-06 18:22:57 +08:00   ❤️ 1
    @julyclyde 我的错,下意识的认为找到包了就知道来源了,实际还需要额外一个步骤,查看安装的包,比如:
    apt info pkgname;
    zypper if pkgname 或者 zypper se -is pkgname;
    eix pkgname 。
    在输出结果中会有从哪个仓库中安装上这个包的信息。
    libook
        19
    libook  
       2023-03-06 18:28:03 +08:00
    我用 Manjaro 基本就是官方包和 AUR 用一个 yay 指令完成更新,Flatpak 是 Manjaro 自带的软件包管理器 GUI 可以一起管理。AppImage 只有上述都不能用的时候才会用,比较罕见,我目前只有 UHK 键盘的配置工具会使用这种方式,没有一键升级的方案,每次得手动下载、安装、删除旧版。

    私人服务器上是 Debian ,绝大部分服务都是走的 Docker 镜像,极少数涉及到硬盘管理的首选官方包,需要新特性或有 bug 再考虑下载软件开发者官方的新版 deb ,安装后只要版本高于发行版软件源就不会被自动升级,有需要的话可以手动下载升级。

    目前没有自己编译的需求,有的话基本会在特定目录保存源代码,想知道哪些软件是编译的去看这个目录就好,更新也可以手动拉代码、编译、安装。打成发行版格式的包或者仍 /opt 都可以。

    当然手动的部分都可以自己写脚本来简化。
    limon
        20
    limon  
       2023-03-08 23:40:47 +08:00
    nixos
    linuxgo
        21
    linuxgo  
       2023-03-16 21:10:32 +08:00 via Android
    @paperseller 还有这东西,要试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2700 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:09 · PVG 19:09 · LAX 03:09 · JFK 06:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.